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}