blaxel 0.2.3__py3-none-any.whl → 0.2.5__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.
@@ -11,6 +11,7 @@ if TYPE_CHECKING:
11
11
  from ..models.model_private_cluster import ModelPrivateCluster
12
12
  from ..models.revision_configuration import RevisionConfiguration
13
13
  from ..models.runtime import Runtime
14
+ from ..models.trigger import Trigger
14
15
 
15
16
 
16
17
  T = TypeVar("T", bound="JobSpec")
@@ -30,6 +31,7 @@ class JobSpec:
30
31
  revision (Union[Unset, RevisionConfiguration]): Revision configuration
31
32
  runtime (Union[Unset, Runtime]): Set of configurations for a deployment
32
33
  sandbox (Union[Unset, bool]): Sandbox mode
34
+ triggers (Union[Unset, list['Trigger']]): Triggers to use your agent
33
35
  """
34
36
 
35
37
  configurations: Union[Unset, "CoreSpecConfigurations"] = UNSET
@@ -41,6 +43,7 @@ class JobSpec:
41
43
  revision: Union[Unset, "RevisionConfiguration"] = UNSET
42
44
  runtime: Union[Unset, "Runtime"] = UNSET
43
45
  sandbox: Union[Unset, bool] = UNSET
46
+ triggers: Union[Unset, list["Trigger"]] = UNSET
44
47
  additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
45
48
 
46
49
  def to_dict(self) -> dict[str, Any]:
@@ -98,6 +101,16 @@ class JobSpec:
98
101
 
99
102
  sandbox = self.sandbox
100
103
 
104
+ triggers: Union[Unset, list[dict[str, Any]]] = UNSET
105
+ if not isinstance(self.triggers, Unset):
106
+ triggers = []
107
+ for componentsschemas_triggers_item_data in self.triggers:
108
+ if type(componentsschemas_triggers_item_data) is dict:
109
+ componentsschemas_triggers_item = componentsschemas_triggers_item_data
110
+ else:
111
+ componentsschemas_triggers_item = componentsschemas_triggers_item_data.to_dict()
112
+ triggers.append(componentsschemas_triggers_item)
113
+
101
114
  field_dict: dict[str, Any] = {}
102
115
  field_dict.update(self.additional_properties)
103
116
  field_dict.update({})
@@ -119,6 +132,8 @@ class JobSpec:
119
132
  field_dict["runtime"] = runtime
120
133
  if sandbox is not UNSET:
121
134
  field_dict["sandbox"] = sandbox
135
+ if triggers is not UNSET:
136
+ field_dict["triggers"] = triggers
122
137
 
123
138
  return field_dict
124
139
 
@@ -129,6 +144,7 @@ class JobSpec:
129
144
  from ..models.model_private_cluster import ModelPrivateCluster
130
145
  from ..models.revision_configuration import RevisionConfiguration
131
146
  from ..models.runtime import Runtime
147
+ from ..models.trigger import Trigger
132
148
 
133
149
  if not src_dict:
134
150
  return None
@@ -176,6 +192,13 @@ class JobSpec:
176
192
 
177
193
  sandbox = d.pop("sandbox", UNSET)
178
194
 
195
+ triggers = []
196
+ _triggers = d.pop("triggers", UNSET)
197
+ for componentsschemas_triggers_item_data in _triggers or []:
198
+ componentsschemas_triggers_item = Trigger.from_dict(componentsschemas_triggers_item_data)
199
+
200
+ triggers.append(componentsschemas_triggers_item)
201
+
179
202
  job_spec = cls(
180
203
  configurations=configurations,
181
204
  enabled=enabled,
@@ -186,6 +209,7 @@ class JobSpec:
186
209
  revision=revision,
187
210
  runtime=runtime,
188
211
  sandbox=sandbox,
212
+ triggers=triggers,
189
213
  )
190
214
 
191
215
  job_spec.additional_properties = d
@@ -17,7 +17,7 @@ class Trigger:
17
17
  """Trigger configuration
18
18
 
19
19
  Attributes:
