lmnr 0.7.9__tar.gz → 0.7.10__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 (99) hide show
  1. {lmnr-0.7.9 → lmnr-0.7.10}/PKG-INFO +1 -1
  2. {lmnr-0.7.9 → lmnr-0.7.10}/pyproject.toml +1 -1
  3. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/tracing/__init__.py +13 -2
  4. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/version.py +1 -1
  5. {lmnr-0.7.9 → lmnr-0.7.10}/README.md +0 -0
  6. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/__init__.py +0 -0
  7. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/cli.py +0 -0
  8. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/.flake8 +0 -0
  9. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/__init__.py +0 -0
  10. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/decorators/__init__.py +0 -0
  11. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/litellm/__init__.py +0 -0
  12. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/litellm/utils.py +0 -0
  13. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/anthropic/__init__.py +0 -0
  14. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/anthropic/config.py +0 -0
  15. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/anthropic/event_emitter.py +0 -0
  16. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/anthropic/event_models.py +0 -0
  17. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/anthropic/span_utils.py +0 -0
  18. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/anthropic/streaming.py +0 -0
  19. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/anthropic/utils.py +0 -0
  20. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/anthropic/version.py +0 -0
  21. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/google_genai/__init__.py +0 -0
  22. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/google_genai/config.py +0 -0
  23. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/google_genai/schema_utils.py +0 -0
  24. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/google_genai/utils.py +0 -0
  25. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/groq/__init__.py +0 -0
  26. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/groq/config.py +0 -0
  27. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/groq/event_emitter.py +0 -0
  28. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/groq/event_models.py +0 -0
  29. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/groq/span_utils.py +0 -0
  30. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/groq/utils.py +0 -0
  31. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/groq/version.py +0 -0
  32. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/langgraph/__init__.py +0 -0
  33. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/langgraph/utils.py +0 -0
  34. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/__init__.py +0 -0
  35. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/__init__.py +0 -0
  36. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/chat_wrappers.py +0 -0
  37. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/completion_wrappers.py +0 -0
  38. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/config.py +0 -0
  39. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/embeddings_wrappers.py +0 -0
  40. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/event_emitter.py +0 -0
  41. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/event_models.py +0 -0
  42. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/image_gen_wrappers.py +0 -0
  43. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/utils.py +0 -0
  44. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/v0/__init__.py +0 -0
  45. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/v1/__init__.py +0 -0
  46. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/v1/assistant_wrappers.py +0 -0
  47. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/v1/event_handler_wrapper.py +0 -0
  48. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/v1/responses_wrappers.py +0 -0
  49. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/version.py +0 -0
  50. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/openhands_ai/__init__.py +0 -0
  51. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/opentelemetry/__init__.py +0 -0
  52. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/skyvern/__init__.py +0 -0
  53. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/threading/__init__.py +0 -0
  54. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/tracing/_instrument_initializers.py +0 -0
  55. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/tracing/attributes.py +0 -0
  56. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/tracing/context.py +0 -0
  57. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/tracing/exporter.py +0 -0
  58. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/tracing/instruments.py +0 -0
  59. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/tracing/processor.py +0 -0
  60. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/tracing/tracer.py +0 -0
  61. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/utils/__init__.py +0 -0
  62. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/utils/json_encoder.py +0 -0
  63. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/utils/package_check.py +0 -0
  64. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/opentelemetry_lib/utils/wrappers.py +0 -0
  65. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/py.typed +0 -0
  66. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/sdk/__init__.py +0 -0
  67. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/sdk/browser/__init__.py +0 -0
  68. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/sdk/browser/browser_use_cdp_otel.py +0 -0
  69. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/sdk/browser/browser_use_otel.py +0 -0
  70. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/sdk/browser/cdp_utils.py +0 -0
  71. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/sdk/browser/patchright_otel.py +0 -0
  72. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/sdk/browser/playwright_otel.py +0 -0
  73. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/sdk/browser/pw_utils.py +0 -0
  74. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/sdk/browser/recorder/record.umd.min.cjs +0 -0
  75. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/sdk/browser/utils.py +0 -0
  76. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/sdk/client/asynchronous/async_client.py +0 -0
  77. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/sdk/client/asynchronous/resources/__init__.py +0 -0
  78. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/sdk/client/asynchronous/resources/agent.py +0 -0
  79. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/sdk/client/asynchronous/resources/base.py +0 -0
  80. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/sdk/client/asynchronous/resources/browser_events.py +0 -0
  81. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/sdk/client/asynchronous/resources/evals.py +0 -0
  82. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/sdk/client/asynchronous/resources/evaluators.py +0 -0
  83. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/sdk/client/asynchronous/resources/tags.py +0 -0
  84. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/sdk/client/synchronous/resources/__init__.py +0 -0
  85. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/sdk/client/synchronous/resources/agent.py +0 -0
  86. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/sdk/client/synchronous/resources/base.py +0 -0
  87. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/sdk/client/synchronous/resources/browser_events.py +0 -0
  88. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/sdk/client/synchronous/resources/evals.py +0 -0
  89. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/sdk/client/synchronous/resources/evaluators.py +0 -0
  90. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/sdk/client/synchronous/resources/tags.py +0 -0
  91. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/sdk/client/synchronous/sync_client.py +0 -0
  92. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/sdk/datasets.py +0 -0
  93. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/sdk/decorators.py +0 -0
  94. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/sdk/eval_control.py +0 -0
  95. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/sdk/evaluations.py +0 -0
  96. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/sdk/laminar.py +0 -0
  97. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/sdk/log.py +0 -0
  98. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/sdk/types.py +0 -0
  99. {lmnr-0.7.9 → lmnr-0.7.10}/src/lmnr/sdk/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lmnr
