aidial-sdk 0.42.0.dev1__tar.gz → 0.43.0.dev1__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 (61) hide show
  1. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/PKG-INFO +1 -1
  2. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/application.py +20 -1
  3. aidial_sdk-0.43.0.dev1/aidial_sdk/telemetry/_context.py +13 -0
  4. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/utils/logging.py +4 -0
  5. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/pyproject.toml +1 -1
  6. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/LICENSE +0 -0
  7. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/README.md +0 -0
  8. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/__init__.py +0 -0
  9. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/_errors.py +0 -0
  10. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/_pydantic/__init__.py +0 -0
  11. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/_pydantic/_compat.py +0 -0
  12. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/_pydantic/_model_config.py +0 -0
  13. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/chat_completion/__init__.py +0 -0
  14. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/chat_completion/_cache.py +0 -0
  15. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/chat_completion/_types.py +0 -0
  16. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/chat_completion/base.py +0 -0
  17. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/chat_completion/choice.py +0 -0
  18. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/chat_completion/choice_base.py +0 -0
  19. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/chat_completion/chunks.py +0 -0
  20. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/chat_completion/enums.py +0 -0
  21. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/chat_completion/form.py +0 -0
  22. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/chat_completion/function_call.py +0 -0
  23. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/chat_completion/function_tool_call.py +0 -0
  24. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/chat_completion/request.py +0 -0
  25. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/chat_completion/response.py +0 -0
  26. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/chat_completion/stage.py +0 -0
  27. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/deployment/__init__.py +0 -0
  28. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/deployment/_headers.py +0 -0
  29. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/deployment/configuration.py +0 -0
  30. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/deployment/from_request_mixin.py +0 -0
  31. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/deployment/rate.py +0 -0
  32. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/deployment/tokenize.py +0 -0
  33. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/deployment/truncate_prompt.py +0 -0
  34. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/embeddings/__init__.py +0 -0
  35. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/embeddings/base.py +0 -0
  36. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/embeddings/request.py +0 -0
  37. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/embeddings/response.py +0 -0
  38. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/exceptions.py +0 -0
  39. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/header_propagator.py +0 -0
  40. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/py.typed +0 -0
  41. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/pydantic/v2.py +0 -0
  42. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/pydantic_v1/__init__.py +0 -0
  43. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/telemetry/__init__.py +0 -0
  44. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/telemetry/init.py +0 -0
  45. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/telemetry/types.py +0 -0
  46. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/utils/__init__.py +0 -0
  47. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/utils/_attachment.py +0 -0
  48. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/utils/_cancel_scope.py +0 -0
  49. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/utils/_content_stream.py +0 -0
  50. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/utils/_disconnect_middleware.py +0 -0
  51. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/utils/_indexed_list.py +0 -0
  52. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/utils/_json_log_formatter.py +0 -0
  53. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/utils/_logging.py +0 -0
  54. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/utils/_reflection.py +0 -0
  55. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/utils/env.py +0 -0
  56. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/utils/errors.py +0 -0
  57. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/utils/json.py +0 -0
  58. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/utils/log_config.py +0 -0
  59. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/utils/merge_chunks.py +0 -0
  60. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/utils/pydantic.py +0 -0
  61. {aidial_sdk-0.42.0.dev1 → aidial_sdk-0.43.0.dev1}/aidial_sdk/utils/streaming.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aidial-sdk
3
- Version: 0.42.0.dev1
3
+ Version: 0.43.0.dev1
4
4
  Summary: Framework to create applications and model adapters for AI DIAL
5
5
  License-Expression: Apache-2.0
6
6
  License-File: LICENSE
@@ -2,10 +2,12 @@ import logging
2
2
  import re
3
3
  import warnings
4
4
  from collections.abc import Callable, Coroutine, Iterator
5
+ from contextlib import AbstractContextManager, nullcontext
5
6
  from typing import Any, Literal, TypeVar
6
7
 
7
8
  from fastapi import FastAPI, HTTPException, Request
