agenta 0.27.5__py3-none-any.whl → 0.27.5a1__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
@@ -1,3 +1,5 @@
1
+ from typing import Any, Callable, Optional
2
+
1
3
  from .sdk.utils.preinit import PreInitObject
2
4
 
3
5
  import agenta.client.backend.types as client_types # pylint: disable=wrong-import-order
@@ -18,7 +20,7 @@ from .sdk.types import (
18
20
  )
19
21
 
20
22
  from .sdk.utils.logging import log as logging
21
- from .sdk.tracing import Tracing
23
+ from .sdk.tracing import Tracing, get_tracer
22
24
  from .sdk.decorators.tracing import instrument
23
25
  from .sdk.tracing.conventions import Reference
24
26
  from .sdk.decorators.routing import entrypoint, app, route
@@ -36,15 +38,36 @@ config = PreInitObject("agenta.config", Config)
36
38
  DEFAULT_AGENTA_SINGLETON_INSTANCE = AgentaSingleton()
37
39
 
38
40
  types = client_types
39
- tracing = None
41
+
40
42
  api = None
41
43
  async_api = None
42
44
 
45
+ tracing = DEFAULT_AGENTA_SINGLETON_INSTANCE.tracing # type: ignore
46
+ tracer = get_tracer(tracing)
43
47
 
44
- def init(*args, **kwargs):
45
- global api, async_api, tracing, config
46
- _init(*args, **kwargs)
47
48
 
48
- tracing = DEFAULT_AGENTA_SINGLETON_INSTANCE.tracing # type: ignore
49
+ def init(
50
+ host: Optional[str] = None,
51
+ api_key: Optional[str] = None,
52
+ config_fname: Optional[str] = None,
53
+ redact: Optional[Callable[..., Any]] = None,
54
+ redact_on_error: Optional[bool] = True,
55
+ # DEPRECATING
56
+ app_id: Optional[str] = None,
57
+ ):
58
+ global api, async_api, tracing, tracer # pylint: disable=global-statement
59
+
60
+ _init(
61
+ host=host,
62
+ api_key=api_key,
63
+ config_fname=config_fname,
64
+ redact=redact,
65
+ redact_on_error=redact_on_error,
66
+ app_id=app_id,
67
+ )
68
+
49
69
  api = DEFAULT_AGENTA_SINGLETON_INSTANCE.api # type: ignore
50
70
  async_api = DEFAULT_AGENTA_SINGLETON_INSTANCE.async_api # type: ignore
71
+
72
+ tracing = DEFAULT_AGENTA_SINGLETON_INSTANCE.tracing # type: ignore
73
+ tracer = get_tracer(tracing)
agenta/sdk/__init__.py CHANGED
@@ -1,4 +1,4 @@
1
- from typing import Optional
1
+ from typing import Optional, Callable, Any
2
2
 
3
3
  from .utils.preinit import PreInitObject # always the first import!
4
4
 
@@ -43,17 +43,21 @@ tracer = get_tracer(tracing)
43
43
 
44
44
  def init(
45
45
  host: Optional[str] = None,
46
- app_id: Optional[str] = None,
47
46
  api_key: Optional[str] = None,
48
47
  config_fname: Optional[str] = None,
48
+ redact: Optional[Callable[..., Any]] = None,
49
+ redact_on_error: Optional[bool] = True,
50
+ # DEPRECATING
51
+ app_id: Optional[str] = None,
49
52
  ):
50
- global api, async_api, tracing, tracer
53
+ global api, async_api, tracing, tracer # pylint: disable=global-statement
51
54
 
52
55
  _init(
53
56
  host=host,
54
57
  api_key=api_key,
55
58
  config_fname=config_fname,
56
- # DEPRECATING
59
+ redact=redact,
60
+ redact_on_error=redact_on_error,
57
61
  app_id=app_id,
58
62
  )
59
63
 
agenta/sdk/agenta_init.py CHANGED
@@ -1,7 +1,7 @@
1
1
  import logging
2
2
  import toml
3
3
  from os import getenv
4
- from typing import Optional
4
+ from typing import Optional, Callable, Any
5
5
  from importlib.metadata import version
6
6
 
7
7
  from agenta.sdk.utils.logging import log
@@ -36,6 +36,8 @@ class AgentaSingleton:
36
36
  host: Optional[str] = None,
