beamlit 0.0.55rc103__py3-none-any.whl → 0.0.56rc105__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 (41) hide show
  1. beamlit/agents/chain.py +14 -0
  2. beamlit/agents/decorator.py +6 -3
  3. beamlit/api/default/list_mcp_hub_definitions.py +127 -0
  4. beamlit/api/generation/__init__.py +0 -0
  5. beamlit/api/generation/run_information_generation_agent.py +168 -0
  6. beamlit/api/knowledgebases/delete_knowledgebase.py +18 -18
  7. beamlit/api/knowledgebases/get_knowledgebase.py +18 -18
  8. beamlit/api/knowledgebases/update_knowledgebase.py +14 -14
  9. beamlit/common/settings.py +2 -0
  10. beamlit/deploy/deploy.py +5 -2
  11. beamlit/functions/common.py +16 -0
  12. beamlit/functions/local/local.py +49 -0
  13. beamlit/functions/mcp/mcp.py +64 -74
  14. beamlit/functions/mcp/utils.py +56 -0
  15. beamlit/functions/remote/remote.py +16 -2
  16. beamlit/models/__init__.py +30 -0
  17. beamlit/models/agent_information_request.py +63 -0
  18. beamlit/models/agent_information_response.py +88 -0
  19. beamlit/models/agent_spec.py +9 -0
  20. beamlit/models/entrypoint.py +96 -0
  21. beamlit/models/entrypoint_env.py +45 -0
  22. beamlit/models/form.py +120 -0
  23. beamlit/models/form_config.py +45 -0
  24. beamlit/models/form_oauthomitempty.py +45 -0
  25. beamlit/models/form_secrets.py +45 -0
  26. beamlit/models/mcp_definition.py +188 -0
  27. beamlit/models/mcp_definition_entrypoint.py +45 -0
  28. beamlit/models/mcp_definition_form.py +45 -0
  29. beamlit/models/mcp_hub_artifact.py +188 -0
  30. beamlit/models/mcp_hub_artifact_entrypoint.py +45 -0
  31. beamlit/models/mcp_hub_artifact_form.py +45 -0
  32. beamlit/models/model_spec.py +0 -9
  33. beamlit/models/o_auth.py +72 -0
  34. beamlit/models/workspace.py +9 -9
  35. beamlit/run.py +25 -9
  36. {beamlit-0.0.55rc103.dist-info → beamlit-0.0.56rc105.dist-info}/METADATA +1 -1
  37. {beamlit-0.0.55rc103.dist-info → beamlit-0.0.56rc105.dist-info}/RECORD +40 -21
  38. beamlit/api/workspaces/workspace_quotas_request.py +0 -97
  39. {beamlit-0.0.55rc103.dist-info → beamlit-0.0.56rc105.dist-info}/WHEEL +0 -0
  40. {beamlit-0.0.55rc103.dist-info → beamlit-0.0.56rc105.dist-info}/entry_points.txt +0 -0
  41. {beamlit-0.0.55rc103.dist-info → beamlit-0.0.56rc105.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,63 @@
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="AgentInformationRequest")
9
+
10
+
11
+ @_attrs_define
12
+ class AgentInformationRequest:
13
+ """generation agent information request
14
+
15
+ Attributes:
16
+ functions (Union[Unset, list[Any]]): Functions to generate information for
17
+ """
18
+
19
+ functions: Union[Unset, list[Any]] = UNSET
20
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
21
+
22
+ def to_dict(self) -> dict[str, Any]:
23
+ functions: Union[Unset, list[Any]] = UNSET
24
+ if not isinstance(self.functions, Unset):
25
+ functions = self.functions
26
+
27
+ field_dict: dict[str, Any] = {}
28
+ field_dict.update(self.additional_properties)
29
+ field_dict.update({})
30
+ if functions is not UNSET:
31
+ field_dict["functions"] = functions
32
+
33
+ return field_dict
34
+
35
+ @classmethod
36
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
37
+ if not src_dict:
38
+ return None
39
+ d = src_dict.copy()
40
+ functions = cast(list[Any], d.pop("functions", UNSET))
41
+
42
+ agent_information_request = cls(
43
+ functions=functions,
44
+ )
45
+
46
+ agent_information_request.additional_properties = d
47
+ return agent_information_request
48
+
49
+ @property
50
+ def additional_keys(self) -> list[str]:
51
+ return list(self.additional_properties.keys())
52
+
53
+ def __getitem__(self, key: str) -> Any:
54
+ return self.additional_properties[key]
55
+
56
+ def __setitem__(self, key: str, value: Any) -> None:
57
+ self.additional_properties[key] = value
58
+
59
+ def __delitem__(self, key: str) -> None:
60
+ del self.additional_properties[key]
61
+
62
+ def __contains__(self, key: str) -> bool:
63
+ return key in self.additional_properties
@@ -0,0 +1,88 @@
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="AgentInformationResponse")
9
+
10
+
11
+ @_attrs_define
12
+ class AgentInformationResponse:
13
+ """generation agent information response
14
+
15
+ Attributes:
16
+ description (Union[Unset, str]): Description of the agent
17
+ display_name (Union[Unset, str]): Display name of the agent
18
+ name (Union[Unset, str]): Name of the agent
19
+ prompt (Union[Unset, str]): Prompt of the agent
20
+ """
21
+
22
+ description: Union[Unset, str] = UNSET
23
+ display_name: Union[Unset, str] = UNSET
24
+ name: Union[Unset, str] = UNSET
25
+ prompt: Union[Unset, str] = UNSET
26
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
27
+
28
+ def to_dict(self) -> dict[str, Any]:
29
+ description = self.description
30
+
31
+ display_name = self.display_name
32
+
33
+ name = self.name
34
+
35
+ prompt = self.prompt
36
+
37
+ field_dict: dict[str, Any] = {}
38
+ field_dict.update(self.additional_properties)
39
+ field_dict.update({})
40
+ if description is not UNSET:
41
+ field_dict["description"] = description
42
+ if display_name is not UNSET:
43
+ field_dict["displayName"] = display_name
44
+ if name is not UNSET:
45
+ field_dict["name"] = name
46
+ if prompt is not UNSET:
47
+ field_dict["prompt"] = prompt
48
+
49
+ return field_dict
50
+
51
+ @classmethod
52
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
53
+ if not src_dict:
54
+ return None
55
+ d = src_dict.copy()
56
+ description = d.pop("description", UNSET)
57
+
58
+ display_name = d.pop("displayName", UNSET)
59
+
60
+ name = d.pop("name", UNSET)
61
+
62
+ prompt = d.pop("prompt", UNSET)
63
+
64
+ agent_information_response = cls(
65
+ description=description,
66
+ display_name=display_name,
67
+ name=name,
68
+ prompt=prompt,
69
+ )
70
+
71
+ agent_information_response.additional_properties = d
72
+ return agent_information_response
73
+
74
+ @property
75
+ def additional_keys(self) -> list[str]:
76
+ return list(self.additional_properties.keys())
77
+
78
+ def __getitem__(self, key: str) -> Any:
79
+ return self.additional_properties[key]
80
+
81
+ def __setitem__(self, key: str, value: Any) -> None:
82
+ self.additional_properties[key] = value
83
+
84
+ def __delitem__(self, key: str) -> None:
85
+ del self.additional_properties[key]
86
+
87
+ def __contains__(self, key: str) -> bool:
88
+ return key in self.additional_properties
@@ -37,6 +37,7 @@ class AgentSpec:
37
37
  agent_chain (Union[Unset, list['AgentChain']]): Agent chain
