UncountablePythonSDK 0.0.103__py3-none-any.whl → 0.0.104__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.

@@ -13,3 +13,7 @@ class WebhookExample(WebhookJob):
13
13
  def run(self, args: JobArguments, payload: typing.Any) -> JobResult:
14
14
  args.logger.log_info(f"webhook invoked with payload: {payload}")
15
15
  return JobResult(success=True)
16
+
17
+ @property
18
+ def webhook_payload_type(self) -> typing.Any:
19
+ return dict
@@ -17,6 +17,7 @@ class _SerialClassData(SerialBase):
17
17
  to_string_values: set[str] = dataclasses.field(default_factory=set)
18
18
  parse_require: set[str] = dataclasses.field(default_factory=set)
19
19
  named_type_path: str | None = None
20
+ explicit_defaults: set[str] = dataclasses.field(default_factory=set)
20
21
 
21
22
 
22
23
  EMPTY_SERIAL_CLASS_DATA = _SerialClassData()
@@ -30,6 +31,7 @@ def serial_class(
30
31
  parse_require: set[str] | None = None,
31
32
  named_type_path: str | None = None,
32
33
  is_dynamic_allowed: bool = False,
34
+ explicit_defaults: set[str] | None = None,
33
35
  ) -> Callable[[ClassT], ClassT]:
34
36
  """
35
37
  An additional decorator to a dataclass that specifies serialization options.
@@ -52,6 +54,9 @@ def serial_class(
52
54
  requiring them for the API input.
53
55
  @param named_type_path
54
56
  The type_spec type-path to this type. This applies only to named types.
57
+ @param explicit_defaults
58
+ Fields that have explicit defaults in the definition. This is useful for
59
+ falling back onto these defaults when the field is mandatory but receives a null value.
55
60
  """
56
61
 
57
62
  def decorate(orig_class: ClassT) -> ClassT:
@@ -63,6 +68,7 @@ def serial_class(
63
68
  named_type_path=named_type_path,
64
69
  from_decorator=True,
65
70
  is_dynamic_allowed=is_dynamic_allowed,
71
+ explicit_defaults=explicit_defaults or set(),
66
72
  )
67
73
  return orig_class
68
74
 
@@ -90,6 +96,9 @@ class SerialClassDataInspector(SerialInspector[ClassT]):
90
96
  def has_parse_require(self, key: str) -> bool:
91
97
  return key in self.current.parse_require
92
98
 
99
+ def has_explicit_default(self, key: str) -> bool:
100
+ return key in self.current.explicit_defaults
101
+
93
102
 
94
103
  def get_merged_serial_class_data(type_class: type[Any]) -> _SerialClassData | None:
95
104
  base_class_data = (
@@ -115,6 +124,8 @@ def get_merged_serial_class_data(type_class: type[Any]) -> _SerialClassData | No
115
124
  | curr_base_class_data.to_string_values,
116
125
  parse_require=base_class_data.parse_require
117
126
  | curr_base_class_data.parse_require,
127
+ explicit_defaults=base_class_data.explicit_defaults
128
+ | curr_base_class_data.explicit_defaults,
118
129
  )
119
130
  return base_class_data
120
131
 
pkgs/type_spec/builder.py CHANGED
@@ -62,6 +62,7 @@ class SpecProperty:
62
62
  # Holds extra information that will be emitted along with type_info. The builder knows nothing
63
63
  # about the contents of this information.
64
64
  ext_info: Any = None
65
+ explicit_default: bool = False
65
66
 
66
67
 
67
68
  class NameCase(StrEnum):
@@ -389,6 +390,7 @@ class SpecTypeDefn(SpecType):
389
390
  ptype = builder.parse_type(self.namespace, data_type, scope=self)
390
391
 
391
392
  default_spec = data.get("default", MISSING)
393
+ explicit_default = default_spec != MISSING
392
394
  if default_spec == MISSING:
393
395
  has_default = False
394
396
  default = None
@@ -419,6 +421,7 @@ class SpecTypeDefn(SpecType):
419
421
  parse_require=parse_require,
420
422
  desc=data.get("desc", None),
421
423
  ext_info=ext_info,
424
+ explicit_default=explicit_default,
422
425
  )
423
426
  finally:
424
427
  builder.pop_where()
@@ -697,6 +697,7 @@ class EmittedPropertiesMetadata:
697
697
  unconverted_values: set[str]
698
698
  to_string_values: set[str]
699
699
  parse_require: set[str]
700
+ explicit_defaults: set[str]
700
701
 
