robosystems-client 0.1.12__py3-none-any.whl → 0.1.13__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 (57) hide show
  1. robosystems_client/api/backup/create_backup.py +1 -1
  2. robosystems_client/api/backup/export_backup.py +14 -19
  3. robosystems_client/api/backup/get_backup_download_url.py +1 -1
  4. robosystems_client/api/backup/get_backup_stats.py +19 -1
  5. robosystems_client/api/backup/list_backups.py +19 -1
  6. robosystems_client/api/backup/restore_backup.py +1 -1
  7. robosystems_client/api/copy/copy_data_to_graph.py +314 -0
  8. robosystems_client/api/{credits_ → graph_credits}/check_credit_balance.py +42 -20
  9. robosystems_client/api/graph_health/__init__.py +1 -0
  10. robosystems_client/api/{graph_status → graph_health}/get_database_health.py +1 -1
  11. robosystems_client/api/graph_info/__init__.py +1 -0
  12. robosystems_client/api/{graph_status → graph_info}/get_database_info.py +1 -1
  13. robosystems_client/api/graph_limits/__init__.py +1 -0
  14. robosystems_client/api/graph_limits/get_graph_limits.py +259 -0
  15. robosystems_client/api/subgraphs/create_subgraph.py +63 -173
  16. robosystems_client/api/subgraphs/delete_subgraph.py +14 -14
  17. robosystems_client/api/subgraphs/get_subgraph_info.py +14 -14
  18. robosystems_client/api/subgraphs/get_subgraph_quota.py +8 -4
  19. robosystems_client/api/subgraphs/list_subgraphs.py +39 -75
  20. robosystems_client/api/user/get_all_credit_summaries.py +1 -1
  21. robosystems_client/models/__init__.py +26 -10
  22. robosystems_client/models/copy_response.py +223 -0
  23. robosystems_client/models/{kuzu_backup_health_response_kuzubackuphealth.py → copy_response_error_details_type_0.py} +5 -5
  24. robosystems_client/models/copy_response_status.py +10 -0
  25. robosystems_client/models/custom_schema_definition.py +2 -2
  26. robosystems_client/models/data_frame_copy_request.py +125 -0
  27. robosystems_client/models/data_frame_copy_request_format.py +10 -0
  28. robosystems_client/models/get_graph_limits_response_getgraphlimits.py +44 -0
  29. robosystems_client/models/s3_copy_request.py +375 -0
  30. robosystems_client/models/s3_copy_request_file_format.py +12 -0
  31. robosystems_client/models/s3_copy_request_s3_url_style_type_0.py +9 -0
  32. robosystems_client/models/url_copy_request.py +157 -0
  33. robosystems_client/models/url_copy_request_file_format.py +10 -0
  34. robosystems_client/models/url_copy_request_headers_type_0.py +44 -0
  35. {robosystems_client-0.1.12.dist-info → robosystems_client-0.1.13.dist-info}/METADATA +1 -1
  36. {robosystems_client-0.1.12.dist-info → robosystems_client-0.1.13.dist-info}/RECORD +48 -41
  37. robosystems_client/api/backup/kuzu_backup_health.py +0 -202
  38. robosystems_client/api/billing/get_available_subscription_plans_v1_graph_id_billing_available_plans_get.py +0 -198
  39. robosystems_client/api/billing/get_credit_billing_info_v1_graph_id_billing_credits_get.py +0 -210
  40. robosystems_client/api/billing/get_graph_pricing_info_v1_graph_id_billing_pricing_get.py +0 -198
  41. robosystems_client/api/billing/get_graph_subscription_v1_graph_id_billing_subscription_get.py +0 -198
  42. robosystems_client/api/billing/upgrade_graph_subscription_v1_graph_id_billing_subscription_upgrade_post.py +0 -216
  43. robosystems_client/models/backup_export_request.py +0 -72
  44. robosystems_client/models/credit_check_request.py +0 -82
  45. robosystems_client/models/upgrade_subscription_request.py +0 -82
  46. /robosystems_client/api/{billing → copy}/__init__.py +0 -0
  47. /robosystems_client/api/{credits_ → graph_billing}/__init__.py +0 -0
  48. /robosystems_client/api/{billing → graph_billing}/get_current_graph_bill.py +0 -0
  49. /robosystems_client/api/{billing → graph_billing}/get_graph_billing_history.py +0 -0
  50. /robosystems_client/api/{billing → graph_billing}/get_graph_monthly_bill.py +0 -0
  51. /robosystems_client/api/{billing → graph_billing}/get_graph_usage_details.py +0 -0
  52. /robosystems_client/api/{graph_status → graph_credits}/__init__.py +0 -0
  53. /robosystems_client/api/{credits_ → graph_credits}/check_storage_limits.py +0 -0
  54. /robosystems_client/api/{credits_ → graph_credits}/get_credit_summary.py +0 -0
  55. /robosystems_client/api/{credits_ → graph_credits}/get_storage_usage.py +0 -0
  56. /robosystems_client/api/{credits_ → graph_credits}/list_credit_transactions.py +0 -0
  57. {robosystems_client-0.1.12.dist-info → robosystems_client-0.1.13.dist-info}/WHEEL +0 -0
