1{
2 lib,
3 stdenv,
4 buildPythonPackage,
5 pythonOlder,
6 hatchling,
7 opentelemetry-api,
8 opentelemetry-instrumentation,
9 opentelemetry-semantic-conventions,
10 opentelemetry-test-utils,
11 wrapt,
12 pytestCheckHook,
13 grpcio,
14}:
15
16buildPythonPackage {
17 inherit (opentelemetry-instrumentation) version src;
18 pname = "opentelemetry-instrumentation-grpc";
19 pyproject = true;
20
21 disabled = pythonOlder "3.8";
22
23 sourceRoot = "${opentelemetry-instrumentation.src.name}/instrumentation/opentelemetry-instrumentation-grpc";
24
25 build-system = [ hatchling ];
26
27 dependencies = [
28 opentelemetry-api
29 opentelemetry-instrumentation
30 opentelemetry-semantic-conventions
31 wrapt
32 ];
33
34 optional-dependencies = {
35 instruments = [ grpcio ];
36 };
37
38 env = {
39 PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION = "python";
40 };
41
42 nativeCheckInputs = [
43 opentelemetry-test-utils
44 grpcio
45 pytestCheckHook
46 ];
47
48 preBuild = ''
49 export TMPDIR=$(mktemp -d)
50 '';
51
52 disabledTests = lib.optionals stdenv.hostPlatform.isDarwin [
53 # RuntimeError: Failed to bind to address
54 "TestOpenTelemetryServerInterceptorUnix"
55 ];
56
57 pythonImportsCheck = [ "opentelemetry.instrumentation.grpc" ];
58
59 __darwinAllowLocalNetworking = true;
60
61 meta = opentelemetry-instrumentation.meta // {
62 homepage = "https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/instrumentation/opentelemetry-instrumentation-grpc";
63 description = "OpenTelemetry Instrumentation for grpc";
64 };
65}