lightningrod-ai 0.1.6__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.
- lightningrod/__init__.py +66 -0
- lightningrod/_display.py +204 -0
- lightningrod/_errors.py +67 -0
- lightningrod/_generated/__init__.py +8 -0
- lightningrod/_generated/api/__init__.py +1 -0
- lightningrod/_generated/api/datasets/__init__.py +1 -0
- lightningrod/_generated/api/datasets/create_dataset_datasets_post.py +133 -0
- lightningrod/_generated/api/datasets/get_dataset_datasets_dataset_id_get.py +168 -0
- lightningrod/_generated/api/datasets/get_dataset_samples_datasets_dataset_id_samples_get.py +209 -0
- lightningrod/_generated/api/datasets/upload_samples_datasets_dataset_id_samples_post.py +190 -0
- lightningrod/_generated/api/file_sets/__init__.py +1 -0
- lightningrod/_generated/api/file_sets/add_file_to_set_filesets_file_set_id_files_post.py +190 -0
- lightningrod/_generated/api/file_sets/create_file_set_filesets_post.py +174 -0
- lightningrod/_generated/api/file_sets/get_file_set_filesets_file_set_id_get.py +168 -0
- lightningrod/_generated/api/file_sets/list_file_sets_filesets_get.py +173 -0
- lightningrod/_generated/api/file_sets/list_files_in_set_filesets_file_set_id_files_get.py +209 -0
- lightningrod/_generated/api/files/__init__.py +1 -0
- lightningrod/_generated/api/files/create_file_upload_files_post.py +174 -0
- lightningrod/_generated/api/open_ai_compatible/__init__.py +1 -0
- lightningrod/_generated/api/open_ai_compatible/chat_completions_openai_chat_completions_post.py +174 -0
- lightningrod/_generated/api/organizations/__init__.py +1 -0
- lightningrod/_generated/api/organizations/get_balance_organizations_balance_get.py +131 -0
- lightningrod/_generated/api/samples/__init__.py +1 -0
- lightningrod/_generated/api/samples/validate_sample_samples_validate_post.py +174 -0
- lightningrod/_generated/api/transform_jobs/__init__.py +1 -0
- lightningrod/_generated/api/transform_jobs/cost_estimation_transform_jobs_cost_estimation_post.py +174 -0
- lightningrod/_generated/api/transform_jobs/create_transform_job_transform_jobs_post.py +174 -0
- lightningrod/_generated/api/transform_jobs/get_transform_job_metrics_transform_jobs_job_id_metrics_get.py +172 -0
- lightningrod/_generated/api/transform_jobs/get_transform_job_transform_jobs_job_id_get.py +168 -0
- lightningrod/_generated/client.py +268 -0
- lightningrod/_generated/errors.py +16 -0
- lightningrod/_generated/models/__init__.py +147 -0
- lightningrod/_generated/models/answer_type.py +129 -0
- lightningrod/_generated/models/answer_type_enum.py +11 -0
- lightningrod/_generated/models/balance_response.py +61 -0
- lightningrod/_generated/models/chat_completion_request.py +216 -0
- lightningrod/_generated/models/chat_completion_response.py +146 -0
- lightningrod/_generated/models/chat_message.py +69 -0
- lightningrod/_generated/models/choice.py +97 -0
- lightningrod/_generated/models/create_dataset_response.py +61 -0
- lightningrod/_generated/models/create_file_set_file_request.py +101 -0
- lightningrod/_generated/models/create_file_set_file_request_metadata_type_0.py +46 -0
- lightningrod/_generated/models/create_file_set_request.py +83 -0
- lightningrod/_generated/models/create_file_upload_request.py +91 -0
- lightningrod/_generated/models/create_file_upload_response.py +165 -0
- lightningrod/_generated/models/create_file_upload_response_metadata_type_0.py +46 -0
- lightningrod/_generated/models/create_transform_job_request.py +312 -0
- lightningrod/_generated/models/dataset_metadata.py +69 -0
- lightningrod/_generated/models/estimate_cost_request.py +243 -0
- lightningrod/_generated/models/estimate_cost_response.py +117 -0
- lightningrod/_generated/models/event_usage_summary.py +80 -0
- lightningrod/_generated/models/file_set.py +128 -0
- lightningrod/_generated/models/file_set_file.py +203 -0
- lightningrod/_generated/models/file_set_file_metadata_type_0.py +57 -0
- lightningrod/_generated/models/file_set_query_seed_generator.py +136 -0
- lightningrod/_generated/models/file_set_seed_generator.py +126 -0
- lightningrod/_generated/models/filter_criteria.py +83 -0
- lightningrod/_generated/models/forward_looking_question.py +130 -0
- lightningrod/_generated/models/forward_looking_question_generator.py +217 -0
- lightningrod/_generated/models/gdelt_seed_generator.py +103 -0
- lightningrod/_generated/models/http_validation_error.py +79 -0
- lightningrod/_generated/models/job_usage.py +185 -0
- lightningrod/_generated/models/job_usage_by_step_type_0.py +59 -0
- lightningrod/_generated/models/label.py +143 -0
- lightningrod/_generated/models/list_file_set_files_response.py +113 -0
- lightningrod/_generated/models/list_file_sets_response.py +75 -0
- lightningrod/_generated/models/llm_model_usage_summary.py +98 -0
- lightningrod/_generated/models/mock_transform_config.py +243 -0
- lightningrod/_generated/models/mock_transform_config_metadata_additions.py +46 -0
- lightningrod/_generated/models/model_config.py +316 -0
- lightningrod/_generated/models/model_source_type.py +16 -0
- lightningrod/_generated/models/news_context.py +82 -0
- lightningrod/_generated/models/news_context_generator.py +127 -0
- lightningrod/_generated/models/news_seed_generator.py +220 -0
- lightningrod/_generated/models/paginated_samples_response.py +113 -0
- lightningrod/_generated/models/pipeline_metrics_response.py +99 -0
- lightningrod/_generated/models/question.py +74 -0
- lightningrod/_generated/models/question_and_label_generator.py +217 -0
- lightningrod/_generated/models/question_generator.py +217 -0
- lightningrod/_generated/models/question_pipeline.py +417 -0
- lightningrod/_generated/models/question_renderer.py +123 -0
- lightningrod/_generated/models/rag_context.py +82 -0
- lightningrod/_generated/models/response_message.py +69 -0
- lightningrod/_generated/models/rollout.py +130 -0
- lightningrod/_generated/models/rollout_generator.py +139 -0
- lightningrod/_generated/models/rollout_parsed_output_type_0.py +46 -0
- lightningrod/_generated/models/sample.py +323 -0
- lightningrod/_generated/models/sample_meta.py +46 -0
- lightningrod/_generated/models/seed.py +135 -0
- lightningrod/_generated/models/step_cost_breakdown.py +109 -0
- lightningrod/_generated/models/transform_job.py +268 -0
- lightningrod/_generated/models/transform_job_status.py +11 -0
- lightningrod/_generated/models/transform_step_metrics_response.py +131 -0
- lightningrod/_generated/models/transform_type.py +25 -0
- lightningrod/_generated/models/upload_samples_request.py +75 -0
- lightningrod/_generated/models/upload_samples_response.py +69 -0
- lightningrod/_generated/models/usage.py +77 -0
- lightningrod/_generated/models/usage_summary.py +102 -0
- lightningrod/_generated/models/usage_summary_events.py +59 -0
- lightningrod/_generated/models/usage_summary_llm_by_model.py +59 -0
- lightningrod/_generated/models/validate_sample_response.py +69 -0
- lightningrod/_generated/models/validation_error.py +90 -0
- lightningrod/_generated/models/web_search_labeler.py +120 -0
- lightningrod/_generated/py.typed +1 -0
- lightningrod/_generated/types.py +54 -0
- lightningrod/client.py +48 -0
- lightningrod/datasets/__init__.py +4 -0
- lightningrod/datasets/client.py +174 -0
- lightningrod/datasets/dataset.py +255 -0
- lightningrod/files/__init__.py +0 -0
- lightningrod/files/client.py +58 -0
- lightningrod/filesets/__init__.py +0 -0
- lightningrod/filesets/client.py +106 -0
- lightningrod/organization/__init__.py +0 -0
- lightningrod/organization/client.py +17 -0
- lightningrod/py.typed +0 -0
- lightningrod/transforms/__init__.py +0 -0
- lightningrod/transforms/client.py +154 -0
- lightningrod_ai-0.1.6.dist-info/METADATA +122 -0
- lightningrod_ai-0.1.6.dist-info/RECORD +123 -0
- lightningrod_ai-0.1.6.dist-info/WHEEL +5 -0
- lightningrod_ai-0.1.6.dist-info/licenses/LICENSE +23 -0
- lightningrod_ai-0.1.6.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import Any, TypeVar
|
|
5
|
+
|
|
6
|
+
from attrs import define as _attrs_define
|
|
7
|
+
from attrs import field as _attrs_field
|
|
8
|
+
|
|
9
|
+
T = TypeVar("T", bound="CreateFileSetFileRequestMetadataType0")
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@_attrs_define
|
|
13
|
+
class CreateFileSetFileRequestMetadataType0:
|
|
14
|
+
""" """
|
|
15
|
+
|
|
16
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
17
|
+
|
|
18
|
+
def to_dict(self) -> dict[str, Any]:
|
|
19
|
+
field_dict: dict[str, Any] = {}
|
|
20
|
+
field_dict.update(self.additional_properties)
|
|
21
|
+
|
|
22
|
+
return field_dict
|
|
23
|
+
|
|
24
|
+
@classmethod
|
|
25
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
26
|
+
d = dict(src_dict)
|
|
27
|
+
create_file_set_file_request_metadata_type_0 = cls()
|
|
28
|
+
|
|
29
|
+
create_file_set_file_request_metadata_type_0.additional_properties = d
|
|
30
|
+
return create_file_set_file_request_metadata_type_0
|
|
31
|
+
|
|
32
|
+
@property
|
|
33
|
+
def additional_keys(self) -> list[str]:
|
|
34
|
+
return list(self.additional_properties.keys())
|
|
35
|
+
|
|
36
|
+
def __getitem__(self, key: str) -> Any:
|
|
37
|
+
return self.additional_properties[key]
|
|
38
|
+
|
|
39
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
40
|
+
self.additional_properties[key] = value
|
|
41
|
+
|
|
42
|
+
def __delitem__(self, key: str) -> None:
|
|
43
|
+
del self.additional_properties[key]
|
|
44
|
+
|
|
45
|
+
def __contains__(self, key: str) -> bool:
|
|
46
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import Any, TypeVar, cast
|
|
5
|
+
|
|
6
|
+
from attrs import define as _attrs_define
|
|
7
|
+
from attrs import field as _attrs_field
|
|
8
|
+
|
|
9
|
+
from ..types import UNSET, Unset
|
|
10
|
+
|
|
11
|
+
T = TypeVar("T", bound="CreateFileSetRequest")
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@_attrs_define
|
|
15
|
+
class CreateFileSetRequest:
|
|
16
|
+
"""
|
|
17
|
+
Attributes:
|
|
18
|
+
name (str): Human-readable name for the FileSet
|
|
19
|
+
description (None | str | Unset): Optional description of the FileSet's purpose
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
name: str
|
|
23
|
+
description: None | str | Unset = UNSET
|
|
24
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
25
|
+
|
|
26
|
+
def to_dict(self) -> dict[str, Any]:
|
|
27
|
+
name = self.name
|
|
28
|
+
|
|
29
|
+
description: None | str | Unset
|
|
30
|
+
if isinstance(self.description, Unset):
|
|
31
|
+
description = UNSET
|
|
32
|
+
else:
|
|
33
|
+
description = self.description
|
|
34
|
+
|
|
35
|
+
field_dict: dict[str, Any] = {}
|
|
36
|
+
field_dict.update(self.additional_properties)
|
|
37
|
+
field_dict.update(
|
|
38
|
+
{
|
|
39
|
+
"name": name,
|
|
40
|
+
}
|
|
41
|
+
)
|
|
42
|
+
if description is not UNSET:
|
|
43
|
+
field_dict["description"] = description
|
|
44
|
+
|
|
45
|
+
return field_dict
|
|
46
|
+
|
|
47
|
+
@classmethod
|
|
48
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
49
|
+
d = dict(src_dict)
|
|
50
|
+
name = d.pop("name")
|
|
51
|
+
|
|
52
|
+
def _parse_description(data: object) -> None | str | Unset:
|
|
53
|
+
if data is None:
|
|
54
|
+
return data
|
|
55
|
+
if isinstance(data, Unset):
|
|
56
|
+
return data
|
|
57
|
+
return cast(None | str | Unset, data)
|
|
58
|
+
|
|
59
|
+
description = _parse_description(d.pop("description", UNSET))
|
|
60
|
+
|
|
61
|
+
create_file_set_request = cls(
|
|
62
|
+
name=name,
|
|
63
|
+
description=description,
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
create_file_set_request.additional_properties = d
|
|
67
|
+
return create_file_set_request
|
|
68
|
+
|
|
69
|
+
@property
|
|
70
|
+
def additional_keys(self) -> list[str]:
|
|
71
|
+
return list(self.additional_properties.keys())
|
|
72
|
+
|
|
73
|
+
def __getitem__(self, key: str) -> Any:
|
|
74
|
+
return self.additional_properties[key]
|
|
75
|
+
|
|
76
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
77
|
+
self.additional_properties[key] = value
|
|
78
|
+
|
|
79
|
+
def __delitem__(self, key: str) -> None:
|
|
80
|
+
del self.additional_properties[key]
|
|
81
|
+
|
|
82
|
+
def __contains__(self, key: str) -> bool:
|
|
83
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import Any, TypeVar, cast
|
|
5
|
+
|
|
6
|
+
from attrs import define as _attrs_define
|
|
7
|
+
from attrs import field as _attrs_field
|
|
8
|
+
|
|
9
|
+
from ..types import UNSET, Unset
|
|
10
|
+
|
|
11
|
+
T = TypeVar("T", bound="CreateFileUploadRequest")
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@_attrs_define
|
|
15
|
+
class CreateFileUploadRequest:
|
|
16
|
+
"""
|
|
17
|
+
Attributes:
|
|
18
|
+
filename (str): Original filename
|
|
19
|
+
size_bytes (int): File size in bytes
|
|
20
|
+
mime_type (None | str | Unset): MIME type of the file
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
filename: str
|
|
24
|
+
size_bytes: int
|
|
25
|
+
mime_type: None | str | Unset = UNSET
|
|
26
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
27
|
+
|
|
28
|
+
def to_dict(self) -> dict[str, Any]:
|
|
29
|
+
filename = self.filename
|
|
30
|
+
|
|
31
|
+
size_bytes = self.size_bytes
|
|
32
|
+
|
|
33
|
+
mime_type: None | str | Unset
|
|
34
|
+
if isinstance(self.mime_type, Unset):
|
|
35
|
+
mime_type = UNSET
|
|
36
|
+
else:
|
|
37
|
+
mime_type = self.mime_type
|
|
38
|
+
|
|
39
|
+
field_dict: dict[str, Any] = {}
|
|
40
|
+
field_dict.update(self.additional_properties)
|
|
41
|
+
field_dict.update(
|
|
42
|
+
{
|
|
43
|
+
"filename": filename,
|
|
44
|
+
"size_bytes": size_bytes,
|
|
45
|
+
}
|
|
46
|
+
)
|
|
47
|
+
if mime_type is not UNSET:
|
|
48
|
+
field_dict["mime_type"] = mime_type
|
|
49
|
+
|
|
50
|
+
return field_dict
|
|
51
|
+
|
|
52
|
+
@classmethod
|
|
53
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
54
|
+
d = dict(src_dict)
|
|
55
|
+
filename = d.pop("filename")
|
|
56
|
+
|
|
57
|
+
size_bytes = d.pop("size_bytes")
|
|
58
|
+
|
|
59
|
+
def _parse_mime_type(data: object) -> None | str | Unset:
|
|
60
|
+
if data is None:
|
|
61
|
+
return data
|
|
62
|
+
if isinstance(data, Unset):
|
|
63
|
+
return data
|
|
64
|
+
return cast(None | str | Unset, data)
|
|
65
|
+
|
|
66
|
+
mime_type = _parse_mime_type(d.pop("mime_type", UNSET))
|
|
67
|
+
|
|
68
|
+
create_file_upload_request = cls(
|
|
69
|
+
filename=filename,
|
|
70
|
+
size_bytes=size_bytes,
|
|
71
|
+
mime_type=mime_type,
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
create_file_upload_request.additional_properties = d
|
|
75
|
+
return create_file_upload_request
|
|
76
|
+
|
|
77
|
+
@property
|
|
78
|
+
def additional_keys(self) -> list[str]:
|
|
79
|
+
return list(self.additional_properties.keys())
|
|
80
|
+
|
|
81
|
+
def __getitem__(self, key: str) -> Any:
|
|
82
|
+
return self.additional_properties[key]
|
|
83
|
+
|
|
84
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
85
|
+
self.additional_properties[key] = value
|
|
86
|
+
|
|
87
|
+
def __delitem__(self, key: str) -> None:
|
|
88
|
+
del self.additional_properties[key]
|
|
89
|
+
|
|
90
|
+
def __contains__(self, key: str) -> bool:
|
|
91
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import datetime
|
|
4
|
+
from collections.abc import Mapping
|
|
5
|
+
from typing import TYPE_CHECKING, Any, TypeVar, cast
|
|
6
|
+
|
|
7
|
+
from attrs import define as _attrs_define
|
|
8
|
+
from attrs import field as _attrs_field
|
|
9
|
+
from dateutil.parser import isoparse
|
|
10
|
+
|
|
11
|
+
from ..types import UNSET, Unset
|
|
12
|
+
|
|
13
|
+
if TYPE_CHECKING:
|
|
14
|
+
from ..models.create_file_upload_response_metadata_type_0 import CreateFileUploadResponseMetadataType0
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
T = TypeVar("T", bound="CreateFileUploadResponse")
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
@_attrs_define
|
|
21
|
+
class CreateFileUploadResponse:
|
|
22
|
+
"""
|
|
23
|
+
Attributes:
|
|
24
|
+
id (str):
|
|
25
|
+
original_file_name (str):
|
|
26
|
+
cloud_storage_path (str):
|
|
27
|
+
upload_url (str): Signed GCS upload URL for direct upload
|
|
28
|
+
mime_type (None | str):
|
|
29
|
+
size_bytes (int):
|
|
30
|
+
created_at (datetime.datetime):
|
|
31
|
+
expires_at (datetime.datetime): When the upload URL expires
|
|
32
|
+
metadata (CreateFileUploadResponseMetadataType0 | None | Unset): File-level metadata
|
|
33
|
+
"""
|
|
34
|
+
|
|
35
|
+
id: str
|
|
36
|
+
original_file_name: str
|
|
37
|
+
cloud_storage_path: str
|
|
38
|
+
upload_url: str
|
|
39
|
+
mime_type: None | str
|
|
40
|
+
size_bytes: int
|
|
41
|
+
created_at: datetime.datetime
|
|
42
|
+
expires_at: datetime.datetime
|
|
43
|
+
metadata: CreateFileUploadResponseMetadataType0 | None | Unset = UNSET
|
|
44
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
45
|
+
|
|
46
|
+
def to_dict(self) -> dict[str, Any]:
|
|
47
|
+
from ..models.create_file_upload_response_metadata_type_0 import CreateFileUploadResponseMetadataType0
|
|
48
|
+
|
|
49
|
+
id = self.id
|
|
50
|
+
|
|
51
|
+
original_file_name = self.original_file_name
|
|
52
|
+
|
|
53
|
+
cloud_storage_path = self.cloud_storage_path
|
|
54
|
+
|
|
55
|
+
upload_url = self.upload_url
|
|
56
|
+
|
|
57
|
+
mime_type: None | str
|
|
58
|
+
mime_type = self.mime_type
|
|
59
|
+
|
|
60
|
+
size_bytes = self.size_bytes
|
|
61
|
+
|
|
62
|
+
created_at = self.created_at.isoformat()
|
|
63
|
+
|
|
64
|
+
expires_at = self.expires_at.isoformat()
|
|
65
|
+
|
|
66
|
+
metadata: dict[str, Any] | None | Unset
|
|
67
|
+
if isinstance(self.metadata, Unset):
|
|
68
|
+
metadata = UNSET
|
|
69
|
+
elif isinstance(self.metadata, CreateFileUploadResponseMetadataType0):
|
|
70
|
+
metadata = self.metadata.to_dict()
|
|
71
|
+
else:
|
|
72
|
+
metadata = self.metadata
|
|
73
|
+
|
|
74
|
+
field_dict: dict[str, Any] = {}
|
|
75
|
+
field_dict.update(self.additional_properties)
|
|
76
|
+
field_dict.update(
|
|
77
|
+
{
|
|
78
|
+
"id": id,
|
|
79
|
+
"original_file_name": original_file_name,
|
|
80
|
+
"cloud_storage_path": cloud_storage_path,
|
|
81
|
+
"upload_url": upload_url,
|
|
82
|
+
"mime_type": mime_type,
|
|
83
|
+
"size_bytes": size_bytes,
|
|
84
|
+
"created_at": created_at,
|
|
85
|
+
"expires_at": expires_at,
|
|
86
|
+
}
|
|
87
|
+
)
|
|
88
|
+
if metadata is not UNSET:
|
|
89
|
+
field_dict["metadata"] = metadata
|
|
90
|
+
|
|
91
|
+
return field_dict
|
|
92
|
+
|
|
93
|
+
@classmethod
|
|
94
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
95
|
+
from ..models.create_file_upload_response_metadata_type_0 import CreateFileUploadResponseMetadataType0
|
|
96
|
+
|
|
97
|
+
d = dict(src_dict)
|
|
98
|
+
id = d.pop("id")
|
|
99
|
+
|
|
100
|
+
original_file_name = d.pop("original_file_name")
|
|
101
|
+
|
|
102
|
+
cloud_storage_path = d.pop("cloud_storage_path")
|
|
103
|
+
|
|
104
|
+
upload_url = d.pop("upload_url")
|
|
105
|
+
|
|
106
|
+
def _parse_mime_type(data: object) -> None | str:
|
|
107
|
+
if data is None:
|
|
108
|
+
return data
|
|
109
|
+
return cast(None | str, data)
|
|
110
|
+
|
|
111
|
+
mime_type = _parse_mime_type(d.pop("mime_type"))
|
|
112
|
+
|
|
113
|
+
size_bytes = d.pop("size_bytes")
|
|
114
|
+
|
|
115
|
+
created_at = isoparse(d.pop("created_at"))
|
|
116
|
+
|
|
117
|
+
expires_at = isoparse(d.pop("expires_at"))
|
|
118
|
+
|
|
119
|
+
def _parse_metadata(data: object) -> CreateFileUploadResponseMetadataType0 | None | Unset:
|
|
120
|
+
if data is None:
|
|
121
|
+
return data
|
|
122
|
+
if isinstance(data, Unset):
|
|
123
|
+
return data
|
|
124
|
+
try:
|
|
125
|
+
if not isinstance(data, dict):
|
|
126
|
+
raise TypeError()
|
|
127
|
+
metadata_type_0 = CreateFileUploadResponseMetadataType0.from_dict(data)
|
|
128
|
+
|
|
129
|
+
return metadata_type_0
|
|
130
|
+
except (TypeError, ValueError, AttributeError, KeyError):
|
|
131
|
+
pass
|
|
132
|
+
return cast(CreateFileUploadResponseMetadataType0 | None | Unset, data)
|
|
133
|
+
|
|
134
|
+
metadata = _parse_metadata(d.pop("metadata", UNSET))
|
|
135
|
+
|
|
136
|
+
create_file_upload_response = cls(
|
|
137
|
+
id=id,
|
|
138
|
+
original_file_name=original_file_name,
|
|
139
|
+
cloud_storage_path=cloud_storage_path,
|
|
140
|
+
upload_url=upload_url,
|
|
141
|
+
mime_type=mime_type,
|
|
142
|
+
size_bytes=size_bytes,
|
|
143
|
+
created_at=created_at,
|
|
144
|
+
expires_at=expires_at,
|
|
145
|
+
metadata=metadata,
|
|
146
|
+
)
|
|
147
|
+
|
|
148
|
+
create_file_upload_response.additional_properties = d
|
|
149
|
+
return create_file_upload_response
|
|
150
|
+
|
|
151
|
+
@property
|
|
152
|
+
def additional_keys(self) -> list[str]:
|
|
153
|
+
return list(self.additional_properties.keys())
|
|
154
|
+
|
|
155
|
+
def __getitem__(self, key: str) -> Any:
|
|
156
|
+
return self.additional_properties[key]
|
|
157
|
+
|
|
158
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
159
|
+
self.additional_properties[key] = value
|
|
160
|
+
|
|
161
|
+
def __delitem__(self, key: str) -> None:
|
|
162
|
+
del self.additional_properties[key]
|
|
163
|
+
|
|
164
|
+
def __contains__(self, key: str) -> bool:
|
|
165
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import Any, TypeVar
|
|
5
|
+
|
|
6
|
+
from attrs import define as _attrs_define
|
|
7
|
+
from attrs import field as _attrs_field
|
|
8
|
+
|
|
9
|
+
T = TypeVar("T", bound="CreateFileUploadResponseMetadataType0")
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@_attrs_define
|
|
13
|
+
class CreateFileUploadResponseMetadataType0:
|
|
14
|
+
""" """
|
|
15
|
+
|
|
16
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
17
|
+
|
|
18
|
+
def to_dict(self) -> dict[str, Any]:
|
|
19
|
+
field_dict: dict[str, Any] = {}
|
|
20
|
+
field_dict.update(self.additional_properties)
|
|
21
|
+
|
|
22
|
+
return field_dict
|
|
23
|
+
|
|
24
|
+
@classmethod
|
|
25
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
26
|
+
d = dict(src_dict)
|
|
27
|
+
create_file_upload_response_metadata_type_0 = cls()
|
|
28
|
+
|
|
29
|
+
create_file_upload_response_metadata_type_0.additional_properties = d
|
|
30
|
+
return create_file_upload_response_metadata_type_0
|
|
31
|
+
|
|
32
|
+
@property
|
|
33
|
+
def additional_keys(self) -> list[str]:
|
|
34
|
+
return list(self.additional_properties.keys())
|
|
35
|
+
|
|
36
|
+
def __getitem__(self, key: str) -> Any:
|
|
37
|
+
return self.additional_properties[key]
|
|
38
|
+
|
|
39
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
40
|
+
self.additional_properties[key] = value
|
|
41
|
+
|
|
42
|
+
def __delitem__(self, key: str) -> None:
|
|
43
|
+
del self.additional_properties[key]
|
|
44
|
+
|
|
45
|
+
def __contains__(self, key: str) -> bool:
|
|
46
|
+
return key in self.additional_properties
|