@@ -0,0 +1,223 @@
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 ..models.copy_response_status import CopyResponseStatus
8
+ from ..types import UNSET, Unset
9
+
10
+ if TYPE_CHECKING:
11
+ from ..models.copy_response_error_details_type_0 import CopyResponseErrorDetailsType0
12
+
13
+
14
+ T = TypeVar("T", bound="CopyResponse")
15
+
16
+
17
+ @_attrs_define
18
+ class CopyResponse:
19
+ """Response model for copy operations.
20
+
21
+ Attributes:
22
+ status (CopyResponseStatus): Operation status
23
+ source_type (str): Type of source that was copied from
24
+ execution_time_ms (float): Total execution time in milliseconds
25
+ message (str): Human-readable status message
26
+ rows_imported (Union[None, Unset, int]): Number of rows successfully imported
27
+ rows_skipped (Union[None, Unset, int]): Number of rows skipped due to errors (when ignore_errors=true)
28
+ warnings (Union[None, Unset, list[str]]): List of warnings encountered during import
29
+ error_details (Union['CopyResponseErrorDetailsType0', None, Unset]): Detailed error information if operation
30
+ failed
31
+ bytes_processed (Union[None, Unset, int]): Total bytes processed from source
32
+ """
33
+
34
+ status: CopyResponseStatus
35
+ source_type: str
36
+ execution_time_ms: float
37
+ message: str
38
+ rows_imported: Union[None, Unset, int] = UNSET
39
+ rows_skipped: Union[None, Unset, int] = UNSET
40
+ warnings: Union[None, Unset, list[str]] = UNSET
41
+ error_details: Union["CopyResponseErrorDetailsType0", None, Unset] = UNSET
42
+ bytes_processed: Union[None, Unset, int] = UNSET
43
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
44
+
45
+ def to_dict(self) -> dict[str, Any]:
46
+ from ..models.copy_response_error_details_type_0 import (
47
+ CopyResponseErrorDetailsType0,
48
+ )
49
+
50
+ status = self.status.value
51
+
52
+ source_type = self.source_type
53
+
54
+ execution_time_ms = self.execution_time_ms
55
+
56
+ message = self.message
57
+
58
+ rows_imported: Union[None, Unset, int]
59
+ if isinstance(self.rows_imported, Unset):
60
+ rows_imported = UNSET
61
+ else:
62
+ rows_imported = self.rows_imported
63
+
64
+ rows_skipped: Union[None, Unset, int]
65
+ if isinstance(self.rows_skipped, Unset):
66
+ rows_skipped = UNSET
67
+ else:
68
+ rows_skipped = self.rows_skipped
69
+
70
+ warnings: Union[None, Unset, list[str]]
71
+ if isinstance(self.warnings, Unset):
72
+ warnings = UNSET
73
+ elif isinstance(self.warnings, list):
74
+ warnings = self.warnings
75
+
76
+ else:
77
+ warnings = self.warnings
78
+
79
+ error_details: Union[None, Unset, dict[str, Any]]
80
+ if isinstance(self.error_details, Unset):
81
+ error_details = UNSET
82
+ elif isinstance(self.error_details, CopyResponseErrorDetailsType0):
83
+ error_details = self.error_details.to_dict()
84
+ else:
85
+ error_details = self.error_details
86
+
87
+ bytes_processed: Union[None, Unset, int]
88
+ if isinstance(self.bytes_processed, Unset):
89
+ bytes_processed = UNSET
90
+ else:
91
+ bytes_processed = self.bytes_processed
92
+
93
+ field_dict: dict[str, Any] = {}
94
+ field_dict.update(self.additional_properties)
95
+ field_dict.update(
96
+ {
97
+ "status": status,
98
+ "source_type": source_type,
99
+ "execution_time_ms": execution_time_ms,
100
+ "message": message,
101
+ }
102
+ )
103
+ if rows_imported is not UNSET:
104
+ field_dict["rows_imported"] = rows_imported
105
+ if rows_skipped is not UNSET:
106
+ field_dict["rows_skipped"] = rows_skipped
107
+ if warnings is not UNSET:
108
+ field_dict["warnings"] = warnings
109
+ if error_details is not UNSET:
110
+ field_dict["error_details"] = error_details
111
+ if bytes_processed is not UNSET:
112
+ field_dict["bytes_processed"] = bytes_processed
113
+
114
+ return field_dict
115
+
116
+ @classmethod
117
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
118
+ from ..models.copy_response_error_details_type_0 import (
119
+ CopyResponseErrorDetailsType0,
120
+ )
121
+
122
+ d = dict(src_dict)
123
+ status = CopyResponseStatus(d.pop("status"))
124
+
125
+ source_type = d.pop("source_type")
126
+
127
+ execution_time_ms = d.pop("execution_time_ms")
128
+
129
+ message = d.pop("message")
130
+
131
+ def _parse_rows_imported(data: object) -> Union[None, Unset, int]:
132
+ if data is None:
133
+ return data
134
+ if isinstance(data, Unset):
135
+ return data
136
+ return cast(Union[None, Unset, int], data)
137
+
138
+ rows_imported = _parse_rows_imported(d.pop("rows_imported", UNSET))
139
+
140
+ def _parse_rows_skipped(data: object) -> Union[None, Unset, int]:
141
+ if data is None:
142
+ return data
143
+ if isinstance(data, Unset):
144
+ return data
145
+ return cast(Union[None, Unset, int], data)
146
+
147
+ rows_skipped = _parse_rows_skipped(d.pop("rows_skipped", UNSET))
148
+
149
+ def _parse_warnings(data: object) -> Union[None, Unset, list[str]]:
150
+ if data is None:
151
+ return data
152
+ if isinstance(data, Unset):
153
+ return data
154
+ try:
155
+ if not isinstance(data, list):
156
+ raise TypeError()
157
+ warnings_type_0 = cast(list[str], data)
158
+
159
+ return warnings_type_0
160
+ except: # noqa: E722
161
+ pass
162
+ return cast(Union[None, Unset, list[str]], data)
163
+
164
+ warnings = _parse_warnings(d.pop("warnings", UNSET))
165
+
166
+ def _parse_error_details(
167
+ data: object,
168
+ ) -> Union["CopyResponseErrorDetailsType0", None, Unset]:
169
+ if data is None:
170
+ return data
171
+ if isinstance(data, Unset):
172
+ return data
173
+ try:
174
+ if not isinstance(data, dict):
175
+ raise TypeError()
176
+ error_details_type_0 = CopyResponseErrorDetailsType0.from_dict(data)
177
+
178
+ return error_details_type_0
179
+ except: # noqa: E722
180
+ pass
181
+ return cast(Union["CopyResponseErrorDetailsType0", None, Unset], data)
182
+
183
+ error_details = _parse_error_details(d.pop("error_details", UNSET))
184
+
185
+ def _parse_bytes_processed(data: object) -> Union[None, Unset, int]:
186
+ if data is None:
187
+ return data
188
+ if isinstance(data, Unset):
189
+ return data
190
+ return cast(Union[None, Unset, int], data)
191
+
192
+ bytes_processed = _parse_bytes_processed(d.pop("bytes_processed", UNSET))
193
+
194
+ copy_response = cls(
195
+ status=status,
196
+ source_type=source_type,
197
+ execution_time_ms=execution_time_ms,
198
+ message=message,
199
+ rows_imported=rows_imported,
200
+ rows_skipped=rows_skipped,
201
+ warnings=warnings,
202
+ error_details=error_details,
203
+ bytes_processed=bytes_processed,
204
+ )
205
+
206
+ copy_response.additional_properties = d
207
+ return copy_response
208
+
209
+ @property
210
+ def additional_keys(self) -> list[str]:
211
+ return list(self.additional_properties.keys())
212
+
213
+ def __getitem__(self, key: str) -> Any:
214
+ return self.additional_properties[key]
215
+
216
+ def __setitem__(self, key: str, value: Any) -> None:
217
+ self.additional_properties[key] = value
218
+
219
+ def __delitem__(self, key: str) -> None:
220
+ del self.additional_properties[key]
221
+
222
+ def __contains__(self, key: str) -> bool:
223
+ return key in self.additional_properties
@@ -4,11 +4,11 @@ from typing import Any, TypeVar
4
4
  from attrs import define as _attrs_define