701
702
 
702
703
  def _emit_type_properties(
@@ -728,6 +729,7 @@ def _emit_properties(
728
729
  unconverted_values: set[str] = set()
729
730
  to_string_values: set[str] = set()
730
731
  parse_require: set[str] = set()
732
+ explicit_defaults: set[str] = set()
731
733
 
732
734
  if len(properties) > 0:
733
735
 
@@ -748,6 +750,9 @@ def _emit_properties(
748
750
  if prop.parse_require:
749
751
  parse_require.add(py_name)
750
752
 
753
+ if prop.explicit_default:
754
+ explicit_defaults.add(py_name)
755
+
751
756
  ref_type = refer_to(ctx, stype)
752
757
  default = None
753
758
  if prop.extant == builder.PropertyExtant.missing:
@@ -791,6 +796,7 @@ def _emit_properties(
791
796
  unconverted_values=unconverted_values,
792
797
  to_string_values=to_string_values,
793
798
  parse_require=parse_require,
799
+ explicit_defaults=explicit_defaults,
794
800
  )
795
801
 
796
802
 
@@ -881,6 +887,7 @@ def _emit_type(ctx: Context, stype: builder.SpecType) -> None:
881
887
  unconverted_values = emitted_properties_metadata.unconverted_values
882
888
  to_string_values = emitted_properties_metadata.to_string_values
883
889
  parse_require = emitted_properties_metadata.parse_require
890
+ explicit_defaults = emitted_properties_metadata.explicit_defaults
884
891
 
885
892
  _emit_generics(ctx, generics)
886
893
 
@@ -902,6 +909,7 @@ def _emit_type(ctx: Context, stype: builder.SpecType) -> None:
902
909
  write_values("unconverted_values", unconverted_values)
903
910
  write_values("to_string_values", to_string_values)
904
911
  write_values("parse_require", parse_require)
912
+ write_values("explicit_defaults", explicit_defaults)
905
913
 
906
914
  ctx.out.write(")\n")
907
915
 
@@ -45,6 +45,7 @@ class TimeSeriesDatum:
45
45
  # DO NOT MODIFY -- This file is generated by type_spec
46
46
  @serial_class(
47
47
  named_type_path="sdk.api.recipes.add_time_series_data.Arguments",
48
+ explicit_defaults={"on_conflict"},
48
49
  )
49
50
  @dataclasses.dataclass(kw_only=True)
50
51
  class Arguments:
@@ -81,6 +81,7 @@ class RecipeInputEditClearInputs(RecipeInputEditBase):
81
81
  @serial_class(
82
82
  named_type_path="sdk.api.recipes.edit_recipe_inputs.RecipeInputEditInputBase",
83
83
  to_string_values={"value_numeric"},
84
+ explicit_defaults={"input_value_type", "quantity_basis"},
84
85
  )
85
86
  @dataclasses.dataclass(kw_only=True)
86
87
  class RecipeInputEditInputBase(RecipeInputEditBase):
@@ -196,6 +197,7 @@ class PlaceholderDisplayMode(StrEnum):
196
197
  # DO NOT MODIFY -- This file is generated by type_spec
197
198
  @serial_class(
198
199
  named_type_path="sdk.api.recipes.edit_recipe_inputs.PlaceholderBase",
200
+ explicit_defaults={"display_mode", "require_for_creation"},
199
201
  )
200
202
  @dataclasses.dataclass(kw_only=True)
201
203
  class PlaceholderBase:
@@ -25,6 +25,7 @@ ENDPOINT_PATH = "api/external/recipes/external_get_recipe_links"
25
25
  # DO NOT MODIFY -- This file is generated by type_spec
26
26
  @serial_class(
27
27
  named_type_path="sdk.api.recipes.get_recipe_links.Arguments",
28
+ explicit_defaults={"depth"},
28
29
  )
29
30
  @dataclasses.dataclass(kw_only=True)
30
31
  class Arguments:
@@ -42,6 +42,7 @@ 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"},
45
46
  )
46
47
  @dataclasses.dataclass(kw_only=True)
47
48
  class Arguments:
@@ -48,6 +48,7 @@ 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"},
51
52
  )
52
53
  @dataclasses.dataclass(kw_only=True)
53
54
  class RecipeOutputValue:
@@ -31,6 +31,7 @@ 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"},
34
35
  )
35
36
  @dataclasses.dataclass(kw_only=True)
36
37
  class Arguments:
@@ -17,6 +17,7 @@ __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"},
20
21
  )
21
22
  @dataclasses.dataclass(kw_only=True)
22
23
  class ClientConfigOptions:
@@ -19,6 +19,7 @@ from .field_values_t import FieldValueText as FieldValueText
19
19
  from .field_values_t import FieldValueBoolean as FieldValueBoolean
20
20
  from .field_values_t import FieldValueNumeric as FieldValueNumeric
21
21
  from .field_values_t import FieldValueBatchReference as FieldValueBatchReference
22
+ from .field_values_t import FieldValueNull as FieldValueNull
22
23
  from .field_values_t import FieldValue as FieldValue
23
24
  from .field_values_t import FieldArgumentValue as FieldArgumentValue
24
25
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -29,6 +29,7 @@ __all__: list[str] = [
29
29
  "FieldValueFiles",
30
30
  "FieldValueId",
31
31
  "FieldValueIds",
32
+ "FieldValueNull",
32
33
  "FieldValueNumeric",
33
34
  "FieldValueText",
34
35
  "FieldValueType",
@@ -96,6 +97,7 @@ class FieldValueType(StrEnum):
96
97
  BATCH_REFERENCE = "batch_reference"
97
98
  FIELD_OPTION = "field_option"
98
99
  FIELD_OPTIONS = "field_options"
100
+ NULL_VALUE = "null_value"
99
101
 
100
102
 
101
103
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -128,6 +130,7 @@ class ValueResolution(StrEnum):
128
130
  @serial_class(
129
131
  named_type_path="sdk.field_values.FieldValueFieldOption",
130
132
  parse_require={"type"},
133
+ explicit_defaults={"value_resolution"},
131
134
  )
132
135
  @dataclasses.dataclass(kw_only=True)
133
136
  class FieldValueFieldOption(FieldValueBase):
@@ -140,6 +143,7 @@ class FieldValueFieldOption(FieldValueBase):
140
143
  @serial_class(
141
144
  named_type_path="sdk.field_values.FieldValueFieldOptions",
142
145
  parse_require={"type"},
146
+ explicit_defaults={"value_resolution"},
143
147
  )
144
148
  @dataclasses.dataclass(kw_only=True)
145
149
  class FieldValueFieldOptions(FieldValueBase):
@@ -218,9 +222,19 @@ class FieldValueBatchReference(FieldValueBase):
218
222
  data_key: str
219
223
 
220
224
 
225
+ # DO NOT MODIFY -- This file is generated by type_spec
226
+ @serial_class(
227
+ named_type_path="sdk.field_values.FieldValueNull",
228
+ parse_require={"type"},
229
+ )
230
+ @dataclasses.dataclass(kw_only=True)
231
+ class FieldValueNull(FieldValueBase):
232
+ type: typing.Literal[FieldValueType.NULL_VALUE] = FieldValueType.NULL_VALUE
233
+
234
+
221
235
  # DO NOT MODIFY -- This file is generated by type_spec
222
236
  FieldValue = typing.Annotated[
223
- FieldValueFiles | FieldValueId | FieldValueIds | FieldValueText | FieldValueBoolean | FieldValueNumeric | FieldValueBatchReference | FieldValueFieldOption | FieldValueFieldOptions,
237
+ FieldValueFiles | FieldValueId | FieldValueIds | FieldValueText | FieldValueBoolean | FieldValueNumeric | FieldValueBatchReference | FieldValueFieldOption | FieldValueFieldOptions | FieldValueNull,
224
238
  serial_union_annotation(
225
239
  named_type_path="sdk.field_values.FieldValue",
226
240
  ),
@@ -109,6 +109,7 @@ 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"},
112
113
  )
113
114
  @dataclasses.dataclass(kw_only=True)
114
115
  class GenericUploadStrategy:
@@ -168,6 +168,7 @@ 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"},
171
172
  )
172
173
  @dataclasses.dataclass(kw_only=True)
173
174
  class JobLoggingSettings:
@@ -178,6 +179,7 @@ class JobLoggingSettings:
178
179
  # DO NOT MODIFY -- This file is generated by type_spec
179
180
  @serial_class(
180
181
  named_type_path="sdk.job_definition.JobDefinitionBase",
182
+ explicit_defaults={"enabled"},
181
183
  )
182
184
  @dataclasses.dataclass(kw_only=True)
183
185
  class JobDefinitionBase:
@@ -59,6 +59,7 @@ 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"},
62
63
  )
63
64
  @dataclasses.dataclass(kw_only=True)
64
65
  class RecipeWorkflowStepIdentifierWorkflowStep(RecipeWorkflowStepIdentifierBase):
