1{
2 lib,
3 buildPythonPackage,
4 pythonOlder,
5 fetchFromGitHub,
6 deprecated,
7 hatchling,
8 importlib-metadata,
9 typing-extensions,
10 opentelemetry-test-utils,
11 pytestCheckHook,
12 writeScript,
13}:
14
15let
16 self = buildPythonPackage rec {
17 pname = "opentelemetry-api";
18 version = "1.34.0";
19 pyproject = true;
20
21 disabled = pythonOlder "3.8";
22
23 # to avoid breakage, every package in opentelemetry-python must inherit this version, src, and meta
24 src = fetchFromGitHub {
25 owner = "open-telemetry";
26 repo = "opentelemetry-python";
27 tag = "v${version}";
28 hash = "sha256-fAXcS2VyDMk+UDW3ru5ZvwzXjydsY1uFcT2GvZuiGWw=";
29 };
30
31 sourceRoot = "${src.name}/opentelemetry-api";
32
33 build-system = [ hatchling ];
34
35 dependencies = [
36 deprecated
37 importlib-metadata
38 typing-extensions
39 ];
40
41 pythonRelaxDeps = [ "importlib-metadata" ];
42
43 nativeCheckInputs = [
44 opentelemetry-test-utils
45 pytestCheckHook
46 ];
47
48 pythonImportsCheck = [ "opentelemetry" ];
49
50 doCheck = false;
51
52 passthru = {
53 updateScript = writeScript "update.sh" ''
54 #!/usr/bin/env nix-shell
55 #!nix-shell -i bash -p nix-update
56
57 set -eu -o pipefail
58 nix-update --version-regex 'v(.*)' python3Packages.opentelemetry-api
59 nix-update python3Packages.opentelemetry-instrumentation
60 '';
61 # Enable tests via passthru to avoid cyclic dependency with opentelemetry-test-utils.
62 tests.${self.pname} = self.overridePythonAttrs { doCheck = true; };
63 };
64
65 meta = with lib; {
66 homepage = "https://github.com/open-telemetry/opentelemetry-python/tree/main/opentelemetry-api";
67 description = "OpenTelemetry Python API";
68 changelog = "https://github.com/open-telemetry/opentelemetry-python/releases/tag/${src.tag}";
69 license = licenses.asl20;
70 maintainers = [ maintainers.natsukium ];
71 teams = [ teams.deshaw ];
72 };
73 };
74in
75self