5
5
  from attrs import field as _attrs_field
6
6
 
7
- T = TypeVar("T", bound="KuzuBackupHealthResponseKuzubackuphealth")
7
+ T = TypeVar("T", bound="CopyResponseErrorDetailsType0")
8
8
 
9
9
 
10
10
  @_attrs_define
11
- class KuzuBackupHealthResponseKuzubackuphealth:
11
+ class CopyResponseErrorDetailsType0:
12
12
  """ """
13
13
 
14
14
  additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
@@ -22,10 +22,10 @@ class KuzuBackupHealthResponseKuzubackuphealth:
22
22
  @classmethod
23
23
  def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
24
24
  d = dict(src_dict)
25
- kuzu_backup_health_response_kuzubackuphealth = cls()
25
+ copy_response_error_details_type_0 = cls()
26
26
 
27
- kuzu_backup_health_response_kuzubackuphealth.additional_properties = d
28
- return kuzu_backup_health_response_kuzubackuphealth
27
+ copy_response_error_details_type_0.additional_properties = d
28
+ return copy_response_error_details_type_0
29
29
 
30
30
  @property
31
31
  def additional_keys(self) -> list[str]:
@@ -0,0 +1,10 @@
1
+ from enum import Enum
2
+
3
+
4
+ class CopyResponseStatus(str, Enum):
5
+ COMPLETED = "completed"
6
+ FAILED = "failed"
7
+ PARTIAL = "partial"
8
+
9
+ def __str__(self) -> str:
10
+ return str(self.value)
@@ -31,8 +31,8 @@ class CustomSchemaDefinition:
31
31
  nodes (Union[Unset, list['CustomSchemaDefinitionNodesItem']]): List of node definitions with properties Example:
32
32
  [{'name': 'Product', 'properties': [{'name': 'sku', 'type': 'STRING', 'is_primary_key': True}, {'name': 'name',
33
33
  'type': 'STRING', 'is_required': True}, {'name': 'price', 'type': 'DOUBLE'}, {'name': 'quantity', 'type':
34
- 'INT64'}]}, {'name': 'Warehouse', 'properties': [{'name': 'id', 'type': 'STRING', 'is_primary_key': True},
35
- {'name': 'location', 'type': 'STRING'}]}].
34
+ 'INT64'}]}, {'name': 'Warehouse', 'properties': [{'name': 'identifier', 'type': 'STRING', 'is_primary_key':
35
+ True}, {'name': 'location', 'type': 'STRING'}]}].
36
36
  relationships (Union[Unset, list['CustomSchemaDefinitionRelationshipsItem']]): List of relationship definitions
37
37
  Example: [{'from_node': 'Product', 'name': 'STORED_IN', 'properties': [{'name': 'since', 'type': 'DATE'}],
38
38
  'to_node': 'Warehouse'}].
@@ -0,0 +1,125 @@
1
+ from collections.abc import Mapping
2
+ from typing import Any, Literal, TypeVar, Union, cast
3
+
4
+ from attrs import define as _attrs_define
5
+ from attrs import field as _attrs_field
6
+
7
+ from ..models.data_frame_copy_request_format import DataFrameCopyRequestFormat
8
+ from ..types import UNSET, Unset
9
+
10
+ T = TypeVar("T", bound="DataFrameCopyRequest")
11
+
12
+
13
+ @_attrs_define
14
+ class DataFrameCopyRequest:
15
+ """Request model for DataFrame copy operations (future).
16
+
17
+ Attributes:
18
+ table_name (str): Target Kuzu table name
19
+ data_reference (str): Reference to uploaded DataFrame data
20
+ ignore_errors (Union[Unset, bool]): Skip duplicate/invalid rows (enables upsert-like behavior) Default: True.
21
+ extended_timeout (Union[Unset, bool]): Use extended timeout for large datasets Default: False.
22
+ validate_schema (Union[Unset, bool]): Validate source schema against target table Default: True.
23
+ source_type (Union[Literal['dataframe'], Unset]): Source type identifier Default: 'dataframe'.
24
+ format_ (Union[Unset, DataFrameCopyRequestFormat]): DataFrame format Default: DataFrameCopyRequestFormat.PANDAS.
25
+ """
26
+
27
+ table_name: str
28
+ data_reference: str
29
+ ignore_errors: Union[Unset, bool] = True
30
+ extended_timeout: Union[Unset, bool] = False
31
+ validate_schema: Union[Unset, bool] = True
32
+ source_type: Union[Literal["dataframe"], Unset] = "dataframe"
33
+ format_: Union[Unset, DataFrameCopyRequestFormat] = DataFrameCopyRequestFormat.PANDAS
34
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
35
+
36
+ def to_dict(self) -> dict[str, Any]:
37
+ table_name = self.table_name
38
+
39
+ data_reference = self.data_reference
40
+
41
+ ignore_errors = self.ignore_errors
42
+
43
+ extended_timeout = self.extended_timeout
44
+
45
+ validate_schema = self.validate_schema
46
+
47
+ source_type = self.source_type
48
+
49
+ format_: Union[Unset, str] = UNSET
50
+ if not isinstance(self.format_, Unset):
51
+ format_ = self.format_.value
52
+
53
+ field_dict: dict[str, Any] = {}
54
+ field_dict.update(self.additional_properties)
55
+ field_dict.update(
56
+ {
57
+ "table_name": table_name,
58
+ "data_reference": data_reference,
59
+ }
60
+ )
61
+ if ignore_errors is not UNSET:
62
+ field_dict["ignore_errors"] = ignore_errors
63
+ if extended_timeout is not UNSET:
64
+ field_dict["extended_timeout"] = extended_timeout
65
+ if validate_schema is not UNSET:
66
+ field_dict["validate_schema"] = validate_schema
67
+ if source_type is not UNSET:
68
+ field_dict["source_type"] = source_type
69
+ if format_ is not UNSET:
70
+ field_dict["format"] = format_
71
+
72
+ return field_dict
73
+
74
+ @classmethod
75
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
76
+ d = dict(src_dict)
77
+ table_name = d.pop("table_name")
78
+
79
+ data_reference = d.pop("data_reference")
80
+
81
+ ignore_errors = d.pop("ignore_errors", UNSET)
82
+
83
+ extended_timeout = d.pop("extended_timeout", UNSET)
84
+
85
+ validate_schema = d.pop("validate_schema", UNSET)
86
+
87
+ source_type = cast(Union[Literal["dataframe"], Unset], d.pop("source_type", UNSET))
88
+ if source_type != "dataframe" and not isinstance(source_type, Unset):
89
+ raise ValueError(f"source_type must match const 'dataframe', got '{source_type}'")
90
+
91
+ _format_ = d.pop("format", UNSET)
92
+ format_: Union[Unset, DataFrameCopyRequestFormat]
93
+ if isinstance(_format_, Unset):
94
+ format_ = UNSET
95
+ else:
96
+ format_ = DataFrameCopyRequestFormat(_format_)
97
+
98
+ data_frame_copy_request = cls(
99
+ table_name=table_name,
100
+ data_reference=data_reference,
101
+ ignore_errors=ignore_errors,
102
+ extended_timeout=extended_timeout,
103
+ validate_schema=validate_schema,
104
+ source_type=source_type,
105
+ format_=format_,
106
+ )
107
+
108
+ data_frame_copy_request.additional_properties = d
109
+ return data_frame_copy_request
110
+
111
+ @property
112
+ def additional_keys(self) -> list[str]:
113
+ return list(self.additional_properties.keys())
114
+
115
+ def __getitem__(self, key: str) -> Any:
116
+ return self.additional_properties[key]
117
+
118
+ def __setitem__(self, key: str, value: Any) -> None:
119
+ self.additional_properties[key] = value
120
+
121
+ def __delitem__(self, key: str) -> None:
122
+ del self.additional_properties[key]
123
+
124
+ def __contains__(self, key: str) -> bool:
125
+ return key in self.additional_properties
@@ -0,0 +1,10 @@
1
+ from enum import Enum
2
+
3
+
4
+ class DataFrameCopyRequestFormat(str, Enum):
5
+ ARROW = "arrow"
6
+ PANDAS = "pandas"
7
+ POLARS = "polars"
8
+
9
+ def __str__(self) -> str:
10
+ return str(self.value)
@@ -0,0 +1,44 @@
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="GetGraphLimitsResponseGetgraphlimits")
8
+
9
+
10
+ @_attrs_define
11
+ class GetGraphLimitsResponseGetgraphlimits:
12
+ """ """
13
+
14
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
15
+
16
+ def to_dict(self) -> dict[str, Any]:
17
+ field_dict: dict[str, Any] = {}
18
+ field_dict.update(self.additional_properties)
19
+
20
+ return field_dict
21
+
22
+ @classmethod
23
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
24
+ d = dict(src_dict)
25
+ get_graph_limits_response_getgraphlimits = cls()
26
+
27
+ get_graph_limits_response_getgraphlimits.additional_properties = d
28
+ return get_graph_limits_response_getgraphlimits
29
+
30
+ @property
31
+ def additional_keys(self) -> list[str]:
32
+ return list(self.additional_properties.keys())
33
+
34
+ def __getitem__(self, key: str) -> Any:
35
+ return self.additional_properties[key]
36
+
37
+ def __setitem__(self, key: str, value: Any) -> None:
38
+ self.additional_properties[key] = value
39
+
40
+ def __delitem__(self, key: str) -> None:
41
+ del self.additional_properties[key]
42
+
43
+ def __contains__(self, key: str) -> bool:
44
+ return key in self.additional_properties