robosystems-client 0.2.2__py3-none-any.whl → 0.2.3__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 (34) hide show
  1. robosystems_client/api/query/execute_cypher_query.py +0 -5
  2. robosystems_client/api/tables/delete_file.py +437 -0
  3. robosystems_client/api/tables/get_file_info.py +397 -0
  4. robosystems_client/api/tables/get_upload_url.py +548 -0
  5. robosystems_client/api/tables/ingest_tables.py +616 -0
  6. robosystems_client/api/tables/list_table_files.py +509 -0
  7. robosystems_client/api/tables/list_tables.py +488 -0
  8. robosystems_client/api/tables/query_tables.py +487 -0
  9. robosystems_client/api/tables/update_file_status.py +539 -0
  10. robosystems_client/extensions/graph_client.py +5 -0
  11. robosystems_client/extensions/table_ingest_client.py +31 -40
  12. robosystems_client/models/__init__.py +13 -17
  13. robosystems_client/models/create_graph_request.py +11 -0
  14. robosystems_client/models/{delete_file_v1_graphs_graph_id_tables_files_file_id_delete_response_delete_file_v1_graphs_graph_id_tables_files_file_id_delete.py → delete_file_response.py} +45 -9
  15. robosystems_client/models/file_info.py +169 -0
  16. robosystems_client/models/file_status_update.py +41 -0
  17. robosystems_client/models/get_file_info_response.py +205 -0
  18. robosystems_client/models/list_table_files_response.py +105 -0
  19. robosystems_client/models/{get_file_info_v1_graphs_graph_id_tables_files_file_id_get_response_get_file_info_v1_graphs_graph_id_tables_files_file_id_get.py → update_file_status_response_updatefilestatus.py} +5 -8
  20. {robosystems_client-0.2.2.dist-info → robosystems_client-0.2.3.dist-info}/METADATA +1 -1
  21. {robosystems_client-0.2.2.dist-info → robosystems_client-0.2.3.dist-info}/RECORD +23 -22
  22. robosystems_client/api/tables/delete_file_v1_graphs_graph_id_tables_files_file_id_delete.py +0 -287
  23. robosystems_client/api/tables/get_file_info_v1_graphs_graph_id_tables_files_file_id_get.py +0 -283
  24. robosystems_client/api/tables/get_upload_url_v1_graphs_graph_id_tables_table_name_files_post.py +0 -260
  25. robosystems_client/api/tables/ingest_tables_v1_graphs_graph_id_tables_ingest_post.py +0 -251
  26. robosystems_client/api/tables/list_table_files_v1_graphs_graph_id_tables_table_name_files_get.py +0 -283
  27. robosystems_client/api/tables/list_tables_v1_graphs_graph_id_tables_get.py +0 -224
  28. robosystems_client/api/tables/query_tables_v1_graphs_graph_id_tables_query_post.py +0 -247
  29. robosystems_client/api/tables/update_file_v1_graphs_graph_id_tables_files_file_id_patch.py +0 -306
  30. robosystems_client/models/file_update_request.py +0 -62
  31. robosystems_client/models/list_table_files_v1_graphs_graph_id_tables_table_name_files_get_response_list_table_files_v1_graphs_graph_id_tables_table_name_files_get.py +0 -47
  32. robosystems_client/models/update_file_v1_graphs_graph_id_tables_files_file_id_patch_response_update_file_v1_graphs_graph_id_tables_files_file_id_patch.py +0 -47
  33. {robosystems_client-0.2.2.dist-info → robosystems_client-0.2.3.dist-info}/WHEEL +0 -0
  34. {robosystems_client-0.2.2.dist-info → robosystems_client-0.2.3.dist-info}/licenses/LICENSE +0 -0
@@ -75,9 +75,7 @@ from .cypher_query_request import CypherQueryRequest
75
75
  from .cypher_query_request_parameters_type_0 import CypherQueryRequestParametersType0
76
76
  from .database_health_response import DatabaseHealthResponse
77
77
  from .database_info_response import DatabaseInfoResponse
78
- from .delete_file_v1_graphs_graph_id_tables_files_file_id_delete_response_delete_file_v1_graphs_graph_id_tables_files_file_id_delete import (
79
- DeleteFileV1GraphsGraphIdTablesFilesFileIdDeleteResponseDeleteFileV1GraphsGraphIdTablesFilesFileIdDelete,
80
- )
78
+ from .delete_file_response import DeleteFileResponse
81
79
  from .delete_subgraph_request import DeleteSubgraphRequest