3
- Version: 0.7.9
3
+ Version: 0.7.10
4
4
  Summary: Python SDK for Laminar
5
5
  Author: lmnr.ai
6
6
  Author-email: lmnr.ai <founders@lmnr.ai>
@@ -6,7 +6,7 @@
6
6
 
7
7
  [project]
8
8
  name = "lmnr"
9
- version = "0.7.9"
9
+ version = "0.7.10"
10
10
  description = "Python SDK for Laminar"
11
11
  authors = [
12
12
  { name = "lmnr.ai", email = "founders@lmnr.ai" }
@@ -219,8 +219,19 @@ class TracerWrapper(object):
219
219
 
220
220
  @classmethod
221
221
  def verify_initialized(cls) -> bool:
222
- with cls._lock:
223
- return hasattr(cls, "instance") and hasattr(cls.instance, "_span_processor")
222
+ # This is not using lock, but it is fine to return False from here
223
+ # even if initialization is going on.
224
+
225
+ # If we try to acquire the lock here, it may deadlock if an automatic
226
+ # instrumentation is importing a file that (at the top level) has a
227
+ # function annotated with Laminar's `observe` decorator.
228
+ # The decorator is evaluated at import time, inside `init_instrumentations`,
229
+ # which is called by the `TracerWrapper` constructor while holding the lock.
230
+ # Without the lock here, we will simply return False, which will cause
231
+ # the decorator to return the original function. This is fine, at runtime,
232
+ # the next import statement will re-evaluate the decorator, and Laminar will
233
+ # have been initialized by that time.
234
+ return hasattr(cls, "instance") and hasattr(cls.instance, "_span_processor")
224
235
 
225
236
  @classmethod
226
237
  def clear(cls):
@@ -3,7 +3,7 @@ import httpx
3
3
  from packaging import version
4
4
 
5
5
 
6
- __version__ = "0.7.9"
6
+ __version__ = "0.7.10"
7
7
  PYTHON_VERSION = f"{sys.version_info.major}.{sys.version_info.minor}"
8
8
 
9
9
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes