UncountablePythonSDK 0.0.104__py3-none-any.whl → 0.0.109__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 UncountablePythonSDK might be problematic. Click here for more details.

Files changed (44) hide show
  1. docs/requirements.txt +2 -2
  2. examples/integration-server/jobs/materials_auto/example_wh.py +15 -11
  3. pkgs/argument_parser/argument_parser.py +52 -17
  4. pkgs/filesystem_utils/_gdrive_session.py +1 -1
  5. pkgs/serialization/annotation.py +3 -3
  6. pkgs/serialization/missing_sentry.py +1 -1
  7. pkgs/serialization/serial_alias.py +2 -2
  8. pkgs/serialization/serial_class.py +1 -12
  9. pkgs/serialization/serial_generic.py +1 -1
  10. pkgs/serialization/serial_union.py +3 -3
  11. pkgs/serialization_util/serialization_helpers.py +4 -1
  12. pkgs/type_spec/builder.py +4 -1
  13. pkgs/type_spec/config.py +5 -2
  14. pkgs/type_spec/cross_output_links.py +1 -1
  15. pkgs/type_spec/emit_open_api_util.py +3 -3
  16. pkgs/type_spec/emit_python.py +1 -9
  17. pkgs/type_spec/type_info/emit_type_info.py +1 -1
  18. pkgs/type_spec/util.py +5 -3
  19. pkgs/type_spec/value_spec/__main__.py +7 -0
  20. pkgs/type_spec/value_spec/emit_python.py +2 -0
  21. uncountable/integration/job.py +6 -0
  22. uncountable/integration/queue_runner/datastore/datastore_sqlite.py +1 -1
  23. uncountable/types/api/entity/lookup_entity.py +2 -0
  24. uncountable/types/api/recipes/add_time_series_data.py +0 -1
  25. uncountable/types/api/recipes/edit_recipe_inputs.py +0 -2
  26. uncountable/types/api/recipes/get_recipe_links.py +0 -1
  27. uncountable/types/api/recipes/lock_recipes.py +0 -1
  28. uncountable/types/api/recipes/set_recipe_outputs.py +0 -1
  29. uncountable/types/api/recipes/unlock_recipes.py +0 -1
  30. uncountable/types/client_base.py +21 -0
  31. uncountable/types/client_config_t.py +0 -1
  32. uncountable/types/entity_t.py +55 -21
  33. uncountable/types/field_values.py +4 -0
  34. uncountable/types/field_values_t.py +53 -3
  35. uncountable/types/generic_upload_t.py +0 -1
  36. uncountable/types/job_definition_t.py +0 -2
  37. uncountable/types/recipe_workflow_steps_t.py +0 -1
  38. uncountable/types/response_t.py +0 -1
  39. uncountable/types/webhook_job.py +1 -0
  40. uncountable/types/webhook_job_t.py +11 -0
  41. {uncountablepythonsdk-0.0.104.dist-info → uncountablepythonsdk-0.0.109.dist-info}/METADATA +2 -2
  42. {uncountablepythonsdk-0.0.104.dist-info → uncountablepythonsdk-0.0.109.dist-info}/RECORD +44 -44
  43. {uncountablepythonsdk-0.0.104.dist-info → uncountablepythonsdk-0.0.109.dist-info}/WHEEL +1 -1
  44. {uncountablepythonsdk-0.0.104.dist-info → uncountablepythonsdk-0.0.109.dist-info}/top_level.txt +0 -0
@@ -42,7 +42,6 @@ class RecipeLockBase:
42
42
  # DO NOT MODIFY -- This file is generated by type_spec
43
43
  @serial_class(
44
44
  named_type_path="sdk.api.recipes.lock_recipes.Arguments",
45
- explicit_defaults={"type"},
46
45
  )
47
46
  @dataclasses.dataclass(kw_only=True)
48
47
  class Arguments:
@@ -48,7 +48,6 @@ class NullBehavior(StrEnum):
48
48
  @serial_class(
49
49
  named_type_path="sdk.api.recipes.set_recipe_outputs.RecipeOutputValue",
50
50
  to_string_values={"value_numeric"},
51
- explicit_defaults={"null_behavior"},
52
51
  )
53
52
  @dataclasses.dataclass(kw_only=True)
54
53
  class RecipeOutputValue:
@@ -31,7 +31,6 @@ class RecipeUnlockType(StrEnum):
31
31
  # DO NOT MODIFY -- This file is generated by type_spec
