{"id":45694,"library":"openfeature-hooks-opentelemetry","title":"OpenFeature OpenTelemetry Hooks","description":"OpenTelemetry hooks for the OpenFeature Python SDK, enabling automatic telemetry (tracing) when flag evaluations occur. Currently at v0.3.1. Releases follow the OpenFeature Python SDK contrib release cadence.","status":"active","version":"0.3.1","language":"python","source_language":"en","source_url":"https://github.com/open-feature/python-sdk-contrib","tags":["openfeature","opentelemetry","feature-flags","tracing"],"install":[{"cmd":"pip install openfeature-hooks-opentelemetry","lang":"bash","label":"PyPI install"}],"dependencies":[{"reason":"Core OpenFeature SDK required","package":"openfeature-sdk","optional":false},{"reason":"OpenTelemetry API required","package":"opentelemetry-api","optional":false}],"imports":[{"wrong":"from openfeature_hooks_opentelemetry import OpenTelemetryHook","symbol":"OpenTelemetryHook","correct":"from openfeature.hooks import OpenTelemetryHook"}],"quickstart":{"code":"from openfeature import api\nfrom openfeature_hooks_opentelemetry import OpenTelemetryHook\n\nhook = OpenTelemetryHook()\napi.add_hooks(hook)\n\n# Now every flag evaluation will create spans\nclient = api.get_client()\nflag_value = client.get_boolean_value('my-feature', False)\nprint(flag_value)\n","lang":"python","description":"Add OpenTelemetry tracing to all flag evaluations by adding the hook globally."},"warnings":[{"fix":"Set up OpenTelemetry tracing (e.g., OTLP exporter) before evaluating flags. Example:\nfrom opentelemetry import trace\nfrom opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter\nfrom opentelemetry.sdk.trace import TracerProvider\nfrom opentelemetry.sdk.trace.export import BatchSpanProcessor\nprovider = TracerProvider()\nprovider.add_span_processor(BatchSpanProcessor(OTLPSpanExporter()))\ntrace.set_tracer_provider(provider)","message":"This library requires OpenTelemetry SDK to be configured (e.g., exporter, sampler) otherwise spans may not be exported and you may see no telemetry. It does not auto-initialize OTel.","severity":"breaking","affected_versions":"all"},{"fix":"Use opentelemetry-propagator-* packages and set propagator via otel_python_ propagator env vars or code.","message":"The hook only instruments flag evaluations; it does NOT propagate context or manage trace headers. You must handle that separately (e.g., using OpenTelemetry propagators).","severity":"gotcha","affected_versions":"all"},{"fix":"Ensure openfeature-sdk is at least 1.7.0.","message":"As of v0.3.0, the hook may require compatible OpenFeature SDK >= 1.7. Earlier versions may cause import errors or runtime failures.","severity":"breaking","affected_versions":">=0.3.0"}],"env_vars":null,"search_vec":"'automat':12 'cadenc':30 'contrib':28 'current':19 'enabl':11 'evalu':17 'featur':34 'feature-flag':33 'flag':16,35 'follow':23 'hook':3,5 'occur':18 'openfeatur':1,8,25,31 'opentelemetri':2,4,32 'python':9,26 'releas':22,29 'sdk':10,27 'telemetri':13 'trace':14,36 'v0.3.1':21","created_at":"2026-06-07T12:56:16.590105+00:00","updated_at":"2026-06-07T12:56:16.590105+00:00","problems":{"verify_error":"Traceback (most recent call last):\n  File \"<string>\", line 1, in <module>\nModuleNotFoundError: No module named 'openfeature.hooks'"},"ecosystem":"pypi","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":"https://github.com/open-feature/python-sdk-contrib","github":"https://github.com/open-feature/python-sdk-contrib","docs":null,"changelog":null,"pypi":null,"npm":null,"openapi_spec":null,"status_page":null,"smithery":null,"categories":["devops","observability"],"base_url":null,"auth_type":null,"provenance":{"verified_status":"import_fail","verified_at":"2026-07-03","last_verified":"2026-07-03","next_check":"2026-07-10","install_tag":null}}