Skip to content

Conversation

dhruv-ahuja
Copy link
Contributor

@dhruv-ahuja dhruv-ahuja commented Sep 25, 2025

Addresses the concerns mentioned in #1424, ensuring the span calls raise runtime warnings with apt documentation link, when used inside generator functions.

Test script output:

uvp spanner.py                                      
/Users/dhruv/coding/python/projects/oss/logfire/logfire/_internal/main.py:204: RuntimeWarning: Span is inside a generator function. See https://logfire.pydantic.dev/docs/reference/advanced/generators/#move-the-span-outside-the-generator.
  warnings.warn(
21:10:07.772 gen3
             │ spanner.py:28
21:10:07.773   usage within gen3 (manual span)
             │ spanner.py:29 info
/Users/dhruv/coding/python/projects/oss/logfire/logfire/_internal/main.py:204: RuntimeWarning: Span is inside a generator function. See https://logfire.pydantic.dev/docs/reference/advanced/generators/#move-the-span-outside-the-generator.
  warnings.warn(
21:10:07.774 async_gen
             │ spanner.py:41
21:10:07.774   usage within async_gen (manual span)
             │ spanner.py:42 info
Failed to detach context
Traceback (most recent call last):
  File "/Users/dhruv/coding/python/projects/oss/logfire/spanner.py", line 43, in async_gen
    yield
GeneratorExit

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/dhruv/coding/python/projects/oss/logfire/.venv/lib/python3.13/site-packages/opentelemetry/context/__init__.py", line 155, in detach
    _RUNTIME_CONTEXT.detach(token)
    ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
  File "/Users/dhruv/coding/python/projects/oss/logfire/.venv/lib/python3.13/site-packages/opentelemetry/context/contextvars_context.py", line 53, in detach
    self._current_context.reset(token)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
ValueError: <Token var=<ContextVar name='current_context' default={} at 0x104a39170> at 0x10746adc0> was created in a different Context
Exception ignored in: <async_generator object async_gen at 0x1073729b0>
Traceback (most recent call last):
  File "/Users/dhruv/coding/python/projects/oss/logfire/spanner.py", line 49, in <module>
    asyncio.run(anext(async_gen()))
StopAsyncIteration: 

@dhruv-ahuja dhruv-ahuja force-pushed the enhance/warn_on_span_yield branch from e52430e to 16488d2 Compare October 3, 2025 14:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant