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