agenta 0.38.2__py3-none-any.whl → 0.39.1__py3-none-any.whl

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.

Potentially problematic release.


This version of agenta might be problematic. Click here for more details.

agenta/__init__.py CHANGED
@@ -20,7 +20,7 @@ from .sdk.types import (
20
20
  PromptTemplate,
21
21
  )
22
22
 
23
- from .sdk.utils.logging import log as logging
23
+ from .sdk.utils.logging import get_module_logger
24
24
  from .sdk.tracing import Tracing, get_tracer
25
25
  from .sdk.decorators.tracing import instrument
26
26
  from .sdk.tracing.conventions import Reference
agenta/sdk/agenta_init.py CHANGED
@@ -3,7 +3,7 @@ from os import getenv
3
3
  from typing import Optional, Callable, Any
4
4
  from importlib.metadata import version
5
5
 
6
- from agenta.sdk.utils.logging import log
6
+ from agenta.sdk.utils.logging import get_module_logger
7
7
  from agenta.sdk.utils.globals import set_global
8
8
  from agenta.client.client import AgentaApi, AsyncAgentaApi
9
9
 
@@ -11,6 +11,9 @@ from agenta.sdk.tracing import Tracing
11
11
  from agenta.sdk.context.routing import routing_context
12
12
 
13
13
 
14
+ log = get_module_logger(__file__)
15
+
16
+
14
17
  class AgentaSingleton:
15
18
  """Singleton class to save all the "global variables" for the sdk."""
16
19
 
@@ -28,7 +28,7 @@ from agenta.sdk.context.tracing import (
28
28
  )
29
29
  from agenta.sdk.router import router
30
30
  from agenta.sdk.utils.exceptions import suppress, display_exception
31
- from agenta.sdk.utils.logging import log
31
+ from agenta.sdk.utils.logging import get_module_logger
32
32
  from agenta.sdk.utils.helpers import get_current_version
33
33
  from agenta.sdk.types import (
34
34
  MultipleChoice,
@@ -38,7 +38,7 @@ from agenta.sdk.types import (
38
38
 
39
39
  import agenta as ag
40
40
 
41
- log.setLevel("DEBUG")
41
+ log = get_module_logger(__file__)
42
42
 
43
43
  AGENTA_RUNTIME_PREFIX = environ.get("AGENTA_RUNTIME_PREFIX", "")
44
44
 
@@ -5,6 +5,7 @@ from itertools import chain
5
5
  from inspect import iscoroutinefunction, getfullargspec
6
6
 
7
7
  from opentelemetry import baggage
8
+ from opentelemetry.trace import NonRecordingSpan
8
9
  from opentelemetry.context import attach, detach, get_current
9
10
  from opentelemetry.baggage import set_baggage, get_all
10
11
 
@@ -12,8 +13,13 @@ from agenta.sdk.utils.exceptions import suppress
12
13
  from agenta.sdk.context.tracing import tracing_context
13
14
  from agenta.sdk.tracing.conventions import parse_span_kind
14
15
 
16
+
17
+ from agenta.sdk.utils.logging import get_module_logger
18
+
15
19
  import agenta as ag
16
20
 
21
+ log = get_module_logger(__name__)
22
+
17
23
 
18
24
  class instrument: # pylint: disable=invalid-name
19
25
  DEFAULT_KEY = "__default__"
@@ -56,7 +62,7 @@ class instrument: # pylint: disable=invalid-name
56
62
  name=func.__name__,
57
63
  kind=self.kind,
58
64
  context=ctx,
59
- ):
65
+ ) as span:
60
66
  self._set_link()
61
67
 
62
68
  self._pre_instrument(func, *args, **kwargs)
@@ -84,7 +90,7 @@ class instrument: # pylint: disable=invalid-name
84
90
  name=func.__name__,
85
91
  kind=self.kind,
86
92
  context=ctx,
87
- ):
93
+ ) as span:
88
94
  self._set_link()
89
95
 
90
96
  self._pre_instrument(func, *args, **kwargs)
@@ -291,9 +297,7 @@ class instrument: # pylint: disable=invalid-name
291
297
  not in (
292
298
  ignore
293
299
  if isinstance(ignore, list)
294
- else io.keys()
295
- if ignore is True
296
- else []
300
+ else io.keys() if ignore is True else []
297
301
  )
298
302
  }
299
303
 
@@ -5,7 +5,9 @@ import agenta as ag
5
5
 
6
6
  from agenta.sdk.tracing.spans import CustomSpan
7
7
  from agenta.sdk.utils.exceptions import suppress # TODO: use it !
8
- from agenta.sdk.utils.logging import log
8
+ from agenta.sdk.utils.logging import get_module_logger
9
+
10
+ log = get_module_logger(__file__)
9
11
 
10
12
 
11
13
  def litellm_handler():