37
37
  api_key: Optional[str] = None,
38
38
  config_fname: Optional[str] = None,
39
+ redact: Optional[Callable[..., Any]] = None,
40
+ redact_on_error: Optional[bool] = True,
39
41
  # DEPRECATING
40
42
  app_id: Optional[str] = None,
41
43
  ) -> None:
@@ -91,6 +93,8 @@ class AgentaSingleton:
91
93
 
92
94
  self.tracing = Tracing(
93
95
  url=f"{self.host}/api/observability/v1/otlp/traces", # type: ignore
96
+ redact=redact,
97
+ redact_on_error=redact_on_error,
94
98
  )
95
99
 
96
100
  self.tracing.configure(
@@ -258,7 +262,9 @@ def init(
258
262
  host: Optional[str] = None,
259
263
  api_key: Optional[str] = None,
260
264
  config_fname: Optional[str] = None,
261
- # DEPRECATED
265
+ redact: Optional[Callable[..., Any]] = None,
266
+ redact_on_error: Optional[bool] = True,
267
+ # DEPRECATING
262
268
  app_id: Optional[str] = None,
263
269
  ):
264
270
  """Main function to initialize the agenta sdk.
@@ -289,7 +295,8 @@ def init(
289
295
  host=host,
290
296
  api_key=api_key,
291
297
  config_fname=config_fname,
292
- # DEPRECATED
298
+ redact=redact,
299
+ redact_on_error=redact_on_error,
293
300
  app_id=app_id,
294
301
  )
295
302
 
@@ -19,6 +19,8 @@ class instrument: # pylint: disable=invalid-name
19
19
  config: Optional[Dict[str, Any]] = None,
20
20
  ignore_inputs: Optional[bool] = None,
21
21
  ignore_outputs: Optional[bool] = None,
22
+ redact: Optional[Callable[..., Any]] = None,
23
+ redact_on_error: Optional[bool] = True,
22
24
  max_depth: Optional[int] = 2,
23
25
  # DEPRECATING
24
26
  kind: str = "task",
@@ -29,6 +31,8 @@ class instrument: # pylint: disable=invalid-name
29
31
  self.config = config
30
32
  self.ignore_inputs = ignore_inputs
31
33
  self.ignore_outputs = ignore_outputs
34
+ self.redact = redact
35
+ self.redact_on_error = redact_on_error
32
36
  self.max_depth = max_depth
33
37
 
34
38
  def __call__(self, func: Callable[..., Any]):
@@ -109,12 +113,10 @@ class instrument: # pylint: disable=invalid-name
109
113
  )
110
114
 
111
115
  _inputs = self._redact(
112
- self._parse(
113
- func,
114
- *args,
115
- **kwargs,
116
- ),
117
- self.ignore_inputs,
116
+ name=span.name,
117
+ field="inputs",
118
+ io=self._parse(func, *args, **kwargs),
119
+ ignore=self.ignore_inputs,
118
120
  )
119
121
  span.set_attributes(
120
122
  attributes={"inputs": _inputs},
@@ -153,7 +155,12 @@ class instrument: # pylint: disable=invalid-name
153
155
  namespace="metrics.unit.tokens",
154
156
  )
155
157
 
156
- _outputs = self._redact(self._patch(result), self.ignore_outputs)
158
+ _outputs = self._redact(
159
+ name=span.name,
160
+ field="outputs",
161
+ io=self._patch(result),
162
+ ignore=self.ignore_outputs,
163
+ )
157
164
  span.set_attributes(
158
165
  attributes={"outputs": _outputs},
159
166
  namespace="data",
@@ -192,6 +199,9 @@ class instrument: # pylint: disable=invalid-name
192
199
 
193
200
  def _redact(
194
201
  self,
202
+ *,
203
+ name: str,
204
+ field: str,
195
205
  io: Dict[str, Any],
196
206
  ignore: Union[List[str], bool] = False,
197
207
  ) -> Dict[str, Any]:
@@ -220,6 +230,20 @@ class instrument: # pylint: disable=invalid-name
220
230
  )
221
231
  }
222
232
 
233
+ if self.redact is not None:
234
+ try:
235
+ io = self.redact(name, field, io)
236
+ except: # pylint: disable=bare-except
237
+ if self.redact_on_error:
238
+ io = {}
239
+
240
+ if ag.tracing.redact is not None:
241
+ try:
242
+ io = ag.tracing.redact(name, field, io)
243
+ except: # pylint: disable=bare-except
244
+ if ag.tracing.redact_on_error:
245
+ io = {}
246
+
223
247
  return io
224
248
 
225
249
  def _patch(
@@ -89,16 +89,20 @@ def litellm_handler():
89
89
  log.error("LiteLLM callback error: span not found.")
90
90
  return
91
91
 
92
- result = kwargs.get("complete_streaming_response")
92
+ try:
93
+ result = []
94
+ for choice in response_obj.choices:
95
+ message = choice.message.__dict__
96
+ result.append(message)
93
97
 
94
- outputs = (
95
- {"__default__": result} if not isinstance(result, dict) else result
96
- )
98
+ outputs = {"completion": result}
99
+ self.span.set_attributes(
100
+ attributes={"outputs": outputs},
101
+ namespace="data",
102
+ )
97
103
 
98
- self.span.set_attributes(
99
- attributes={"outputs": outputs},
100
- namespace="data",
101
- )
104
+ except Exception as e:
105
+ pass
102
106
 
103
107
  self.span.set_attributes(
104
108
  attributes={"total": kwargs.get("response_cost")},
@@ -194,16 +198,20 @@ def litellm_handler():
194
198
  log.error("LiteLLM callback error: span not found.")
195
199
  return
196
200
 
197
- result = kwargs.get("complete_streaming_response")
201
+ try:
202
+ result = []
203
+ for choice in response_obj.choices:
204
+ message = choice.message.__dict__
205
+ result.append(message)
198
206
 
199
- outputs = (
200
- {"__default__": result} if not isinstance(result, dict) else result
201
- )
207
+ outputs = {"completion": result}
208
+ self.span.set_attributes(
209
+ attributes={"outputs": outputs},
210
+ namespace="data",
211
+ )
202
212
 
203
- self.span.set_attributes(
204
- attributes={"outputs": outputs},
205
- namespace="data",
206
- )
213
+ except Exception as e:
214
+ pass
207
215
 
208
216
  self.span.set_attributes(
209
217
  attributes={"total": kwargs.get("response_cost")},
@@ -236,17 +244,20 @@ def litellm_handler():
236
244
  log.error("LiteLLM callback error: span not found.")
237
245
  return
238
246
 
239
- # result = kwargs.get("complete_streaming_response")
240
- result = response_obj.choices[0].message.content
247
+ try:
248
+ result = []
249
+ for choice in response_obj.choices:
250
+ message = choice.message.__dict__
251
+ result.append(message)
241
252
 
242
- outputs = (
243
- {"__default__": result} if not isinstance(result, dict) else result
244
- )
253
+ outputs = {"completion": result}
254
+ self.span.set_attributes(
255
+ attributes={"outputs": outputs},
256
+ namespace="data",
257
+ )
245
258
 
246
- self.span.set_attributes(
247
- attributes={"outputs": outputs},
248
- namespace="data",
249
- )
259
+ except Exception as e:
260
+ pass
250
261
 
251
262
  self.span.set_attributes(
252
263
  attributes={"total": kwargs.get("response_cost")},
@@ -21,6 +21,12 @@ AGENTA_SDK_AUTH_CACHE_TTL = environ.get(
21
21
  15 * 60, # 15 minutes
22
22
  )
23
23
 
24
+ AGENTA_SDK_AUTH_CACHE = str(environ.get("AGENTA_SDK_AUTH_CACHE", True)).lower() in (
25
+ "true",
26
+ "1",
27
+ "t",
28
+ )
29
+
24
30
  AGENTA_UNAUTHORIZED_EXECUTION_ALLOWED = str(
25
31
  environ.get("AGENTA_UNAUTHORIZED_EXECUTION_ALLOWED", False)
26
32
  ).lower() in ("true", "1", "t")
@@ -89,9 +95,11 @@ class AuthorizationMiddleware(BaseHTTPMiddleware):
89
95
  sort_keys=True,
90
96
  )
91
97
 
92
- cached_policy = cache.get(_hash)
98
+ policy = None
99
+ if AGENTA_SDK_AUTH_CACHE:
100
+ policy = cache.get(_hash)
93
101
 
94
- if not cached_policy:
102
+ if not policy:
95
103
  async with httpx.AsyncClient() as client:
96
104
  response = await client.get(
97
105
  f"{self.host}/api/permissions/verify",
@@ -110,19 +118,17 @@ class AuthorizationMiddleware(BaseHTTPMiddleware):
110
118
  cache.put(_hash, {"effect": "deny"})
111
119
  return Deny()
112
120
 
113
- cached_policy = {
121
+ policy = {
114
122
  "effect": "allow",
115
123
  "credentials": auth.get("credentials"),
116
124
  }
117
125
 
118
- cache.put(_hash, cached_policy)
126
+ cache.put(_hash, policy)
119
127
 
120
- if cached_policy.get("effect") == "deny":
128
+ if policy.get("effect") == "deny":
121
129
  return Deny()
122
130
 
123
- request.state.credentials = cached_policy.get("credentials")
124
-
125
- print(f"credentials: {request.state.credentials}")
131
+ request.state.credentials = policy.get("credentials")
126
132
 
127
133
  return await call_next(request)
128
134
 
@@ -1,4 +1,4 @@
1
- from typing import Optional, Any, Dict
1
+ from typing import Optional, Any, Dict, Callable
2
2
  from enum import Enum
3
3
 
4
4
  from httpx import get as check
@@ -32,6 +32,8 @@ class Tracing(metaclass=Singleton):
32
32
  def __init__(
33
33
  self,
34
34
  url: str,
35
+ redact: Optional[Callable[..., Any]] = None,
36
+ redact_on_error: Optional[bool] = True,
35
37
  ) -> None:
36
38
  # ENDPOINT (OTLP)
37
39
  self.otlp_url = url
@@ -49,6 +51,10 @@ class Tracing(metaclass=Singleton):
49
51
  # INLINE SPANS for INLINE TRACES (INLINE PROCESSOR)
50
52
  self.inline_spans: Dict[str, Any] = dict()
51
53
 
54
+ # REDACT
55
+ self.redact = redact
56
+ self.redact_on_error = redact_on_error
57
+
52
58
  # PUBLIC
53
59
 
54
60
  def configure(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: agenta
3
- Version: 0.27.5
3
+ Version: 0.27.5a1
4
4
  Summary: The SDK for agenta is an open-source LLMOps platform.
5
5
  Home-page: https://agenta.ai
6
6
  Keywords: LLMOps,LLM,evaluation,prompt engineering
@@ -22,16 +22,13 @@ Requires-Dist: docker (>=6.1.1,<8.0.0)
22
22
  Requires-Dist: fastapi (>=0.100.0)
23
23
  Requires-Dist: httpx (>=0.24,<0.28)
24
24
  Requires-Dist: importlib-metadata (>=8.0.0,<9.0)
25
- Requires-Dist: ipdb (>=0.13)
26
25
  Requires-Dist: litellm (>=1.48.0,<2.0.0)
27
26
  Requires-Dist: opentelemetry-api (>=1.27.0,<2.0.0)
28
27
  Requires-Dist: opentelemetry-exporter-otlp (>=1.27.0,<2.0.0)
29
28
  Requires-Dist: opentelemetry-sdk (>=1.27.0,<2.0.0)
30
29
  Requires-Dist: posthog (>=3.1.0,<4.0.0)
31
30
  Requires-Dist: pydantic (>=2)
32
- Requires-Dist: pymongo (>=4.6.3,<5.0.0)
33
31
  Requires-Dist: python-dotenv (>=1.0.0,<2.0.0)
34
- Requires-Dist: python-multipart (>=0.0.6,<0.0.10)
35
32
  Requires-Dist: pyyaml (>=6.0.2,<7.0.0)
36
33
  Requires-Dist: questionary (>=1.10,<3.0)
37
34
  Requires-Dist: toml (>=0.10.2,<0.11.0)
@@ -1,4 +1,4 @@
1
- agenta/__init__.py,sha256=vZmOjCyJZMfW3UlqARG1xfkBZe-0kTjg7a_BaZZg2to,1496
1
+ agenta/__init__.py,sha256=XXPgAjzPw5CXQpuQbDNpKRuoBL5X_YoobKeebjYHiSY,2101
2
2
  agenta/cli/evaluation_commands.py,sha256=fs6492tprPId9p8eGO02Xy-NCBm2RZNJLZWcUxugwd8,474
3
3
  agenta/cli/helper.py,sha256=P97HbNb_qzOyl5CM_MjAqWEBCdgebU6M81G_4UCmF1A,6288
4
4
  agenta/cli/main.py,sha256=Wz0ODhoeKK3Qg_CFUhu6D909szk05tc8ZVBB6H1-w7k,9763
@@ -139,8 +139,8 @@ agenta/docker/docker-assets/entrypoint.sh,sha256=29XK8VQjQsx4hN2j-4JDy-6kQb5y4LC
139
139
  agenta/docker/docker-assets/lambda_function.py,sha256=h4UZSSfqwpfsCgERv6frqwm_4JrYu9rLz3I-LxCfeEg,83
140
140
  agenta/docker/docker-assets/main.py,sha256=7MI-21n81U7N7A0GxebNi0cmGWtJKcR2sPB6FcH2QfA,251
141
141
  agenta/docker/docker_utils.py,sha256=kO1q2_IR0fEAo4M-2Pt_v-zC7GxxnkLogjKFhU869Ps,3555
142
- agenta/sdk/__init__.py,sha256=-Z44_jFgz_WAyAvgAd3zHZ6Q-rDf8zaLi09OXQGtPrk,1700
143
- agenta/sdk/agenta_init.py,sha256=CEL4XbZ69AeE6_09o591ZHX77qXia4T_gSG1SekM4Oo,10642
142
+ agenta/sdk/__init__.py,sha256=kekUC2MaZhCizQhLwW2Me8DAnM6V4hokY33ReBe1iP8,1904
143
+ agenta/sdk/agenta_init.py,sha256=YjJjwBUci77KTP27lZTPJMVvjmskng4CqbfQVbcMBJQ,10967
144
144
  agenta/sdk/assets.py,sha256=Zv4i8MVUSB3jMODQon1mzJtYxuntmrCNjLGk8f-2fls,2856
145
145
  agenta/sdk/client.py,sha256=trKyBOYFZRk0v5Eptxvh87yPf50Y9CqY6Qgv4Fy-VH4,2142
146
146
  agenta/sdk/context/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -148,16 +148,16 @@ agenta/sdk/context/routing.py,sha256=ycUgmJZyWhL4bHjKtUSAsTlt_0Fujr_6OpoaEH1lAN0
148
148
  agenta/sdk/context/tracing.py,sha256=UmmW15UFFsvxS0myS6aD9wBk5iNepNlQi4tEQ_ejfYM,96
149
149
  agenta/sdk/decorators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
150
150
  agenta/sdk/decorators/routing.py,sha256=biG9W7zgZ6V8z9Ca6Oq4NC7m89vO97mnRwmy2vOYook,36987
151
- agenta/sdk/decorators/tracing.py,sha256=rwxbxsDb6B0VaJf4qLPgyTMYNkJMFLsCiX2ZQ6W-zOw,7713
151
+ agenta/sdk/decorators/tracing.py,sha256=vL5e6TVX6TQwO0t9raZwnzXHV3vElVT0pHS1vD-vzEo,8523
152
152
  agenta/sdk/litellm/__init__.py,sha256=Bpz1gfHQc0MN1yolWcjifLWznv6GjHggvRGQSpxpihM,37
153
- agenta/sdk/litellm/litellm.py,sha256=J9NefQ2yvfWQy9e0zmPZiRQDz5GM2ThWAw5XM8gCaqw,8461
153
+ agenta/sdk/litellm/litellm.py,sha256=bzVm-388BleZ2QH_JWpfZ2fB_7-HuoSqdvLo4EDPcEM,8788
154
154
  agenta/sdk/managers/__init__.py,sha256=SN-LRwG0pRRDV3u2Q4JiiSTigN3-mYpzGNM35RzT4mc,238
155
155
  agenta/sdk/managers/config.py,sha256=AuFfHYOkmilDdcAJt2nlw_WlA3ho4Htjf29FKTZGElM,11716
156
156
  agenta/sdk/managers/deployment.py,sha256=SEokjZeh6n7HRKZ92Y0WncdG49hIFx-Z3B3HAl2kmUg,1174
157
157
  agenta/sdk/managers/shared.py,sha256=e53jckQq5PIMpjdxADOonUj7o8aGfzmSvdeH5f43rGs,21497
158
158
  agenta/sdk/managers/variant.py,sha256=A5ga3mq3b0weUTXa9HO72MGaspthGcu1uK9K5OnP738,4172
159
159
  agenta/sdk/middleware/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
160
- agenta/sdk/middleware/auth.py,sha256=olVQ9Mm5E3dYDtjRkMXWGzJe_WkMTkYw7Yf5v9uKC0U,3999
160
+ agenta/sdk/middleware/auth.py,sha256=SuUO7HjCHVd9V99mvWzSVd-019BfhZ5Cfwxwk050GIc,4079
161
161
  agenta/sdk/middleware/cache.py,sha256=C_LEzFbulbCBIKtcut2T4qJzh90q4369WCsApDg3Vm0,902
162
162
  agenta/sdk/router.py,sha256=mOguvtOwl2wmyAgOuWTsf98pQwpNiUILKIo67W_hR3A,119
163
163
  agenta/sdk/tracing/__init__.py,sha256=rQNe5-zT5Kt7_CDhq-lnUIi1EYTBVzVf_MbfcIxVD98,41
@@ -168,7 +168,7 @@ agenta/sdk/tracing/exporters.py,sha256=YvTke0RaxeOLqWOuhC5EFzYwFY39kcoBtDLfcyla3
168
168
  agenta/sdk/tracing/inline.py,sha256=jVIlmDIFSzXr-ofMbGlO8VFnNeiUL4C4yA8soED4AHI,34611
169
169
  agenta/sdk/tracing/processors.py,sha256=tjoz_uXm_2yD1Ozvz_CnYnsG82R6vmnYpjMhx2ztALs,3117
170
170
  agenta/sdk/tracing/spans.py,sha256=nqUOjjirBxB8Eacv8Qj4Ra_6rknGi3lbJdNyKmk5ODQ,3707
171
- agenta/sdk/tracing/tracing.py,sha256=50669Lr6XwRoIEWDqEFj-K4HRcYSaL9i5vqwARvP7bk,6778
171
+ agenta/sdk/tracing/tracing.py,sha256=HYuGp5fQozLKWXLXonfCT8pqb7x1gwzzbZk87mfhu3Y,6983
172
172
  agenta/sdk/types.py,sha256=oEeSUQn4tMzV7dkSuucBC2YlAaxS-7qgkdlT763YfLM,7076
173
173
  agenta/sdk/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
174
174
  agenta/sdk/utils/costs.py,sha256=i8C7ud__pThLS55XkN4YW8czXtGeXr2mx7jjcOFeiXg,5955
@@ -193,7 +193,7 @@ agenta/templates/simple_prompt/app.py,sha256=kODgF6lhzsaJPdgL5b21bUki6jkvqjWZzWR
193
193
  agenta/templates/simple_prompt/env.example,sha256=g9AE5bYcGPpxawXMJ96gh8oenEPCHTabsiOnfQo3c5k,70
194
194
  agenta/templates/simple_prompt/requirements.txt,sha256=ywRglRy7pPkw8bljmMEJJ4aOOQKrt9FGKULZ-DGkoBU,23
195
195
  agenta/templates/simple_prompt/template.toml,sha256=DQBtRrF4GU8LBEXOZ-GGuINXMQDKGTEG5y37tnvIUIE,60
196
- agenta-0.27.5.dist-info/METADATA,sha256=cHZbd8qAC3uFIdxYpHopsLGFFPaoDHHiXc4L6O28Kn0,31736
197
- agenta-0.27.5.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
198
- agenta-0.27.5.dist-info/entry_points.txt,sha256=PDiu8_8AsL7ibU9v4iNoOKR1S7F2rdxjlEprjM9QOgo,46
199
- agenta-0.27.5.dist-info/RECORD,,
196
+ agenta-0.27.5a1.dist-info/METADATA,sha256=HA67vfdeAFx9IQZLfX_2iYUJ8Ro2pkfdYwm2g1UkSj8,31619
197
+ agenta-0.27.5a1.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
198
+ agenta-0.27.5a1.dist-info/entry_points.txt,sha256=PDiu8_8AsL7ibU9v4iNoOKR1S7F2rdxjlEprjM9QOgo,46
199
+ agenta-0.27.5a1.dist-info/RECORD,,