20
- configuration (Union[Unset, TriggerConfiguration]): The configuration of the trigger
20
+ configuration (Union[Unset, TriggerConfiguration]): Trigger configuration
21
21
  id (Union[Unset, str]): The id of the trigger
22
22
  type_ (Union[Unset, str]): The type of trigger, can be http or http-async
23
23
  """
@@ -1,20 +1,50 @@
1
- from typing import Any, TypeVar
1
+ from typing import Any, TypeVar, Union
2
2
 
3
3
  from attrs import define as _attrs_define
4
4
  from attrs import field as _attrs_field
5
5
 
6
+ from ..types import UNSET, Unset
7
+
6
8
  T = TypeVar("T", bound="TriggerConfiguration")
7
9
 
8
10
 
9
11
  @_attrs_define
10
12
  class TriggerConfiguration:
11
- """The configuration of the trigger"""
13
+ """Trigger configuration
14
+
15
+ Attributes:
16
+ authentication_type (Union[Unset, str]): The authentication type of the trigger
17
+ path (Union[Unset, str]): The path of the trigger
18
+ retry (Union[Unset, int]): The retry of the trigger
19
+ schedule (Union[Unset, str]): The schedule of the trigger, cron expression * * * * *
20
+ """
12
21
 
22
+ authentication_type: Union[Unset, str] = UNSET
23
+ path: Union[Unset, str] = UNSET
24
+ retry: Union[Unset, int] = UNSET
25
+ schedule: Union[Unset, str] = UNSET
13
26
  additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
14
27
 
15
28
  def to_dict(self) -> dict[str, Any]:
29
+ authentication_type = self.authentication_type
30
+
31
+ path = self.path
32
+
33
+ retry = self.retry
34
+
35
+ schedule = self.schedule
36
+
16
37
  field_dict: dict[str, Any] = {}
17
38
  field_dict.update(self.additional_properties)
39
+ field_dict.update({})
40
+ if authentication_type is not UNSET:
41
+ field_dict["authenticationType"] = authentication_type
42
+ if path is not UNSET:
43
+ field_dict["path"] = path
44
+ if retry is not UNSET:
45
+ field_dict["retry"] = retry
46
+ if schedule is not UNSET:
47
+ field_dict["schedule"] = schedule
18
48
 
19
49
  return field_dict
20
50
 
@@ -23,7 +53,20 @@ class TriggerConfiguration:
23
53
  if not src_dict:
24
54
  return None
25
55
  d = src_dict.copy()
26
- trigger_configuration = cls()
56
+ authentication_type = d.pop("authenticationType", UNSET)
57
+
58
+ path = d.pop("path", UNSET)
59
+
60
+ retry = d.pop("retry", UNSET)
61
+
62
+ schedule = d.pop("schedule", UNSET)
63
+
64
+ trigger_configuration = cls(
65
+ authentication_type=authentication_type,
66
+ path=path,
67
+ retry=retry,
68
+ schedule=schedule,
69
+ )
27
70
 
28
71
  trigger_configuration.additional_properties = d
29
72
  return trigger_configuration
@@ -7,6 +7,7 @@ from .sandbox import (
7
7
  )
8
8
  from .types import (
9
9
  CopyResponse,
10
+ ProcessRequestWithLog,
10
11
  SandboxConfiguration,
11
12
  SandboxCreateConfiguration,
12
13
  SandboxFilesystemFile,
@@ -28,4 +29,5 @@ __all__ = [
28
29
  "SandboxFileSystem",
29
30
  "SandboxPreviews",
30
31
  "SandboxProcess",
32
+ "ProcessRequestWithLog",
31
33
  ]
@@ -1,8 +1,10 @@
1
- from typing import Any, TypeVar
1
+ from typing import Any, TypeVar, Union
2
2
 
3
3
  from attrs import define as _attrs_define
4
4
  from attrs import field as _attrs_field
5
5
 
6
+ from ..types import UNSET, Unset
7
+
6
8
  T = TypeVar("T", bound="SuccessResponse")
7
9
 
8
10
 
@@ -11,11 +13,11 @@ class SuccessResponse:
11
13
  """
12
14
  Attributes:
13
15
  message (str): Example: File created successfully.
