logfire-api 4.31.0__tar.gz → 4.31.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. {logfire_api-4.31.0 → logfire_api-4.31.2}/PKG-INFO +1 -1
  2. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/sampling/_tail_sampling.pyi +20 -5
  3. {logfire_api-4.31.0 → logfire_api-4.31.2}/pyproject.toml +1 -1
  4. {logfire_api-4.31.0 → logfire_api-4.31.2}/.gitignore +0 -0
  5. {logfire_api-4.31.0 → logfire_api-4.31.2}/README.md +0 -0
  6. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/__init__.py +0 -0
  7. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/__init__.pyi +0 -0
  8. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/__init__.pyi +0 -0
  9. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/ast_utils.pyi +0 -0
  10. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/async_.pyi +0 -0
  11. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/auth.pyi +0 -0
  12. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/auto_trace/__init__.pyi +0 -0
  13. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/auto_trace/import_hook.pyi +0 -0
  14. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/auto_trace/rewrite_ast.pyi +0 -0
  15. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/auto_trace/types.pyi +0 -0
  16. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/baggage.pyi +0 -0
  17. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/cli/__init__.pyi +0 -0
  18. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/cli/auth.pyi +0 -0
  19. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/cli/prompt.pyi +0 -0
  20. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/cli/run.pyi +0 -0
  21. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/cli.pyi +0 -0
  22. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/client.pyi +0 -0
  23. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/collect_system_info.pyi +0 -0
  24. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/config.pyi +0 -0
  25. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/config_params.pyi +0 -0
  26. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/constants.pyi +0 -0
  27. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/db_statement_summary.pyi +0 -0
  28. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/exporters/__init__.pyi +0 -0
  29. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/exporters/console.pyi +0 -0
  30. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/exporters/dynamic_batch.pyi +0 -0
  31. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/exporters/logs.pyi +0 -0
  32. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/exporters/otlp.pyi +0 -0
  33. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/exporters/processor_wrapper.pyi +0 -0
  34. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/exporters/quiet_metrics.pyi +0 -0
  35. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/exporters/remove_pending.pyi +0 -0
  36. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/exporters/tail_sampling.pyi +0 -0
  37. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/exporters/wrapper.pyi +0 -0
  38. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/formatter.pyi +0 -0
  39. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/instrument.pyi +0 -0
  40. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/integrations/__init__.pyi +0 -0
  41. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/integrations/aiohttp_client.pyi +0 -0
  42. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/integrations/aiohttp_server.pyi +0 -0
  43. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/integrations/asgi.pyi +0 -0
  44. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/integrations/asyncpg.pyi +0 -0
  45. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/integrations/aws_lambda.pyi +0 -0
  46. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/integrations/celery.pyi +0 -0
  47. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/integrations/claude_agent_sdk.pyi +0 -0
  48. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/integrations/django.pyi +0 -0
  49. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/integrations/dspy.pyi +0 -0
  50. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/integrations/executors.pyi +0 -0
  51. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/integrations/fastapi.pyi +0 -0
  52. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/integrations/flask.pyi +0 -0
  53. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/integrations/google_genai.pyi +0 -0
  54. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/integrations/httpx.pyi +0 -0
  55. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/integrations/litellm.pyi +0 -0
  56. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/integrations/mcp.pyi +0 -0
  57. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/integrations/mysql.pyi +0 -0
  58. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/integrations/openai_agents.pyi +0 -0
  59. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/integrations/print.pyi +0 -0
  60. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/integrations/psycopg.pyi +0 -0
  61. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/integrations/pydantic_ai.pyi +0 -0
  62. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/integrations/pymongo.pyi +0 -0
  63. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/integrations/pytest.pyi +0 -0
  64. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/integrations/redis.pyi +0 -0
  65. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/integrations/requests.pyi +0 -0
  66. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/integrations/sqlalchemy.pyi +0 -0
  67. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/integrations/sqlite3.pyi +0 -0
  68. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/integrations/starlette.pyi +0 -0
  69. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/integrations/surrealdb.pyi +0 -0
  70. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/integrations/system_metrics.pyi +0 -0
  71. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/integrations/wsgi.pyi +0 -0
  72. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/json_encoder.pyi +0 -0
  73. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/json_formatter.pyi +0 -0
  74. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/json_schema.pyi +0 -0
  75. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/json_types.pyi +0 -0
  76. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/logs.pyi +0 -0
  77. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/main.pyi +0 -0
  78. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/metrics.pyi +0 -0
  79. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/scrubbing.pyi +0 -0
  80. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/stack_info.pyi +0 -0
  81. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/tracer.pyi +0 -0
  82. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/ulid.pyi +0 -0
  83. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/_internal/utils.pyi +0 -0
  84. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/cli.pyi +0 -0
  85. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/db_api.pyi +0 -0
  86. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/exceptions.pyi +0 -0
  87. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/experimental/__init__.pyi +0 -0
  88. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/experimental/annotations.pyi +0 -0
  89. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/experimental/api_client.pyi +0 -0
  90. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/experimental/datasets/__init__.pyi +0 -0
  91. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/experimental/forwarding.pyi +0 -0
  92. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/experimental/query_client.pyi +0 -0
  93. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/integrations/__init__.pyi +0 -0
  94. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/integrations/aiohttp_client.pyi +0 -0
  95. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/integrations/flask.pyi +0 -0
  96. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/integrations/httpx.pyi +0 -0
  97. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/integrations/logging.pyi +0 -0
  98. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/integrations/loguru.pyi +0 -0
  99. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/integrations/psycopg.pyi +0 -0
  100. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/integrations/pydantic.pyi +0 -0
  101. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/integrations/redis.pyi +0 -0
  102. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/integrations/sqlalchemy.pyi +0 -0
  103. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/integrations/structlog.pyi +0 -0
  104. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/integrations/wsgi.pyi +0 -0
  105. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/propagate.pyi +0 -0
  106. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/py.typed +0 -0
  107. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/query_client.pyi +0 -0
  108. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/sampling/__init__.pyi +0 -0
  109. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/types.pyi +0 -0
  110. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/variables/__init__.pyi +0 -0
  111. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/variables/abstract.pyi +0 -0
  112. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/variables/config.pyi +0 -0
  113. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/variables/local.pyi +0 -0
  114. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/variables/remote.pyi +0 -0
  115. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/variables/variable.pyi +0 -0
  116. {logfire_api-4.31.0 → logfire_api-4.31.2}/logfire_api/version.pyi +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: logfire-api