32
32
  @serial_class(
33
33
  named_type_path="sdk.api.recipes.unlock_recipes.Arguments",
34
- explicit_defaults={"type"},
35
34
  )
36
35
  @dataclasses.dataclass(kw_only=True)
37
36
  class Arguments:
@@ -57,6 +57,7 @@ import uncountable.types.api.entity.list_entities as list_entities_t
57
57
  import uncountable.types.api.id_source.list_id_source as list_id_source_t
58
58
  import uncountable.types.api.entity.lock_entity as lock_entity_t
59
59
  import uncountable.types.api.recipes.lock_recipes as lock_recipes_t
60
+ import uncountable.types.api.entity.lookup_entity as lookup_entity_t
60
61
  import uncountable.types.api.id_source.match_id_source as match_id_source_t
61
62
  from uncountable.types import permissions_t
62
63
  from uncountable.types import post_base_t
@@ -1127,6 +1128,26 @@ class ClientMethods(ABC):
1127
1128
  )
1128
1129
  return self.do_request(api_request=api_request, return_type=lock_recipes_t.Data)
1129
1130
 
1131
+ def lookup_entity(
1132
+ self,
1133
+ *,
1134
+ entity_type: entity_t.EntityType,
1135
+ query: lookup_entity_t.LookupEntityQuery,
1136
+ ) -> lookup_entity_t.Data:
1137
+ """Look up an entity based on an identifier or field values
1138
+
1139
+ """
1140
+ args = lookup_entity_t.Arguments(
1141
+ entity_type=entity_type,
1142
+ query=query,
1143
+ )
1144
+ api_request = APIRequest(
1145
+ method=lookup_entity_t.ENDPOINT_METHOD,
1146
+ endpoint=lookup_entity_t.ENDPOINT_PATH,
1147
+ args=args,
1148
+ )
1149
+ return self.do_request(api_request=api_request, return_type=lookup_entity_t.Data)
1150
+
1130
1151
  def match_id_source(
1131
1152
  self,
1132
1153
  *,
@@ -17,7 +17,6 @@ __all__: list[str] = [
17
17
  # DO NOT MODIFY -- This file is generated by type_spec
18
18
  @serial_class(
19
19
  named_type_path="sdk.client_config.ClientConfigOptions",
20
- explicit_defaults={"allow_insecure_tls"},
21
20
  )
22
21
  @dataclasses.dataclass(kw_only=True)
23
22
  class ClientConfigOptions:
@@ -44,15 +44,18 @@ __all__: list[str] = [
44
44
  "condition_parameter_value": "Condition Parameter Value",
45
45
  "constraint": "Constraint",
46
46
  "constraint_set": "Constraint Set",
47
+ "control_type": "Control Type",
47
48
  "curve_settings": "Curve Settings",
48
49
  "custom_entity": "Custom Entity",
50
+ "default_permissions_new_project": "Default Permissions New Project",
49
51
  "doe_run": "Suggest Experiments",
50
52
  "email_record_external": "External Emails",
51
53
  "email_relay_server": "Email Relay Server",
54
+ "enter_recipe_view_preference": "Enter Recipe View Preference",
52
55
  "enter_measurement_view_preference": "Enter Measurement View Preference",
53
- "enter_recipe_view_preference": "Enter Experiment View Preference",
54
56
  "entities_viewed": "Entities Viewed",
55
57
  "entity_annotation": "Annotation",
58
+ "entity_definition_field_group": "Entity Definition Field Group",
56
59
  "entity_field": "Field",
57
60
  "entity_field_audit_log": "Entity Field Audit Log",
58
61
  "entity_link": "Entity Link",
@@ -82,7 +85,7 @@ __all__: list[str] = [
82
85
  "ingredient_mat_family": "Ingredient Material Family",
83
86
  "ingredient_role": "Ingredient Role",
84
87
  "ingredient_tag": "Ingredient Subcategory",
85
- "ingredient_tag_map": "Ingredient Tag Map",
88
+ "ingredient_tag_map": "Ingredient Subcategory Mapping",
86
89
  "input_group": "Input Group",
87
90
  "inv_local_locations": "Inventory Location",
88
91
  "inventory_amount": "Inventory Item",
@@ -91,9 +94,11 @@ __all__: list[str] = [
91
94
  "lab_location": "Lab Location",
92
95
  "lab_request": "Lab Request",
93
96
  "license": "License",
94
- "maintenance_schedule": "Maintenance Schedule",
97
+ "maintenance_schedule": "Equipment Action Type",
95
98
  "material_family": "Material Family",
96
- "measurement_group_recipe": "Measurement Group Experiment",
99
+ "measurement_group": "Measurement Group",
100
+ "measurement_group_input": "Measurement Group Input",
101
+ "measurement_group_recipe": "Measurement Group Recipe",
97
102
  "ml_job": "Batch Processing Job",
98
103
  "naming_scheme": "Naming Scheme",
99
104
  "naming_counter": "Naming Counter",
@@ -108,49 +113,59 @@ __all__: list[str] = [
108
113
  "output_condition_parameter_analytical_method_category": "Output Condition Parameter Analytical Method Category",
109
114
  "output_condition_parameter_analytical_method": "Output Condition Parameter Analytical Method",
110
115
  "output_group": "Output Group",
116
+ "output_preferences": "Output Preferences",
111
117
  "permission": "Permission",
112
- "permissions_recipe_link_inheritance": "Permissions Experiment Link Inheritance",
118
+ "permissions_recipe_link_inheritance": "Permissions Recipe Link Inheritance",
113
119
  "phase_workflow": "Phase Workflow",
114
120
  "platform_config": "Platform Config",
121
+ "portal_form": "Portal Form",
115
122
  "predictive_model": "Predictive Model",
116
123
  "product": "Product",
124
+ "product_material_family": "Product Material Family",
117
125
  "project": "Project",
118
126
  "project_workbook_comment": "Notebook Cell Comment",
119
127
  "recipe": "Experiment",
120
128
  "recipe_audit_log": "Experiment Audit Log",
121
- "recipe_calculation": "Experiment Calculation",
129
+ "recipe_calculation": "Recipe Calculation",
122
130
  "recipe_check": "Experiment Check",
123
- "recipe_export": "Experiment Export",
131
+ "recipe_export": "Recipe Export",
124
132
  "recipe_goal": "Experiment Goal",
125
- "recipe_ingredient": "Experiment Ingredient",
126
- "recipe_ingredient_actual": "Experiment Ingredient Actual",
127
- "recipe_ingredients_compounded": "Experiment Ingredients Compounded",
128
- "recipe_ingredients_compounded_calculation": "Experiment Ingredients Compounded Calculation",
129
- "recipe_output": "Experiment Output",
130
- "recipe_output_metadata": "Experiment Output Metadata",
131
- "recipe_permission_view": "Experiment Permission View",
132
- "recipe_project": "Experiment Project",
133
- "recipe_step": "Experiment Step",
134
- "recipe_workflow_step": "Experiment Workflow Step",
135
- "recipe_tag": "Experiment Tag",
133
+ "recipe_ingredient": "Recipe Ingredient",
134
+ "recipe_ingredient_actual": "Recipe Ingredient Actual",
135
+ "recipe_ingredients_compounded": "Recipe Ingredients Compounded",
136
+ "recipe_ingredients_compounded_calculation": "Recipe Ingredients Compounded Calculation",
137
+ "recipe_output": "Recipe Output",
138
+ "recipe_output_annotation": "Recipe Output Annotation",
139
+ "recipe_output_metadata": "Recipe Output Metadata",
140
+ "recipe_permission_view": "Recipe Permission View",
141
+ "recipe_project": "Recipe Project",
142
+ "recipe_step": "Recipe Step",
143
+ "recipe_workflow_step": "Recipe Workflow Step",
144
+ "recipe_tag": "Recipe Tag",
136
145
  "recipe_metadata": "Experiment Metadata",
137
146
  "recipe_metadata_mapping": "Experiment Metadata Mapping",
138
147
  "metadata_value": "Metadata Value",
139
148
  "review": "Review",
140
149
  "review_entity_user_status": "Review Entity User Status",
141
150
  "review_user": "Review User",
151
+ "rlw_audit_log": "Rlw Audit Log",
142
152
  "rlw_phase": "Phase",
143
153
  "rlw_trigger": "Trigger",
144
154
  "rlw_trigger_set": "Trigger Set",
155
+ "runsheet_configuration": "Runsheet Configuration",
145
156
  "safety_data_sheet": "Safety Data Sheet",
146
157
  "scheduled_notification": "Scheduled Notification",
158
+ "scratch_pad": "Scratch Pad",
147
159
  "specs": "Spec",
148
- "split_template": "Split Template",
160
+ "save": "Save",
161
+ "split_template": "Test Method",
149
162
  "structured_loading_user_config": "List Config",
163
+ "subscription": "Subscription",
150
164
  "table_builder_config": "Table Builder Config",
151
165
  "task": "Task",
152
166
  "task_board": "Task Board",
153
167
  "template": "Template",
168
+ "test_entity": "Test Entity",
154
169
  "time_series_segment": "Time Series Segment",
155
170
  "timesheet_entry": "Timesheet Entry",
156
171
  "training_run": "Analyze Experiment",
@@ -161,6 +176,7 @@ __all__: list[str] = [
161
176
  "units": "Units",
162
177
  "user_favorite": "User Favorite",
163
178
  "user": "User",
179
+ "user_analytics_event": "User Analytics Event",
164
180
  "user_certification": "User Certification",
165
181
  "user_group": "User Group",
166
182
  "user_list_set": "User List Set",
@@ -185,6 +201,7 @@ __all__: list[str] = [
185
201
  "public_data_sourced_condition_parameter": "ChemQuery Condition Parameter",
186
202
  "public_data_sourced_company": "ChemQuery Company",
187
203
  "uploader": "Uploader",
204
+ "calculation_material_family": "Calculation Material Family",
188
205
  },
189
206
  )
190
207
  class EntityType(StrEnum):
@@ -205,15 +222,18 @@ class EntityType(StrEnum):
205
222
  CONDITION_PARAMETER_VALUE = "condition_parameter_value"
206
223
  CONSTRAINT = "constraint"
207
224
  CONSTRAINT_SET = "constraint_set"
225
+ CONTROL_TYPE = "control_type"
208
226
  CURVE_SETTINGS = "curve_settings"
209
227
  CUSTOM_ENTITY = "custom_entity"
228
+ DEFAULT_PERMISSIONS_NEW_PROJECT = "default_permissions_new_project"
210
229
  DOE_RUN = "doe_run"
211
230
  EMAIL_RECORD_EXTERNAL = "email_record_external"
212
231
  EMAIL_RELAY_SERVER = "email_relay_server"
213
- ENTER_MEASUREMENT_VIEW_PREFERENCE = "enter_measurement_view_preference"
214
232
  ENTER_RECIPE_VIEW_PREFERENCE = "enter_recipe_view_preference"
233
+ ENTER_MEASUREMENT_VIEW_PREFERENCE = "enter_measurement_view_preference"
215
234
  ENTITIES_VIEWED = "entities_viewed"
216
235
  ENTITY_ANNOTATION = "entity_annotation"
236
+ ENTITY_DEFINITION_FIELD_GROUP = "entity_definition_field_group"
217
237
  ENTITY_FIELD = "entity_field"
218
238
  ENTITY_FIELD_AUDIT_LOG = "entity_field_audit_log"
219
239
  ENTITY_LINK = "entity_link"
@@ -254,6 +274,8 @@ class EntityType(StrEnum):
254
274
  LICENSE = "license"
255
275
  MAINTENANCE_SCHEDULE = "maintenance_schedule"
256
276
  MATERIAL_FAMILY = "material_family"
277
+ MEASUREMENT_GROUP = "measurement_group"
278
+ MEASUREMENT_GROUP_INPUT = "measurement_group_input"
257
279
  MEASUREMENT_GROUP_RECIPE = "measurement_group_recipe"
258
280
  ML_JOB = "ml_job"
259
281
  NAMING_SCHEME = "naming_scheme"
@@ -269,12 +291,15 @@ class EntityType(StrEnum):
269
291
  OUTPUT_CONDITION_PARAMETER_ANALYTICAL_METHOD_CATEGORY = "output_condition_parameter_analytical_method_category"
270
292
  OUTPUT_CONDITION_PARAMETER_ANALYTICAL_METHOD = "output_condition_parameter_analytical_method"
271
293
  OUTPUT_GROUP = "output_group"
294
+ OUTPUT_PREFERENCES = "output_preferences"
272
295
  PERMISSION = "permission"
273
296
  PERMISSIONS_RECIPE_LINK_INHERITANCE = "permissions_recipe_link_inheritance"
274
297
  PHASE_WORKFLOW = "phase_workflow"
275
298
  PLATFORM_CONFIG = "platform_config"
299
+ PORTAL_FORM = "portal_form"
276
300
  PREDICTIVE_MODEL = "predictive_model"
277
301
  PRODUCT = "product"
302
+ PRODUCT_MATERIAL_FAMILY = "product_material_family"
278
303
  PROJECT = "project"
279
304
  PROJECT_WORKBOOK_COMMENT = "project_workbook_comment"
280
305
  RECIPE = "recipe"
@@ -288,6 +313,7 @@ class EntityType(StrEnum):
288
313
  RECIPE_INGREDIENTS_COMPOUNDED = "recipe_ingredients_compounded"
289
314
  RECIPE_INGREDIENTS_COMPOUNDED_CALCULATION = "recipe_ingredients_compounded_calculation"
290
315
  RECIPE_OUTPUT = "recipe_output"
316
+ RECIPE_OUTPUT_ANNOTATION = "recipe_output_annotation"
291
317
  RECIPE_OUTPUT_METADATA = "recipe_output_metadata"
292
318
  RECIPE_PERMISSION_VIEW = "recipe_permission_view"
293
319
  RECIPE_PROJECT = "recipe_project"
@@ -300,18 +326,24 @@ class EntityType(StrEnum):
300
326
  REVIEW = "review"
301
327
  REVIEW_ENTITY_USER_STATUS = "review_entity_user_status"
302
328
  REVIEW_USER = "review_user"
329
+ RLW_AUDIT_LOG = "rlw_audit_log"
303
330
  RLW_PHASE = "rlw_phase"
304
331
  RLW_TRIGGER = "rlw_trigger"
305
332
  RLW_TRIGGER_SET = "rlw_trigger_set"
333
+ RUNSHEET_CONFIGURATION = "runsheet_configuration"
306
334
  SAFETY_DATA_SHEET = "safety_data_sheet"
307
335
  SCHEDULED_NOTIFICATION = "scheduled_notification"
336
+ SCRATCH_PAD = "scratch_pad"
308
337
  SPECS = "specs"
338
+ SAVE = "save"
309
339
  SPLIT_TEMPLATE = "split_template"
310
340
  STRUCTURED_LOADING_USER_CONFIG = "structured_loading_user_config"
341
+ SUBSCRIPTION = "subscription"
311
342
  TABLE_BUILDER_CONFIG = "table_builder_config"
312
343
  TASK = "task"
313
344
  TASK_BOARD = "task_board"
314
345
  TEMPLATE = "template"
346
+ TEST_ENTITY = "test_entity"
315
347
  TIME_SERIES_SEGMENT = "time_series_segment"
316
348
  TIMESHEET_ENTRY = "timesheet_entry"
317
349
  TRAINING_RUN = "training_run"
@@ -322,6 +354,7 @@ class EntityType(StrEnum):
322
354
  UNITS = "units"
323
355
  USER_FAVORITE = "user_favorite"
324
356
  USER = "user"
357
+ USER_ANALYTICS_EVENT = "user_analytics_event"
325
358
  USER_CERTIFICATION = "user_certification"
326
359
  USER_GROUP = "user_group"
327
360
  USER_LIST_SET = "user_list_set"
@@ -346,11 +379,12 @@ class EntityType(StrEnum):
346
379
  PUBLIC_DATA_SOURCED_CONDITION_PARAMETER = "public_data_sourced_condition_parameter"
347
380
  PUBLIC_DATA_SOURCED_COMPANY = "public_data_sourced_company"
348
381
  UPLOADER = "uploader"
382
+ CALCULATION_MATERIAL_FAMILY = "calculation_material_family"
349
383
 
350
384
 
351
385
  # DO NOT MODIFY -- This file is generated by type_spec
352
386
  LimitedEntityType = typing.Annotated[
353
- typing.Literal[EntityType.LAB_REQUEST] | typing.Literal[EntityType.APPROVAL] | typing.Literal[EntityType.CUSTOM_ENTITY] | typing.Literal[EntityType.INGREDIENT_ATTRIBUTE] | typing.Literal[EntityType.INVENTORY_AMOUNT] | typing.Literal[EntityType.TASK] | typing.Literal[EntityType.PROJECT] | typing.Literal[EntityType.EQUIPMENT] | typing.Literal[EntityType.INV_LOCAL_LOCATIONS] | typing.Literal[EntityType.FIELD_OPTION_SET] | typing.Literal[EntityType.WEBHOOK] | typing.Literal[EntityType.SPECS] | typing.Literal[EntityType.GOAL] | typing.Literal[EntityType.INGREDIENT_TAG_MAP] | typing.Literal[EntityType.INGREDIENT_TAG] | typing.Literal[EntityType.CONDITION_PARAMETER] | typing.Literal[EntityType.OUTPUT] | typing.Literal[EntityType.OUTPUT_CONDITION_PARAMETER] | typing.Literal[EntityType.ASYNC_JOB] | typing.Literal[EntityType.CONSTRAINT] | typing.Literal[EntityType.INGREDIENT_CATEGORY_ALL] | typing.Literal[EntityType.TIME_SERIES_SEGMENT],
387
+ typing.Literal[EntityType.LAB_REQUEST] | typing.Literal[EntityType.APPROVAL] | typing.Literal[EntityType.CUSTOM_ENTITY] | typing.Literal[EntityType.INGREDIENT_ATTRIBUTE] | typing.Literal[EntityType.INVENTORY_AMOUNT] | typing.Literal[EntityType.TASK] | typing.Literal[EntityType.PROJECT] | typing.Literal[EntityType.EQUIPMENT] | typing.Literal[EntityType.INV_LOCAL_LOCATIONS] | typing.Literal[EntityType.FIELD_OPTION_SET] | typing.Literal[EntityType.WEBHOOK] | typing.Literal[EntityType.SPECS] | typing.Literal[EntityType.GOAL] | typing.Literal[EntityType.INGREDIENT_TAG_MAP] | typing.Literal[EntityType.INGREDIENT_TAG] | typing.Literal[EntityType.CONDITION_PARAMETER] | typing.Literal[EntityType.OUTPUT] | typing.Literal[EntityType.OUTPUT_CONDITION_PARAMETER] | typing.Literal[EntityType.ASYNC_JOB] | typing.Literal[EntityType.CONSTRAINT] | typing.Literal[EntityType.INGREDIENT_CATEGORY_ALL] | typing.Literal[EntityType.TIME_SERIES_SEGMENT] | typing.Literal[EntityType.EQUIPMENT_MAINTENANCE] | typing.Literal[EntityType.MAINTENANCE_SCHEDULE],
354
388
  serial_alias_annotation(
355
389
  named_type_path="sdk.entity.LimitedEntityType",
356
390
  ),
@@ -16,10 +16,14 @@ from .field_values_t import FieldValueFieldOptions as FieldValueFieldOptions
16
16
  from .field_values_t import FieldValueId as FieldValueId
17
17
  from .field_values_t import FieldValueIds as FieldValueIds
18
18
  from .field_values_t import FieldValueText as FieldValueText
19
+ from .field_values_t import FieldValueTexts as FieldValueTexts
19
20
  from .field_values_t import FieldValueBoolean as FieldValueBoolean
20
21
  from .field_values_t import FieldValueNumeric as FieldValueNumeric
21
22
  from .field_values_t import FieldValueBatchReference as FieldValueBatchReference
22
23
  from .field_values_t import FieldValueNull as FieldValueNull
24
+ from .field_values_t import FieldValueNotes as FieldValueNotes
25
+ from .field_values_t import FieldValueDate as FieldValueDate
26
+ from .field_values_t import FieldValueDatetime as FieldValueDatetime
23
27
  from .field_values_t import FieldValue as FieldValue
24
28
  from .field_values_t import FieldArgumentValue as FieldArgumentValue
25
29
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -24,14 +24,18 @@ __all__: list[str] = [
24
24
  "FieldValueBase",
25
25
  "FieldValueBatchReference",
26
26
  "FieldValueBoolean",
27
+ "FieldValueDate",
28
+ "FieldValueDatetime",
27
29
  "FieldValueFieldOption",
28
30
  "FieldValueFieldOptions",
29
31
  "FieldValueFiles",
30
32
  "FieldValueId",
31
33
  "FieldValueIds",
34
+ "FieldValueNotes",
32
35
  "FieldValueNull",
33
36
  "FieldValueNumeric",
34
37
  "FieldValueText",
38
+ "FieldValueTexts",
35
39
  "FieldValueType",
36
40
  "ValueResolution",
37
41
  ]
@@ -90,6 +94,7 @@ class ArgumentValueId:
90
94
  class FieldValueType(StrEnum):
91
95
  FILES = "files"
92
96
  TEXT = "text"
97
+ TEXTS = "texts"
93
98
  ID = "id"
94
99
  IDS = "ids"
95
100
  BOOLEAN = "boolean"
@@ -98,6 +103,9 @@ class FieldValueType(StrEnum):
98
103
  FIELD_OPTION = "field_option"
99
104
  FIELD_OPTIONS = "field_options"
100
105
  NULL_VALUE = "null_value"
106
+ NOTES = "notes"
107
+ DATE = "date"
108
+ DATETIME = "datetime"
101
109
 
102
110
 
103
111
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -130,7 +138,6 @@ class ValueResolution(StrEnum):
130
138
  @serial_class(
131
139
  named_type_path="sdk.field_values.FieldValueFieldOption",
132
140
  parse_require={"type"},
133
- explicit_defaults={"value_resolution"},
134
141
  )
135
142
  @dataclasses.dataclass(kw_only=True)
136
143
  class FieldValueFieldOption(FieldValueBase):
@@ -143,7 +150,6 @@ class FieldValueFieldOption(FieldValueBase):
143
150
  @serial_class(
144
151
  named_type_path="sdk.field_values.FieldValueFieldOptions",
145
152
  parse_require={"type"},
146
- explicit_defaults={"value_resolution"},
147
153
  )
148
154
  @dataclasses.dataclass(kw_only=True)
149
155
  class FieldValueFieldOptions(FieldValueBase):
@@ -187,6 +193,17 @@ class FieldValueText(FieldValueBase):
187
193
  value: str
188
194
 
189
195
 
196
+ # DO NOT MODIFY -- This file is generated by type_spec
197
+ @serial_class(
198
+ named_type_path="sdk.field_values.FieldValueTexts",
199
+ parse_require={"type"},
200
+ )
201
+ @dataclasses.dataclass(kw_only=True)
202
+ class FieldValueTexts(FieldValueBase):
203
+ type: typing.Literal[FieldValueType.TEXTS] = FieldValueType.TEXTS
204
+ value: list[str]
205
+
206
+
190
207
  # DO NOT MODIFY -- This file is generated by type_spec
191
208
  @serial_class(
192
209
  named_type_path="sdk.field_values.FieldValueBoolean",
@@ -232,9 +249,42 @@ class FieldValueNull(FieldValueBase):
232
249
  type: typing.Literal[FieldValueType.NULL_VALUE] = FieldValueType.NULL_VALUE
233
250
 
234
251
 
252
+ # DO NOT MODIFY -- This file is generated by type_spec
253
+ @serial_class(
254
+ named_type_path="sdk.field_values.FieldValueNotes",
255
+ parse_require={"type"},
256
+ )
257
+ @dataclasses.dataclass(kw_only=True)
258
+ class FieldValueNotes(FieldValueBase):
259
+ type: typing.Literal[FieldValueType.NOTES] = FieldValueType.NOTES
260
+ value: str
261
+
262
+
263
+ # DO NOT MODIFY -- This file is generated by type_spec
264
+ @serial_class(
265
+ named_type_path="sdk.field_values.FieldValueDate",
266
+ parse_require={"type"},
267
+ )
268
+ @dataclasses.dataclass(kw_only=True)
269
+ class FieldValueDate(FieldValueBase):
270
+ type: typing.Literal[FieldValueType.DATE] = FieldValueType.DATE
271
+ value: datetime.date
272
+
273
+
274
+ # DO NOT MODIFY -- This file is generated by type_spec
275
+ @serial_class(
276
+ named_type_path="sdk.field_values.FieldValueDatetime",
277
+ parse_require={"type"},
278
+ )
279
+ @dataclasses.dataclass(kw_only=True)
280
+ class FieldValueDatetime(FieldValueBase):
281
+ type: typing.Literal[FieldValueType.DATETIME] = FieldValueType.DATETIME
282
+ value: datetime.datetime
283
+
284
+
235
285
  # DO NOT MODIFY -- This file is generated by type_spec
236
286
  FieldValue = typing.Annotated[
237
- FieldValueFiles | FieldValueId | FieldValueIds | FieldValueText | FieldValueBoolean | FieldValueNumeric | FieldValueBatchReference | FieldValueFieldOption | FieldValueFieldOptions | FieldValueNull,
287
+ FieldValueFiles | FieldValueId | FieldValueIds | FieldValueText | FieldValueTexts | FieldValueBoolean | FieldValueNumeric | FieldValueBatchReference | FieldValueFieldOption | FieldValueFieldOptions | FieldValueNull | FieldValueNotes | FieldValueDate | FieldValueDatetime,
238
288
  serial_union_annotation(
239
289
  named_type_path="sdk.field_values.FieldValue",
240
290
  ),
@@ -109,7 +109,6 @@ UploadDestination = typing.Annotated[
109
109
  # DO NOT MODIFY -- This file is generated by type_spec
110
110
  @serial_class(
111
111
  named_type_path="sdk.generic_upload.GenericUploadStrategy",
112
- explicit_defaults={"skip_moving_files"},
113
112
  )
114
113
  @dataclasses.dataclass(kw_only=True)
115
114
  class GenericUploadStrategy:
@@ -168,7 +168,6 @@ JobExecutor = typing.Annotated[
168
168
  # DO NOT MODIFY -- This file is generated by type_spec
169
169
  @serial_class(
170
170
  named_type_path="sdk.job_definition.JobLoggingSettings",
171
- explicit_defaults={"enabled"},
172
171
  )
173
172
  @dataclasses.dataclass(kw_only=True)
174
173
  class JobLoggingSettings:
@@ -179,7 +178,6 @@ class JobLoggingSettings:
179
178
  # DO NOT MODIFY -- This file is generated by type_spec
180
179
  @serial_class(
181
180
  named_type_path="sdk.job_definition.JobDefinitionBase",
182
- explicit_defaults={"enabled"},
183
181
  )
184
182
  @dataclasses.dataclass(kw_only=True)
185
183
  class JobDefinitionBase:
@@ -59,7 +59,6 @@ class RecipeWorkflowStepPosition(StrEnum):
59
59
  @serial_class(
60
60
  named_type_path="sdk.recipe_workflow_steps.RecipeWorkflowStepIdentifierWorkflowStep",
61
61
  parse_require={"type"},
62
- explicit_defaults={"position"},
63
62
  )
64
63
  @dataclasses.dataclass(kw_only=True)
65
64
  class RecipeWorkflowStepIdentifierWorkflowStep(RecipeWorkflowStepIdentifierBase):
@@ -18,7 +18,6 @@ __all__: list[str] = [
18
18
  @serial_class(
19
19
  named_type_path="sdk.response.Response",
20
20
  parse_require={"status"},
21
- explicit_defaults={"status"},
22
21
  )
23
22
  @dataclasses.dataclass(kw_only=True)
24
23
  class Response:
@@ -5,4 +5,5 @@
5
5
  # Kept only for SDK backwards compatibility
6
6
  from .webhook_job_t import WebhookEventPayload as WebhookEventPayload
7
7
  from .webhook_job_t import WebhookEventBody as WebhookEventBody
8
+ from .webhook_job_t import RunsheetWebhookPayload as RunsheetWebhookPayload
8
9
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -9,8 +9,10 @@ from decimal import Decimal # noqa: F401
9
9
  import dataclasses
10
10
  from pkgs.serialization import serial_class
11
11
  from . import base_t
12
+ from . import entity_t
12
13
 
13
14
  __all__: list[str] = [
15
+ "RunsheetWebhookPayload",
14
16
  "WebhookEventBody",
15
17
  "WebhookEventPayload",
16
18
  ]
@@ -33,4 +35,13 @@ class WebhookEventPayload:
33
35
  @dataclasses.dataclass(kw_only=True)
34
36
  class WebhookEventBody(WebhookEventPayload):
35
37
  event_id: str
38
+
39
+
40
+ # DO NOT MODIFY -- This file is generated by type_spec
41
+ @serial_class(
42
+ named_type_path="sdk.webhook_job.RunsheetWebhookPayload",
43
+ )
44
+ @dataclasses.dataclass(kw_only=True)
45
+ class RunsheetWebhookPayload:
46
+ entities: list[entity_t.Entity]
36
47
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: UncountablePythonSDK
3
- Version: 0.0.104
3
+ Version: 0.0.109
4
4
  Summary: Uncountable SDK
5
5
  Project-URL: Homepage, https://github.com/uncountableinc/uncountable-python-sdk
6
6
  Project-URL: Repository, https://github.com/uncountableinc/uncountable-python-sdk.git