blaxel 0.1.9rc36__py3-none-any.whl → 0.1.10__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.
Files changed (83) hide show
  1. blaxel/agents/__init__.py +52 -15
  2. blaxel/authentication/__init__.py +11 -2
  3. blaxel/client/api/compute/create_sandbox_preview.py +179 -0
  4. blaxel/client/api/compute/create_sandbox_preview_token.py +192 -0
  5. blaxel/client/api/compute/delete_sandbox_preview.py +167 -0
  6. blaxel/client/api/compute/delete_sandbox_preview_token.py +180 -0
  7. blaxel/client/api/compute/get_sandbox_preview.py +167 -0
  8. blaxel/client/api/compute/list_sandbox_preview_tokens.py +172 -0
  9. blaxel/client/api/compute/list_sandbox_previews.py +159 -0
  10. blaxel/client/api/compute/update_sandbox_preview.py +192 -0
  11. blaxel/client/api/integrations/get_integration.py +64 -7
  12. blaxel/client/api/workspaces/check_workspace_availability.py +165 -0
  13. blaxel/client/models/__init__.py +32 -2
  14. blaxel/client/models/check_workspace_availability_body.py +60 -0
  15. blaxel/client/models/delete_sandbox_preview_token_response_200.py +60 -0
  16. blaxel/client/models/integration.py +197 -0
  17. blaxel/client/models/integration_additional_infos.py +45 -0
  18. blaxel/client/models/integration_endpoint.py +143 -0
  19. blaxel/client/models/integration_endpoint_token.py +79 -0
  20. blaxel/client/models/integration_endpoints.py +61 -0
  21. blaxel/client/models/integration_headers.py +45 -0
  22. blaxel/client/models/integration_organization.py +88 -0
  23. blaxel/client/models/integration_query_params.py +45 -0
  24. blaxel/client/models/metrics.py +9 -0
  25. blaxel/client/models/preview.py +96 -0
  26. blaxel/client/models/preview_metadata.py +133 -0
  27. blaxel/client/models/preview_spec.py +79 -0
  28. blaxel/client/models/preview_token.py +96 -0
  29. blaxel/client/models/preview_token_metadata.py +97 -0
  30. blaxel/client/models/preview_token_spec.py +88 -0
  31. blaxel/common/autoload.py +0 -2
  32. blaxel/common/internal.py +75 -0
  33. blaxel/common/settings.py +6 -1
  34. blaxel/mcp/server.py +2 -1
  35. blaxel/sandbox/base.py +68 -0
  36. blaxel/sandbox/client/__init__.py +8 -0
  37. blaxel/sandbox/client/api/__init__.py +1 -0
  38. blaxel/sandbox/client/api/filesystem/__init__.py +0 -0
  39. blaxel/sandbox/client/api/filesystem/delete_filesystem_path.py +184 -0
  40. blaxel/sandbox/client/api/filesystem/get_filesystem_path.py +184 -0
  41. blaxel/sandbox/client/api/filesystem/put_filesystem_path.py +189 -0
  42. blaxel/sandbox/client/api/network/__init__.py +0 -0
  43. blaxel/sandbox/client/api/network/delete_network_process_pid_monitor.py +169 -0
  44. blaxel/sandbox/client/api/network/get_network_process_pid_ports.py +169 -0
  45. blaxel/sandbox/client/api/network/post_network_process_pid_monitor.py +195 -0
  46. blaxel/sandbox/client/api/process/__init__.py +0 -0
  47. blaxel/sandbox/client/api/process/delete_process_identifier.py +163 -0
  48. blaxel/sandbox/client/api/process/delete_process_identifier_kill.py +189 -0
  49. blaxel/sandbox/client/api/process/get_process.py +135 -0
  50. blaxel/sandbox/client/api/process/get_process_identifier.py +159 -0
  51. blaxel/sandbox/client/api/process/get_process_identifier_logs.py +188 -0
  52. blaxel/sandbox/client/api/process/get_process_identifier_logs_stream.py +190 -0
  53. blaxel/sandbox/client/api/process/post_process.py +176 -0
  54. blaxel/sandbox/client/client.py +162 -0
  55. blaxel/sandbox/client/errors.py +16 -0
  56. blaxel/sandbox/client/models/__init__.py +41 -0
  57. blaxel/sandbox/client/models/delete_network_process_pid_monitor_response_200.py +45 -0
  58. blaxel/sandbox/client/models/directory.py +112 -0
  59. blaxel/sandbox/client/models/error_response.py +60 -0
  60. blaxel/sandbox/client/models/file.py +105 -0
  61. blaxel/sandbox/client/models/file_request.py +78 -0
  62. blaxel/sandbox/client/models/file_with_content.py +114 -0
  63. blaxel/sandbox/client/models/get_network_process_pid_ports_response_200.py +45 -0
  64. blaxel/sandbox/client/models/get_process_identifier_logs_response_200.py +45 -0
  65. blaxel/sandbox/client/models/get_process_identifier_logs_stream_response_200.py +45 -0
  66. blaxel/sandbox/client/models/port_monitor_request.py +60 -0
  67. blaxel/sandbox/client/models/post_network_process_pid_monitor_response_200.py +45 -0
  68. blaxel/sandbox/client/models/process_kill_request.py +60 -0
  69. blaxel/sandbox/client/models/process_request.py +118 -0
  70. blaxel/sandbox/client/models/process_response.py +123 -0
  71. blaxel/sandbox/client/models/subdirectory.py +60 -0
  72. blaxel/sandbox/client/models/success_response.py +69 -0
  73. blaxel/sandbox/client/py.typed +1 -0
  74. blaxel/sandbox/client/types.py +46 -0
  75. blaxel/sandbox/filesystem.py +104 -0
  76. blaxel/sandbox/process.py +57 -0
  77. blaxel/sandbox/sandbox.py +92 -0
  78. blaxel/tools/__init__.py +62 -21
  79. {blaxel-0.1.9rc36.dist-info → blaxel-0.1.10.dist-info}/METADATA +1 -1
  80. {blaxel-0.1.9rc36.dist-info → blaxel-0.1.10.dist-info}/RECORD +82 -14
  81. blaxel/client/models/sandboxes.py +0 -129
  82. {blaxel-0.1.9rc36.dist-info → blaxel-0.1.10.dist-info}/WHEEL +0 -0
  83. {blaxel-0.1.9rc36.dist-info → blaxel-0.1.10.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,114 @@
1
+ from typing import Any, TypeVar, Union
2
+
3
+ from attrs import define as _attrs_define
4
+ from attrs import field as _attrs_field
5
+
6
+ from ..types import UNSET, Unset
7
+
8
+ T = TypeVar("T", bound="FileWithContent")
9
+
10
+
11
+ @_attrs_define
12
+ class FileWithContent:
13
+ """
14
+ Attributes:
15
+ content (Union[Unset, str]):
16
+ group (Union[Unset, str]):
17
+ last_modified (Union[Unset, str]):
18
+ owner (Union[Unset, str]):
19
+ path (Union[Unset, str]):
20
+ permissions (Union[Unset, str]):
21
+ size (Union[Unset, int]):
22
+ """
23
+
24
+ content: Union[Unset, str] = UNSET
25
+ group: Union[Unset, str] = UNSET
26
+ last_modified: Union[Unset, str] = UNSET
27
+ owner: Union[Unset, str] = UNSET
28
+ path: Union[Unset, str] = UNSET
29
+ permissions: Union[Unset, str] = UNSET
30
+ size: Union[Unset, int] = UNSET
31
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
32
+
33
+ def to_dict(self) -> dict[str, Any]:
34
+ content = self.content
35
+
36
+ group = self.group
37
+
38
+ last_modified = self.last_modified
39
+
40
+ owner = self.owner
41
+
42
+ path = self.path
43
+
44
+ permissions = self.permissions
45
+
46
+ size = self.size
47
+
48
+ field_dict: dict[str, Any] = {}
49
+ field_dict.update(self.additional_properties)
50
+ field_dict.update({})
51
+ if content is not UNSET:
52
+ field_dict["content"] = content
53
+ if group is not UNSET:
54
+ field_dict["group"] = group
55
+ if last_modified is not UNSET:
56
+ field_dict["lastModified"] = last_modified
57
+ if owner is not UNSET:
58
+ field_dict["owner"] = owner
59
+ if path is not UNSET:
60
+ field_dict["path"] = path
61
+ if permissions is not UNSET:
62
+ field_dict["permissions"] = permissions
63
+ if size is not UNSET:
64
+ field_dict["size"] = size
65
+
66
+ return field_dict
67
+
68
+ @classmethod
69
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
70
+ if not src_dict:
71
+ return None
72
+ d = src_dict.copy()
73
+ content = d.pop("content", UNSET)
74
+
75
+ group = d.pop("group", UNSET)
76
+
77
+ last_modified = d.pop("lastModified", UNSET)
78
+
79
+ owner = d.pop("owner", UNSET)
80
+
81
+ path = d.pop("path", UNSET)
82
+
83
+ permissions = d.pop("permissions", UNSET)
84
+
85
+ size = d.pop("size", UNSET)
86
+
87
+ file_with_content = cls(
88
+ content=content,
89
+ group=group,
90
+ last_modified=last_modified,
91
+ owner=owner,
92
+ path=path,
93
+ permissions=permissions,
94
+ size=size,
95
+ )
96
+
97
+ file_with_content.additional_properties = d
98
+ return file_with_content
99
+
100
+ @property
101
+ def additional_keys(self) -> list[str]:
102
+ return list(self.additional_properties.keys())
103
+
104
+ def __getitem__(self, key: str) -> Any:
105
+ return self.additional_properties[key]
106
+
107
+ def __setitem__(self, key: str, value: Any) -> None:
108
+ self.additional_properties[key] = value
109
+
110
+ def __delitem__(self, key: str) -> None:
111
+ del self.additional_properties[key]
112
+
113
+ def __contains__(self, key: str) -> bool:
114
+ return key in self.additional_properties
@@ -0,0 +1,45 @@
1
+ from typing import Any, TypeVar
2
+
3
+ from attrs import define as _attrs_define
4
+ from attrs import field as _attrs_field
5
+
6
+ T = TypeVar("T", bound="GetNetworkProcessPidPortsResponse200")
7
+
8
+
9
+ @_attrs_define
10
+ class GetNetworkProcessPidPortsResponse200:
11
+ """ """
12
+
13
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
14
+
15
+ def to_dict(self) -> dict[str, Any]:
16
+ field_dict: dict[str, Any] = {}
17
+ field_dict.update(self.additional_properties)
18
+
19
+ return field_dict
20
+
21
+ @classmethod
22
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
23
+ if not src_dict:
24
+ return None
25
+ d = src_dict.copy()
26
+ get_network_process_pid_ports_response_200 = cls()
27
+
28
+ get_network_process_pid_ports_response_200.additional_properties = d
29
+ return get_network_process_pid_ports_response_200
30
+
31
+ @property
32
+ def additional_keys(self) -> list[str]:
33
+ return list(self.additional_properties.keys())
34
+
35
+ def __getitem__(self, key: str) -> Any:
36
+ return self.additional_properties[key]
37
+
38
+ def __setitem__(self, key: str, value: Any) -> None:
39
+ self.additional_properties[key] = value
40
+
41
+ def __delitem__(self, key: str) -> None:
42
+ del self.additional_properties[key]
43
+
44
+ def __contains__(self, key: str) -> bool:
45
+ return key in self.additional_properties
@@ -0,0 +1,45 @@
1
+ from typing import Any, TypeVar
2
+
3
+ from attrs import define as _attrs_define
4
+ from attrs import field as _attrs_field
5
+
6
+ T = TypeVar("T", bound="GetProcessIdentifierLogsResponse200")
7
+
8
+
9
+ @_attrs_define
10
+ class GetProcessIdentifierLogsResponse200:
11
+ """ """
12
+
13
+ additional_properties: dict[str, str] = _attrs_field(init=False, factory=dict)
14
+
15
+ def to_dict(self) -> dict[str, Any]:
16
+ field_dict: dict[str, Any] = {}
17
+ field_dict.update(self.additional_properties)
18
+
19
+ return field_dict
20
+
21
+ @classmethod
22
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
23
+ if not src_dict:
24
+ return None
25
+ d = src_dict.copy()
26
+ get_process_identifier_logs_response_200 = cls()
27
+
28
+ get_process_identifier_logs_response_200.additional_properties = d
29
+ return get_process_identifier_logs_response_200
30
+
31
+ @property
32
+ def additional_keys(self) -> list[str]:
33
+ return list(self.additional_properties.keys())
34
+
35
+ def __getitem__(self, key: str) -> str:
36
+ return self.additional_properties[key]
37
+
38
+ def __setitem__(self, key: str, value: str) -> None:
39
+ self.additional_properties[key] = value
40
+
41
+ def __delitem__(self, key: str) -> None:
42
+ del self.additional_properties[key]
43
+
44
+ def __contains__(self, key: str) -> bool:
45
+ return key in self.additional_properties
@@ -0,0 +1,45 @@
1
+ from typing import Any, TypeVar
2
+
3
+ from attrs import define as _attrs_define
4
+ from attrs import field as _attrs_field
5
+
6
+ T = TypeVar("T", bound="GetProcessIdentifierLogsStreamResponse200")
7
+
8
+
9
+ @_attrs_define
10
+ class GetProcessIdentifierLogsStreamResponse200:
11
+ """ """
12
+
13
+ additional_properties: dict[str, str] = _attrs_field(init=False, factory=dict)
14
+
15
+ def to_dict(self) -> dict[str, Any]:
16
+ field_dict: dict[str, Any] = {}
17
+ field_dict.update(self.additional_properties)
18
+
19
+ return field_dict
20
+
21
+ @classmethod
22
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
23
+ if not src_dict:
24
+ return None
25
+ d = src_dict.copy()
26
+ get_process_identifier_logs_stream_response_200 = cls()
27
+
28
+ get_process_identifier_logs_stream_response_200.additional_properties = d
29
+ return get_process_identifier_logs_stream_response_200
30
+
31
+ @property
32
+ def additional_keys(self) -> list[str]:
33
+ return list(self.additional_properties.keys())
34
+
35
+ def __getitem__(self, key: str) -> str:
36
+ return self.additional_properties[key]
37
+
38
+ def __setitem__(self, key: str, value: str) -> None:
39
+ self.additional_properties[key] = value
40
+
41
+ def __delitem__(self, key: str) -> None:
42
+ del self.additional_properties[key]
43
+
44
+ def __contains__(self, key: str) -> bool:
45
+ return key in self.additional_properties
@@ -0,0 +1,60 @@
1
+ from typing import Any, TypeVar, Union
2
+
3
+ from attrs import define as _attrs_define
4
+ from attrs import field as _attrs_field
5
+
6
+ from ..types import UNSET, Unset
7
+
8
+ T = TypeVar("T", bound="PortMonitorRequest")
9
+
10
+
11
+ @_attrs_define
12
+ class PortMonitorRequest:
13
+ """
14
+ Attributes:
15
+ callback (Union[Unset, str]): URL to call when a new port is detected Example: http://localhost:3000/callback.
16
+ """
17
+
18
+ callback: Union[Unset, str] = UNSET
19
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
20
+
21
+ def to_dict(self) -> dict[str, Any]:
22
+ callback = self.callback
23
+
24
+ field_dict: dict[str, Any] = {}
25
+ field_dict.update(self.additional_properties)
26
+ field_dict.update({})
27
+ if callback is not UNSET:
28
+ field_dict["callback"] = callback
29
+
30
+ return field_dict
31
+
32
+ @classmethod
33
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
34
+ if not src_dict:
35
+ return None
36
+ d = src_dict.copy()
37
+ callback = d.pop("callback", UNSET)
38
+
39
+ port_monitor_request = cls(
40
+ callback=callback,
41
+ )
42
+
43
+ port_monitor_request.additional_properties = d
44
+ return port_monitor_request
45
+
46
+ @property
47
+ def additional_keys(self) -> list[str]:
48
+ return list(self.additional_properties.keys())
49
+
50
+ def __getitem__(self, key: str) -> Any:
51
+ return self.additional_properties[key]
52
+
53
+ def __setitem__(self, key: str, value: Any) -> None:
54
+ self.additional_properties[key] = value
55
+
56
+ def __delitem__(self, key: str) -> None:
57
+ del self.additional_properties[key]
58
+
59
+ def __contains__(self, key: str) -> bool:
60
+ return key in self.additional_properties
@@ -0,0 +1,45 @@
1
+ from typing import Any, TypeVar
2
+
3
+ from attrs import define as _attrs_define
4
+ from attrs import field as _attrs_field
5
+
6
+ T = TypeVar("T", bound="PostNetworkProcessPidMonitorResponse200")
7
+
8
+
9
+ @_attrs_define
10
+ class PostNetworkProcessPidMonitorResponse200:
11
+ """ """
12
+
13
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
14
+
15
+ def to_dict(self) -> dict[str, Any]:
16
+ field_dict: dict[str, Any] = {}
17
+ field_dict.update(self.additional_properties)
18
+
19
+ return field_dict
20
+
21
+ @classmethod
22
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
23
+ if not src_dict:
24
+ return None
25
+ d = src_dict.copy()
26
+ post_network_process_pid_monitor_response_200 = cls()
27
+
28
+ post_network_process_pid_monitor_response_200.additional_properties = d
29
+ return post_network_process_pid_monitor_response_200
30
+
31
+ @property
32
+ def additional_keys(self) -> list[str]:
33
+ return list(self.additional_properties.keys())
34
+
35
+ def __getitem__(self, key: str) -> Any:
36
+ return self.additional_properties[key]
37
+
38
+ def __setitem__(self, key: str, value: Any) -> None:
39
+ self.additional_properties[key] = value
40
+
41
+ def __delitem__(self, key: str) -> None:
42
+ del self.additional_properties[key]
43
+
44
+ def __contains__(self, key: str) -> bool:
45
+ return key in self.additional_properties
@@ -0,0 +1,60 @@
1
+ from typing import Any, TypeVar, Union
2
+
3
+ from attrs import define as _attrs_define
4
+ from attrs import field as _attrs_field
5
+
6
+ from ..types import UNSET, Unset
7
+
8
+ T = TypeVar("T", bound="ProcessKillRequest")
9
+
10
+
11
+ @_attrs_define
12
+ class ProcessKillRequest:
13
+ """
14
+ Attributes:
15
+ signal (Union[Unset, str]): Example: SIGTERM.
16
+ """
17
+
18
+ signal: Union[Unset, str] = UNSET
19
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
20
+
21
+ def to_dict(self) -> dict[str, Any]:
22
+ signal = self.signal
23
+
24
+ field_dict: dict[str, Any] = {}
25
+ field_dict.update(self.additional_properties)
26
+ field_dict.update({})
27
+ if signal is not UNSET:
28
+ field_dict["signal"] = signal
29
+
30
+ return field_dict
31
+
32
+ @classmethod
33
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
34
+ if not src_dict:
35
+ return None
36
+ d = src_dict.copy()
37
+ signal = d.pop("signal", UNSET)
38
+
39
+ process_kill_request = cls(
40
+ signal=signal,
41
+ )
42
+
43
+ process_kill_request.additional_properties = d
44
+ return process_kill_request
45
+
46
+ @property
47
+ def additional_keys(self) -> list[str]:
48
+ return list(self.additional_properties.keys())
49
+
50
+ def __getitem__(self, key: str) -> Any:
51
+ return self.additional_properties[key]
52
+
53
+ def __setitem__(self, key: str, value: Any) -> None:
54
+ self.additional_properties[key] = value
55
+
56
+ def __delitem__(self, key: str) -> None:
57
+ del self.additional_properties[key]
58
+
59
+ def __contains__(self, key: str) -> bool:
60
+ return key in self.additional_properties
@@ -0,0 +1,118 @@
1
+ from typing import Any, TypeVar, Union, cast
2
+
3
+ from attrs import define as _attrs_define
4
+ from attrs import field as _attrs_field
5
+
6
+ from ..types import UNSET, Unset
7
+
8
+ T = TypeVar("T", bound="ProcessRequest")
9
+
10
+
11
+ @_attrs_define
12
+ class ProcessRequest:
13
+ """
14
+ Attributes:
15
+ command (str): Example: ls -la.
16
+ name (Union[Unset, str]): Example: my-process.
17
+ stream_logs (Union[Unset, bool]): Example: True.
18
+ timeout (Union[Unset, int]): Example: 30.
19
+ wait_for_completion (Union[Unset, bool]):
20
+ wait_for_ports (Union[Unset, list[int]]): Example: [3000, 8080].
21
+ working_dir (Union[Unset, str]): Example: /home/user.
22
+ """
23
+
24
+ command: str
25
+ name: Union[Unset, str] = UNSET
26
+ stream_logs: Union[Unset, bool] = UNSET
27
+ timeout: Union[Unset, int] = UNSET
28
+ wait_for_completion: Union[Unset, bool] = UNSET
29
+ wait_for_ports: Union[Unset, list[int]] = UNSET
30
+ working_dir: Union[Unset, str] = UNSET
31
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
32
+
33
+ def to_dict(self) -> dict[str, Any]:
34
+ command = self.command
35
+
36
+ name = self.name
37
+
38
+ stream_logs = self.stream_logs
39
+
40
+ timeout = self.timeout
41
+
42
+ wait_for_completion = self.wait_for_completion
43
+
44
+ wait_for_ports: Union[Unset, list[int]] = UNSET
45
+ if not isinstance(self.wait_for_ports, Unset):
46
+ wait_for_ports = self.wait_for_ports
47
+
48
+ working_dir = self.working_dir
49
+
50
+ field_dict: dict[str, Any] = {}
51
+ field_dict.update(self.additional_properties)
52
+ field_dict.update(
53
+ {
54
+ "command": command,
55
+ }
56
+ )
57
+ if name is not UNSET:
58
+ field_dict["name"] = name
59
+ if stream_logs is not UNSET:
60
+ field_dict["streamLogs"] = stream_logs
61
+ if timeout is not UNSET:
62
+ field_dict["timeout"] = timeout
63
+ if wait_for_completion is not UNSET:
64
+ field_dict["waitForCompletion"] = wait_for_completion
65
+ if wait_for_ports is not UNSET:
66
+ field_dict["waitForPorts"] = wait_for_ports
67
+ if working_dir is not UNSET:
68
+ field_dict["workingDir"] = working_dir
69
+
70
+ return field_dict
71
+
72
+ @classmethod
73
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
74
+ if not src_dict:
75
+ return None
76
+ d = src_dict.copy()
77
+ command = d.pop("command")
78
+
79
+ name = d.pop("name", UNSET)
80
+
81
+ stream_logs = d.pop("streamLogs", UNSET)
82
+
83
+ timeout = d.pop("timeout", UNSET)
84
+
85
+ wait_for_completion = d.pop("waitForCompletion", UNSET)
86
+
87
+ wait_for_ports = cast(list[int], d.pop("waitForPorts", UNSET))
88
+
89
+ working_dir = d.pop("workingDir", UNSET)
90
+
91
+ process_request = cls(
92
+ command=command,
93
+ name=name,
94
+ stream_logs=stream_logs,
95
+ timeout=timeout,
96
+ wait_for_completion=wait_for_completion,
97
+ wait_for_ports=wait_for_ports,
98
+ working_dir=working_dir,
99
+ )
100
+
101
+ process_request.additional_properties = d
102
+ return process_request
103
+
104
+ @property
105
+ def additional_keys(self) -> list[str]:
106
+ return list(self.additional_properties.keys())
107
+
108
+ def __getitem__(self, key: str) -> Any:
109
+ return self.additional_properties[key]
110
+
111
+ def __setitem__(self, key: str, value: Any) -> None:
112
+ self.additional_properties[key] = value
113
+
114
+ def __delitem__(self, key: str) -> None:
115
+ del self.additional_properties[key]
116
+
117
+ def __contains__(self, key: str) -> bool:
118
+ return key in self.additional_properties
@@ -0,0 +1,123 @@
1
+ from typing import Any, TypeVar, Union
2
+
3
+ from attrs import define as _attrs_define
4
+ from attrs import field as _attrs_field
5
+
6
+ from ..types import UNSET, Unset
7
+
8
+ T = TypeVar("T", bound="ProcessResponse")
9
+
10
+
11
+ @_attrs_define
12
+ class ProcessResponse:
13
+ """
14
+ Attributes:
15
+ command (Union[Unset, str]): Example: ls -la.
16
+ completed_at (Union[Unset, str]): Example: Wed, 01 Jan 2023 12:01:00 GMT.
17
+ exit_code (Union[Unset, int]):
18
+ name (Union[Unset, str]): Example: my-process.
19
+ pid (Union[Unset, str]): Example: 1234.
20
+ started_at (Union[Unset, str]): Example: Wed, 01 Jan 2023 12:00:00 GMT.
21
+ status (Union[Unset, str]): Example: running.
22
+ working_dir (Union[Unset, str]): Example: /home/user.
23
+ """
24
+
25
+ command: Union[Unset, str] = UNSET
26
+ completed_at: Union[Unset, str] = UNSET
27
+ exit_code: Union[Unset, int] = UNSET
28
+ name: Union[Unset, str] = UNSET
29
+ pid: Union[Unset, str] = UNSET
30
+ started_at: Union[Unset, str] = UNSET
31
+ status: Union[Unset, str] = UNSET
32
+ working_dir: Union[Unset, str] = UNSET
33
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
34
+
35
+ def to_dict(self) -> dict[str, Any]:
36
+ command = self.command
37
+
38
+ completed_at = self.completed_at
39
+
40
+ exit_code = self.exit_code
41
+
42
+ name = self.name
43
+
44
+ pid = self.pid
45
+
46
+ started_at = self.started_at
47
+
48
+ status = self.status
49
+
50
+ working_dir = self.working_dir
51
+
52
+ field_dict: dict[str, Any] = {}
53
+ field_dict.update(self.additional_properties)
54
+ field_dict.update({})
55
+ if command is not UNSET:
56
+ field_dict["command"] = command
57
+ if completed_at is not UNSET:
58
+ field_dict["completedAt"] = completed_at
59
+ if exit_code is not UNSET:
60
+ field_dict["exitCode"] = exit_code
61
+ if name is not UNSET:
62
+ field_dict["name"] = name
63
+ if pid is not UNSET:
64
+ field_dict["pid"] = pid
65
+ if started_at is not UNSET:
66
+ field_dict["startedAt"] = started_at
67
+ if status is not UNSET:
68
+ field_dict["status"] = status
69
+ if working_dir is not UNSET:
70
+ field_dict["workingDir"] = working_dir
71
+
72
+ return field_dict
73
+
74
+ @classmethod
75
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
76
+ if not src_dict:
77
+ return None
78
+ d = src_dict.copy()
79
+ command = d.pop("command", UNSET)
80
+
81
+ completed_at = d.pop("completedAt", UNSET)
82
+
83
+ exit_code = d.pop("exitCode", UNSET)
84
+
85
+ name = d.pop("name", UNSET)
86
+
87
+ pid = d.pop("pid", UNSET)
88
+
89
+ started_at = d.pop("startedAt", UNSET)
90
+
91
+ status = d.pop("status", UNSET)
92
+
93
+ working_dir = d.pop("workingDir", UNSET)
94
+
95
+ process_response = cls(
96
+ command=command,
97
+ completed_at=completed_at,
98
+ exit_code=exit_code,
99
+ name=name,
100
+ pid=pid,
101
+ started_at=started_at,
102
+ status=status,
103
+ working_dir=working_dir,
104
+ )
105
+
106
+ process_response.additional_properties = d
107
+ return process_response
108
+
109
+ @property
110
+ def additional_keys(self) -> list[str]:
111
+ return list(self.additional_properties.keys())
112
+
113
+ def __getitem__(self, key: str) -> Any:
114
+ return self.additional_properties[key]
115
+
116
+ def __setitem__(self, key: str, value: Any) -> None:
117
+ self.additional_properties[key] = value
118
+
119
+ def __delitem__(self, key: str) -> None:
120
+ del self.additional_properties[key]
121
+
122
+ def __contains__(self, key: str) -> bool:
123
+ return key in self.additional_properties