82
80
  from .delete_subgraph_response import DeleteSubgraphResponse
83
81
  from .detailed_transactions_response import DetailedTransactionsResponse
@@ -93,7 +91,8 @@ from .enhanced_credit_transaction_response_metadata import (
93
91
  from .error_response import ErrorResponse
94
92
  from .exchange_token_request import ExchangeTokenRequest
95
93
  from .exchange_token_request_metadata_type_0 import ExchangeTokenRequestMetadataType0
96
- from .file_update_request import FileUpdateRequest
94
+ from .file_info import FileInfo
95
+ from .file_status_update import FileStatusUpdate
97
96
  from .file_upload_request import FileUploadRequest
98
97
  from .file_upload_response import FileUploadResponse
99
98
  from .forgot_password_request import ForgotPasswordRequest
@@ -115,9 +114,7 @@ from .get_current_auth_user_response_getcurrentauthuser import (
115
114
  from .get_current_graph_bill_response_getcurrentgraphbill import (
116
115
  GetCurrentGraphBillResponseGetcurrentgraphbill,
117
116
  )
118
- from .get_file_info_v1_graphs_graph_id_tables_files_file_id_get_response_get_file_info_v1_graphs_graph_id_tables_files_file_id_get import (
119
- GetFileInfoV1GraphsGraphIdTablesFilesFileIdGetResponseGetFileInfoV1GraphsGraphIdTablesFilesFileIdGet,
120
- )
117
+ from .get_file_info_response import GetFileInfoResponse
121
118
  from .get_graph_billing_history_response_getgraphbillinghistory import (
122
119
  GetGraphBillingHistoryResponseGetgraphbillinghistory,
123
120
  )
@@ -164,9 +161,7 @@ from .link_token_request_options_type_0 import LinkTokenRequestOptionsType0
164
161
  from .link_token_request_provider_type_0 import LinkTokenRequestProviderType0
165
162
  from .list_connections_provider_type_0 import ListConnectionsProviderType0
166
163
  from .list_subgraphs_response import ListSubgraphsResponse
167
- from .list_table_files_v1_graphs_graph_id_tables_table_name_files_get_response_list_table_files_v1_graphs_graph_id_tables_table_name_files_get import (
168
- ListTableFilesV1GraphsGraphIdTablesTableNameFilesGetResponseListTableFilesV1GraphsGraphIdTablesTableNameFilesGet,
169
- )
164
+ from .list_table_files_response import ListTableFilesResponse
170
165
  from .login_request import LoginRequest
171
166
  from .logout_user_response_logoutuser import LogoutUserResponseLogoutuser
172
167
  from .mcp_tool_call import MCPToolCall
@@ -249,8 +244,8 @@ from .table_query_response import TableQueryResponse
249
244
  from .tier_upgrade_request import TierUpgradeRequest
250
245
  from .transaction_summary_response import TransactionSummaryResponse
251
246
  from .update_api_key_request import UpdateAPIKeyRequest
252
- from .update_file_v1_graphs_graph_id_tables_files_file_id_patch_response_update_file_v1_graphs_graph_id_tables_files_file_id_patch import (
253
- UpdateFileV1GraphsGraphIdTablesFilesFileIdPatchResponseUpdateFileV1GraphsGraphIdTablesFilesFileIdPatch,
247
+ from .update_file_status_response_updatefilestatus import (
248
+ UpdateFileStatusResponseUpdatefilestatus,
254
249
  )
255
250
  from .update_password_request import UpdatePasswordRequest
256
251
  from .update_user_request import UpdateUserRequest
@@ -339,7 +334,7 @@ __all__ = (
339
334
  "CypherQueryRequestParametersType0",
340
335
  "DatabaseHealthResponse",
341
336
  "DatabaseInfoResponse",
342
- "DeleteFileV1GraphsGraphIdTablesFilesFileIdDeleteResponseDeleteFileV1GraphsGraphIdTablesFilesFileIdDelete",
337
+ "DeleteFileResponse",
343
338
  "DeleteSubgraphRequest",
344
339
  "DeleteSubgraphResponse",
345
340
  "DetailedTransactionsResponse",
@@ -351,7 +346,8 @@ __all__ = (
351
346
  "ErrorResponse",
352
347
  "ExchangeTokenRequest",
353
348
  "ExchangeTokenRequestMetadataType0",
354
- "FileUpdateRequest",
349
+ "FileInfo",
350
+ "FileStatusUpdate",
355
351
  "FileUploadRequest",
356
352
  "FileUploadResponse",
357
353
  "ForgotPasswordRequest",
@@ -361,7 +357,7 @@ __all__ = (
361
357
  "GetBackupDownloadUrlResponseGetbackupdownloadurl",
362
358
  "GetCurrentAuthUserResponseGetcurrentauthuser",
363
359
  "GetCurrentGraphBillResponseGetcurrentgraphbill",
364
- "GetFileInfoV1GraphsGraphIdTablesFilesFileIdGetResponseGetFileInfoV1GraphsGraphIdTablesFilesFileIdGet",
360
+ "GetFileInfoResponse",
365
361
  "GetGraphBillingHistoryResponseGetgraphbillinghistory",
366
362
  "GetGraphLimitsResponseGetgraphlimits",
367
363
  "GetGraphMonthlyBillResponseGetgraphmonthlybill",
@@ -390,7 +386,7 @@ __all__ = (
390
386
  "LinkTokenRequestProviderType0",
391
387
  "ListConnectionsProviderType0",
392
388
  "ListSubgraphsResponse",
393
- "ListTableFilesV1GraphsGraphIdTablesTableNameFilesGetResponseListTableFilesV1GraphsGraphIdTablesTableNameFilesGet",
389
+ "ListTableFilesResponse",
394
390
  "LoginRequest",
395
391
  "LogoutUserResponseLogoutuser",
396
392
  "MCPToolCall",
@@ -455,7 +451,7 @@ __all__ = (
455
451
  "TierUpgradeRequest",
456
452
  "TransactionSummaryResponse",
457
453
  "UpdateAPIKeyRequest",
458
- "UpdateFileV1GraphsGraphIdTablesFilesFileIdPatchResponseUpdateFileV1GraphsGraphIdTablesFilesFileIdPatch",
454
+ "UpdateFileStatusResponseUpdatefilestatus",
459
455
  "UpdatePasswordRequest",
460
456
  "UpdateUserRequest",
461
457
  "UserAnalyticsResponse",
@@ -31,6 +31,9 @@ class CreateGraphRequest:
31
31
  custom_schema (Union['CustomSchemaDefinition', None, Unset]): Custom schema definition to apply
32
32
  initial_entity (Union['InitialEntityData', None, Unset]): Optional initial entity to create in the graph. If
33
33
  provided, creates a entity-focused graph.
34
+ create_entity (Union[Unset, bool]): Whether to create the entity node and upload initial data. Only applies when
35
+ initial_entity is provided. Set to False to create graph without populating entity data (useful for file-based
36
+ ingestion workflows). Default: True.
34
37
  tags (Union[Unset, list[str]]): Optional tags for organization
35
38
  """
36
39
 
@@ -38,6 +41,7 @@ class CreateGraphRequest:
38
41
  instance_tier: Union[Unset, str] = "kuzu-standard"
39
42
  custom_schema: Union["CustomSchemaDefinition", None, Unset] = UNSET
40
43
  initial_entity: Union["InitialEntityData", None, Unset] = UNSET
44
+ create_entity: Union[Unset, bool] = True
41
45
  tags: Union[Unset, list[str]] = UNSET
42
46
  additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
43
47
 
@@ -65,6 +69,8 @@ class CreateGraphRequest:
65
69
  else:
66
70
  initial_entity = self.initial_entity
67
71
 
72
+ create_entity = self.create_entity
73
+
68
74
  tags: Union[Unset, list[str]] = UNSET
69
75
  if not isinstance(self.tags, Unset):
70
76
  tags = self.tags
@@ -82,6 +88,8 @@ class CreateGraphRequest:
82
88
  field_dict["custom_schema"] = custom_schema
83
89
  if initial_entity is not UNSET:
84
90
  field_dict["initial_entity"] = initial_entity
91
+ if create_entity is not UNSET:
92
+ field_dict["create_entity"] = create_entity
85
93
  if tags is not UNSET:
86
94
  field_dict["tags"] = tags
87
95
 
@@ -134,6 +142,8 @@ class CreateGraphRequest:
134
142
 
135
143
  initial_entity = _parse_initial_entity(d.pop("initial_entity", UNSET))
136
144
 
145
+ create_entity = d.pop("create_entity", UNSET)
146
+
137
147
  tags = cast(list[str], d.pop("tags", UNSET))
138
148
 
139
149
  create_graph_request = cls(
@@ -141,6 +151,7 @@ class CreateGraphRequest:
141
151
  instance_tier=instance_tier,
142
152
  custom_schema=custom_schema,
143
153
  initial_entity=initial_entity,
154
+ create_entity=create_entity,
144
155
  tags=tags,
145
156
  )
146
157
 
@@ -4,31 +4,67 @@ 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(
8
- "T",
9
- bound="DeleteFileV1GraphsGraphIdTablesFilesFileIdDeleteResponseDeleteFileV1GraphsGraphIdTablesFilesFileIdDelete",
10
- )
7
+ T = TypeVar("T", bound="DeleteFileResponse")
11
8
 
12
9
 
13
10
  @_attrs_define
14
- class DeleteFileV1GraphsGraphIdTablesFilesFileIdDeleteResponseDeleteFileV1GraphsGraphIdTablesFilesFileIdDelete:
15
- """ """
11
+ class DeleteFileResponse:
12
+ """
13
+ Attributes:
14
+ status (str): Deletion status
15
+ file_id (str): Deleted file ID
16
+ file_name (str): Deleted file name
17
+ message (str): Operation message
18
+ """
16
19
 
20
+ status: str
21
+ file_id: str
22
+ file_name: str
23
+ message: str
17
24
  additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
18
25
 
19
26
  def to_dict(self) -> dict[str, Any]:
27
+ status = self.status
28
+
29
+ file_id = self.file_id
30
+
31
+ file_name = self.file_name
32
+
33
+ message = self.message
34
+
20
35
  field_dict: dict[str, Any] = {}
21
36
  field_dict.update(self.additional_properties)
37
+ field_dict.update(
38
+ {
39
+ "status": status,
40
+ "file_id": file_id,
41
+ "file_name": file_name,
42
+ "message": message,
43
+ }
44
+ )
22
45
 
23
46
  return field_dict
24
47
 
25
48
  @classmethod
26
49
  def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
27
50
  d = dict(src_dict)
28
- delete_file_v1_graphs_graph_id_tables_files_file_id_delete_response_delete_file_v1_graphs_graph_id_tables_files_file_id_delete = cls()
51
+ status = d.pop("status")
52
+
53
+ file_id = d.pop("file_id")
54
+
55
+ file_name = d.pop("file_name")
56
+
57
+ message = d.pop("message")
58
+
59
+ delete_file_response = cls(
60
+ status=status,
61
+ file_id=file_id,
62
+ file_name=file_name,
63
+ message=message,
64
+ )
29
65
 
30
- delete_file_v1_graphs_graph_id_tables_files_file_id_delete_response_delete_file_v1_graphs_graph_id_tables_files_file_id_delete.additional_properties = d
31
- return delete_file_v1_graphs_graph_id_tables_files_file_id_delete_response_delete_file_v1_graphs_graph_id_tables_files_file_id_delete
66
+ delete_file_response.additional_properties = d
67
+ return delete_file_response
32
68
 
33
69
  @property
34
70
  def additional_keys(self) -> list[str]:
@@ -0,0 +1,169 @@
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="FileInfo")
10
+
11
+
12
+ @_attrs_define
13
+ class FileInfo:
14
+ """
15
+ Attributes:
16
+ file_id (str): Unique file identifier
17
+ file_name (str): Original file name
18
+ file_format (str): File format (parquet, csv, etc.)
19
+ size_bytes (int): File size in bytes
20
+ upload_status (str): Current upload status
21
+ upload_method (str): Upload method used
22
+ s3_key (str): S3 object key
23
+ row_count (Union[None, Unset, int]): Estimated row count
24
+ created_at (Union[None, Unset, str]): File creation timestamp
25
+ uploaded_at (Union[None, Unset, str]): File upload completion timestamp
26
+ """
27
+
28
+ file_id: str
29
+ file_name: str
30
+ file_format: str
31
+ size_bytes: int
32
+ upload_status: str
33
+ upload_method: str
34
+ s3_key: str
35
+ row_count: Union[None, Unset, int] = UNSET
36
+ created_at: Union[None, Unset, str] = UNSET
37
+ uploaded_at: Union[None, Unset, str] = UNSET
38
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
39
+
40
+ def to_dict(self) -> dict[str, Any]:
41
+ file_id = self.file_id
42
+
43
+ file_name = self.file_name
44
+
45
+ file_format = self.file_format
46
+
47
+ size_bytes = self.size_bytes
48
+
49
+ upload_status = self.upload_status
50
+
51
+ upload_method = self.upload_method
52
+
53
+ s3_key = self.s3_key
54
+
55
+ row_count: Union[None, Unset, int]
56
+ if isinstance(self.row_count, Unset):
57
+ row_count = UNSET
58
+ else:
59
+ row_count = self.row_count
60
+
61
+ created_at: Union[None, Unset, str]
62
+ if isinstance(self.created_at, Unset):
63
+ created_at = UNSET
64
+ else:
65
+ created_at = self.created_at
66
+
67
+ uploaded_at: Union[None, Unset, str]
68
+ if isinstance(self.uploaded_at, Unset):
69
+ uploaded_at = UNSET
70
+ else:
71
+ uploaded_at = self.uploaded_at
72
+
73
+ field_dict: dict[str, Any] = {}
74
+ field_dict.update(self.additional_properties)
75
+ field_dict.update(
76
+ {
77
+ "file_id": file_id,
78
+ "file_name": file_name,
79
+ "file_format": file_format,
80
+ "size_bytes": size_bytes,
81
+ "upload_status": upload_status,
82
+ "upload_method": upload_method,
83
+ "s3_key": s3_key,
84
+ }
85
+ )
86
+ if row_count is not UNSET:
87
+ field_dict["row_count"] = row_count
88
+ if created_at is not UNSET:
89
+ field_dict["created_at"] = created_at
90
+ if uploaded_at is not UNSET:
91
+ field_dict["uploaded_at"] = uploaded_at
92
+
93
+ return field_dict
94
+
95
+ @classmethod
96
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
97
+ d = dict(src_dict)
98
+ file_id = d.pop("file_id")
99
+
100
+ file_name = d.pop("file_name")
101
+
102
+ file_format = d.pop("file_format")
103
+
104
+ size_bytes = d.pop("size_bytes")
105
+
106
+ upload_status = d.pop("upload_status")
107
+
108
+ upload_method = d.pop("upload_method")
109
+
110
+ s3_key = d.pop("s3_key")
111
+
112
+ def _parse_row_count(data: object) -> Union[None, Unset, int]:
113
+ if data is None:
114
+ return data
115
+ if isinstance(data, Unset):
116
+ return data
117
+ return cast(Union[None, Unset, int], data)
118
+
119
+ row_count = _parse_row_count(d.pop("row_count", UNSET))
120
+
121
+ def _parse_created_at(data: object) -> Union[None, Unset, str]:
122
+ if data is None:
123
+ return data
124
+ if isinstance(data, Unset):
125
+ return data
126
+ return cast(Union[None, Unset, str], data)
127
+
128
+ created_at = _parse_created_at(d.pop("created_at", UNSET))
129
+
130
+ def _parse_uploaded_at(data: object) -> Union[None, Unset, str]:
131
+ if data is None:
132
+ return data
133
+ if isinstance(data, Unset):
134
+ return data
135
+ return cast(Union[None, Unset, str], data)
136
+
137
+ uploaded_at = _parse_uploaded_at(d.pop("uploaded_at", UNSET))
138
+
139
+ file_info = cls(
140
+ file_id=file_id,
141
+ file_name=file_name,
142
+ file_format=file_format,
143
+ size_bytes=size_bytes,
144
+ upload_status=upload_status,
145
+ upload_method=upload_method,
146
+ s3_key=s3_key,
147
+ row_count=row_count,
148
+ created_at=created_at,
149
+ uploaded_at=uploaded_at,
150
+ )
151
+
152
+ file_info.additional_properties = d
153
+ return file_info
154
+
155
+ @property
156
+ def additional_keys(self) -> list[str]:
157
+ return list(self.additional_properties.keys())
158
+
159
+ def __getitem__(self, key: str) -> Any:
160
+ return self.additional_properties[key]
161
+
162
+ def __setitem__(self, key: str, value: Any) -> None:
163
+ self.additional_properties[key] = value
164
+
165
+ def __delitem__(self, key: str) -> None:
166
+ del self.additional_properties[key]
167
+
168
+ def __contains__(self, key: str) -> bool:
169
+ return key in self.additional_properties
@@ -0,0 +1,41 @@
1
+ from collections.abc import Mapping
2
+ from typing import Any, TypeVar
3
+
4
+ from attrs import define as _attrs_define
5
+
6
+ T = TypeVar("T", bound="FileStatusUpdate")
7
+
8
+
9
+ @_attrs_define
10
+ class FileStatusUpdate:
11
+ """
12
+ Attributes:
13
+ status (str): File status: 'uploaded' (ready for ingest), 'disabled' (exclude from ingest), 'archived' (soft
14
+ deleted)
15
+ """
16
+
17
+ status: str
18
+
19
+ def to_dict(self) -> dict[str, Any]:
20
+ status = self.status
21
+
22
+ field_dict: dict[str, Any] = {}
23
+
24
+ field_dict.update(
25
+ {
26
+ "status": status,
27
+ }
28
+ )
29
+
30
+ return field_dict
31
+
32
+ @classmethod
33
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
34
+ d = dict(src_dict)
35
+ status = d.pop("status")
36
+
37
+ file_status_update = cls(
38
+ status=status,
39
+ )
40
+
41
+ return file_status_update
@@ -0,0 +1,205 @@
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="GetFileInfoResponse")
10
+
11
+
12
+ @_attrs_define
13
+ class GetFileInfoResponse:
14
+ """
15
+ Attributes:
16
+ file_id (str): Unique file identifier
17
+ graph_id (str): Graph database identifier
18
+ table_id (str): Table identifier
19
+ file_name (str): Original file name
20
+ file_format (str): File format (parquet, csv, etc.)
21
+ size_bytes (int): File size in bytes
22
+ upload_status (str): Current upload status
23
+ upload_method (str): Upload method used
24
+ s3_key (str): S3 object key
25
+ table_name (Union[None, Unset, str]): Table name
26
+ row_count (Union[None, Unset, int]): Estimated row count
27
+ created_at (Union[None, Unset, str]): File creation timestamp
28
+ uploaded_at (Union[None, Unset, str]): File upload completion timestamp
29
+ """
30
+
31
+ file_id: str
32
+ graph_id: str
33
+ table_id: str
34
+ file_name: str
35
+ file_format: str
36
+ size_bytes: int
37
+ upload_status: str
38
+ upload_method: str
39
+ s3_key: str
40
+ table_name: Union[None, Unset, str] = UNSET
41
+ row_count: Union[None, Unset, int] = UNSET
42
+ created_at: Union[None, Unset, str] = UNSET
43
+ uploaded_at: Union[None, Unset, str] = UNSET
44
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
45
+
46
+ def to_dict(self) -> dict[str, Any]:
47
+ file_id = self.file_id
48
+
49
+ graph_id = self.graph_id
50
+
51
+ table_id = self.table_id
52
+
53
+ file_name = self.file_name
54
+
55
+ file_format = self.file_format
56
+
57
+ size_bytes = self.size_bytes
58
+
59
+ upload_status = self.upload_status
60
+
61
+ upload_method = self.upload_method
62
+
63
+ s3_key = self.s3_key
64
+
65
+ table_name: Union[None, Unset, str]
66
+ if isinstance(self.table_name, Unset):
67
+ table_name = UNSET
68
+ else:
69
+ table_name = self.table_name
70
+
71
+ row_count: Union[None, Unset, int]
72
+ if isinstance(self.row_count, Unset):
73
+ row_count = UNSET
74
+ else:
75
+ row_count = self.row_count
76
+
77
+ created_at: Union[None, Unset, str]
78
+ if isinstance(self.created_at, Unset):
79
+ created_at = UNSET
80
+ else:
81
+ created_at = self.created_at
82
+
83
+ uploaded_at: Union[None, Unset, str]
84
+ if isinstance(self.uploaded_at, Unset):
85
+ uploaded_at = UNSET
86
+ else:
87
+ uploaded_at = self.uploaded_at
88
+
89
+ field_dict: dict[str, Any] = {}
90
+ field_dict.update(self.additional_properties)
91
+ field_dict.update(
92
+ {
93
+ "file_id": file_id,
94
+ "graph_id": graph_id,
95
+ "table_id": table_id,
96
+ "file_name": file_name,
97
+ "file_format": file_format,
98
+ "size_bytes": size_bytes,
99
+ "upload_status": upload_status,
100
+ "upload_method": upload_method,
101
+ "s3_key": s3_key,
102
+ }
103
+ )
104
+ if table_name is not UNSET:
105
+ field_dict["table_name"] = table_name
106
+ if row_count is not UNSET:
107
+ field_dict["row_count"] = row_count
108
+ if created_at is not UNSET:
109
+ field_dict["created_at"] = created_at
110
+ if uploaded_at is not UNSET:
111
+ field_dict["uploaded_at"] = uploaded_at
112
+
113
+ return field_dict
114
+
115
+ @classmethod
116
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
117
+ d = dict(src_dict)
118
+ file_id = d.pop("file_id")
119
+
120
+ graph_id = d.pop("graph_id")
121
+
122
+ table_id = d.pop("table_id")
123
+
124
+ file_name = d.pop("file_name")
125
+
126
+ file_format = d.pop("file_format")
127
+
128
+ size_bytes = d.pop("size_bytes")
129
+
130
+ upload_status = d.pop("upload_status")
131
+
132
+ upload_method = d.pop("upload_method")
133
+
134
+ s3_key = d.pop("s3_key")
135
+
136
+ def _parse_table_name(data: object) -> Union[None, Unset, str]:
137
+ if data is None:
138
+ return data
139
+ if isinstance(data, Unset):
140
+ return data
141
+ return cast(Union[None, Unset, str], data)
142
+
143
+ table_name = _parse_table_name(d.pop("table_name", UNSET))
144
+
145
+ def _parse_row_count(data: object) -> Union[None, Unset, int]:
146
+ if data is None:
147
+ return data
148
+ if isinstance(data, Unset):
149
+ return data
150
+ return cast(Union[None, Unset, int], data)
151
+
152
+ row_count = _parse_row_count(d.pop("row_count", UNSET))
153
+
154
+ def _parse_created_at(data: object) -> Union[None, Unset, str]:
155
+ if data is None:
156
+ return data
157
+ if isinstance(data, Unset):
158
+ return data
159
+ return cast(Union[None, Unset, str], data)
160
+
161
+ created_at = _parse_created_at(d.pop("created_at", UNSET))
162
+
163
+ def _parse_uploaded_at(data: object) -> Union[None, Unset, str]:
164
+ if data is None:
165
+ return data
166
+ if isinstance(data, Unset):
167
+ return data
168
+ return cast(Union[None, Unset, str], data)
169
+
170
+ uploaded_at = _parse_uploaded_at(d.pop("uploaded_at", UNSET))
171
+
172
+ get_file_info_response = cls(
173
+ file_id=file_id,
174
+ graph_id=graph_id,
175
+ table_id=table_id,
176
+ file_name=file_name,
177
+ file_format=file_format,
178
+ size_bytes=size_bytes,
179
+ upload_status=upload_status,
180
+ upload_method=upload_method,
181
+ s3_key=s3_key,
182
+ table_name=table_name,
183
+ row_count=row_count,
184
+ created_at=created_at,
185
+ uploaded_at=uploaded_at,
186
+ )
187
+
188
+ get_file_info_response.additional_properties = d
189
+ return get_file_info_response
190
+
191
+ @property
192
+ def additional_keys(self) -> list[str]:
193
+ return list(self.additional_properties.keys())
194
+
195
+ def __getitem__(self, key: str) -> Any:
196
+ return self.additional_properties[key]
197
+
198
+ def __setitem__(self, key: str, value: Any) -> None:
199
+ self.additional_properties[key] = value
200
+
201
+ def __delitem__(self, key: str) -> None:
202
+ del self.additional_properties[key]
203
+
204
+ def __contains__(self, key: str) -> bool:
205
+ return key in self.additional_properties