3
- Version: 4.31.0
3
+ Version: 4.31.2
4
4
  Summary: Shim for the Logfire SDK which does nothing unless Logfire is installed
5
5
  Author-email: Pydantic Team <engineering@pydantic.dev>, Samuel Colvin <samuel@pydantic.dev>, Hasan Ramezani <hasan@pydantic.dev>, Adrian Garcia Badaracco <adrian@pydantic.dev>, David Montague <david@pydantic.dev>, Marcelo Trylesinski <marcelo@pydantic.dev>, David Hewitt <david.hewitt@pydantic.dev>, Alex Hall <alex@pydantic.dev>
6
6
  License-Expression: MIT
@@ -3,6 +3,7 @@ from dataclasses import dataclass
3
3
  from functools import cached_property
4
4
  from logfire._internal.constants import LevelName as LevelName, ONE_SECOND_IN_NANOSECONDS as ONE_SECOND_IN_NANOSECONDS
5
5
  from logfire._internal.exporters.wrapper import WrapperSpanProcessor as WrapperSpanProcessor
6
+ from logfire._internal.utils import suppress_instrumentation as suppress_instrumentation
6
7
  from logfire.types import SpanLevel as SpanLevel
7
8
  from opentelemetry import context
8
9
  from opentelemetry.sdk.trace import ReadableSpan, Span, SpanProcessor
@@ -18,8 +19,7 @@ class TraceBuffer:
18
19
  """
19
20
  started: list[tuple[Span, context.Context | None]]
20
21
  ended: list[ReadableSpan]
21
- @cached_property
22
- def first_span(self) -> Span: ...
22
+ first_span: Span
23
23
  @cached_property
24
24
  def trace_id(self) -> int: ...
25
25
 
@@ -60,14 +60,29 @@ class SamplingOptions:
60
60
  def check_trace_id_ratio(trace_id: int, rate: float) -> bool: ...
61
61
 
62
62
  class TailSamplingProcessor(WrapperSpanProcessor):
63
- """Passes spans to the wrapped processor if any span in a trace meets the sampling criteria."""
63
+ """Buffers spans until a span in the trace meets the sampling criteria.
64
+
65
+ The wrapped `processor` receives `on_start` calls immediately (most processors just set attributes,
66
+ which is safe before the sampling decision). Only `on_end` is buffered.
67
+
68
+ The optional `deferred_processor` has both `on_start` and `on_end` buffered until the sampling
69
+ decision. Use this for processors like `PendingSpanProcessor` that create new spans in `on_start`.
70
+ Advanced users can mark their own processors for deferral by setting the
71
+ `tail_sampling_defer_on_start` attribute to `True` on the processor class.
72
+ """
64
73
  get_tail_sample_rate: Incomplete
74
+ deferred_processor: Incomplete
65
75
  traces: dict[int, TraceBuffer]
66
76
  lock: Incomplete
67
- def __init__(self, processor: SpanProcessor, get_tail_sample_rate: Callable[[TailSamplingSpanInfo], float]) -> None: ...
77
+ def __init__(self, processor: SpanProcessor, get_tail_sample_rate: Callable[[TailSamplingSpanInfo], float], deferred_processor: SpanProcessor | None = None) -> None: ...
68
78
  def on_start(self, span: Span, parent_context: context.Context | None = None) -> None: ...
69
79
  def on_end(self, span: ReadableSpan) -> None: ...
70
80
  def check_span(self, span_info: TailSamplingSpanInfo) -> bool:
71
- """If the span meets the sampling criteria, drop the buffer and return True. Otherwise, return False."""
81
+ """If the span meets the sampling criteria, drop the buffer and return True. Otherwise, return False.
82
+
83
+ Must be called within self.lock since it modifies self.traces via drop_buffer.
84
+ """
72
85
  def drop_buffer(self, buffer: TraceBuffer) -> None: ...
73
86
  def push_buffer(self, buffer: TraceBuffer) -> None: ...
87
+ def shutdown(self) -> None: ...
88
+ def force_flush(self, timeout_millis: int = 30000) -> bool: ...
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "logfire-api"
7
- version = "4.31.0"
7
+ version = "4.31.2"
8
8
  description = "Shim for the Logfire SDK which does nothing unless Logfire is installed"
9
9
  authors = [
10
10
  { name = "Pydantic Team", email = "engineering@pydantic.dev" },
File without changes
File without changes