8
9
  from fastapi.responses import JSONResponse, Response, StreamingResponse
10
+ from starlette.types import Receive, Scope, Send
9
11
 
10
12
  from aidial_sdk._errors import (
11
13
  dial_exception_handler,
@@ -37,7 +39,11 @@ from aidial_sdk.utils._disconnect_middleware import DisconnectMiddleware
37
39
  from aidial_sdk.utils._reflection import get_method_implementation
38
40
  from aidial_sdk.utils.env import env_float, env_var_list
39
41
  from aidial_sdk.utils.log_config import configure_sdk_logger
40
- from aidial_sdk.utils.logging import log_debug, set_log_deployment
42
+ from aidial_sdk.utils.logging import (
43
+ log_debug,
44
+ reset_log_context,
45
+ set_log_deployment,
46
+ )
41
47
  from aidial_sdk.utils.pydantic import model_validate_extra_fields
42
48
  from aidial_sdk.utils.streaming import (
43
49
  add_heartbeat,
@@ -77,6 +83,7 @@ class DIALApp(FastAPI):
77
83
  _allow_extra_request_fields: bool
78
84
  _dial_url: str | None
79
85
  _v1_handlers: dict[str, dict[str, Handler]]
86
+ _reset_otel_context: Callable[[], AbstractContextManager[None]]
80
87
 
81
88
  def __init__(
82
89
  self,
@@ -103,6 +110,7 @@ class DIALApp(FastAPI):
103
110
  self._allow_extra_request_fields = allow_extra_request_fields
104
111
  self._dial_url = dial_url
105
112
  self._v1_handlers = {}
113
+ self._reset_otel_context = nullcontext
106
114
 
107
115
  self.configure_telemetry(telemetry_config)
108
116
 
@@ -142,6 +150,7 @@ class DIALApp(FastAPI):
142
150
  return
143
151
 
144
152
  try:
153
+ from aidial_sdk.telemetry._context import reset_otel_context
145
154
  from aidial_sdk.telemetry.init import init_telemetry
146
155
 
147
156
  init_telemetry(app=self, config=config)
@@ -151,6 +160,16 @@ class DIALApp(FastAPI):
151
160
  "Install the package with the extras: aidial-sdk[telemetry]"
152
161
  )
153
162
 
163
+ self._reset_otel_context = reset_otel_context
164
+
165
+ async def __call__(
166
+ self, scope: Scope, receive: Receive, send: Send
167
+ ) -> None:
168
+ # Workaround for the bug in asyncio: https://github.com/python/cpython/pull/141158
169
+ reset_log_context()
170
+ with self._reset_otel_context():
171
+ await super().__call__(scope, receive, send)
172
+
154
173
  def add_embeddings(
155
174
  self, deployment_name: str, impl: Embeddings
156
175
  ) -> "DIALApp":
@@ -0,0 +1,13 @@
1
+ import contextlib
2
+ from collections.abc import Iterator
3
+
4
+ from opentelemetry.context import Context, attach, detach
5
+
6
+
7
+ @contextlib.contextmanager
8
+ def reset_otel_context() -> Iterator[None]:
9
+ token = attach(Context())
10
+ try:
11
+ yield
12
+ finally:
13
+ detach(token)
@@ -12,6 +12,10 @@ def set_log_deployment(new_deployment_id: str):
12
12
  deployment_id.set(new_deployment_id)
13
13
 
14
14
 
15
+ def reset_log_context() -> None:
16
+ deployment_id.set(None)
17
+
18
+
15
19
  def log_info(message: str, *args, **kwargs):
16
20
  logger.info(f"[{deployment_id.get()}] {message}", *args, **kwargs)
17
21
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "aidial-sdk"
3
- version = "0.42.0.dev1"
3
+ version = "0.43.0.dev1"
4
4
  description = "Framework to create applications and model adapters for AI DIAL"
5
5
  authors = [{ name = "EPAM RAIL", email = "SpecialEPM-DIALDevTeam@epam.com" }]
6
6
  license = "Apache-2.0"