@@ -1,11 +1,9 @@
1
- import logging
2
-
1
+ from agenta.sdk.utils.logging import get_module_logger
3
2
  from agenta.sdk.utils.exceptions import handle_exceptions
4
3
 
5
4
  import agenta as ag
6
5
 
7
-
8
- logger = logging.getLogger(__name__)
6
+ log = get_module_logger(__file__)
9
7
 
10
8
 
11
9
  class AppManager:
@@ -1,17 +1,17 @@
1
1
  import json
2
- import logging
3
2
  from pathlib import Path
4
3
  from typing import Optional, Type, TypeVar, Dict, Any, Union
5
4
 
6
5
  import yaml
7
6
  from pydantic import BaseModel
8
7
 
8
+ from agenta.sdk.utils.logging import get_module_logger
9
9
  from agenta.sdk.managers.shared import SharedManager
10
10
  from agenta.sdk.context.routing import routing_context
11
11
 
12
12
  T = TypeVar("T", bound=BaseModel)
13
13
 
14
- logger = logging.getLogger(__name__)
14
+ log = get_module_logger(__file__)
15
15
 
16
16
  AVAILABLE_ENVIRONMENTS = ["development", "production", "staging"]
17
17
 
@@ -1,6 +1,6 @@
1
- import logging
2
1
  from typing import Optional, Dict, Any
3
2
 
3
+ from agenta.sdk.utils.logging import get_module_logger
4
4
  from agenta.sdk.utils.exceptions import handle_exceptions
5
5
 