14
- path (str): Example: /path/to/file.
16
+ path (Union[Unset, str]): Example: /path/to/file.
15
17
  """
16
18
 
17
19
  message: str
18
- path: str
20
+ path: Union[Unset, str] = UNSET
19
21
  additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
20
22
 
21
23
  def to_dict(self) -> dict[str, Any]:
@@ -28,9 +30,10 @@ class SuccessResponse:
28
30
  field_dict.update(
29
31
  {
30
32
  "message": message,
31
- "path": path,
32
33
  }
33
34
  )
35
+ if path is not UNSET:
36
+ field_dict["path"] = path
34
37
 
35
38
  return field_dict
36
39
 
@@ -41,7 +44,7 @@ class SuccessResponse:
41
44
  d = src_dict.copy()
42
45
  message = d.pop("message")
43
46
 
44
- path = d.pop("path")
47
+ path = d.pop("path", UNSET)
45
48
 
46
49
  success_response = cls(
47
50
  message=message,
@@ -2,6 +2,7 @@ from dataclasses import dataclass
2
2
  from datetime import datetime
3
3
  from typing import Any, Dict, List, Optional, Union
4
4
 
5
+ from ..client import errors
5
6
  from ..client.api.compute.create_sandbox_preview import (
6
7
  asyncio as create_sandbox_preview,
7
8
  )
@@ -47,18 +48,21 @@ class SandboxPreviewToken:
47
48
  class SandboxPreviewTokens:
48
49
  """Manages preview tokens for a sandbox preview."""
49
50
 
50
- def __init__(self, preview: Preview, sandbox_name: str):
51
+ def __init__(self, preview: Preview):
51
52
  self.preview = preview
52
- self.sandbox_name = sandbox_name
53
53
 
54
54
  @property
55
55
  def preview_name(self) -> str:
56
56
  return self.preview.metadata.name if self.preview.metadata else ""
57
57
 
58
+ @property
59
+ def resource_name(self) -> str:
60
+ return self.preview.metadata.resource_name if self.preview.metadata else ""
61
+
58
62
  async def create(self, expires_at: datetime) -> SandboxPreviewToken:
59
63
  """Create a new preview token."""
60
64
  response: PreviewToken = await create_sandbox_preview_token(
61
- self.sandbox_name,
65
+ self.resource_name,
62
66
  self.preview_name,
63
67
  body=PreviewToken(
64
68
  spec=PreviewTokenSpec(
@@ -72,7 +76,7 @@ class SandboxPreviewTokens:
72
76
  async def list(self) -> List[SandboxPreviewToken]:
73
77
  """List all preview tokens."""
74
78
  response: List[PreviewToken] = await list_sandbox_preview_tokens(
75
- self.sandbox_name,
79
+ self.resource_name,
76
80
  self.preview_name,
77
81
  client=client,
78
82
  )
@@ -81,7 +85,7 @@ class SandboxPreviewTokens:
81
85
  async def delete(self, token_name: str) -> dict:
82
86
  """Delete a preview token."""
83
87
  response: PreviewToken = await delete_sandbox_preview_token(
84
- self.sandbox_name,
88
+ self.resource_name,
85
89
  self.preview_name,
86
90
  token_name,
87
91
  client=client,
@@ -92,10 +96,9 @@ class SandboxPreviewTokens:
92
96
  class SandboxPreview:
93
97
  """Represents a sandbox preview with its metadata and tokens."""
94
98
 
95
- def __init__(self, preview: Preview, sandbox_name: str = ""):
99
+ def __init__(self, preview: Preview):
96
100
  self.preview = preview
97
- self.sandbox_name = sandbox_name
98
- self.tokens = SandboxPreviewTokens(preview, sandbox_name)
101
+ self.tokens = SandboxPreviewTokens(preview)
99
102
 
100
103
  @property
101
104
  def name(self) -> str:
@@ -140,6 +143,24 @@ class SandboxPreviews:
140
143
  )
141
144
  return SandboxPreview(response)
142
145
 
146
+ async def create_if_not_exists(self, preview: Union[Preview, Dict[str, Any]]) -> SandboxPreview:
147
+ """Create a preview if it doesn't exist, otherwise return the existing one."""
148
+ if isinstance(preview, dict):
149
+ preview = Preview.from_dict(preview)
150
+
151
+ preview_name = preview.metadata.name if preview.metadata else ""
152
+
153
+ try:
154
+ # Try to get existing preview
155
+ existing_preview = await self.get(preview_name)
156
+ return existing_preview
157
+ except errors.UnexpectedStatus as e:
158
+ # If 404, create the preview
159
+ if e.status_code == 404:
160
+ return await self.create(preview)
161
+ # For any other error, re-raise
162
+ raise e
163
+
143
164
  async def get(self, preview_name: str) -> SandboxPreview:
144
165
  """Get a specific preview by name."""
145
166
  response: Preview = await get_sandbox_preview(
@@ -7,7 +7,7 @@ from ..common.settings import settings
7
7
  from .action import SandboxAction
8
8
  from .client.models import ProcessResponse, SuccessResponse
9
9
  from .client.models.process_request import ProcessRequest
10
- from .types import SandboxConfiguration
10
+ from .types import ProcessRequestWithLog, SandboxConfiguration
11
11
 
12
12
 
13
13
  class SandboxProcess(SandboxAction):
@@ -76,11 +76,17 @@ class SandboxProcess(SandboxAction):
76
76
  return {"close": close}
77
77
 
78
78
  async def exec(
79
- self,
80
- process: Union[ProcessRequest, Dict[str, Any]],
81
- on_log: Optional[Callable[[str], None]] = None,
79
+ self, process: Union[ProcessRequest, ProcessRequestWithLog, Dict[str, Any]]
82
80
  ) -> ProcessResponse:
81
+ on_log = None
82
+ if isinstance(process, ProcessRequestWithLog):
83
+ on_log = process.on_log
84
+ process = process.to_dict()
85
+
83
86
  if isinstance(process, dict):
87
+ if "on_log" in process:
88
+ on_log = process["on_log"]
89
+ del process["on_log"]
84
90
  process = ProcessRequest.from_dict(process)
85
91
 
86
92
  # Store original wait_for_completion setting
@@ -46,7 +46,7 @@ class SandboxSessions:
46
46
  self.sandbox_name, client=client, body=preview_body
47
47
  )
48
48
 
49
- preview = SandboxPreview(preview_response, self.sandbox_name)
49
+ preview = SandboxPreview(preview_response)
50
50
  token_obj = await preview.tokens.create(expires_at)
51
51
 
