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.
Files changed (123) hide show
  1. lightningrod/__init__.py +66 -0
  2. lightningrod/_display.py +204 -0
  3. lightningrod/_errors.py +67 -0
  4. lightningrod/_generated/__init__.py +8 -0
  5. lightningrod/_generated/api/__init__.py +1 -0
  6. lightningrod/_generated/api/datasets/__init__.py +1 -0
  7. lightningrod/_generated/api/datasets/create_dataset_datasets_post.py +133 -0
  8. lightningrod/_generated/api/datasets/get_dataset_datasets_dataset_id_get.py +168 -0
  9. lightningrod/_generated/api/datasets/get_dataset_samples_datasets_dataset_id_samples_get.py +209 -0
  10. lightningrod/_generated/api/datasets/upload_samples_datasets_dataset_id_samples_post.py +190 -0
  11. lightningrod/_generated/api/file_sets/__init__.py +1 -0
  12. lightningrod/_generated/api/file_sets/add_file_to_set_filesets_file_set_id_files_post.py +190 -0
  13. lightningrod/_generated/api/file_sets/create_file_set_filesets_post.py +174 -0
  14. lightningrod/_generated/api/file_sets/get_file_set_filesets_file_set_id_get.py +168 -0
  15. lightningrod/_generated/api/file_sets/list_file_sets_filesets_get.py +173 -0
  16. lightningrod/_generated/api/file_sets/list_files_in_set_filesets_file_set_id_files_get.py +209 -0
  17. lightningrod/_generated/api/files/__init__.py +1 -0
  18. lightningrod/_generated/api/files/create_file_upload_files_post.py +174 -0
  19. lightningrod/_generated/api/open_ai_compatible/__init__.py +1 -0
  20. lightningrod/_generated/api/open_ai_compatible/chat_completions_openai_chat_completions_post.py +174 -0
  21. lightningrod/_generated/api/organizations/__init__.py +1 -0
  22. lightningrod/_generated/api/organizations/get_balance_organizations_balance_get.py +131 -0
  23. lightningrod/_generated/api/samples/__init__.py +1 -0
  24. lightningrod/_generated/api/samples/validate_sample_samples_validate_post.py +174 -0
  25. lightningrod/_generated/api/transform_jobs/__init__.py +1 -0
  26. lightningrod/_generated/api/transform_jobs/cost_estimation_transform_jobs_cost_estimation_post.py +174 -0
  27. lightningrod/_generated/api/transform_jobs/create_transform_job_transform_jobs_post.py +174 -0
  28. lightningrod/_generated/api/transform_jobs/get_transform_job_metrics_transform_jobs_job_id_metrics_get.py +172 -0
  29. lightningrod/_generated/api/transform_jobs/get_transform_job_transform_jobs_job_id_get.py +168 -0
  30. lightningrod/_generated/client.py +268 -0
  31. lightningrod/_generated/errors.py +16 -0
  32. lightningrod/_generated/models/__init__.py +147 -0
  33. lightningrod/_generated/models/answer_type.py +129 -0
  34. lightningrod/_generated/models/answer_type_enum.py +11 -0
  35. lightningrod/_generated/models/balance_response.py +61 -0
  36. lightningrod/_generated/models/chat_completion_request.py +216 -0
  37. lightningrod/_generated/models/chat_completion_response.py +146 -0
  38. lightningrod/_generated/models/chat_message.py +69 -0
  39. lightningrod/_generated/models/choice.py +97 -0
  40. lightningrod/_generated/models/create_dataset_response.py +61 -0
  41. lightningrod/_generated/models/create_file_set_file_request.py +101 -0
  42. lightningrod/_generated/models/create_file_set_file_request_metadata_type_0.py +46 -0
  43. lightningrod/_generated/models/create_file_set_request.py +83 -0
  44. lightningrod/_generated/models/create_file_upload_request.py +91 -0
  45. lightningrod/_generated/models/create_file_upload_response.py +165 -0
  46. lightningrod/_generated/models/create_file_upload_response_metadata_type_0.py +46 -0
  47. lightningrod/_generated/models/create_transform_job_request.py +312 -0
  48. lightningrod/_generated/models/dataset_metadata.py +69 -0
  49. lightningrod/_generated/models/estimate_cost_request.py +243 -0
  50. lightningrod/_generated/models/estimate_cost_response.py +117 -0
  51. lightningrod/_generated/models/event_usage_summary.py +80 -0
  52. lightningrod/_generated/models/file_set.py +128 -0
  53. lightningrod/_generated/models/file_set_file.py +203 -0
  54. lightningrod/_generated/models/file_set_file_metadata_type_0.py +57 -0
  55. lightningrod/_generated/models/file_set_query_seed_generator.py +136 -0
  56. lightningrod/_generated/models/file_set_seed_generator.py +126 -0
  57. lightningrod/_generated/models/filter_criteria.py +83 -0
  58. lightningrod/_generated/models/forward_looking_question.py +130 -0
  59. lightningrod/_generated/models/forward_looking_question_generator.py +217 -0
  60. lightningrod/_generated/models/gdelt_seed_generator.py +103 -0
  61. lightningrod/_generated/models/http_validation_error.py +79 -0
  62. lightningrod/_generated/models/job_usage.py +185 -0
  63. lightningrod/_generated/models/job_usage_by_step_type_0.py +59 -0
  64. lightningrod/_generated/models/label.py +143 -0
  65. lightningrod/_generated/models/list_file_set_files_response.py +113 -0
  66. lightningrod/_generated/models/list_file_sets_response.py +75 -0
  67. lightningrod/_generated/models/llm_model_usage_summary.py +98 -0
  68. lightningrod/_generated/models/mock_transform_config.py +243 -0
  69. lightningrod/_generated/models/mock_transform_config_metadata_additions.py +46 -0
  70. lightningrod/_generated/models/model_config.py +316 -0
  71. lightningrod/_generated/models/model_source_type.py +16 -0
  72. lightningrod/_generated/models/news_context.py +82 -0
  73. lightningrod/_generated/models/news_context_generator.py +127 -0
  74. lightningrod/_generated/models/news_seed_generator.py +220 -0
  75. lightningrod/_generated/models/paginated_samples_response.py +113 -0
  76. lightningrod/_generated/models/pipeline_metrics_response.py +99 -0
  77. lightningrod/_generated/models/question.py +74 -0
  78. lightningrod/_generated/models/question_and_label_generator.py +217 -0
  79. lightningrod/_generated/models/question_generator.py +217 -0
  80. lightningrod/_generated/models/question_pipeline.py +417 -0
  81. lightningrod/_generated/models/question_renderer.py +123 -0
  82. lightningrod/_generated/models/rag_context.py +82 -0
  83. lightningrod/_generated/models/response_message.py +69 -0
  84. lightningrod/_generated/models/rollout.py +130 -0
  85. lightningrod/_generated/models/rollout_generator.py +139 -0
  86. lightningrod/_generated/models/rollout_parsed_output_type_0.py +46 -0
  87. lightningrod/_generated/models/sample.py +323 -0
  88. lightningrod/_generated/models/sample_meta.py +46 -0
  89. lightningrod/_generated/models/seed.py +135 -0
  90. lightningrod/_generated/models/step_cost_breakdown.py +109 -0
  91. lightningrod/_generated/models/transform_job.py +268 -0
  92. lightningrod/_generated/models/transform_job_status.py +11 -0
  93. lightningrod/_generated/models/transform_step_metrics_response.py +131 -0
  94. lightningrod/_generated/models/transform_type.py +25 -0
  95. lightningrod/_generated/models/upload_samples_request.py +75 -0
  96. lightningrod/_generated/models/upload_samples_response.py +69 -0
  97. lightningrod/_generated/models/usage.py +77 -0
  98. lightningrod/_generated/models/usage_summary.py +102 -0
  99. lightningrod/_generated/models/usage_summary_events.py +59 -0
  100. lightningrod/_generated/models/usage_summary_llm_by_model.py +59 -0
  101. lightningrod/_generated/models/validate_sample_response.py +69 -0
  102. lightningrod/_generated/models/validation_error.py +90 -0
  103. lightningrod/_generated/models/web_search_labeler.py +120 -0
  104. lightningrod/_generated/py.typed +1 -0
  105. lightningrod/_generated/types.py +54 -0
  106. lightningrod/client.py +48 -0
  107. lightningrod/datasets/__init__.py +4 -0
  108. lightningrod/datasets/client.py +174 -0
  109. lightningrod/datasets/dataset.py +255 -0
  110. lightningrod/files/__init__.py +0 -0
  111. lightningrod/files/client.py +58 -0
  112. lightningrod/filesets/__init__.py +0 -0
  113. lightningrod/filesets/client.py +106 -0
  114. lightningrod/organization/__init__.py +0 -0
  115. lightningrod/organization/client.py +17 -0
  116. lightningrod/py.typed +0 -0
  117. lightningrod/transforms/__init__.py +0 -0
  118. lightningrod/transforms/client.py +154 -0
  119. lightningrod_ai-0.1.6.dist-info/METADATA +122 -0
  120. lightningrod_ai-0.1.6.dist-info/RECORD +123 -0
  121. lightningrod_ai-0.1.6.dist-info/WHEEL +5 -0
  122. lightningrod_ai-0.1.6.dist-info/licenses/LICENSE +23 -0
  123. 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