robosystems-client 0.2.5__py3-none-any.whl → 0.2.7__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 robosystems-client might be problematic. Click here for more details.

Files changed (51) hide show
  1. robosystems_client/api/agent/auto_select_agent.py +164 -32
  2. robosystems_client/api/backup/create_backup.py +72 -0
  3. robosystems_client/api/backup/get_backup_download_url.py +12 -28
  4. robosystems_client/api/backup/restore_backup.py +92 -0
  5. robosystems_client/api/graph_limits/get_graph_limits.py +12 -14
  6. robosystems_client/api/graphs/create_graph.py +136 -36
  7. robosystems_client/api/graphs/get_available_graph_tiers.py +281 -0
  8. robosystems_client/api/query/execute_cypher_query.py +13 -11
  9. robosystems_client/api/service_offerings/get_service_offerings.py +13 -11
  10. robosystems_client/models/__init__.py +66 -8
  11. robosystems_client/models/agent_response.py +1 -1
  12. robosystems_client/models/available_graph_tiers_response.py +74 -0
  13. robosystems_client/models/backup_download_url_response.py +92 -0
  14. robosystems_client/models/backup_limits.py +76 -0
  15. robosystems_client/models/batch_agent_request.py +1 -1
  16. robosystems_client/models/batch_agent_response.py +2 -2
  17. robosystems_client/models/copy_operation_limits.py +100 -0
  18. robosystems_client/models/create_graph_request.py +16 -17
  19. robosystems_client/models/credit_limits.py +84 -0
  20. robosystems_client/models/custom_schema_definition.py +14 -10
  21. robosystems_client/models/execute_cypher_query_response_200.py +135 -0
  22. robosystems_client/models/{get_graph_limits_response_getgraphlimits.py → execute_cypher_query_response_200_data_item.py} +5 -5
  23. robosystems_client/models/graph_limits_response.py +174 -0
  24. robosystems_client/models/graph_subscription_tier.py +220 -0
  25. robosystems_client/models/graph_subscriptions.py +100 -0
  26. robosystems_client/models/graph_tier_backup.py +76 -0
  27. robosystems_client/models/graph_tier_copy_operations.py +92 -0
  28. robosystems_client/models/graph_tier_info.py +192 -0
  29. robosystems_client/models/graph_tier_instance.py +76 -0
  30. robosystems_client/models/graph_tier_limits.py +106 -0
  31. robosystems_client/models/initial_entity_data.py +15 -12
  32. robosystems_client/models/offering_repository_plan.py +148 -0
  33. robosystems_client/models/offering_repository_plan_rate_limits_type_0.py +61 -0
  34. robosystems_client/models/operation_costs.py +100 -0
  35. robosystems_client/models/operation_costs_ai_operations.py +44 -0
  36. robosystems_client/models/operation_costs_token_pricing.py +59 -0
  37. robosystems_client/models/query_limits.py +84 -0
  38. robosystems_client/models/rate_limits.py +76 -0
  39. robosystems_client/models/repository_info.py +114 -0
  40. robosystems_client/models/repository_subscriptions.py +90 -0
  41. robosystems_client/models/service_offering_summary.py +84 -0
  42. robosystems_client/models/service_offerings_response.py +98 -0
  43. robosystems_client/models/storage_info.py +76 -0
  44. robosystems_client/models/{get_backup_download_url_response_getbackupdownloadurl.py → storage_info_included_per_tier.py} +9 -9
  45. robosystems_client/models/storage_info_overage_pricing.py +44 -0
  46. robosystems_client/models/storage_limits.py +90 -0
  47. robosystems_client/models/token_pricing.py +68 -0
  48. {robosystems_client-0.2.5.dist-info → robosystems_client-0.2.7.dist-info}/METADATA +1 -1
  49. {robosystems_client-0.2.5.dist-info → robosystems_client-0.2.7.dist-info}/RECORD +51 -21
  50. {robosystems_client-0.2.5.dist-info → robosystems_client-0.2.7.dist-info}/WHEEL +0 -0
  51. {robosystems_client-0.2.5.dist-info → robosystems_client-0.2.7.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,174 @@
1
+ from collections.abc import Mapping
2
+ from typing import TYPE_CHECKING, Any, TypeVar, Union, cast
3
+
4
+ from attrs import define as _attrs_define
5
+ from attrs import field as _attrs_field
6
+
7
+ from ..types import UNSET, Unset
8
+
9
+ if TYPE_CHECKING:
10
+ from ..models.backup_limits import BackupLimits
11
+ from ..models.copy_operation_limits import CopyOperationLimits
12
+ from ..models.credit_limits import CreditLimits
13
+ from ..models.query_limits import QueryLimits
14
+ from ..models.rate_limits import RateLimits
15
+ from ..models.storage_limits import StorageLimits
16
+
17
+
18
+ T = TypeVar("T", bound="GraphLimitsResponse")
19
+
20
+
21
+ @_attrs_define
22
+ class GraphLimitsResponse:
23
+ """Response model for comprehensive graph operational limits.
24
+
25
+ Attributes:
26
+ graph_id (str): Graph database identifier
27
+ subscription_tier (str): User's subscription tier
28
+ graph_tier (str): Graph's database tier
29
+ is_shared_repository (bool): Whether this is a shared repository
30
+ storage (StorageLimits): Storage limits information.
31
+ queries (QueryLimits): Query operation limits.
32
+ copy_operations (CopyOperationLimits): Copy/ingestion operation limits.
33
+ backups (BackupLimits): Backup operation limits.
34
+ rate_limits (RateLimits): API rate limits.
35
+ credits_ (Union['CreditLimits', None, Unset]): AI credit limits (if applicable)
36
+ """
37
+
38
+ graph_id: str
39
+ subscription_tier: str
40
+ graph_tier: str
41
+ is_shared_repository: bool
42
+ storage: "StorageLimits"
43
+ queries: "QueryLimits"
44
+ copy_operations: "CopyOperationLimits"
45
+ backups: "BackupLimits"
46
+ rate_limits: "RateLimits"
47
+ credits_: Union["CreditLimits", None, Unset] = UNSET
48
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
49
+
50
+ def to_dict(self) -> dict[str, Any]:
51
+ from ..models.credit_limits import CreditLimits
52
+
53
+ graph_id = self.graph_id
54
+
55
+ subscription_tier = self.subscription_tier
56
+
57
+ graph_tier = self.graph_tier
58
+
59
+ is_shared_repository = self.is_shared_repository
60
+
61
+ storage = self.storage.to_dict()
62
+
63
+ queries = self.queries.to_dict()
64
+
65
+ copy_operations = self.copy_operations.to_dict()
66
+
67
+ backups = self.backups.to_dict()
68
+
69
+ rate_limits = self.rate_limits.to_dict()
70
+
71
+ credits_: Union[None, Unset, dict[str, Any]]
72
+ if isinstance(self.credits_, Unset):
73
+ credits_ = UNSET
74
+ elif isinstance(self.credits_, CreditLimits):
75
+ credits_ = self.credits_.to_dict()
76
+ else:
77
+ credits_ = self.credits_
78
+
79
+ field_dict: dict[str, Any] = {}
80
+ field_dict.update(self.additional_properties)
81
+ field_dict.update(
82
+ {
83
+ "graph_id": graph_id,
84
+ "subscription_tier": subscription_tier,
85
+ "graph_tier": graph_tier,
86
+ "is_shared_repository": is_shared_repository,
87
+ "storage": storage,
88
+ "queries": queries,
89
+ "copy_operations": copy_operations,
90
+ "backups": backups,
91
+ "rate_limits": rate_limits,
92
+ }
93
+ )
94
+ if credits_ is not UNSET:
95
+ field_dict["credits"] = credits_
96
+
97
+ return field_dict
98
+
99
+ @classmethod
100
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
101
+ from ..models.backup_limits import BackupLimits
102
+ from ..models.copy_operation_limits import CopyOperationLimits
103
+ from ..models.credit_limits import CreditLimits
104
+ from ..models.query_limits import QueryLimits
105
+ from ..models.rate_limits import RateLimits
106
+ from ..models.storage_limits import StorageLimits
107
+
108
+ d = dict(src_dict)
109
+ graph_id = d.pop("graph_id")
110
+
111
+ subscription_tier = d.pop("subscription_tier")
112
+
113
+ graph_tier = d.pop("graph_tier")
114
+
115
+ is_shared_repository = d.pop("is_shared_repository")
116
+
117
+ storage = StorageLimits.from_dict(d.pop("storage"))
118
+
119
+ queries = QueryLimits.from_dict(d.pop("queries"))
120
+
121
+ copy_operations = CopyOperationLimits.from_dict(d.pop("copy_operations"))
122
+
123
+ backups = BackupLimits.from_dict(d.pop("backups"))
124
+
125
+ rate_limits = RateLimits.from_dict(d.pop("rate_limits"))
126
+
127
+ def _parse_credits_(data: object) -> Union["CreditLimits", None, Unset]:
128
+ if data is None:
129
+ return data
130
+ if isinstance(data, Unset):
131
+ return data
132
+ try:
133
+ if not isinstance(data, dict):
134
+ raise TypeError()
135
+ credits_type_0 = CreditLimits.from_dict(data)
136
+
137
+ return credits_type_0
138
+ except: # noqa: E722
139
+ pass
140
+ return cast(Union["CreditLimits", None, Unset], data)
141
+
142
+ credits_ = _parse_credits_(d.pop("credits", UNSET))
143
+
144
+ graph_limits_response = cls(
145
+ graph_id=graph_id,
146
+ subscription_tier=subscription_tier,
147
+ graph_tier=graph_tier,
148
+ is_shared_repository=is_shared_repository,
149
+ storage=storage,
150
+ queries=queries,
151
+ copy_operations=copy_operations,
152
+ backups=backups,
153
+ rate_limits=rate_limits,
154
+ credits_=credits_,
155
+ )
156
+
157
+ graph_limits_response.additional_properties = d
158
+ return graph_limits_response
159
+
160
+ @property
161
+ def additional_keys(self) -> list[str]:
162
+ return list(self.additional_properties.keys())
163
+
164
+ def __getitem__(self, key: str) -> Any:
165
+ return self.additional_properties[key]
166
+
167
+ def __setitem__(self, key: str, value: Any) -> None:
168
+ self.additional_properties[key] = value
169
+
170
+ def __delitem__(self, key: str) -> None:
171
+ del self.additional_properties[key]
172
+
173
+ def __contains__(self, key: str) -> bool:
174
+ return key in self.additional_properties
@@ -0,0 +1,220 @@
1
+ from collections.abc import Mapping
2
+ from typing import Any, TypeVar, Union, cast
3
+
4
+ from attrs import define as _attrs_define
5
+ from attrs import field as _attrs_field
6
+
7
+ from ..types import UNSET, Unset
8
+
9
+ T = TypeVar("T", bound="GraphSubscriptionTier")
10
+
11
+
12
+ @_attrs_define
13
+ class GraphSubscriptionTier:
14
+ """Information about a graph subscription tier.
15
+
16
+ Attributes:
17
+ name (str): Tier name
18
+ display_name (str): Display name for UI
19
+ description (str): Tier description
20
+ monthly_price (float): Monthly price in USD
21
+ monthly_credits (int): Monthly AI credits
22
+ storage_included_gb (int): Storage included in GB
23
+ storage_overage_per_gb (float): Overage cost per GB per month
24
+ allowed_graph_tiers (list[str]): Allowed graph tier identifiers
25
+ features (list[str]): List of features
26
+ backup_retention_days (int): Backup retention in days
27
+ priority_support (bool): Whether priority support is included
28
+ api_rate_multiplier (float): API rate multiplier
29
+ backend (str): Database backend (kuzu or neo4j)
30
+ max_queries_per_hour (Union[None, Unset, int]): Maximum queries per hour
31
+ max_subgraphs (Union[None, Unset, int]): Maximum subgraphs
32
+ instance_type (Union[None, Unset, str]): Instance type
33
+ """
34
+
35
+ name: str
36
+ display_name: str
37
+ description: str
38
+ monthly_price: float
39
+ monthly_credits: int
40
+ storage_included_gb: int
41
+ storage_overage_per_gb: float
42
+ allowed_graph_tiers: list[str]
43
+ features: list[str]
44
+ backup_retention_days: int
45
+ priority_support: bool
46
+ api_rate_multiplier: float
47
+ backend: str
48
+ max_queries_per_hour: Union[None, Unset, int] = UNSET
49
+ max_subgraphs: Union[None, Unset, int] = UNSET
50
+ instance_type: Union[None, Unset, str] = UNSET
51
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
52
+
53
+ def to_dict(self) -> dict[str, Any]:
54
+ name = self.name
55
+
56
+ display_name = self.display_name
57
+
58
+ description = self.description
59
+
60
+ monthly_price = self.monthly_price
61
+
62
+ monthly_credits = self.monthly_credits
63
+
64
+ storage_included_gb = self.storage_included_gb
65
+
66
+ storage_overage_per_gb = self.storage_overage_per_gb
67
+
68
+ allowed_graph_tiers = self.allowed_graph_tiers
69
+
70
+ features = self.features
71
+
72
+ backup_retention_days = self.backup_retention_days
73
+
74
+ priority_support = self.priority_support
75
+
76
+ api_rate_multiplier = self.api_rate_multiplier
77
+
78
+ backend = self.backend
79
+
80
+ max_queries_per_hour: Union[None, Unset, int]
81
+ if isinstance(self.max_queries_per_hour, Unset):
82
+ max_queries_per_hour = UNSET
83
+ else:
84
+ max_queries_per_hour = self.max_queries_per_hour
85
+
86
+ max_subgraphs: Union[None, Unset, int]
87
+ if isinstance(self.max_subgraphs, Unset):
88
+ max_subgraphs = UNSET
89
+ else:
90
+ max_subgraphs = self.max_subgraphs
91
+
92
+ instance_type: Union[None, Unset, str]
93
+ if isinstance(self.instance_type, Unset):
94
+ instance_type = UNSET
95
+ else:
96
+ instance_type = self.instance_type
97
+
98
+ field_dict: dict[str, Any] = {}
99
+ field_dict.update(self.additional_properties)
100
+ field_dict.update(
101
+ {
102
+ "name": name,
103
+ "display_name": display_name,
104
+ "description": description,
105
+ "monthly_price": monthly_price,
106
+ "monthly_credits": monthly_credits,
107
+ "storage_included_gb": storage_included_gb,
108
+ "storage_overage_per_gb": storage_overage_per_gb,
109
+ "allowed_graph_tiers": allowed_graph_tiers,
110
+ "features": features,
111
+ "backup_retention_days": backup_retention_days,
112
+ "priority_support": priority_support,
113
+ "api_rate_multiplier": api_rate_multiplier,
114
+ "backend": backend,
115
+ }
116
+ )
117
+ if max_queries_per_hour is not UNSET:
118
+ field_dict["max_queries_per_hour"] = max_queries_per_hour
119
+ if max_subgraphs is not UNSET:
120
+ field_dict["max_subgraphs"] = max_subgraphs
121
+ if instance_type is not UNSET:
122
+ field_dict["instance_type"] = instance_type
123
+
124
+ return field_dict
125
+
126
+ @classmethod
127
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
128
+ d = dict(src_dict)
129
+ name = d.pop("name")
130
+
131
+ display_name = d.pop("display_name")
132
+
133
+ description = d.pop("description")
134
+
135
+ monthly_price = d.pop("monthly_price")
136
+
137
+ monthly_credits = d.pop("monthly_credits")
138
+
139
+ storage_included_gb = d.pop("storage_included_gb")
140
+
141
+ storage_overage_per_gb = d.pop("storage_overage_per_gb")
142
+
143
+ allowed_graph_tiers = cast(list[str], d.pop("allowed_graph_tiers"))
144
+
145
+ features = cast(list[str], d.pop("features"))
146
+
147
+ backup_retention_days = d.pop("backup_retention_days")
148
+
149
+ priority_support = d.pop("priority_support")
150
+
151
+ api_rate_multiplier = d.pop("api_rate_multiplier")
152
+
153
+ backend = d.pop("backend")
154
+
155
+ def _parse_max_queries_per_hour(data: object) -> Union[None, Unset, int]:
156
+ if data is None:
157
+ return data
158
+ if isinstance(data, Unset):
159
+ return data
160
+ return cast(Union[None, Unset, int], data)
161
+
162
+ max_queries_per_hour = _parse_max_queries_per_hour(
163
+ d.pop("max_queries_per_hour", UNSET)
164
+ )
165
+
166
+ def _parse_max_subgraphs(data: object) -> Union[None, Unset, int]:
167
+ if data is None:
168
+ return data
169
+ if isinstance(data, Unset):
170
+ return data
171
+ return cast(Union[None, Unset, int], data)
172
+
173
+ max_subgraphs = _parse_max_subgraphs(d.pop("max_subgraphs", UNSET))
174
+
175
+ def _parse_instance_type(data: object) -> Union[None, Unset, str]:
176
+ if data is None:
177
+ return data
178
+ if isinstance(data, Unset):
179
+ return data
180
+ return cast(Union[None, Unset, str], data)
181
+
182
+ instance_type = _parse_instance_type(d.pop("instance_type", UNSET))
183
+
184
+ graph_subscription_tier = cls(
185
+ name=name,
186
+ display_name=display_name,
187
+ description=description,
188
+ monthly_price=monthly_price,
189
+ monthly_credits=monthly_credits,
190
+ storage_included_gb=storage_included_gb,
191
+ storage_overage_per_gb=storage_overage_per_gb,
192
+ allowed_graph_tiers=allowed_graph_tiers,
193
+ features=features,
194
+ backup_retention_days=backup_retention_days,
195
+ priority_support=priority_support,
196
+ api_rate_multiplier=api_rate_multiplier,
197
+ backend=backend,
198
+ max_queries_per_hour=max_queries_per_hour,
199
+ max_subgraphs=max_subgraphs,
200
+ instance_type=instance_type,
201
+ )
202
+
203
+ graph_subscription_tier.additional_properties = d
204
+ return graph_subscription_tier
205
+
206
+ @property
207
+ def additional_keys(self) -> list[str]:
208
+ return list(self.additional_properties.keys())
209
+
210
+ def __getitem__(self, key: str) -> Any:
211
+ return self.additional_properties[key]
212
+
213
+ def __setitem__(self, key: str, value: Any) -> None:
214
+ self.additional_properties[key] = value
215
+
216
+ def __delitem__(self, key: str) -> None:
217
+ del self.additional_properties[key]
218
+
219
+ def __contains__(self, key: str) -> bool:
220
+ return key in self.additional_properties
@@ -0,0 +1,100 @@
1
+ from collections.abc import Mapping
2
+ from typing import TYPE_CHECKING, Any, TypeVar, cast
3
+
4
+ from attrs import define as _attrs_define
5
+ from attrs import field as _attrs_field
6
+
7
+ if TYPE_CHECKING:
8
+ from ..models.graph_subscription_tier import GraphSubscriptionTier
9
+ from ..models.storage_info import StorageInfo
10
+
11
+
12
+ T = TypeVar("T", bound="GraphSubscriptions")
13
+
14
+
15
+ @_attrs_define
16
+ class GraphSubscriptions:
17
+ """Graph subscription offerings.
18
+
19
+ Attributes:
20
+ description (str): Description of graph subscriptions
21
+ tiers (list['GraphSubscriptionTier']): Available tiers
22
+ storage (StorageInfo): Storage pricing information.
23
+ notes (list[str]): Important notes
24
+ """
25
+
26
+ description: str
27
+ tiers: list["GraphSubscriptionTier"]
28
+ storage: "StorageInfo"
29
+ notes: list[str]
30
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
31
+
32
+ def to_dict(self) -> dict[str, Any]:
33
+ description = self.description
34
+
35
+ tiers = []
36
+ for tiers_item_data in self.tiers:
37
+ tiers_item = tiers_item_data.to_dict()
38
+ tiers.append(tiers_item)
39
+
40
+ storage = self.storage.to_dict()
41
+
42
+ notes = self.notes
43
+
44
+ field_dict: dict[str, Any] = {}
45
+ field_dict.update(self.additional_properties)
46
+ field_dict.update(
47
+ {
48
+ "description": description,
49
+ "tiers": tiers,
50
+ "storage": storage,
51
+ "notes": notes,
52
+ }
53
+ )
54
+
55
+ return field_dict
56
+
57
+ @classmethod
58
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
59
+ from ..models.graph_subscription_tier import GraphSubscriptionTier
60
+ from ..models.storage_info import StorageInfo
61
+
62
+ d = dict(src_dict)
63
+ description = d.pop("description")
64
+
65
+ tiers = []
66
+ _tiers = d.pop("tiers")
67
+ for tiers_item_data in _tiers:
68
+ tiers_item = GraphSubscriptionTier.from_dict(tiers_item_data)
69
+
70
+ tiers.append(tiers_item)
71
+
72
+ storage = StorageInfo.from_dict(d.pop("storage"))
73
+
74
+ notes = cast(list[str], d.pop("notes"))
75
+
76
+ graph_subscriptions = cls(
77
+ description=description,
78
+ tiers=tiers,
79
+ storage=storage,
80
+ notes=notes,
81
+ )
82
+
83
+ graph_subscriptions.additional_properties = d
84
+ return graph_subscriptions
85
+
86
+ @property
87
+ def additional_keys(self) -> list[str]:
88
+ return list(self.additional_properties.keys())
89
+
90
+ def __getitem__(self, key: str) -> Any:
91
+ return self.additional_properties[key]
92
+
93
+ def __setitem__(self, key: str, value: Any) -> None:
94
+ self.additional_properties[key] = value
95
+
96
+ def __delitem__(self, key: str) -> None:
97
+ del self.additional_properties[key]
98
+
99
+ def __contains__(self, key: str) -> bool:
100
+ return key in self.additional_properties
@@ -0,0 +1,76 @@
1
+ from collections.abc import Mapping
2
+ from typing import Any, TypeVar
3
+
4
+ from attrs import define as _attrs_define
5
+ from attrs import field as _attrs_field
6
+
7
+ T = TypeVar("T", bound="GraphTierBackup")
8
+
9
+
10
+ @_attrs_define
11
+ class GraphTierBackup:
12
+ """Backup configuration for a tier.
13
+
14
+ Attributes:
15
+ max_backup_size_gb (int): Maximum backup size in GB
16
+ backup_retention_days (int): Backup retention period in days
17
+ max_backups_per_day (int): Maximum backups per day
18
+ """
19
+
20
+ max_backup_size_gb: int
21
+ backup_retention_days: int
22
+ max_backups_per_day: int
23
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
24
+
25
+ def to_dict(self) -> dict[str, Any]:
26
+ max_backup_size_gb = self.max_backup_size_gb
27
+
28
+ backup_retention_days = self.backup_retention_days
29
+
30
+ max_backups_per_day = self.max_backups_per_day
31
+
32
+ field_dict: dict[str, Any] = {}
33
+ field_dict.update(self.additional_properties)
34
+ field_dict.update(
35
+ {
36
+ "max_backup_size_gb": max_backup_size_gb,
37
+ "backup_retention_days": backup_retention_days,
38
+ "max_backups_per_day": max_backups_per_day,
39
+ }
40
+ )
41
+
42
+ return field_dict
43
+
44
+ @classmethod
45
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
46
+ d = dict(src_dict)
47
+ max_backup_size_gb = d.pop("max_backup_size_gb")
48
+
49
+ backup_retention_days = d.pop("backup_retention_days")
50
+
51
+ max_backups_per_day = d.pop("max_backups_per_day")
52
+
53
+ graph_tier_backup = cls(
54
+ max_backup_size_gb=max_backup_size_gb,
55
+ backup_retention_days=backup_retention_days,
56
+ max_backups_per_day=max_backups_per_day,
57
+ )
58
+
59
+ graph_tier_backup.additional_properties = d
60
+ return graph_tier_backup
61
+
62
+ @property
63
+ def additional_keys(self) -> list[str]:
64
+ return list(self.additional_properties.keys())
65
+
66
+ def __getitem__(self, key: str) -> Any:
67
+ return self.additional_properties[key]
68
+
69
+ def __setitem__(self, key: str, value: Any) -> None:
70
+ self.additional_properties[key] = value
71
+
72
+ def __delitem__(self, key: str) -> None:
73
+ del self.additional_properties[key]
74
+
75
+ def __contains__(self, key: str) -> bool:
76
+ return key in self.additional_properties
@@ -0,0 +1,92 @@
1
+ from collections.abc import Mapping
2
+ from typing import Any, TypeVar
3
+
4
+ from attrs import define as _attrs_define
5
+ from attrs import field as _attrs_field
6
+
7
+ T = TypeVar("T", bound="GraphTierCopyOperations")
8
+
9
+
10
+ @_attrs_define
11
+ class GraphTierCopyOperations:
12
+ """Copy operation limits for a tier.
13
+
14
+ Attributes:
15
+ max_file_size_gb (float): Maximum file size in GB
16
+ timeout_seconds (int): Operation timeout in seconds
17
+ concurrent_operations (int): Maximum concurrent operations
18
+ max_files_per_operation (int): Maximum files per operation
19
+ daily_copy_operations (int): Daily operation limit
20
+ """
21
+
22
+ max_file_size_gb: float
23
+ timeout_seconds: int
24
+ concurrent_operations: int
25
+ max_files_per_operation: int
26
+ daily_copy_operations: int
27
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
28
+
29
+ def to_dict(self) -> dict[str, Any]:
30
+ max_file_size_gb = self.max_file_size_gb
31
+
32
+ timeout_seconds = self.timeout_seconds
33
+
34
+ concurrent_operations = self.concurrent_operations
35
+
36
+ max_files_per_operation = self.max_files_per_operation
37
+
38
+ daily_copy_operations = self.daily_copy_operations
39
+
40
+ field_dict: dict[str, Any] = {}
41
+ field_dict.update(self.additional_properties)
42
+ field_dict.update(
43
+ {
44
+ "max_file_size_gb": max_file_size_gb,
45
+ "timeout_seconds": timeout_seconds,
46
+ "concurrent_operations": concurrent_operations,
47
+ "max_files_per_operation": max_files_per_operation,
48
+ "daily_copy_operations": daily_copy_operations,
49
+ }
50
+ )
51
+
52
+ return field_dict
53
+
54
+ @classmethod
55
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
56
+ d = dict(src_dict)
57
+ max_file_size_gb = d.pop("max_file_size_gb")
58
+
59
+ timeout_seconds = d.pop("timeout_seconds")
60
+
61
+ concurrent_operations = d.pop("concurrent_operations")
62
+
63
+ max_files_per_operation = d.pop("max_files_per_operation")
64
+
65
+ daily_copy_operations = d.pop("daily_copy_operations")
66
+
67
+ graph_tier_copy_operations = cls(
68
+ max_file_size_gb=max_file_size_gb,
69
+ timeout_seconds=timeout_seconds,
70
+ concurrent_operations=concurrent_operations,
71
+ max_files_per_operation=max_files_per_operation,
72
+ daily_copy_operations=daily_copy_operations,
73
+ )
74
+
75
+ graph_tier_copy_operations.additional_properties = d
76
+ return graph_tier_copy_operations
77
+
78
+ @property
79
+ def additional_keys(self) -> list[str]:
80
+ return list(self.additional_properties.keys())
81
+
82
+ def __getitem__(self, key: str) -> Any:
83
+ return self.additional_properties[key]
84
+
85
+ def __setitem__(self, key: str, value: Any) -> None:
86
+ self.additional_properties[key] = value
87
+
88
+ def __delitem__(self, key: str) -> None:
89
+ del self.additional_properties[key]
90
+
91
+ def __contains__(self, key: str) -> bool:
92
+ return key in self.additional_properties