@@ -18,6 +18,7 @@ __all__: list[str] = [
18
18
  @serial_class(
19
19
  named_type_path="sdk.response.Response",
20
20
  parse_require={"status"},
21
+ explicit_defaults={"status"},
21
22
  )
22
23
  @dataclasses.dataclass(kw_only=True)
23
24
  class Response:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: UncountablePythonSDK
3
- Version: 0.0.103
3
+ Version: 0.0.104
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
@@ -24,7 +24,7 @@ examples/set_recipe_output_file_sdk.py,sha256=Lz1amqppnWTX83z-C090wCJ4hcKmCD3kb-
24
24
  examples/upload_files.py,sha256=qMaSvMSdTMPOOP55y1AwEurc0SOdZAMvEydlqJPsGpg,432
25
25
  examples/integration-server/pyproject.toml,sha256=VjUN8AZWIzliyLVX2hLfoMAOzxGini62g1287kJflr4,9127
26
26
  examples/integration-server/jobs/materials_auto/example_cron.py,sha256=7VVQ-UJsq3DbGpN3XPnorRVZYo-vCwbfSU3VVDluIzA,699
27
- examples/integration-server/jobs/materials_auto/example_wh.py,sha256=Hx5nonavOh2L3JykDpI5bPqPu8L1wwhwekTUfTRgq9g,479
27
+ examples/integration-server/jobs/materials_auto/example_wh.py,sha256=kN6l5KQIyoDh7aFnvvMp6j8KyVfLUQoKXMhoer_iBto,564
28
28
  examples/integration-server/jobs/materials_auto/profile.yaml,sha256=XlOXSRplMJ13T6900pv1wDKxeE9V1hZZTMuvup1MiBM,896
29
29
  pkgs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
30
  pkgs/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -46,7 +46,7 @@ pkgs/serialization/annotation.py,sha256=wn9yb4a4DrsyPAYqY9mVswJarP4lsOkgfnvchrg5
46
46
  pkgs/serialization/missing_sentry.py,sha256=89SomyM0sBWLr_N0SPOyxU3hWcm1ljL-veTazZ1-GU8,811
47
47
  pkgs/serialization/opaque_key.py,sha256=8ak7aMCGWkKDjnG374yqy8gtnCCUzG2DSJEBfoPgi0c,194
48
48
  pkgs/serialization/serial_alias.py,sha256=zP0wAy7NGvpyOe-TGUwHy3wPF0XZTIwFLh_caDX67BU,1343
49
- pkgs/serialization/serial_class.py,sha256=xMcvPJ5fdaaI9dY5SAz3vMKY0V6KvnDKp5-YsgYvLLk,6085
49
+ pkgs/serialization/serial_class.py,sha256=uBfleDXvSZcPfPSzLIqKTocXix5i-lMjidnS9-xQXR8,6711
50
50
  pkgs/serialization/serial_generic.py,sha256=vAC0-o9fkco2lM_YvBavY0JDYncDxbW3jFboYeHRImw,461
51
51
  pkgs/serialization/serial_union.py,sha256=IdWsSsM8j-qGfl5Wv6haX37ZS1SKob8XT8cilBBOVIo,2670
52
52
  pkgs/serialization/yaml.py,sha256=yoJtu7_ixnJV6uTxA_U1PpK5F_ixT08AKVh5ocyYwXM,1466
@@ -59,13 +59,13 @@ pkgs/strenum_compat/__init__.py,sha256=wXRFeNvBm8RU6dy1PFJ5sRLgUIEeH_DVR95Sv5qpG
59
59
  pkgs/strenum_compat/strenum_compat.py,sha256=uOUAgpYTjHs1MX8dG81jRlyTkt3KNbkV_25zp7xTX2s,36
60
60
  pkgs/type_spec/__init__.py,sha256=h5DmJTca4QVV10sZR1x0-MlkZfuGYDfapR3zHvXfzto,19
61
61
  pkgs/type_spec/__main__.py,sha256=5bJaX9Y_-FavP0qwzhk-z-V97UY7uaezJTa1zhO_HHQ,1048
62
- pkgs/type_spec/builder.py,sha256=8oiNhxN_pidHkB62zt1rLsLnAPsNhC2QyFf8t1ePFns,52728
62
+ pkgs/type_spec/builder.py,sha256=5JP_BLTEweV3Ck3w_UbWGMVmzy65DfqtFLel-3Z5B9Y,52869
63
63
  pkgs/type_spec/config.py,sha256=HThKnWQ4zkWOyUIb12hTodsrvEnhSzOvhHKCOeTM0iY,5302
64
64
  pkgs/type_spec/cross_output_links.py,sha256=nmyWUaFRk7MLTdJiosfKkhOb4VLE71A3DDKKwTZAncY,3123
65
65
  pkgs/type_spec/emit_io_ts.py,sha256=CUvBs0boB_X-Kndh66yYcqFfq3oC_LGs8YffLkJ0ZXA,5707
66
66
  pkgs/type_spec/emit_open_api.py,sha256=kHP4jKRica4Us28_9G2iHq9K7BrUdsl8daIIHZaPdws,25000
67
67
  pkgs/type_spec/emit_open_api_util.py,sha256=UwaUcgqTwl_D8s2y6ic3fC23VllVcP0w_2iUg9ThYCA,2361
68
- pkgs/type_spec/emit_python.py,sha256=aHRrEGx_WAnf5w5zN7lWrIToslh8l-yJtGn50r_6fr4,52402
68
+ pkgs/type_spec/emit_python.py,sha256=nVCKbXfFCGUrYkLWZehJgcrR_7o5pAbqb97f_EeYEn8,52732
69
69
  pkgs/type_spec/emit_typescript.py,sha256=0HRzxlbIP91rzbVkAntF4TKZppoKcWsqnDLAIRc1bng,10927
70
70
  pkgs/type_spec/emit_typescript_util.py,sha256=8ophCR8MX0IvYtLYu3omfPQk2H6BeYGd2psRir9ImmQ,10550
71
71
  pkgs/type_spec/load_types.py,sha256=GndEKQtICCQi4oXsL6cZ9khm8lBB830e6hx0wML4dHs,4278
@@ -146,19 +146,19 @@ uncountable/types/chemical_structure.py,sha256=ujyragaD26-QG5jgKnWhO7TN3N1V9b_04
146
146
  uncountable/types/chemical_structure_t.py,sha256=iYmGER_vXqoksv2Nr189qU1Zm70s-U49Eiv0DkWaB1I,773
147
147
  uncountable/types/client_base.py,sha256=EMf8jyO2gJ3M_2ypkddkF_4O-bjLJ7n4qSWQW0EHYZ8,71372
148
148
  uncountable/types/client_config.py,sha256=qLpHt4O_B098CyN6qQajoxZ2zjZ1DILXLUEGyyGP0TQ,280
149
- uncountable/types/client_config_t.py,sha256=k_UkjemqiVuJBiFUjJYk3h673Nahr0nGZvfEZFzsC0k,699
149
+ uncountable/types/client_config_t.py,sha256=ovNtGbinjSYZiC-rpYINhtEb4HcwXBDmlJDaFx8Qano,745
150
150
  uncountable/types/curves.py,sha256=QyEyC20jsG-LGKVx6miiF-w70vKMwNkILFBDIJ5Ok9g,345
151
151
  uncountable/types/curves_t.py,sha256=2_9qdrSl1XAvIG57lo45KWNpa0wXgZ97OkSRCPRrudc,1347
152
152
  uncountable/types/entity.py,sha256=Zclk1LYcRaYrMDhqyCjMSLEg0fE6_q8LHvV22Qvscgs,566
153
153
  uncountable/types/entity_t.py,sha256=MujknU1WOE77q1qS67ub3QSBYhed2j8lbZpSkkotsRs,17874
154
154
  uncountable/types/experiment_groups.py,sha256=qUpFOx1AKgzaT_4khCOv5Xs6jwiQGbvHH-GUh3v1nv4,288
155
155
  uncountable/types/experiment_groups_t.py,sha256=_fAYZwqYLR3cFdv2vwLOYs5TvH5CEWDEbh3kFpg26zY,700
156
- uncountable/types/field_values.py,sha256=_5PSyCRPA0IlRThRa8Ny3p0jrumnVvbz_3jyQvnmCp4,1396
157
- uncountable/types/field_values_t.py,sha256=IE6Q8OFwy1KTZM7-xzohSnPfzJfjR7z2qwR-Atcafho,6909
156
+ uncountable/types/field_values.py,sha256=xWIK_wLbXLpBI-zjtXzlaYEdfm-0bxnbr9xcsIjUBr8,1457
157
+ uncountable/types/field_values_t.py,sha256=L3bRwVSjqXWAE2itpjAbuBmEQZSZG0XV226CP26MJ-Q,7378
158
158
  uncountable/types/fields.py,sha256=M0_ZZr0QdNLXkdHAGo5mfU90kEtHedCSKrcod-FG30Y,245
159
159
  uncountable/types/fields_t.py,sha256=Ze-X83HyM7q4oMk5LLRfPqvRojyAx6dDqIUPX70gNYc,644
160
160
  uncountable/types/generic_upload.py,sha256=bNep2nT0fbKAlJaGvHWPmuvfX5KtS8kgTqTh8FQk1NA,858
161
- uncountable/types/generic_upload_t.py,sha256=z7rxOu8SEyOmIlz06AAXmRkbQdBEpZigb8N2eGi6XIY,3756
161
+ uncountable/types/generic_upload_t.py,sha256=yvM1uaEVXy8H9OsBWr-ltzeyTuDKDZ6ZuvwBbB779m8,3801
162
162
  uncountable/types/id_source.py,sha256=sBlDfUwHQ7bGWMschSD_aPQL7LVnCPiV2RAlPLXrAqk,546
163
163
  uncountable/types/id_source_t.py,sha256=XzxQWkD0iQoq6LxtpCVWylYtOvq5dXslu_2ML1xNP_U,1838
164
164
  uncountable/types/identifier.py,sha256=J-ptCFE0_R0bBAvrYp-gvHk8H9Qq9rhbmeyXgwb9nos,482
@@ -170,7 +170,7 @@ uncountable/types/inputs_t.py,sha256=0b3U77JcZT4hgUvbP_i-E5RoJbJnRxn3OKBqGWu32TM
170
170
  uncountable/types/integration_server.py,sha256=VonA8h8TGnVBiss5W8-K82lA01JQa7TLk0ubFo8iiBQ,364
171
171
  uncountable/types/integration_server_t.py,sha256=37zyqeet54P9m6pxaZfLOgZCqqZA2dxJ5gl6NCoelQ0,1188
172
172
  uncountable/types/job_definition.py,sha256=6BkLZrmTfIYh45XFGZ5HOYveued0YXvl17YTlXblXjw,1646
173
- uncountable/types/job_definition_t.py,sha256=ed_fCyLFQBo6XDfqtfUnk4ghmx0uGtDHVEnNB1N_yv4,7837
173
+ uncountable/types/job_definition_t.py,sha256=GQcs1mpl3QO1opqGAs5dmtdPwxpTPIq52Ei2pq7n9s0,7907
174
174
  uncountable/types/outputs.py,sha256=I6zP2WHXg_jXgMqmuEJuJOlsjKjQGHjfs1JOwW9YxBM,260
175
175
  uncountable/types/outputs_t.py,sha256=ZJhKKkksJ-K7iuuumCly9edU8TRv-eWol4PKG7XPo3E,734
176
176
  uncountable/types/overrides.py,sha256=fOvj8P9K9ul8fnTwA--l140EWHuc1BFq8tXgtBkYld4,410
@@ -196,11 +196,11 @@ uncountable/types/recipe_output_metadata_t.py,sha256=llf9O2vK6AFRva5hx0VdiKXT9XQ
196
196
  uncountable/types/recipe_tags.py,sha256=tKIwHY677lZCxrmOk1bbuZQgDuf1n1cNyp6c5r1uRbo,270
197
197
  uncountable/types/recipe_tags_t.py,sha256=7qi9m8NAq7BdocIBdYyMVArFnPJrwuX0B9qoqlJiwzM,670
198
198
  uncountable/types/recipe_workflow_steps.py,sha256=fb55_sREdeZrtguIZOuy4ZcTLbRBNAxQ3A0oGbH8muA,950
199
- uncountable/types/recipe_workflow_steps_t.py,sha256=dwjuFI6ncLBwr7Ufa-W26nrfF-BqZ_pKFIpKP05WqOo,3406
199
+ uncountable/types/recipe_workflow_steps_t.py,sha256=8MhOr-x9Fm9OiAefAwn2BDR8gadSqjKdGvi55U8a7c8,3442
200
200
  uncountable/types/recipes.py,sha256=6Z7bagYXX15kGlhYt_OFiYSD3lqFp4H0EquI1fUfYyk,286
201
201
  uncountable/types/recipes_t.py,sha256=GBT56H34_pqAdeTgcye6ZNZLR1V47lG_S-R_uV-XUh8,652
202
202
  uncountable/types/response.py,sha256=SJTwjTxZGItGJJYPZ_T1zTooEbtR5ZA8GT_cf8aXfn8,253
203
- uncountable/types/response_t.py,sha256=I4lArMXf50SFWon_Tl9AJjqqrzvfeSXv_C-AKfnGcZM,646
203
+ uncountable/types/response_t.py,sha256=XQ-0PHv3uxyVSJdoT50f0gDynTfC3jKa1MlNugBMdcE,680
204
204
  uncountable/types/secret_retrieval.py,sha256=poY_nuZBIjNu64Wa0x5Ytsmh3OdAxps2kzuDgv1sa_8,571
205
205
  uncountable/types/secret_retrieval_t.py,sha256=hcJRp2OLPd5m7twve63F8gloL8KFJiCtyJD17H6WiAc,2138
206
206
  uncountable/types/units.py,sha256=yxuddayiE8cnzrjQiIsURisWc-Vm1F37uyS3fjM--Ao,254
@@ -269,7 +269,7 @@ uncountable/types/api/recipe_metadata/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrH
269
269
  uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py,sha256=fW-6_vBIGa5Wx8JvEdpKb3orXD60DX_wOeHnmMPduc8,1550
270
270
  uncountable/types/api/recipes/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
271
271
  uncountable/types/api/recipes/add_recipe_to_project.py,sha256=vJL6DljCu4okNHvXJ5_uaBj0-QDEm9iTvVGMLYyDd2U,1061
272
- uncountable/types/api/recipes/add_time_series_data.py,sha256=1pghWSwdbaEo--M__2VqYyGRMeXXh_G2--OzuhNWLpE,1737
272
+ uncountable/types/api/recipes/add_time_series_data.py,sha256=xD7W4PjoWnGamimGY4DsJlyDjFz4SnhpTDjwtheVaQM,1776
273
273
  uncountable/types/api/recipes/archive_recipes.py,sha256=07Rjd9kwh5pMpiMXNr9OfjOB4vYXeuLjQtBxrXkXC7o,1024
274
274
  uncountable/types/api/recipes/associate_recipe_as_input.py,sha256=TtsAJRT9vRjnsIh0IvfFimA2hstZvgyn6rpaDIsDfK4,1194
275
275
  uncountable/types/api/recipes/associate_recipe_as_lot.py,sha256=_4SgFfH-wFxW9Vevv9k3G3T10Uz8CMLjuiDEv1oT2So,1138
@@ -277,29 +277,29 @@ uncountable/types/api/recipes/clear_recipe_outputs.py,sha256=BfTQrV79UePkJ4HSSix
277
277
  uncountable/types/api/recipes/create_recipe.py,sha256=tVeQgikCWAwGtxpq2vLyXd5Aeqo_8Tde64x5GAOJl50,1472
278
278
  uncountable/types/api/recipes/create_recipes.py,sha256=J1CBE13d8JaVpUxOftFg1Plo8RKa0vc-A2nHdO1yoj8,1862
279
279
  uncountable/types/api/recipes/disassociate_recipe_as_input.py,sha256=zWUfwJlkgWexblqKCKCF5HWR40ynQ8rg_PPo2WPGISY,1106
280
- uncountable/types/api/recipes/edit_recipe_inputs.py,sha256=NEK0PrM-SnGx95KcjpSWimi3xTrOMKO8BMURom08ppc,9837
280
+ uncountable/types/api/recipes/edit_recipe_inputs.py,sha256=nhPN0MdAx7FtdGKB3xbWQ3rdHk1QtblcT3D-DC1hexE,9963
281
281
  uncountable/types/api/recipes/get_column_calculation_values.py,sha256=9eqURjD2Mwm2lyV1bJIq66Z7a3enLhhx_scZBt4SYYc,1671
282
282
  uncountable/types/api/recipes/get_curve.py,sha256=C-elYAKcBw7P5bWwN-8p_SWj15l5aBJrKNR8yjphZ-Q,1085
283
283
  uncountable/types/api/recipes/get_recipe_calculations.py,sha256=iBmkhKC1qBFxuPPziM3LD6tGsdsN_xb4NcUaJwF6cHU,1679
284
- uncountable/types/api/recipes/get_recipe_links.py,sha256=jYygHnuzTzuc_H8AG72Ihrb38kEhtfbVNlb4b7elLfI,1149
284
+ uncountable/types/api/recipes/get_recipe_links.py,sha256=Hn35wrJlJHQ00MhpHlva0Oc29Dy0lg013VCW4eWl0SU,1182
285
285
  uncountable/types/api/recipes/get_recipe_names.py,sha256=HXv39OI6GRedSAKOhurEQEY_djaxvJcxlTTWghLgA5I,1274
286
286
  uncountable/types/api/recipes/get_recipe_output_metadata.py,sha256=7lF2cnRsBLPDSsjlNIy-aJ4Dao5-qe7WrNaf4XNmq74,1703
287
287
  uncountable/types/api/recipes/get_recipes_data.py,sha256=srZBvl8dCdoo7yil0D1ohAxnbMaCS28ctCH93NaYQd0,6099
288
- uncountable/types/api/recipes/lock_recipes.py,sha256=8z_g5lokbzkATZvN5Vpvx6uXS3xPZN77AP5OhHPsGhc,1581
288
+ uncountable/types/api/recipes/lock_recipes.py,sha256=G5BAPZe3WUMd2Okc8FC9YJBMrfI0mrD-ZY-6sup9vZg,1613
289
289
  uncountable/types/api/recipes/remove_recipe_from_project.py,sha256=_KWbYnMMEOZAaC_jdXZvCEYXJaVhs3x27ZWlJbq3CV4,1076
290
290
  uncountable/types/api/recipes/set_recipe_inputs.py,sha256=RvWj2SOtcuy_msp9pUjz20O3Y_EjEMKd48o-RhpCDNE,1583
291
291
  uncountable/types/api/recipes/set_recipe_metadata.py,sha256=R4GVqpMJdJuoSXsJx1e4vhmWqKKTPMyPPEArwV45crI,1104
292
292
  uncountable/types/api/recipes/set_recipe_output_annotations.py,sha256=yczFBmuB0grzNWsnXspCPUsDA608M9wGkJ2dugyxG4U,3526
293
293
  uncountable/types/api/recipes/set_recipe_output_file.py,sha256=W_qvEkZxzDczwU9EZ7zKyBmLGnO6GFqMsJ3zwXCnpA0,1502
294
- uncountable/types/api/recipes/set_recipe_outputs.py,sha256=FyReW7TLJ9eyO5lmL9U8o6DLxxxMp78Z__rLIAyd9IM,2366
294
+ uncountable/types/api/recipes/set_recipe_outputs.py,sha256=EhcEDuha4fcdN15Cr4LaRHs96gQa3jsjMYNBfpOKI8M,2407
295
295
  uncountable/types/api/recipes/set_recipe_tags.py,sha256=HS5GG-nTy0vTNTANG-ROawku0VhzOs0hIzGKfRFefYY,3098
296
296
  uncountable/types/api/recipes/unarchive_recipes.py,sha256=G0jYuarNZLmTCQ6m5_ZAUwBl4M8_cqKRlP-jMJp-Rcw,1000
297
- uncountable/types/api/recipes/unlock_recipes.py,sha256=QFvz13eJipWQlIRrqOybnIPeJxfR4yZM8yIr841jd28,1258
297
+ uncountable/types/api/recipes/unlock_recipes.py,sha256=D2CyWCt6eO5Fa2pRN4GScF2XT1SjlSWvUiqPiU7Dng8,1290
298
298
  uncountable/types/api/triggers/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
299
299
  uncountable/types/api/triggers/run_trigger.py,sha256=diX1ix_5hkti1F1uYoZhP5iyc6GHAU5coKgqq5syLhI,1059
300
300
  uncountable/types/api/uploader/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
301
301
  uncountable/types/api/uploader/invoke_uploader.py,sha256=-loZzBihKqx63eP-f5RuV1mu6tgkRTZmIc545kklZLk,1273
302
- uncountablepythonsdk-0.0.103.dist-info/METADATA,sha256=lPJd1v2DjOMjZNnl8_kF5bho1QcSYA6x5qU-axsTzX8,2112
303
- uncountablepythonsdk-0.0.103.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
304
- uncountablepythonsdk-0.0.103.dist-info/top_level.txt,sha256=1UVGjAU-6hJY9qw2iJ7nCBeEwZ793AEN5ZfKX9A1uj4,31
305
- uncountablepythonsdk-0.0.103.dist-info/RECORD,,
302
+ uncountablepythonsdk-0.0.104.dist-info/METADATA,sha256=MiX-WD_O3X1LwaYaOmc1JHv_rY9YlAY_q-9i6UA-CNg,2112
303
+ uncountablepythonsdk-0.0.104.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
304
+ uncountablepythonsdk-0.0.104.dist-info/top_level.txt,sha256=1UVGjAU-6hJY9qw2iJ7nCBeEwZ793AEN5ZfKX9A1uj4,31
305
+ uncountablepythonsdk-0.0.104.dist-info/RECORD,,