6
6
  from agenta.sdk.types import (
@@ -13,8 +13,7 @@ from agenta.client.backend.types.reference_request_model import ReferenceRequest
13
13
 
14
14
  import agenta as ag
15
15
 
16
-
17
- logger = logging.getLogger(__name__)
16
+ log = get_module_logger(__file__)
18
17
 
19
18
 
20
19
  class SharedManager:
@@ -11,10 +11,12 @@ from fastapi.responses import JSONResponse
11
11
  from agenta.sdk.utils.cache import TTLLRUCache
12
12
  from agenta.sdk.utils.constants import TRUTHY
13
13
  from agenta.sdk.utils.exceptions import display_exception
14
- from agenta.sdk.utils.logging import log
14
+ from agenta.sdk.utils.logging import get_module_logger
15
15
 
16
16
  import agenta as ag
17
17
 
18
+ log = get_module_logger(__file__)
19
+
18
20
  AGENTA_RUNTIME_PREFIX = getenv("AGENTA_RUNTIME_PREFIX", "")
19
21
 
20
22
 
@@ -9,6 +9,10 @@ from opentelemetry.trace.propagation.tracecontext import TraceContextTextMapProp
9
9
  from agenta.sdk.utils.exceptions import suppress
10
10
  from agenta.sdk.tracing.propagation import extract
11
11
 
12
+ from agenta.sdk.utils.logging import get_module_logger
13
+
14
+ log = get_module_logger(__name__)
15
+
12
16
 
13
17
  class OTelMiddleware(BaseHTTPMiddleware):
14
18
  def __init__(self, app: FastAPI):
@@ -17,8 +21,13 @@ class OTelMiddleware(BaseHTTPMiddleware):
17
21
  async def dispatch(self, request: Request, call_next: Callable):
18
22
  request.state.otel = {"baggage": {}, "traceparent": None}
19
23
 
24
+ headers = dict(request.headers)
25
+
26
+ if "newrelic" in headers:
27
+ headers["traceparent"] = None
28
+
20
29
  with suppress():
21
- _, traceparent, baggage = extract(request.headers)
30
+ _, traceparent, baggage = extract(headers)
22
31
 
23
32
  request.state.otel = {"baggage": baggage, "traceparent": traceparent}
24
33
 
@@ -16,6 +16,10 @@ from agenta.sdk.context.exporting import (
16
16
  )
17
17
  from agenta.sdk.utils.cache import TTLLRUCache
18
18
 
19
+ from agenta.sdk.utils.logging import get_module_logger
20
+
21
+ log = get_module_logger(__file__)
22
+
19
23
 
20
24
  class InlineTraceExporter(SpanExporter):
21
25
  def __init__(
@@ -13,9 +13,11 @@ from opentelemetry.sdk.trace.export import (
13
13
  _DEFAULT_EXPORT_TIMEOUT_MILLIS,
14
14
  )
15
15
 
16
- from agenta.sdk.utils.logging import log
16
+ from agenta.sdk.utils.logging import get_module_logger
17
17
  from agenta.sdk.tracing.conventions import Reference
18
18
 
19
+ log = get_module_logger(__file__)
20
+
19
21
 
20
22
  class TraceProcessor(BatchSpanProcessor):
21
23
  def __init__(
@@ -15,7 +15,7 @@ from opentelemetry.sdk.resources import Resource
15
15
 
16
16
  from agenta.sdk.utils.singleton import Singleton
17
17
  from agenta.sdk.utils.exceptions import suppress
18
- from agenta.sdk.utils.logging import log
18
+ from agenta.sdk.utils.logging import get_module_logger
19
19
  from agenta.sdk.tracing.processors import TraceProcessor
20
20
  from agenta.sdk.tracing.exporters import InlineExporter, OTLPExporter
21
21
  from agenta.sdk.tracing.spans import CustomSpan
@@ -24,6 +24,8 @@ from agenta.sdk.tracing.conventions import Reference, is_valid_attribute_key
24
24
  from agenta.sdk.tracing.propagation import extract, inject
25
25
  from agenta.sdk.utils.cache import TTLLRUCache
26
26
 
27
+ log = get_module_logger(__file__)
28
+
27
29
 
28
30
  class Tracing(metaclass=Singleton):
29
31
  VERSION = "0.1.0"
@@ -3,7 +3,9 @@ from traceback import format_exc
3
3
  from functools import wraps
4
4
  from inspect import iscoroutinefunction
5
5
 
6
- from agenta.sdk.utils.logging import log
6
+ from agenta.sdk.utils.logging import get_module_logger
7
+
8
+ log = get_module_logger(__file__)
7
9
 
8
10
 
9
11
  def display_exception(message: str):
@@ -1,21 +1,276 @@
1
+ from typing import Any, Optional
2
+
3
+ import os
4
+ import re
5
+ import sys
1
6
  import logging
2
- from os import getenv
3
7
 
8
+ import structlog
9
+ from structlog.typing import EventDict, WrappedLogger, Processor
10
+
11
+ # from datetime import datetime
12
+ # from logging.handlers import RotatingFileHandler
13
+
14
+ # from opentelemetry.trace import get_current_span
15
+ # from opentelemetry._logs import set_logger_provider
16
+ # from opentelemetry.sdk._logs import LoggingHandler, LoggerProvider
17
+ # from opentelemetry.sdk._logs.export import BatchLogRecordProcessor
18
+ # from opentelemetry.exporter.otlp.proto.http._log_exporter import OTLPLogExporter
19
+
20
+ TRACE_LEVEL = 1
21
+ logging.TRACE = TRACE_LEVEL
22
+ logging.addLevelName(TRACE_LEVEL, "TRACE")
23
+
24
+
25
+ def trace(self, message, *args, **kwargs):
26
+ if self.isEnabledFor(TRACE_LEVEL):
27
+ self._log(TRACE_LEVEL, message, args, **kwargs)
28
+
29
+
30
+ logging.Logger.trace = trace
31
+
32
+
33
+ def bound_logger_trace(self, *args, **kwargs):
34
+ return self._proxy_to_logger("trace", *args, **kwargs)
35
+
36
+
37
+ structlog.stdlib.BoundLogger.trace = bound_logger_trace
38
+
39
+ # ENV VARS
40
+ LOG_CONSOLE_ENABLED = os.getenv("LOG_CONSOLE_ENABLED", "true") == "true"
41
+ LOG_CONSOLE_LEVEL = os.getenv("LOG_CONSOLE_LEVEL", "TRACE").upper()
42
+
43
+ # LOG_OTLP_ENABLED = os.getenv("LOG_OTLP_ENABLED", "false") == "true"
44
+ # LOG_OTLP_LEVEL = os.getenv("LOG_OTLP_LEVEL", "INFO").upper()
45
+
46
+ # LOG_FILE_ENABLED = os.getenv("LOG_FILE_ENABLED", "true") == "true"
47
+ # LOG_FILE_LEVEL = os.getenv("LOG_FILE_LEVEL", "WARNING").upper()
48
+ # LOG_FILE_BASE = os.getenv("LOG_FILE_PATH", "error")
49
+ # LOG_FILE_DATE = datetime.utcnow().strftime("%Y-%m-%d")
50
+ # LOG_FILE_PATH = f"{LOG_FILE_BASE}-{LOG_FILE_DATE}.log"
51
+
52
+ # COLORS
53
+ LEVEL_COLORS = {
54
+ "TRACE": "\033[97m",
55
+ "DEBUG": "\033[38;5;39m",
56
+ "INFO": "\033[38;5;70m",
57
+ "INFO.": "\033[38;5;70m",
58
+ "WARNING": "\033[38;5;214m",
59
+ "WARN.": "\033[38;5;214m",
60
+ "ERROR": "\033[38;5;203m",
61
+ "CRITICAL": "\033[38;5;199m",
62
+ "FATAL": "\033[1;37;41m",
63
+ }
64
+ RESET = "\033[0m"
65
+
66
+ SEVERITY_NUMBERS = {
67
+ "TRACE": 1,
68
+ "DEBUG": 5,
69
+ "INFO": 9,
70
+ "INFO.": 9,
71
+ "WARNING": 13,
72
+ "WARN.": 13,
73
+ "ERROR": 17,
74
+ "CRITICAL": 21,
75
+ "FATAL": 21,
76
+ }
77
+
78
+ # PROCESSORS
79
+
80
+
81
+ def process_positional_args(_, __, event_dict: EventDict) -> EventDict:
82
+ args = event_dict.pop("positional_args", ())
83
+ if args and isinstance(event_dict.get("event"), str):
84
+ try:
85
+ event_dict["event"] = event_dict["event"] % args
86
+ except Exception:
87
+ event_dict["event"] = f"{event_dict['event']} {args}"
88
+ return event_dict
89
+
90
+
91
+ # def add_trace_context(_, __, event_dict: EventDict) -> EventDict:
92
+ # span = get_current_span()
93
+ # if span and span.get_span_context().is_valid:
94
+ # ctx = span.get_span_context()
95
+ # event_dict["TraceId"] = format(ctx.trace_id, "032x")
96
+ # event_dict["SpanId"] = format(ctx.span_id, "016x")
97
+ # return event_dict
98
+
99
+
100
+ def add_logger_info(
101
+ logger: WrappedLogger, method_name: str, event_dict: EventDict
102
+ ) -> EventDict:
103
+ level = method_name.upper()
104
+ if level == "CRITICAL":
105
+ level = "FATAL"
106
+ elif level == "WARNING":
107
+ level = "WARN."
108
+ elif level == "INFO":
109
+ level = "INFO."
110
+
111
+ event_dict["level"] = level
112
+ event_dict["SeverityText"] = level
113
+ event_dict["SeverityNumber"] = SEVERITY_NUMBERS.get(level, 9)
114
+ event_dict["LoggerName"] = logger.name
115
+ event_dict["MethodName"] = method_name
116
+ return event_dict
117
+
118
+
119
+ def colored_console_renderer() -> Processor:
120
+ hidden = {
121
+ "SeverityText",
122
+ "SeverityNumber",
123
+ "MethodName",
124
+ "logger_factory",
125
+ "LoggerName",
126
+ "level",
127
+ }
128
+
129
+ def render(_, __, event_dict: EventDict) -> str:
130
+ ts = event_dict.pop("Timestamp", "")[:23] + "Z"
131
+ level = event_dict.pop("level", "INFO")
132
+ msg = event_dict.pop("event", "")
133
+ color = LEVEL_COLORS.get(level, "")
134
+ padded = f"[{level:<5}]"
135
+ logger = f"\033[38;5;245m[{event_dict.pop('logger', '')}]\033[0m"
136
+ extras = " ".join(
137
+ f"\033[38;5;245m{k}={v}\033[0m"
138
+ for k, v in event_dict.items()
139
+ if k not in hidden
140
+ )
141
+ return f"{ts} {color}{padded}{RESET} {msg} {logger} {extras}"
142
+
143
+ return render
144
+
145
+
146
+ # def plain_renderer() -> Processor:
147
+ # hidden = {
148
+ # "SeverityText",
149
+ # "SeverityNumber",
150
+ # "MethodName",
151
+ # "logger_factory",
152
+ # "LoggerName",
153
+ # "level",
154
+ # }
155
+
156
+ # def render(_, __, event_dict: EventDict) -> str:
157
+ # ts = event_dict.pop("Timestamp", "")[:23] + "Z"
158
+ # level = event_dict.get("level", "")
159
+ # msg = event_dict.pop("event", "")
160
+ # padded = f"[{level:<5}]"
161
+ # logger = f"[{event_dict.pop('logger', '')}]"
162
+ # extras = " ".join(f"{k}={v}" for k, v in event_dict.items() if k not in hidden)
163
+ # return f"{ts} {padded} {msg} {logger} {extras}"
164
+
165
+ # return render
166
+
167
+
168
+ # def json_renderer() -> Processor:
169
+ # return structlog.processors.JSONRenderer()
170
+
171
+
172
+ SHARED_PROCESSORS: list[Processor] = [
173
+ structlog.processors.TimeStamper(fmt="iso", utc=True, key="Timestamp"),
174
+ process_positional_args,
175
+ # add_trace_context,
176
+ add_logger_info,
177
+ structlog.processors.format_exc_info,
178
+ structlog.processors.dict_tracebacks,
179
+ ]
180
+
181
+
182
+ def create_struct_logger(
183
+ processors: list[Processor], name: str
184
+ ) -> structlog.stdlib.BoundLogger:
185
+ logger = logging.getLogger(name)
186
+ logger.setLevel(TRACE_LEVEL)
187
+ return structlog.wrap_logger(
188
+ logger,
189
+ processors=SHARED_PROCESSORS + processors,
190
+ wrapper_class=structlog.stdlib.BoundLogger,
191
+ logger_factory=structlog.stdlib.LoggerFactory(),
192
+ cache_logger_on_first_use=True,
193
+ )
194
+
195
+
196
+ # CONFIGURE HANDLERS AND STRUCTLOG LOGGERS
197
+ handlers = []
198
+ loggers = []
199
+
200
+ if LOG_CONSOLE_ENABLED:
201
+ h = logging.StreamHandler(sys.stdout)
202
+ h.setLevel(getattr(logging, LOG_CONSOLE_LEVEL, TRACE_LEVEL))
203
+ h.setFormatter(logging.Formatter("%(message)s"))
204
+ logging.getLogger("console").addHandler(h)
205
+ loggers.append(create_struct_logger([colored_console_renderer()], "console"))
206
+
207
+ # if LOG_FILE_ENABLED:
208
+ # h = RotatingFileHandler(LOG_FILE_PATH, maxBytes=10 * 1024 * 1024, backupCount=5)
209
+ # h.setLevel(getattr(logging, LOG_FILE_LEVEL, logging.WARNING))
210
+ # h.setFormatter(logging.Formatter("%(message)s"))
211
+ # logging.getLogger("file").addHandler(h)
212
+ # loggers.append(create_struct_logger([plain_renderer()], "file"))
213
+
214
+ # if LOG_OTLP_ENABLED:
215
+ # provider = LoggerProvider()
216
+ # exporter = OTLPLogExporter()
217
+ # provider.add_log_record_processor(BatchLogRecordProcessor(exporter))
218
+ # set_logger_provider(provider)
219
+ # h = LoggingHandler(
220
+ # level=getattr(logging, LOG_OTLP_LEVEL, logging.INFO), logger_provider=provider
221
+ # )
222
+ # h.setFormatter(logging.Formatter("%(message)s"))
223
+ # logging.getLogger("otel").addHandler(h)
224
+ # loggers.append(create_struct_logger([json_renderer()], "otel"))
225
+
226
+
227
+ class MultiLogger:
228
+ def __init__(self, *loggers: structlog.stdlib.BoundLogger):
229
+ self._loggers = loggers
230
+
231
+ def _log(self, level: str, *args: Any, **kwargs: Any):
232
+ for l in self._loggers:
233
+ getattr(l, level)(*args, **kwargs)
234
+
235
+ def debug(self, *a, **k):
236
+ self._log("debug", *a, **k)
237
+
238
+ def info(self, *a, **k):
239
+ self._log("info", *a, **k)
240
+
241
+ def warning(self, *a, **k):
242
+ self._log("warning", *a, **k)
243
+
244
+ def warn(self, *a, **k):
245
+ self._log("warn", *a, **k)
246
+
247
+ def error(self, *a, **k):
248
+ self._log("error", *a, **k)
249
+
250
+ def critical(self, *a, **k):
251
+ self._log("critical", *a, **k)
252
+
253
+ def fatal(self, *a, **k):
254
+ self._log("fatal", *a, **k)
255
+
256
+ def trace(self, *a, **k):
257
+ self._log("trace", *a, **k)
258
+
259
+ def bind(self, **kwargs):
260
+ return MultiLogger(*(l.bind(**kwargs) for l in self._loggers))
4
261
 
5
- class Logger:
6
- def __init__(self, name="agenta.logger", level=logging.WARNING):
7
- if getenv("AGENTA_DEBUG"):
8
- level = logging.DEBUG
9
262
 
10
- self.logger = logging.getLogger(name)
11
- self.logger.setLevel(level)
263
+ multi_logger = MultiLogger(*loggers)
12
264
 
13
- console_handler = logging.StreamHandler()
14
- self.logger.addHandler(console_handler)
15
265
 
16
- @property
17
- def log(self) -> logging.Logger:
18
- return self.logger
266
+ def get_logger(name: Optional[str] = None) -> MultiLogger:
267
+ return multi_logger.bind(logger=name)
19
268
 
20
269
 
21
- log = Logger().log
270
+ def get_module_logger(path: str) -> MultiLogger:
271
+ match = re.search(r"(?:/sdk|/api)(/.*)", path)
272
+ if match:
273
+ trimmed = match.group(0).lstrip("/")
274
+ dotted = trimmed.removesuffix(".py").replace("/", ".")
275
+ return get_logger(dotted)
276
+ return get_logger(os.path.basename(path).removesuffix(".py"))
@@ -1,7 +1,9 @@
1
1
  import time
2
2
  from functools import wraps
3
3
 
4
- from agenta.sdk.utils.logging import log
4
+ from agenta.sdk.utils.logging import get_module_logger
5
+
6
+ log = get_module_logger(__file__)
5
7
 
6
8
 
7
9
  def timeit(func):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: agenta
3
- Version: 0.38.2
3
+ Version: 0.39.1
4
4
  Summary: The SDK for agenta is an open-source LLMOps platform.
5
5
  Keywords: LLMOps,LLM,evaluation,prompt engineering
6
6
  Author: Mahmoud Mabrouk
@@ -18,13 +18,15 @@ Classifier: Topic :: Software Development :: Libraries
18
18
  Requires-Dist: fastapi (>=0.100.0)
19
19
  Requires-Dist: httpx (>=0.24,<0.28)
20
20
  Requires-Dist: importlib-metadata (>=8.0.0,<9.0)
21
- Requires-Dist: litellm (>=1.48.0,<2.0.0)
21
+ Requires-Dist: jinja2 (>=3.1.6,<4.0.0)
22
+ Requires-Dist: litellm (>=1.61.15,<2.0.0)
22
23
  Requires-Dist: opentelemetry-api (>=1.27.0,<2.0.0)
23
24
  Requires-Dist: opentelemetry-exporter-otlp-proto-http (>=1.27.0,<2.0.0)
24
25
  Requires-Dist: opentelemetry-sdk (>=1.27.0,<2.0.0)
25
26
  Requires-Dist: pydantic (>=2)
26
27
  Requires-Dist: python-dotenv (>=1.0.0,<2.0.0)
27
28
  Requires-Dist: pyyaml (>=6.0.2,<7.0.0)
29
+ Requires-Dist: structlog (>=25.2.0,<26.0.0)
28
30
  Requires-Dist: toml (>=0.10.2,<0.11.0)
29
31
  Project-URL: Documentation, https://docs.agenta.ai
30
32
  Project-URL: Homepage, https://agenta.ai
@@ -1,4 +1,4 @@
1
- agenta/__init__.py,sha256=WVcfOicm9wdkpCN7H0FjByQ-I1UYhC2D8cHlJMnmOmM,2284
1
+ agenta/__init__.py,sha256=QSuJfIMR-XlW1RYFTsgf2vlLvoB8xc_I9efkl7bxx_A,2287
2
2
  agenta/client/Readme.md,sha256=bbX6p0wKLKIEQDhFd3b1XghenHSC8W_j000GBBZiOLY,2880
3
3
  agenta/client/__init__.py,sha256=tfhMfCobonUIifh_OUnzs0jcySNoh2RAORMFJV5k2Us,6420
4
4
  agenta/client/backend/access_control/__init__.py,sha256=9mUnTDeA1TxYvkj1l01A1prqsJV0ERRY2tzkY1fA4MQ,64
@@ -199,57 +199,57 @@ agenta/client/types/provider_kind.py~feat_model-registry,sha256=u_fXncQyXH3pfh2w
199
199
  agenta/config.py,sha256=0VrTqduB4g8Mt_Ll7ffFcEjKF5qjTUIxmUtTPW2ygWw,653
200
200
  agenta/config.toml,sha256=sIORbhnyct2R9lJrquxhNL4pHul3O0R7iaipCoja5MY,193
201
201
  agenta/sdk/__init__.py,sha256=m5UxAteSVzJtYhSsmUmdGFsyFdZO6jlfvOpJi_4mK_E,2118
202
- agenta/sdk/agenta_init.py,sha256=SeJiDGISEhpDEV4mj4DM97x7G91xfX1d0m5ZiVOIKtQ,6061
202
+ agenta/sdk/agenta_init.py,sha256=hyE_PGHtiqn29iftqqplJJCnn5xPPLa09fzBtU84EBY,6111
203
203
  agenta/sdk/assets.py,sha256=4FN1IfZfBx9g6jW8KzT9ei4BQei9-7MasxHHD9UdeMg,7752
204
204
  agenta/sdk/context/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
205
205
  agenta/sdk/context/exporting.py,sha256=16X8fgMhl58gehSlqANX97FiKxx4TkGiG4d2B0-7ZX0,516
206
206
  agenta/sdk/context/routing.py,sha256=FEsjw8EttI1SMyUo96ptcUsvHJnhoKwdr1szlkxxJNU,598
207
207
  agenta/sdk/context/tracing.py,sha256=xjErrXP1Nq1AfL-Cif1l-lNEfs12eQ3v_VCRgoKe7nY,743
208
208
  agenta/sdk/decorators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
209
- agenta/sdk/decorators/routing.py,sha256=HjAhJcttOdf2NM5HVXYgosh3BD2mF87UO9od0RSZ7Bw,24773
210
- agenta/sdk/decorators/tracing.py,sha256=tIi5gpwzvXd26pFW-7kYQtTFO8w1zzwFeAPY2Ldq4P4,9952
209
+ agenta/sdk/decorators/routing.py,sha256=RUq55Y3GHkQilJlobQmUHnHBmPZrhHgQyPxKF_D9RXo,24799
210
+ agenta/sdk/decorators/tracing.py,sha256=Px4X9thTlBH7rmq-Wi7BAxEhy_xdfb7XsEEmuaq-SzQ,10077
211
211
  agenta/sdk/litellm/__init__.py,sha256=Bpz1gfHQc0MN1yolWcjifLWznv6GjHggvRGQSpxpihM,37
212
- agenta/sdk/litellm/litellm.py,sha256=Xx_YJu05BYkmIe6uObjS6DwzjgwfNytGWf807Zh0vcU,10153
212
+ agenta/sdk/litellm/litellm.py,sha256=vZYuzcSss04zE258eC-3xjKjY-HToafB1ekjmKjMR4U,10202
213
213
  agenta/sdk/litellm/mockllm.py,sha256=8V6dqdv8eA4P-VoXIwHNYlIjHG189P14POSfSfluVw0,678
214
214
  agenta/sdk/litellm/mocks/__init__.py,sha256=0bGjOOWXz8BxE0rvRWciPP7SAegO2mgi_UtWw8jTlDk,866
215
215
  agenta/sdk/managers/__init__.py,sha256=SN-LRwG0pRRDV3u2Q4JiiSTigN3-mYpzGNM35RzT4mc,238
216
- agenta/sdk/managers/apps.py,sha256=RSE5ER-a0IHo7iZrcQLshQZMemPTfAVsBfR8H1J-ryQ,1713
217
- agenta/sdk/managers/config.py,sha256=2LFl7aBF7FKd6UKhqcbnDXzlP8Rsj7hnCu5wBllVQzc,7753
216
+ agenta/sdk/managers/apps.py,sha256=T8sGAcrLDLn4qotxpaSY0pWrdWtpu6PL2w5Obq6nvsE,1748
217
+ agenta/sdk/managers/config.py,sha256=B4QGnP9jkmIEkl_QR1hF3XyqeiRCEOy_LySbXnsGp9I,7790
218
218
  agenta/sdk/managers/deployment.py,sha256=SEokjZeh6n7HRKZ92Y0WncdG49hIFx-Z3B3HAl2kmUg,1174
219
219
  agenta/sdk/managers/secrets.py,sha256=QFWLQY3Enev187sNOvV3yBBYFwcPoDnInwgwlRD0SEw,7458
220
- agenta/sdk/managers/shared.py,sha256=vUhO2thObHxCIowyiM_KFsxPY2q6Rv_lHr2Up8WvFjg,21523
220
+ agenta/sdk/managers/shared.py,sha256=LUX9RC5tfq5sZZi9ElGanSJ0B-4KV93LVUiUqfJ74xY,21559
221
221
  agenta/sdk/managers/variant.py,sha256=A5ga3mq3b0weUTXa9HO72MGaspthGcu1uK9K5OnP738,4172
222
222
  agenta/sdk/managers/vault.py,sha256=054ce9X_xKa2M4NtQWz-GugO6q_pYVWCP3IxbAJJcRw,337
223
223
  agenta/sdk/middleware/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
224
- agenta/sdk/middleware/auth.py,sha256=uUoCM3ST8ts_oUlmhxhdnAOJ0uIL8QxupLTRm6tZ_-Q,10107
224
+ agenta/sdk/middleware/auth.py,sha256=Kl7jSI2kVLETebBQj6R5HoxtTmSbsEkAORLhuhcv9YA,10156
225
225
  agenta/sdk/middleware/config.py,sha256=9yFFlrkcoGNczj0ZfkbliWIt1S84cnEvB4RMCzdbBWc,7715
226
226
  agenta/sdk/middleware/cors.py,sha256=q3r7lGkrIdMcT_vuhsburMcjG7pyl7w0ycxrIrGJ2e8,921
227
227
  agenta/sdk/middleware/inline.py,sha256=ee8E4XBGcRSrHTvblqX1yRXuTN_sxLm7lY1jnywrBG8,901
228
228
  agenta/sdk/middleware/mock.py,sha256=bCUN9iJBxePyN9MBwBpJs-_iCNkUQeUjIIu3WElS1oQ,759
229
- agenta/sdk/middleware/otel.py,sha256=ShaB7iVaUjdq6lOXf0vmZthQsDUjAgIrseyPeJzVkEU,840
229
+ agenta/sdk/middleware/otel.py,sha256=lHzhGUv4fq2RPuTPH2keJ16v-_cBUrLrTqWzHUmEVdI,1041
230
230
  agenta/sdk/middleware/vault.py,sha256=Hd_S8Lw1PLFdavnFwW_bb-HYlyYvaCxNJNwjvd2Bxyc,4043
231
231
  agenta/sdk/router.py,sha256=mOguvtOwl2wmyAgOuWTsf98pQwpNiUILKIo67W_hR3A,119
232
232
  agenta/sdk/tracing/__init__.py,sha256=rQNe5-zT5Kt7_CDhq-lnUIi1EYTBVzVf_MbfcIxVD98,41
233
233
  agenta/sdk/tracing/attributes.py,sha256=zh8JQZSeYCLBeIRSopKJx6QQ-WEgw08Cr64DS_WOcT8,3833
234
234
  agenta/sdk/tracing/conventions.py,sha256=JBtznBXZ3aRkGKkLl7cPwdMNh3w1G-H2Ta2YrAxbr38,950
235
- agenta/sdk/tracing/exporters.py,sha256=mnqZXbien7uzEdwfm06BFOZnC8JVJvNWI4ODSyMUeSc,3160
235
+ agenta/sdk/tracing/exporters.py,sha256=ib-VSMaqKn3XDrChjjHlsPJ9Fu3ePgIYR-TAWxSJv9Q,3251
236
236
  agenta/sdk/tracing/inline.py,sha256=tY9mH1zMlJMqf2WWKJdakLtMHJKNeYRaynqvsPeqpTY,31312
237
- agenta/sdk/tracing/processors.py,sha256=AfAzyh3YEo6avhnE2vhqEEF5cnnREjP2xOoMR3WIpU4,4261
237
+ agenta/sdk/tracing/processors.py,sha256=zEuyvFc6vLHGjHMU64gfme-tVtm89uLA3eCpiUgf2A8,4310
238
238
  agenta/sdk/tracing/propagation.py,sha256=EeOqDMqnh_MoEhGd1do_vy_tQBYUcoC8kpLqVoZeqg0,2561
239
239
  agenta/sdk/tracing/spans.py,sha256=nqUOjjirBxB8Eacv8Qj4Ra_6rknGi3lbJdNyKmk5ODQ,3707
240
- agenta/sdk/tracing/tracing.py,sha256=kWEt9AdUnTetgq7mR-fnap2isgL3NBg44cG7WFhZ_GU,7162
240
+ agenta/sdk/tracing/tracing.py,sha256=g4eFgd_piVn0M5kwlaZUrJBU4DG7kxErWe9meXPgcgI,7211
241
241
  agenta/sdk/types.py,sha256=xkb1Y2rbzDcwQ05rFLeTE7jagg8RtLmkFPCElTCqok4,18942
242
242
  agenta/sdk/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
243
243
  agenta/sdk/utils/cache.py,sha256=69pQCtmh10DiYoOdKv4t2fCYDQCuWZtH4uy36kXewpw,1372
244
244
  agenta/sdk/utils/constants.py,sha256=zW3R4rjXOo2L5lz6q84l_zYuOM9u4mpPRHw_B1Dr_hI,67
245
245
  agenta/sdk/utils/costs.py,sha256=i8C7ud__pThLS55XkN4YW8czXtGeXr2mx7jjcOFeiXg,5955
246
- agenta/sdk/utils/exceptions.py,sha256=8FQP05ecHLpq6zSj3MbfdNp9SqP0a7iC_dA5uAe0vkE,1455
246
+ agenta/sdk/utils/exceptions.py,sha256=4zTyG5WDpXRkgK7yzUQ80Efc-KUJPKl0Tts_utYLAK8,1504
247
247
  agenta/sdk/utils/globals.py,sha256=9ixKS8aI6ZWgsjT8WngvTg4dsnP2cKErNJngHxzdK9U,256
248
248
  agenta/sdk/utils/helpers.py,sha256=utrxDoELpR6QgFgHCEAWrWW4TYWXA10q72Gs5R78Ens,181
249
- agenta/sdk/utils/logging.py,sha256=eFzEFuYpggfIhEKv09JZRqcDzkmZ482a_E2G-X0FK7Y,473
249
+ agenta/sdk/utils/logging.py,sha256=gBk2ecRvltN7f8qtnUHXBiZPWOdArN_b5civ_3w_Oek,8225
250
250
  agenta/sdk/utils/preinit.py,sha256=YlJL7RLfel0R7DFp-jK7OV-z4ZIQJM0oupYlk7g8b5o,1278
251
251
  agenta/sdk/utils/singleton.py,sha256=17Ph7LGnnV8HkPjImruKita2ni03Ari5jr0jqm__4sc,312
252
- agenta/sdk/utils/timing.py,sha256=rmBPSBuUnIu-epocUCVk0KcM2r36HuDoxkFqOZgfPhc,1507
253
- agenta-0.38.2.dist-info/METADATA,sha256=0S1dLZyQTZVgXS7g-iZUTFWLIvbAqLtkUVmbpiNXe9g,29658
254
- agenta-0.38.2.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
255
- agenta-0.38.2.dist-info/RECORD,,
252
+ agenta/sdk/utils/timing.py,sha256=hVzkF7ObjrBlRcB2lMowE8nUkWgYqU2kIJoqRZNXKdM,1556
253
+ agenta-0.39.1.dist-info/METADATA,sha256=9mQge-CIP9fhWCnCB1j_DiFcsn41oe5337LPAqtttag,29742
254
+ agenta-0.39.1.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
255
+ agenta-0.39.1.dist-info/RECORD,,