38
38
  description (Union[Unset, str]): Description, small description computed from the prompt
39
39
  functions (Union[Unset, list[str]]):
40
+ knowledgebase (Union[Unset, str]): Knowledgebase Name
40
41
  model (Union[Unset, str]): Model name
41
42
  prompt (Union[Unset, str]): Prompt, describe what your agent does
42
43
  repository (Union[Unset, Repository]): Repository
@@ -56,6 +57,7 @@ class AgentSpec:
56
57
  agent_chain: Union[Unset, list["AgentChain"]] = UNSET
57
58
  description: Union[Unset, str] = UNSET
58
59
  functions: Union[Unset, list[str]] = UNSET
60
+ knowledgebase: Union[Unset, str] = UNSET
59
61
  model: Union[Unset, str] = UNSET
60
62
  prompt: Union[Unset, str] = UNSET
61
63
  repository: Union[Unset, "Repository"] = UNSET
@@ -137,6 +139,8 @@ class AgentSpec:
137
139
  if not isinstance(self.functions, Unset):
138
140
  functions = self.functions
139
141
 
142
+ knowledgebase = self.knowledgebase
143
+
140
144
  model = self.model
141
145
 
142
146
  prompt = self.prompt
@@ -178,6 +182,8 @@ class AgentSpec:
178
182
  field_dict["description"] = description
179
183
  if functions is not UNSET:
180
184
  field_dict["functions"] = functions
185
+ if knowledgebase is not UNSET:
186
+ field_dict["knowledgebase"] = knowledgebase
181
187
  if model is not UNSET:
182
188
  field_dict["model"] = model
183
189
  if prompt is not UNSET:
@@ -264,6 +270,8 @@ class AgentSpec:
264
270
 
265
271
  functions = cast(list[str], d.pop("functions", UNSET))
266
272
 
273
+ knowledgebase = d.pop("knowledgebase", UNSET)
274
+
267
275
  model = d.pop("model", UNSET)
