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