52
52
  return SessionWithToken(
@@ -71,8 +71,23 @@ class SandboxSessions:
71
71
  threshold = now + timedelta(seconds=delta_seconds)
72
72
 
73
73
  if all_sessions:
74
+ all_sessions.sort(
75
+ key=lambda s: datetime.fromisoformat(s.expires_at)
76
+ if isinstance(s.expires_at, str)
77
+ else s.expires_at
78
+ )
74
79
  session_data = all_sessions[0]
75
- if session_data.expires_at < threshold:
80
+ expires_at = datetime.fromisoformat(session_data.expires_at)
81
+
82
+ # Make both datetimes timezone-aware or timezone-naive for comparison
83
+ if expires_at.tzinfo is not None and threshold.tzinfo is None:
84
+ # expires_at is timezone-aware, make threshold timezone-aware too
85
+ threshold = threshold.replace(tzinfo=expires_at.tzinfo)
86
+ elif expires_at.tzinfo is None and threshold.tzinfo is not None:
87
+ # threshold is timezone-aware, make expires_at timezone-aware too
88
+ expires_at = expires_at.replace(tzinfo=threshold.tzinfo)
89
+
90
+ if expires_at < threshold:
76
91
  await self.delete(session_data.name)
77
92
  session_data = await self.create(options)
78
93
  else:
@@ -1,8 +1,11 @@
1
1
  from datetime import datetime
2
- from typing import Any, Dict, List, Optional, Union
2
+ from typing import Any, Callable, Dict, List, Optional, Union
3
+
4
+ from attrs import define as _attrs_define
3
5
 
4
6
  from ..client.models import Port, Sandbox
5
7
  from ..client.types import UNSET
8
+ from .client.models.process_request import ProcessRequest
6
9
 
7
10
 
8
11
  class SessionCreateOptions:
@@ -164,9 +167,18 @@ class SandboxCreateConfiguration:
164
167
  if isinstance(env, dict):
165
168
  # Validate that the dict has the required keys
166
169
  if "name" not in env or "value" not in env:
167
- raise ValueError(f"Environment variable dict must have 'name' and 'value' keys: {env}")
170
+ raise ValueError(
171
+ f"Environment variable dict must have 'name' and 'value' keys: {env}"
172
+ )
168
173
  env_objects.append({"name": env["name"], "value": env["value"]})
169
174
  else:
170
- raise ValueError(f"Invalid env type: {type(env)}. Expected dict with 'name' and 'value' keys.")
175
+ raise ValueError(
176
+ f"Invalid env type: {type(env)}. Expected dict with 'name' and 'value' keys."
177
+ )
171
178
 
172
179
  return env_objects
180
+
181
+
182
+ @_attrs_define
183
+ class ProcessRequestWithLog(ProcessRequest):
184
+ on_log: Callable[[str], None] = None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: blaxel
3
- Version: 0.2.3
3
+ Version: 0.2.5
4
4
  Summary: Blaxel - AI development platform SDK
5
5
  Project-URL: Homepage, https://blaxel.ai
6
6
  Project-URL: Documentation, https://docs.blaxel.ai
@@ -182,7 +182,7 @@ blaxel/core/client/models/job_metrics_executions_chart.py,sha256=OGBEQu-6vvdQJfc
182
182
  blaxel/core/client/models/job_metrics_executions_total.py,sha256=YSaxHgDPP4G2y24zFKpz5AfSSZKOqsfphOaNdr0Hxzw,1302
183
183
  blaxel/core/client/models/job_metrics_tasks_chart.py,sha256=fJ-Lr76ZF6L7UIhhU8vpRzlTpJ83XnCpmCXDlvb9204,1272
184
184
  blaxel/core/client/models/job_metrics_tasks_total.py,sha256=MjCKjj81S2LHWrnbNHXLt6LUxdZY-8vmzqbEVQFVlWY,1272
185
- blaxel/core/client/models/job_spec.py,sha256=tMwazR18WWjoRYHvttmqRadKCkNWJoWWHXinJ3pwgqY,8245
185
+ blaxel/core/client/models/job_spec.py,sha256=ZhQ-YlQ53Yqty3qe7qGQxkeYrWupzJx18ehzNxVCl2c,9430
186
186
  blaxel/core/client/models/jobs_chart.py,sha256=XbpoY1WLbP9yRlw7NAY8_XmeQFavP5RQ43OpmvczBdQ,2944
187
187
  blaxel/core/client/models/jobs_chart_value.py,sha256=c-n9y3uc5TC_EBGTDm3_-vzRsEKCUSo7ep5YtxZTQUY,1892
188
188
  blaxel/core/client/models/jobs_executions.py,sha256=e9ryxYNPRPlE9a4ObwdbTMBFPi3gveGbd4QFuxO5lNA,2410
@@ -282,8 +282,8 @@ blaxel/core/client/models/token_rate_metric.py,sha256=iucEWvuDrmDBQYu_Q1fyFYN9R8
282
282
  blaxel/core/client/models/token_rate_metrics.py,sha256=nvhSYuA9E2Cc73_1gogoWIjtiVzn3u7xXe8iHmKN0aY,4404
283
283
  blaxel/core/client/models/token_total_metric.py,sha256=BPitBM2P79gGL-FkUE89_SPAdhXKeL5yw6lawvdlBnA,3919
284
284
  blaxel/core/client/models/trace_ids_response.py,sha256=0JuhxhKvwEd0qMPBzf3PAGa3eNR547xZ2VveIF0Ztdw,1256
285
- blaxel/core/client/models/trigger.py,sha256=88Gf1cjwDGwQZzKg5wtNtQF417vTgqo65mRfDCS94IA,2975
286
- blaxel/core/client/models/trigger_configuration.py,sha256=2uYMWxPW1dmy-B8NaVepe-J9MgTVmP5pbPRhQSbEAPA,1287
285
+ blaxel/core/client/models/trigger.py,sha256=15LJZP4kCIP7U1CGfd0pY9icz2yvUltTndnE0MNTizk,2964
286
+ blaxel/core/client/models/trigger_configuration.py,sha256=4GzaxybXJ0KSPcLgKg1vIB67MntlchmVgkh-RJez86g,2635
287
287
  blaxel/core/client/models/update_workspace_service_account_body.py,sha256=fz2MGqwRfrYkMmL8PaFHQdsu3RQcRljvP6n6JIru45o,2004
288
288
  blaxel/core/client/models/update_workspace_service_account_response_200.py,sha256=nCLPHFP_iR1MIpicgQMpbiyme97ZMfTFhyQUEbhzkHI,2968
289
289
  blaxel/core/client/models/update_workspace_user_role_body.py,sha256=FyLCWy9oRgUxoFPxxtrDvwzh1kHLkoTZ1pL5w3ayexM,1572
@@ -304,15 +304,15 @@ blaxel/core/mcp/__init__.py,sha256=5VjkiQFb1QWW5QKRgwPHARlxZJ9Xqaz0diJTpM8LLF0,1
304
304
  blaxel/core/mcp/client.py,sha256=aK3wSnsO8DmT1BZqw4eiCMF71Jwvni6Qga0DhPP806Y,5437
305
305
  blaxel/core/mcp/server.py,sha256=tXySGZKgK3IllYOzYOecp58BixKBkmAIvQp_4nSM_Ww,5919
306
306
  blaxel/core/models/__init__.py,sha256=HbRDsMnUFHkPC-MMkzPXh4mUqkVjqO6p3j7m00N_XSo,1722
307
- blaxel/core/sandbox/__init__.py,sha256=oF3sX5MbwSqfwhOtF5ODYWwapHffbkp2UI78jPBn78U,617
307
+ blaxel/core/sandbox/__init__.py,sha256=fyxxdPhVIkI1FwSI4tHG1DH0W4sYuNaWvVxO7_due2U,673
308
308
  blaxel/core/sandbox/action.py,sha256=9Zjkco7YkLzBThD3N2Hr5SpeEiqU_-Ktk8HlKpkpiAg,2802
309
309
  blaxel/core/sandbox/filesystem.py,sha256=dyIvDdlPZO0ijD6mXXX8Yl0t75VijQ6_uMz_9rJd-_4,11317
310
310
  blaxel/core/sandbox/network.py,sha256=P5jLd4AAg1zgyIK4qGWvZaDZ5BzIcxRx2ffz_JLsLMI,357
311
- blaxel/core/sandbox/preview.py,sha256=M6FulOxPghUBpb5fLxu1Rd3ekLeCbZ_dgt4s1X2Cneo,5354
312
- blaxel/core/sandbox/process.py,sha256=7zEngDTs2XiNsMm9TZ4lEDUiRpS3af8dw60pEvRuHDY,8357
311
+ blaxel/core/sandbox/preview.py,sha256=g0uVbMsIi8gRXmmyOfSyqm1qO4Cv6rsq92fs_k884dY,6120
312
+ blaxel/core/sandbox/process.py,sha256=g13yig8pvIwHtABFXwxWKSd5K4KYhEQQcGumME9I-GA,8609
313
313
  blaxel/core/sandbox/sandbox.py,sha256=y6mV2-i6TsSZGQsvBBGptR514OfgvhV0hXBMEsOBcsY,8648
314
- blaxel/core/sandbox/session.py,sha256=4SH1tyXcQ9UqJx4lMwxAlp7x9Te_anDrdSEG6AlNkvU,4496
315
- blaxel/core/sandbox/types.py,sha256=nsbvZLUxvDZkg2oExE3HdXx2qIpPaaoa7_lGYBzQ8Xk,5638
314
+ blaxel/core/sandbox/session.py,sha256=3PfoekfdVzLYttsmKeK3MePhuprjqv_FDyVQTQME0OE,5277
315
+ blaxel/core/sandbox/types.py,sha256=E-IjEetAMhFDz-mDizFlifCrXoIeJnkbxolQS3p8TKQ,5936
316
316
  blaxel/core/sandbox/client/__init__.py,sha256=N26bD5o1jsTb48oExow6Rgivd8ylaU9jaWZfZsVilP8,128
317
317
  blaxel/core/sandbox/client/client.py,sha256=tcP8cJ4Q3dV9aB3yQ01dDXO-ekfsa3WGGFz4DQAEf8I,7079
318
318
  blaxel/core/sandbox/client/errors.py,sha256=gO8GBmKqmSNgAg-E5oT-oOyxztvp7V_6XG7OUTT15q0,546
@@ -354,7 +354,7 @@ blaxel/core/sandbox/client/models/process_request_env.py,sha256=hzVPY4mk4g4bKj_S
354
354
  blaxel/core/sandbox/client/models/process_response.py,sha256=vXHK6NBnuf0KYVzpkaApC29KOKwDE-7jBxy_WszApXs,3239
355
355
  blaxel/core/sandbox/client/models/process_response_status.py,sha256=hCE1gCtheV83T6PYURG3k-rPZSauvyTFhsxLEtudgYE,246
356
356
  blaxel/core/sandbox/client/models/subdirectory.py,sha256=obztIgi_XjT4pPoT1-dyOX6O8k0e4ERZUTiI9qgkhJM,1593
357
- blaxel/core/sandbox/client/models/success_response.py,sha256=ksioQ0qNV7yhXlySY3_3EycsJ1ec7LSxBMwIq4HnfVQ,1703
357
+ blaxel/core/sandbox/client/models/success_response.py,sha256=m8Bj9GJjN4yYQsPszC68izkuTRzEE9DCHjOaDdIYeGg,1825
358
358
  blaxel/core/tools/__init__.py,sha256=OCZExds99o_j_GvAywaWFIGfY12abNZHcaiGOmAyh8o,9793
359
359
  blaxel/core/tools/common.py,sha256=JGK052v_fvwWBFYnIArlBnFFViYyFrqdDn3gdVf53EU,1332
360
360
  blaxel/core/tools/types.py,sha256=YPCGJ4vZDhqR0X2H_TWtc5chQScsC32nGTQdRKJlO8Y,707
@@ -402,7 +402,7 @@ blaxel/telemetry/instrumentation/map.py,sha256=PCzZJj39yiYVYJrxLBNP-NW-tjjYyTijw
402
402
  blaxel/telemetry/instrumentation/utils.py,sha256=KInMYZH-mu9_wvetmf0EmgrfN3Sw8IWk2Y95v2u90_U,1901
403
403
  blaxel/telemetry/log/log.py,sha256=RvQByRjZMoP_dRaAZu8oK6DTegsHs-xV4W-UIqis6CA,2461
404
404
  blaxel/telemetry/log/logger.py,sha256=NPAS3g82ryROjvc_DEZaTIfrcehoLEZoP-JkLxADxc0,4113
405
- blaxel-0.2.3.dist-info/METADATA,sha256=QgO7ehwf9t_mx9IdU9orVDZIlufpL2pgIXkGWRzKKyg,9875
406
- blaxel-0.2.3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
407
- blaxel-0.2.3.dist-info/licenses/LICENSE,sha256=p5PNQvpvyDT_0aYBDgmV1fFI_vAD2aSV0wWG7VTgRis,1069
408
- blaxel-0.2.3.dist-info/RECORD,,
405
+ blaxel-0.2.5.dist-info/METADATA,sha256=t_ALDJA5oFDqRr8BtWRKJ5Q94y1AfBo3oMEKy7QXb-w,9875
406
+ blaxel-0.2.5.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
407
+ blaxel-0.2.5.dist-info/licenses/LICENSE,sha256=p5PNQvpvyDT_0aYBDgmV1fFI_vAD2aSV0wWG7VTgRis,1069
408
+ blaxel-0.2.5.dist-info/RECORD,,
File without changes