268
276
 
269
277
  prompt = d.pop("prompt", UNSET)
@@ -291,6 +299,7 @@ class AgentSpec:
291
299
  agent_chain=agent_chain,
292
300
  description=description,
293
301
  functions=functions,
302
+ knowledgebase=knowledgebase,
294
303
  model=model,
295
304
  prompt=prompt,
296
305
  repository=repository,
@@ -0,0 +1,96 @@
1
+ from typing import TYPE_CHECKING, 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
+ if TYPE_CHECKING:
9
+ from ..models.entrypoint_env import EntrypointEnv
10
+
11
+
12
+ T = TypeVar("T", bound="Entrypoint")
13
+
14
+
15
+ @_attrs_define
16
+ class Entrypoint:
17
+ """Entrypoint of the artifact
18
+
19
+ Attributes:
20
+ args (Union[Unset, list[Any]]): Args of the entrypoint
21
+ command (Union[Unset, str]): Command of the entrypoint
22
+ env (Union[Unset, EntrypointEnv]): Env of the entrypoint
23
+ """
24
+
25
+ args: Union[Unset, list[Any]] = UNSET
26
+ command: Union[Unset, str] = UNSET
27
+ env: Union[Unset, "EntrypointEnv"] = UNSET
28
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
29
+
30
+ def to_dict(self) -> dict[str, Any]:
31
+ args: Union[Unset, list[Any]] = UNSET
32
+ if not isinstance(self.args, Unset):
33
+ args = self.args
34
+
35
+ command = self.command
36
+
37
+ env: Union[Unset, dict[str, Any]] = UNSET
38
+ if self.env and not isinstance(self.env, Unset) and not isinstance(self.env, dict):
39
+ env = self.env.to_dict()
40
+ elif self.env and isinstance(self.env, dict):
41
+ env = self.env
42
+
43
+ field_dict: dict[str, Any] = {}
44
+ field_dict.update(self.additional_properties)
45
+ field_dict.update({})
46
+ if args is not UNSET:
47
+ field_dict["args"] = args
48
+ if command is not UNSET:
49
+ field_dict["command"] = command
50
+ if env is not UNSET:
51
+ field_dict["env"] = env
52
+
53
+ return field_dict
54
+
55
+ @classmethod
56
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
57
+ from ..models.entrypoint_env import EntrypointEnv
58
+
59
+ if not src_dict:
60
+ return None
61
+ d = src_dict.copy()
62
+ args = cast(list[Any], d.pop("args", UNSET))
63
+
64
+ command = d.pop("command", UNSET)
65
+
66
+ _env = d.pop("env", UNSET)
67
+ env: Union[Unset, EntrypointEnv]
68
+ if isinstance(_env, Unset):
69
+ env = UNSET
70
+ else:
71
+ env = EntrypointEnv.from_dict(_env)
72
+
73
+ entrypoint = cls(
74
+ args=args,
75
+ command=command,
76
+ env=env,
77
+ )
78
+
79
+ entrypoint.additional_properties = d
80
+ return entrypoint
81
+
82
+ @property
83
+ def additional_keys(self) -> list[str]:
84
+ return list(self.additional_properties.keys())
85
+
86
+ def __getitem__(self, key: str) -> Any:
87
+ return self.additional_properties[key]
88
+
89
+ def __setitem__(self, key: str, value: Any) -> None:
90
+ self.additional_properties[key] = value
91
+
92
+ def __delitem__(self, key: str) -> None:
93
+ del self.additional_properties[key]
94
+
95
+ def __contains__(self, key: str) -> bool:
96
+ 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="EntrypointEnv")
7
+
8
+
9
+ @_attrs_define
10
+ class EntrypointEnv:
11
+ """Env of the entrypoint"""
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
+ entrypoint_env = cls()
27
+
28
+ entrypoint_env.additional_properties = d
29
+ return entrypoint_env
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
beamlit/models/form.py ADDED
@@ -0,0 +1,120 @@
1
+ from typing import TYPE_CHECKING, 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
+ if TYPE_CHECKING:
9
+ from ..models.form_config import FormConfig
10
+ from ..models.form_oauthomitempty import FormOauthomitempty
11
+ from ..models.form_secrets import FormSecrets
12
+
13
+
14
+ T = TypeVar("T", bound="Form")
15
+
16
+
17
+ @_attrs_define
18
+ class Form:
19
+ """Form of the artifact
20
+
21
+ Attributes:
22
+ config (Union[Unset, FormConfig]): Config of the artifact
23
+ oauthomitempty (Union[Unset, FormOauthomitempty]): OAuth of the artifact
24
+ secrets (Union[Unset, FormSecrets]): Secrets of the artifact
25
+ """
26
+
27
+ config: Union[Unset, "FormConfig"] = UNSET
28
+ oauthomitempty: Union[Unset, "FormOauthomitempty"] = UNSET
29
+ secrets: Union[Unset, "FormSecrets"] = UNSET
30
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
31
+
32
+ def to_dict(self) -> dict[str, Any]:
33
+ config: Union[Unset, dict[str, Any]] = UNSET
34
+ if self.config and not isinstance(self.config, Unset) and not isinstance(self.config, dict):
35
+ config = self.config.to_dict()
36
+ elif self.config and isinstance(self.config, dict):
37
+ config = self.config
38
+
39
+ oauthomitempty: Union[Unset, dict[str, Any]] = UNSET
40
+ if (
41
+ self.oauthomitempty
42
+ and not isinstance(self.oauthomitempty, Unset)
43
+ and not isinstance(self.oauthomitempty, dict)
44
+ ):
45
+ oauthomitempty = self.oauthomitempty.to_dict()
46
+ elif self.oauthomitempty and isinstance(self.oauthomitempty, dict):
47
+ oauthomitempty = self.oauthomitempty
48
+
49
+ secrets: Union[Unset, dict[str, Any]] = UNSET
50
+ if self.secrets and not isinstance(self.secrets, Unset) and not isinstance(self.secrets, dict):
51
+ secrets = self.secrets.to_dict()
52
+ elif self.secrets and isinstance(self.secrets, dict):
53
+ secrets = self.secrets
54
+
55
+ field_dict: dict[str, Any] = {}
56
+ field_dict.update(self.additional_properties)
57
+ field_dict.update({})
58
+ if config is not UNSET:
59
+ field_dict["config"] = config
60
+ if oauthomitempty is not UNSET:
61
+ field_dict["oauth,omitempty"] = oauthomitempty
62
+ if secrets is not UNSET:
63
+ field_dict["secrets"] = secrets
64
+
65
+ return field_dict
66
+
67
+ @classmethod
68
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
69
+ from ..models.form_config import FormConfig
70
+ from ..models.form_oauthomitempty import FormOauthomitempty
71
+ from ..models.form_secrets import FormSecrets
72
+
73
+ if not src_dict:
74
+ return None
75
+ d = src_dict.copy()
76
+ _config = d.pop("config", UNSET)
77
+ config: Union[Unset, FormConfig]
78
+ if isinstance(_config, Unset):
79
+ config = UNSET
80
+ else:
81
+ config = FormConfig.from_dict(_config)
82
+
83
+ _oauthomitempty = d.pop("oauth,omitempty", UNSET)
84
+ oauthomitempty: Union[Unset, FormOauthomitempty]
85
+ if isinstance(_oauthomitempty, Unset):
86
+ oauthomitempty = UNSET
87
+ else:
88
+ oauthomitempty = FormOauthomitempty.from_dict(_oauthomitempty)
89
+
90
+ _secrets = d.pop("secrets", UNSET)
91
+ secrets: Union[Unset, FormSecrets]
92
+ if isinstance(_secrets, Unset):
93
+ secrets = UNSET
94
+ else:
95
+ secrets = FormSecrets.from_dict(_secrets)
96
+
97
+ form = cls(
98
+ config=config,
99
+ oauthomitempty=oauthomitempty,
100
+ secrets=secrets,
101
+ )
102
+
103
+ form.additional_properties = d
104
+ return form
105
+
106
+ @property
107
+ def additional_keys(self) -> list[str]:
108
+ return list(self.additional_properties.keys())
109
+
110
+ def __getitem__(self, key: str) -> Any:
111
+ return self.additional_properties[key]
112
+
113
+ def __setitem__(self, key: str, value: Any) -> None:
114
+ self.additional_properties[key] = value
115
+
116
+ def __delitem__(self, key: str) -> None:
117
+ del self.additional_properties[key]
118
+
119
+ def __contains__(self, key: str) -> bool:
120
+ 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="FormConfig")
7
+
8
+
9
+ @_attrs_define
10
+ class FormConfig:
11
+ """Config of the artifact"""
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
+ form_config = cls()
27
+
28
+ form_config.additional_properties = d
29
+ return form_config
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="FormOauthomitempty")
7
+
8
+
9
+ @_attrs_define
10
+ class FormOauthomitempty:
11
+ """OAuth of the artifact"""
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
+ form_oauthomitempty = cls()
27
+
28
+ form_oauthomitempty.additional_properties = d
29
+ return form_oauthomitempty
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="FormSecrets")
7
+
8
+
9
+ @_attrs_define
10
+ class FormSecrets:
11
+ """Secrets of the artifact"""
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
+ form_secrets = cls()
27
+
28
+ form_secrets.additional_properties = d
29
+ return form_secrets
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