UncountablePythonSDK 0.0.126__py3-none-any.whl → 0.0.128__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 (49) hide show
  1. examples/integration-server/jobs/materials_auto/example_instrument.py +67 -38
  2. examples/integration-server/jobs/materials_auto/example_parse.py +87 -0
  3. examples/integration-server/jobs/materials_auto/example_predictions.py +61 -0
  4. examples/integration-server/jobs/materials_auto/example_runsheet_wh.py +3 -2
  5. examples/integration-server/jobs/materials_auto/profile.yaml +18 -0
  6. examples/integration-server/pyproject.toml +3 -3
  7. pkgs/type_spec/builder.py +19 -9
  8. pkgs/type_spec/emit_typescript.py +2 -2
  9. pkgs/type_spec/type_info/emit_type_info.py +14 -1
  10. pkgs/type_spec/value_spec/__main__.py +2 -2
  11. uncountable/integration/cli.py +29 -1
  12. uncountable/integration/executors/executors.py +1 -2
  13. uncountable/integration/executors/generic_upload_executor.py +1 -1
  14. uncountable/integration/job.py +3 -3
  15. uncountable/integration/queue_runner/command_server/__init__.py +4 -0
  16. uncountable/integration/queue_runner/command_server/command_client.py +39 -0
  17. uncountable/integration/queue_runner/command_server/command_server.py +37 -0
  18. uncountable/integration/queue_runner/command_server/protocol/command_server.proto +18 -0
  19. uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.py +21 -13
  20. uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.pyi +28 -1
  21. uncountable/integration/queue_runner/command_server/protocol/command_server_pb2_grpc.py +90 -0
  22. uncountable/integration/queue_runner/command_server/types.py +24 -1
  23. uncountable/integration/queue_runner/datastore/datastore_sqlite.py +107 -8
  24. uncountable/integration/queue_runner/datastore/model.py +8 -1
  25. uncountable/integration/queue_runner/job_scheduler.py +42 -2
  26. uncountable/integration/queue_runner/worker.py +1 -1
  27. uncountable/integration/server.py +36 -6
  28. uncountable/integration/telemetry.py +41 -7
  29. uncountable/types/__init__.py +4 -0
  30. uncountable/types/api/integrations/register_sockets_token.py +41 -0
  31. uncountable/types/api/recipes/edit_recipe_inputs.py +1 -1
  32. uncountable/types/api/recipes/get_recipes_data.py +16 -0
  33. uncountable/types/api/recipes/lock_recipes.py +2 -1
  34. uncountable/types/api/recipes/set_recipe_total.py +59 -0
  35. uncountable/types/api/recipes/unlock_recipes.py +2 -1
  36. uncountable/types/api/uploader/complete_async_parse.py +4 -0
  37. uncountable/types/async_batch_processor.py +124 -0
  38. uncountable/types/async_batch_t.py +2 -0
  39. uncountable/types/client_base.py +57 -1
  40. uncountable/types/entity_t.py +1 -1
  41. uncountable/types/queued_job.py +1 -0
  42. uncountable/types/queued_job_t.py +9 -0
  43. uncountable/types/sockets.py +9 -0
  44. uncountable/types/sockets_t.py +99 -0
  45. uncountable/types/uploader_t.py +3 -2
  46. {uncountablepythonsdk-0.0.126.dist-info → uncountablepythonsdk-0.0.128.dist-info}/METADATA +1 -1
  47. {uncountablepythonsdk-0.0.126.dist-info → uncountablepythonsdk-0.0.128.dist-info}/RECORD +49 -45
  48. {uncountablepythonsdk-0.0.126.dist-info → uncountablepythonsdk-0.0.128.dist-info}/WHEEL +0 -0
  49. {uncountablepythonsdk-0.0.126.dist-info → uncountablepythonsdk-0.0.128.dist-info}/top_level.txt +0 -0
@@ -73,6 +73,7 @@ from uncountable.types import recipe_identifiers_t
73
73
  from uncountable.types import recipe_links_t
74
74
  from uncountable.types import recipe_metadata_t
75
75
  from uncountable.types import recipe_workflow_steps_t
76
+ import uncountable.types.api.integrations.register_sockets_token as register_sockets_token_t
76
77
  import uncountable.types.api.recipes.remove_recipe_from_project as remove_recipe_from_project_t
77
78
  import uncountable.types.api.recipe_links.remove_recipe_link as remove_recipe_link_t
78
79
  import uncountable.types.api.entity.resolve_entity_ids as resolve_entity_ids_t
@@ -90,7 +91,9 @@ import uncountable.types.api.recipes.set_recipe_output_annotations as set_recipe
90
91
  import uncountable.types.api.recipes.set_recipe_output_file as set_recipe_output_file_t
91
92
  import uncountable.types.api.recipes.set_recipe_outputs as set_recipe_outputs_t
92
93
  import uncountable.types.api.recipes.set_recipe_tags as set_recipe_tags_t
94
+ import uncountable.types.api.recipes.set_recipe_total as set_recipe_total_t
93
95
  import uncountable.types.api.entity.set_values as set_values_t
96
+ from uncountable.types import sockets_t
94
97
  import uncountable.types.api.entity.transition_entity_phase as transition_entity_phase_t
95
98
  import uncountable.types.api.recipes.unarchive_recipes as unarchive_recipes_t
96
99
  import uncountable.types.api.entity.unlock_entity as unlock_entity_t
@@ -279,12 +282,16 @@ class ClientMethods(ABC):
279
282
  self,
280
283
  *,
281
284
  parsed_file_data: list[uploader_t.ParsedFileData],
285
+ async_job_key: identifier_t.IdentifierKey,
286
+ upload_destination: generic_upload_t.UploadDestinationRecipe,
282
287
  ) -> complete_async_parse_t.Data:
283
288
  """Parses uploaded files asynchronously
284
289
 
285
290
  """
286
291
  args = complete_async_parse_t.Arguments(
287
292
  parsed_file_data=parsed_file_data,
293
+ async_job_key=async_job_key,
294
+ upload_destination=upload_destination,
288
295
  )
289
296
  api_request = APIRequest(
290
297
  method=complete_async_parse_t.ENDPOINT_METHOD,
@@ -530,7 +537,7 @@ class ClientMethods(ABC):
530
537
  recipe_definitions: list[create_recipes_t.CreateRecipeDefinition],
531
538
  project_id: base_t.ObjectId | None = None,
532
539
  ) -> create_recipes_t.Data:
533
- """Sets inputs values for an experiment. Values set can be numeric, text or categorical types in the Uncountable system
540
+ """Creates recipes in Uncountable, optionally with metadata values, and returns the resulting ids in corresponding order
534
541
 
535
542
  :param material_family_id: The identifier of the material family to create the recipes in
536
543
  :param project_id: The identifier of the project to create the recipes in
@@ -1047,6 +1054,7 @@ class ClientMethods(ABC):
1047
1054
  project_id: base_t.ObjectId | None = None,
1048
1055
  offset: int | None = None,
1049
1056
  limit: int | None = None,
1057
+ empty_output_behavior: get_recipes_data_t.RecipeOutputInclusion | None = None,
1050
1058
  ) -> get_recipes_data_t.Data:
1051
1059
  """Gets all data associated with a set of recipes. Because Uncountables recipe structure is complex, various data values are exploded out to increase efficiency in parsing, and this page is paginated to prevent too large of return values
1052
1060
 
@@ -1054,12 +1062,14 @@ class ClientMethods(ABC):
1054
1062
  :param project_id: The projects to get the data from. Either these or recipe_ids must be filled in
1055
1063
  :param offset: Used for pagination. All pagination is done in order of Recipe ID. [Pagination More Info](#pagination)
1056
1064
  :param limit: The number of data points to return. If not filled in, it will be set to 100, and cannot be set higher than 100. [Pagination More Info](#pagination)
1065
+ :param empty_output_behavior: Recipe output inclusion behavior for empty outputs. Empty recipe outputs are outputs added to the experiment that do not have a value associated with them.
1057
1066
  """
1058
1067
  args = get_recipes_data_t.Arguments(
1059
1068
  recipe_ids=recipe_ids,
1060
1069
  project_id=project_id,
1061
1070
  offset=offset,
1062
1071
  limit=limit,
1072
+ empty_output_behavior=empty_output_behavior,
1063
1073
  )
1064
1074
  api_request = APIRequest(
1065
1075
  method=get_recipes_data_t.ENDPOINT_METHOD,
@@ -1306,6 +1316,24 @@ class ClientMethods(ABC):
1306
1316
  )
1307
1317
  return self.do_request(api_request=api_request, return_type=push_notification_t.Data)
1308
1318
 
1319
+ def register_sockets_token(
1320
+ self,
1321
+ *,
1322
+ socket_request: sockets_t.SocketTokenRequest,
1323
+ ) -> register_sockets_token_t.Data:
1324
+ """Request token for connecting to sockets server
1325
+
1326
+ """
1327
+ args = register_sockets_token_t.Arguments(
1328
+ socket_request=socket_request,
1329
+ )
1330
+ api_request = APIRequest(
1331
+ method=register_sockets_token_t.ENDPOINT_METHOD,
1332
+ endpoint=register_sockets_token_t.ENDPOINT_PATH,
1333
+ args=args,
1334
+ )
1335
+ return self.do_request(api_request=api_request, return_type=register_sockets_token_t.Data)
1336
+
1309
1337
  def remove_recipe_from_project(
1310
1338
  self,
1311
1339
  *,
@@ -1676,6 +1704,34 @@ class ClientMethods(ABC):
1676
1704
  )
1677
1705
  return self.do_request(api_request=api_request, return_type=set_recipe_tags_t.Data)
1678
1706
 
1707
+ def set_recipe_total(
1708
+ self,
1709
+ *,
1710
+ recipe_key: identifier_t.IdentifierKey,
1711
+ value: set_recipe_total_t.ValueNumeric,
1712
+ recipe_workflow_step_identifier: recipe_workflow_steps_t.RecipeWorkflowStepIdentifier | None = None,
1713
+ calculation_key: identifier_t.IdentifierKey | None = None,
1714
+ ) -> set_recipe_total_t.Data:
1715
+ """Updates the Set Total value for a recipe or one of its workflow steps
1716
+
1717
+ :param recipe_key: Identifier for the recipe
1718
+ :param recipe_workflow_step_identifier: Identifier for the recipe workflow step
1719
+ :param value: The quantity in mass, volume, or moles to set for the total
1720
+ :param calculation_key: The linked basis calculation to set
1721
+ """
1722
+ args = set_recipe_total_t.Arguments(
1723
+ recipe_key=recipe_key,
1724
+ recipe_workflow_step_identifier=recipe_workflow_step_identifier,
1725
+ value=value,
1726
+ calculation_key=calculation_key,
1727
+ )
1728
+ api_request = APIRequest(
1729
+ method=set_recipe_total_t.ENDPOINT_METHOD,
1730
+ endpoint=set_recipe_total_t.ENDPOINT_PATH,
1731
+ args=args,
1732
+ )
1733
+ return self.do_request(api_request=api_request, return_type=set_recipe_total_t.Data)
1734
+
1679
1735
  def set_values(
1680
1736
  self,
1681
1737
  *,
@@ -398,7 +398,7 @@ class EntityType(StrEnum):
398
398
 
399
399
  # DO NOT MODIFY -- This file is generated by type_spec
400
400
  LimitedEntityType = typing.Annotated[
401
- 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] | typing.Literal[EntityType.CONDITION_PARAMETER_RULE] | typing.Literal[EntityType.INGREDIENT] | typing.Literal[EntityType.TIMESHEET_ENTRY] | typing.Literal[EntityType.SAVE] | typing.Literal[EntityType.RECIPE_CHECK],
401
+ 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] | typing.Literal[EntityType.CONDITION_PARAMETER_RULE] | typing.Literal[EntityType.INGREDIENT] | typing.Literal[EntityType.TIMESHEET_ENTRY] | typing.Literal[EntityType.SAVE] | typing.Literal[EntityType.RECIPE_CHECK] | typing.Literal[EntityType.EXPERIMENT_GROUP_MEMBER],
402
402
  serial_alias_annotation(
403
403
  named_type_path="sdk.entity.LimitedEntityType",
404
404
  ),
@@ -13,4 +13,5 @@ from .queued_job_t import QueuedJobPayload as QueuedJobPayload
13
13
  from .queued_job_t import QueuedJobResult as QueuedJobResult
14
14
  from .queued_job_t import QueuedJobMetadata as QueuedJobMetadata
15
15
  from .queued_job_t import QueuedJob as QueuedJob
16
+ from .queued_job_t import JobStatus as JobStatus
16
17
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -20,6 +20,7 @@ __all__: list[str] = [
20
20
  "InvocationContextManual",
21
21
  "InvocationContextType",
22
22
  "InvocationContextWebhook",
23
+ "JobStatus",
23
24
  "QueuedJob",
24
25
  "QueuedJobMetadata",
25
26
  "QueuedJobPayload",
@@ -119,6 +120,7 @@ class QueuedJobMetadata:
119
120
  job_ref_name: str
120
121
  num_attempts: int
121
122
  submitted_at: datetime.datetime
123
+ status: JobStatus | None = None
122
124
 
123
125
 
124
126
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -128,4 +130,11 @@ class QueuedJobMetadata:
128
130
  @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
129
131
  class QueuedJob(QueuedJobMetadata):
130
132
  payload: QueuedJobPayload
133
+
134
+
135
+ # DO NOT MODIFY -- This file is generated by type_spec
136
+ class JobStatus(StrEnum):
137
+ QUEUED = "queued"
138
+ FAILED = "failed"
139
+ SUCCESS = "success"
131
140
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -8,4 +8,13 @@ from .sockets_t import SocketRequestType as SocketRequestType
8
8
  from .sockets_t import SocketRequestIntegrationSession as SocketRequestIntegrationSession
9
9
  from .sockets_t import SocketTokenRequest as SocketTokenRequest
10
10
  from .sockets_t import SocketTokenResponse as SocketTokenResponse
11
+ from .sockets_t import SocketEventType as SocketEventType
12
+ from .sockets_t import BaseSocketEventData as BaseSocketEventData
13
+ from .sockets_t import UsersInRoomUpdatedEventData as UsersInRoomUpdatedEventData
14
+ from .sockets_t import SocketEventData as SocketEventData
15
+ from .sockets_t import SocketResponse as SocketResponse
16
+ from .sockets_t import SocketClientMessageType as SocketClientMessageType
17
+ from .sockets_t import JoinRoomWithTokenSocketClientMessage as JoinRoomWithTokenSocketClientMessage
18
+ from .sockets_t import SendInstrumentReadingClientMessage as SendInstrumentReadingClientMessage
19
+ from .sockets_t import SocketClientMessage as SocketClientMessage
11
20
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -10,15 +10,25 @@ from enum import StrEnum
10
10
  import dataclasses
11
11
  from pkgs.serialization import serial_class
12
12
  from pkgs.serialization import serial_union_annotation
13
+ from pkgs.serialization import serial_alias_annotation
13
14
  from . import base_t
14
15
  from . import integration_session_t
15
16
 
16
17
  __all__: list[str] = [
18
+ "BaseSocketEventData",
19
+ "JoinRoomWithTokenSocketClientMessage",
20
+ "SendInstrumentReadingClientMessage",
21
+ "SocketClientMessage",
22
+ "SocketClientMessageType",
23
+ "SocketEventData",
24
+ "SocketEventType",
17
25
  "SocketRequestBase",
18
26
  "SocketRequestIntegrationSession",
19
27
  "SocketRequestType",
28
+ "SocketResponse",
20
29
  "SocketTokenRequest",
21
30
  "SocketTokenResponse",
31
+ "UsersInRoomUpdatedEventData",
22
32
  ]
23
33
 
24
34
 
@@ -67,4 +77,93 @@ SocketTokenRequest = typing.Annotated[
67
77
  @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
68
78
  class SocketTokenResponse:
69
79
  token: str
80
+ room_key: str
81
+
82
+
83
+ # DO NOT MODIFY -- This file is generated by type_spec
84
+ class SocketEventType(StrEnum):
85
+ USERS_IN_ROOM_UPDATED = "users_in_room_updated"
86
+
87
+
88
+ # DO NOT MODIFY -- This file is generated by type_spec
89
+ @serial_class(
90
+ named_type_path="sdk.sockets.BaseSocketEventData",
91
+ )
92
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
93
+ class BaseSocketEventData:
94
+ pass
95
+
96
+
97
+ # DO NOT MODIFY -- This file is generated by type_spec
98
+ @serial_class(
99
+ named_type_path="sdk.sockets.UsersInRoomUpdatedEventData",
100
+ parse_require={"type"},
101
+ )
102
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
103
+ class UsersInRoomUpdatedEventData(BaseSocketEventData):
104
+ type: typing.Literal[SocketEventType.USERS_IN_ROOM_UPDATED] = SocketEventType.USERS_IN_ROOM_UPDATED
105
+ user_ids: list[base_t.ObjectId]
106
+ number_of_connections: int
107
+
108
+
109
+ # DO NOT MODIFY -- This file is generated by type_spec
110
+ SocketEventData = typing.Annotated[
111
+ typing.Union[UsersInRoomUpdatedEventData],
112
+ serial_alias_annotation(
113
+ named_type_path="sdk.sockets.SocketEventData",
114
+ ),
115
+ ]
116
+
117
+
118
+ # DO NOT MODIFY -- This file is generated by type_spec
119
+ @serial_class(
120
+ named_type_path="sdk.sockets.SocketResponse",
121
+ )
122
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
123
+ class SocketResponse:
124
+ data: SocketEventData
125
+
126
+
127
+ # DO NOT MODIFY -- This file is generated by type_spec
128
+ class SocketClientMessageType(StrEnum):
129
+ JOIN_ROOM_WITH_TOKEN = "join_room_with_token"
130
+ SEND_INSTRUMENT_READING = "send_instrument_reading"
131
+
132
+
133
+ # DO NOT MODIFY -- This file is generated by type_spec
134
+ @serial_class(
135
+ named_type_path="sdk.sockets.JoinRoomWithTokenSocketClientMessage",
136
+ parse_require={"type"},
137
+ )
138
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
139
+ class JoinRoomWithTokenSocketClientMessage:
140
+ type: typing.Literal[SocketClientMessageType.JOIN_ROOM_WITH_TOKEN] = SocketClientMessageType.JOIN_ROOM_WITH_TOKEN
141
+ token: str
142
+
143
+
144
+ # DO NOT MODIFY -- This file is generated by type_spec
145
+ @serial_class(
146
+ named_type_path="sdk.sockets.SendInstrumentReadingClientMessage",
147
+ to_string_values={"value"},
148
+ parse_require={"type"},
149
+ )
150
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
151
+ class SendInstrumentReadingClientMessage:
152
+ type: typing.Literal[SocketClientMessageType.SEND_INSTRUMENT_READING] = SocketClientMessageType.SEND_INSTRUMENT_READING
153
+ room_key: str
154
+ value: Decimal
155
+
156
+
157
+ # DO NOT MODIFY -- This file is generated by type_spec
158
+ SocketClientMessage = typing.Annotated[
159
+ JoinRoomWithTokenSocketClientMessage | SendInstrumentReadingClientMessage,
160
+ serial_union_annotation(
161
+ named_type_path="sdk.sockets.SocketClientMessage",
162
+ discriminator="type",
163
+ discriminator_map={
164
+ "join_room_with_token": JoinRoomWithTokenSocketClientMessage,
165
+ "send_instrument_reading": SendInstrumentReadingClientMessage,
166
+ },
167
+ ),
168
+ ]
70
169
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -162,13 +162,14 @@ class TextChannelData(BaseData):
162
162
 
163
163
  # DO NOT MODIFY -- This file is generated by type_spec
164
164
  Channel = typing.Annotated[
165
- TextChannelData | TimestampChannelData,
165
+ TextChannelData | TimestampChannelData | NumericChannelData,
166
166
  serial_union_annotation(
167
167
  named_type_path="sdk.uploader.Channel",
168
168
  discriminator="type",
169
169
  discriminator_map={
170
170
  "text_channel": TextChannelData,
171
171
  "timestamp_channel": TimestampChannelData,
172
+ "numeric_channel": NumericChannelData,
172
173
  },
173
174
  ),
174
175
  ]
@@ -216,6 +217,6 @@ StructureElement = typing.Annotated[
216
217
  )
217
218
  @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
218
219
  class ParsedFileData:
219
- file_id: base_t.ObjectId
220
+ file_name: str
220
221
  file_structures: list[StructureElement]
221
222
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: UncountablePythonSDK
3
- Version: 0.0.126
3
+ Version: 0.0.128
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
@@ -27,14 +27,16 @@ examples/oauth.py,sha256=QUmv4c27UDs3q98yigyA_Sm3hdK5qNfnDvxh7k06ZYg,213
27
27
  examples/set_recipe_metadata_file.py,sha256=cRVXGz4UN4aqnNrNSzyBmikYHpe63lMIuzOpMwD9EDU,1036
28
28
  examples/set_recipe_output_file_sdk.py,sha256=Lz1amqppnWTX83z-C090wCJ4hcKmCD3kb-4v0uBRi0Y,782
29
29
  examples/upload_files.py,sha256=qMaSvMSdTMPOOP55y1AwEurc0SOdZAMvEydlqJPsGpg,432
30
- examples/integration-server/pyproject.toml,sha256=YqGTmx19bOOTF28BXfazmoRaD41wgGPpoVpV2whhfpA,9149
30
+ examples/integration-server/pyproject.toml,sha256=Ng2BjCVfKgSEASkZ5I65M2cY2ytjhvFtSFFIPDgdHmU,9106
31
31
  examples/integration-server/jobs/materials_auto/concurrent_cron.py,sha256=xsK3H9ZEaniedC2nJUB0rqOcFI8y-ojfl_nLSJb9AMM,312
32
32
  examples/integration-server/jobs/materials_auto/example_cron.py,sha256=spUMiiTEFaepbVXecjD_4aEEfqEtZGGZuWTKs9J6Xcw,736
33
33
  examples/integration-server/jobs/materials_auto/example_http.py,sha256=eIL46ElWo8SKY7W5JWWkwZk6Qo7KRd9EJBxfy7YQ_sE,1429
34
- examples/integration-server/jobs/materials_auto/example_instrument.py,sha256=czJF3qBFay1S8fuESOvmkvBv1wCtZGAlHjwvCyYr-Mw,2336
35
- examples/integration-server/jobs/materials_auto/example_runsheet_wh.py,sha256=_wILTnbzzLf9zrcQb_KQKytxxcya1ej6MqQnoUSS4fA,1180
34
+ examples/integration-server/jobs/materials_auto/example_instrument.py,sha256=R2iIRs-2a_9S0LOE42RhglDpZhRkMEa6pCPCxMdqRoI,3438
35
+ examples/integration-server/jobs/materials_auto/example_parse.py,sha256=Rf1tlUoIaY5Py12NhnXzsiZerbTwvX_EdcGUABGv-qI,3489
36
+ examples/integration-server/jobs/materials_auto/example_predictions.py,sha256=8eiKNq9rocOceLrfqbTop3iwXgIr25NTfjXXKBKIVfI,2104
37
+ examples/integration-server/jobs/materials_auto/example_runsheet_wh.py,sha256=Mhh3PM1j_M35UnMllYNLbTvpMoIcoMOoHIPDaabN_hs,1235
36
38
  examples/integration-server/jobs/materials_auto/example_wh.py,sha256=PN-skP27yJwDZboWk5g5EZEc3AKfVayQLfnopjsDKJc,659
37
- examples/integration-server/jobs/materials_auto/profile.yaml,sha256=btUdn8hStM6Zp4zr0kBI2lL461MqDdzfSuF4LvuSQ8k,1926
39
+ examples/integration-server/jobs/materials_auto/profile.yaml,sha256=ywDrDRAyqiUdj_HvosNP5bXBL8mCWsvdJ1eYQd-mGYo,2369
38
40
  pkgs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
41
  pkgs/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
40
42
  pkgs/argument_parser/__init__.py,sha256=EG3pwLEHTp-Qltd3lRnO4K22RiVrasePzKPDOfTPxFY,924
@@ -68,14 +70,14 @@ pkgs/strenum_compat/__init__.py,sha256=wXRFeNvBm8RU6dy1PFJ5sRLgUIEeH_DVR95Sv5qpG
68
70
  pkgs/strenum_compat/strenum_compat.py,sha256=uOUAgpYTjHs1MX8dG81jRlyTkt3KNbkV_25zp7xTX2s,36
69
71
  pkgs/type_spec/__init__.py,sha256=h5DmJTca4QVV10sZR1x0-MlkZfuGYDfapR3zHvXfzto,19
70
72
  pkgs/type_spec/__main__.py,sha256=5bJaX9Y_-FavP0qwzhk-z-V97UY7uaezJTa1zhO_HHQ,1048
71
- pkgs/type_spec/builder.py,sha256=fVFRSJwZDJz33CtD8lC9O5L53gtvcxdx4aNjH4z2j-k,54581
73
+ pkgs/type_spec/builder.py,sha256=nR6Oj3_zen7VuL9-BxUyteHhiJchNNqiREYY7sKstD8,54973
72
74
  pkgs/type_spec/config.py,sha256=m0Rky7Rg2jMglDPQChF30p5h5P86Ap1GObwzLzmypNE,5829
73
75
  pkgs/type_spec/cross_output_links.py,sha256=ttFNfuQmR3sNnPSeUER5IPgLiYc-FB5gjlf7RyFYMpc,3293
74
76
  pkgs/type_spec/emit_io_ts.py,sha256=CUvBs0boB_X-Kndh66yYcqFfq3oC_LGs8YffLkJ0ZXA,5707
75
77
  pkgs/type_spec/emit_open_api.py,sha256=pvb41mJhHPATOJ6473q2-WGExyz7w-Q_msEiJlDA6TQ,28453
76
78
  pkgs/type_spec/emit_open_api_util.py,sha256=bTmRvrGP82-eB75hwf9ySI7pDEC87FNQTF18VKEWSXY,2367
77
79
  pkgs/type_spec/emit_python.py,sha256=aURsc-wWdamVDCrIWxA7s8_MLAMjLdXZor6ykkibzXY,52707
78
- pkgs/type_spec/emit_typescript.py,sha256=FINir79bz4tJYgJuUylNJFvqChzaFlHNCfZ5D7A6B1I,11447
80
+ pkgs/type_spec/emit_typescript.py,sha256=v0af0jF4YSGnFteWCNoKU0FjC_iJsWYAM32CCg0TnY8,11483
79
81
  pkgs/type_spec/emit_typescript_util.py,sha256=ChP4oF2ZJoL0qErGCL0nscj0w_yH6TBgE92MtQS8nPI,11638
80
82
  pkgs/type_spec/load_types.py,sha256=JL7tX2H_cy3p5HjGuvNFJlY4pDSbDVnYFsh9mK16-ic,4302
81
83
  pkgs/type_spec/non_discriminated_union_exceptions.py,sha256=JB4WNDJWc3e9WMOabX4aTd0-6K7n1hctIW2lGf1bYts,612
@@ -88,11 +90,11 @@ pkgs/type_spec/actions_registry/emit_typescript.py,sha256=W1lI36ITdJ7MBf37wlTB7H
88
90
  pkgs/type_spec/parts/base.py.prepart,sha256=Xy8my5ol_Iu0hpQpvgsmqGLkGcMsLSg-cgjm4Yp-QI4,2369
89
91
  pkgs/type_spec/parts/base.ts.prepart,sha256=42-1_N_K04t4c6pE62V4wBw3bR5bgPxhmXUk__A7gAs,1002
90
92
  pkgs/type_spec/type_info/__main__.py,sha256=TLNvCHGcmaj_8Sj5bAQNpuNaaw2dpDzoFDWZds0V4Qo,1002
91
- pkgs/type_spec/type_info/emit_type_info.py,sha256=wuhdAJh7Nrdj1tFeiaavpwCdhlig5qZE1JuE8BMLYdE,15655
93
+ pkgs/type_spec/type_info/emit_type_info.py,sha256=9ohy6NePfKSCTQZATe7GvWBYXAzCvjdwgvQuWPN3iqo,16309
92
94
  pkgs/type_spec/ui_entry_actions/__init__.py,sha256=WiHE_BexOEZWbkkbD7EnFau1aMLNmfgQywG9PTQNCkw,135
93
95
  pkgs/type_spec/ui_entry_actions/generate_ui_entry_actions.py,sha256=65qUEp9zVcAsHEe3QjOTlPfLf45kH980fOXZXKNmOC8,9503
94
96
  pkgs/type_spec/value_spec/__init__.py,sha256=Z-grlcZtxAfEXhPHsK0nD7PFLGsv4eqvunaPN7_TA84,83
95
- pkgs/type_spec/value_spec/__main__.py,sha256=oM5lcV6Hv_03okjtfWn2fzSHsarFVa9ArU_g02XnQJw,8879
97
+ pkgs/type_spec/value_spec/__main__.py,sha256=5AYiYY4Zg2h6nO5L0mfM59wVAVv58du84a9L2jRzp5A,8899
96
98
  pkgs/type_spec/value_spec/convert_type.py,sha256=OvP7dwUMHXNHVXWYT4jkaYJ96S3a2SnFuC_iMdYVB7s,2927
97
99
  pkgs/type_spec/value_spec/emit_python.py,sha256=OmSvhR5RO_h2wJOVtulkv_Jr0OUJtZ28TfjLuYl2VY8,7413
98
100
  pkgs/type_spec/value_spec/types.py,sha256=Yc3LaKHN1G6wbgrBv0dpu5vijUXtS2GcDTusYPnDvK0,454
@@ -105,50 +107,50 @@ uncountable/core/environment.py,sha256=4gdJB0ZhRxKlqSKLaE4vUvEUGZ5fy8IAwXcGDRdYt
105
107
  uncountable/core/file_upload.py,sha256=bgvXk9vfF5qlhy2NAUcEEG7Q7i-c1wr2HrpaWD7HldU,4516
106
108
  uncountable/core/types.py,sha256=s2CjqYJpsmbC7xMwxxT7kJ_V9bwokrjjWVVjpMcQpKI,333
107
109
  uncountable/integration/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
108
- uncountable/integration/cli.py,sha256=eshJ0lv4u00UOFrlkCwamE8NaxX1qN2q79wCJcsFrJs,3580
110
+ uncountable/integration/cli.py,sha256=sCE0Cz4tMzlzgD3-3P7XmgTUTBinR_yeNkaC-vvPZGg,4495
109
111
  uncountable/integration/construct_client.py,sha256=I53mGcdS88hba3HFwgXmWQaTd1d5u0jWNSwyc_vlVsQ,1937
110
112
  uncountable/integration/cron.py,sha256=6eH-kIs3sdYPCyb62_L2M7U_uQTdMTdwY5hreEJb0hw,887
111
113
  uncountable/integration/entrypoint.py,sha256=BHOYPQgKvZE6HG8Rv15MkdYl8lRkvfDgv1OdLo0oQ9Q,433
112
- uncountable/integration/job.py,sha256=HFYA3YxqwyCvQLqXpMnKxp2IJUjFgjMsWVz_DTb_5eo,8229
114
+ uncountable/integration/job.py,sha256=brXg6cod4eKNfgPB1J6a0hnrWOrJxRRF571shvxHBw8,8237
113
115
  uncountable/integration/scan_profiles.py,sha256=RHBmPc5E10YZzf4cmglwrn2yAy0jHBhQ-P_GlAk2TeU,2919
114
116
  uncountable/integration/scheduler.py,sha256=vJQGpuMgryFp5aCQEg5BIvywnu4t3SSFcGoLfY10LKg,6610
115
- uncountable/integration/server.py,sha256=lL9zmzqkQRf7V1fBT20SvIy-7ryz5hFf7DF4QX4pj1E,4699
116
- uncountable/integration/telemetry.py,sha256=5nA_DwqLOBxDdV4cl8Ybo6I6GiJDTdqETlP5Y81SCWg,7633
117
+ uncountable/integration/server.py,sha256=fU7d26546WA-IRwL8wqWM62ogx28YvTmNd9kQ7c56WI,5787
118
+ uncountable/integration/telemetry.py,sha256=bWfOm4B_ajen4WWIz6tYJSUBGAw3O7nyvhh9Zr3lV9g,8692
117
119
  uncountable/integration/db/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
118
120
  uncountable/integration/db/connect.py,sha256=mE3bdV0huclH2iT_dXCQdRL4LkjIuf_myAR64RTWXEs,498
119
121
  uncountable/integration/db/session.py,sha256=96cGQXpe6IugBTdSsjdP0S5yhJ6toSmbVB6qhc3FJzE,693
120
122
  uncountable/integration/executors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
121
- uncountable/integration/executors/executors.py,sha256=Kzisp1eKufGCWrHIw4mmAj-l1UQ2oJsJR7I-_mksnVs,5441
122
- uncountable/integration/executors/generic_upload_executor.py,sha256=z0HfvuBR1wUbRpMVxJQ5Jlzbdk8G7YmAGENmze85Tr8,12076
123
+ uncountable/integration/executors/executors.py,sha256=vrwlUTh_gaso2KH3sNoa4MavXFND2ap5hG5FsyURAPM,5427
124
+ uncountable/integration/executors/generic_upload_executor.py,sha256=BdakXkAvNvLcM96fGvN0Jw2jCvGah6Q29vlXcX1nL-A,12094
123
125
  uncountable/integration/executors/script_executor.py,sha256=BBQ9f0l7uH2hgKf60jtm-pONzwk-EeOhM2qBAbv_URo,846
124
126
  uncountable/integration/http_server/__init__.py,sha256=WY2HMcL0UCAGYv8y6Pz-j0azbDGXwubFF21EH_zNPkc,189
125
127
  uncountable/integration/http_server/types.py,sha256=3JJSulRfv784SbXnXo1Pywto7RwGxgS-iJ2-a6TOnDI,1869
126
128
  uncountable/integration/queue_runner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
127
- uncountable/integration/queue_runner/job_scheduler.py,sha256=Roh7-mTj6rwMzFhBXv7hASNS2dMeTcAZEynJGVjkhEs,6080
129
+ uncountable/integration/queue_runner/job_scheduler.py,sha256=u11eB70qBwXK5_Csx1z9n0utr9288Zo8QOt26aSqfkE,7798
128
130
  uncountable/integration/queue_runner/queue_runner.py,sha256=N4sUXmlGzVquybiJ7NQZavCJOBGrxBj6k7mb-TITaN0,1139
129
131
  uncountable/integration/queue_runner/types.py,sha256=8qTq29BTSa5rmW6CBlBntP0pNIiDcwu1wHa78pjroS0,219
130
- uncountable/integration/queue_runner/worker.py,sha256=WnFeDQN53QRhiF255ThIT2EeHdPw3QZ503_wPeWRqNE,4493
131
- uncountable/integration/queue_runner/command_server/__init__.py,sha256=gQPVILGpWzCr2i5GJyoqna7AOSFvtn4tav69gB78mTQ,571
132
- uncountable/integration/queue_runner/command_server/command_client.py,sha256=Kjov_fQdx-_jJpDeWxQEg8XmlfwWQL94ufIgEjib-nc,2776
133
- uncountable/integration/queue_runner/command_server/command_server.py,sha256=nDTvFN3U5Tm2ZejQhqZpOaaWpVOJiVB26JlNIT2y0fY,3876
132
+ uncountable/integration/queue_runner/worker.py,sha256=pxnFxubT_siS4SMckNCz9PXxoRjEbTYddlt05Fgd3Fc,4493
133
+ uncountable/integration/queue_runner/command_server/__init__.py,sha256=hMCDLWct8zW4B2a9BaIAsMhtaEgFlxONjeow-6nf6dg,675
134
+ uncountable/integration/queue_runner/command_server/command_client.py,sha256=lT_wiDKQQxIq1ercaiU_5RJanuBNAvcEK9se7pQVP58,4039
135
+ uncountable/integration/queue_runner/command_server/command_server.py,sha256=cS3zh9rOzlL_hRCZYYP7JcKarc3joKxRzTvgYoa1c5w,5338
134
136
  uncountable/integration/queue_runner/command_server/constants.py,sha256=7J9mQIAMOfV50wnwpn7HgrPFEi3Ritj6HwrGYwxGLoU,88
135
- uncountable/integration/queue_runner/command_server/types.py,sha256=PGq6EAGPC_nppXQKp9alAjuBQx1h87BefiMa0XU--PY,975
137
+ uncountable/integration/queue_runner/command_server/types.py,sha256=fyYj4ZLEWyguKNoGfowLbnihRsEyQt-jW0U2oLTXsHI,1583
136
138
  uncountable/integration/queue_runner/command_server/protocol/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
137
- uncountable/integration/queue_runner/command_server/protocol/command_server.proto,sha256=V-ztuvK-K3tFdN4F3UblSZ5JETNKYDHGSF_1WYIDo4w,873
138
- uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.py,sha256=3eXIJCQC0swHgEIx_aTpGnPE5s8MvYkyWNf6SZ2uDQQ,3307
139
- uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.pyi,sha256=lWWZuDGoWwtP-gzhADnJi40_lFbO35fUPqNkoOXVnkA,2954
140
- uncountable/integration/queue_runner/command_server/protocol/command_server_pb2_grpc.py,sha256=I2kU_anlxOqfaiUR9IcMTuQYvCXa8xliY4sbvXgLYAE,7504
139
+ uncountable/integration/queue_runner/command_server/protocol/command_server.proto,sha256=W1TZUgeR1Ok13-Dt0gqsHsSPAZyvnBJ128oDoasO2x0,1248
140
+ uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.py,sha256=FgMQ3FK_vG53zRTIcYfcmcdPF5S6vM7OqfR-7XXrhWk,4240
141
+ uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.pyi,sha256=GKwiD_srfLWqOBfutl0eCOOFOajwvS2e8rEgVkur5Ao,3844
142
+ uncountable/integration/queue_runner/command_server/protocol/command_server_pb2_grpc.py,sha256=ZTPS7GnC1ZoNgM73K6qRlzA-OdmXAHqUqa1cxB3WhPI,11755
141
143
  uncountable/integration/queue_runner/datastore/__init__.py,sha256=6BefApqN8D2zlVOH14QAeVzwQ8j5NIb41-njT02Za0k,88
142
- uncountable/integration/queue_runner/datastore/datastore_sqlite.py,sha256=YG3BuivjkAl__ZRwfMnyfx5W_zgQTwSaIPBsl-6s--0,5863
144
+ uncountable/integration/queue_runner/datastore/datastore_sqlite.py,sha256=QFIZRDT1AwR9k73LdA8BTXNZrmdUYeEUwnLZGUahnPs,9596
143
145
  uncountable/integration/queue_runner/datastore/interface.py,sha256=tNlnY00D_OyuNOL3x_FtHXcJZAAON3SeX7fEU5C8z1U,824
144
- uncountable/integration/queue_runner/datastore/model.py,sha256=8-RI5A2yPZVGBLWINVmMd6VOl_oHtqGtnaNXcapAChw,577
146
+ uncountable/integration/queue_runner/datastore/model.py,sha256=YPqlULU7FxuwjmhXGuj6P7skqs-JQttY-o0x1bCnBa0,775
145
147
  uncountable/integration/secret_retrieval/__init__.py,sha256=3QXVj35w8rRMxVvmmsViFYDi3lcb3g70incfalOEm6o,87
146
148
  uncountable/integration/secret_retrieval/retrieve_secret.py,sha256=LBEf18KHtXZxg-ZZ80stJ1vW39AWf0CQllP6pNu3Eq8,2994
147
149
  uncountable/integration/webhook_server/entrypoint.py,sha256=NQawXl_JCRojdVniS5RF7dobQQKW_Wy03bwy-uXknuA,3441
148
- uncountable/types/__init__.py,sha256=vjTtTtv3V-G2CDMOG3nKqDWO58J77CxnTB-9W_-BdmY,10856
150
+ uncountable/types/__init__.py,sha256=eN_s-D4sk-l1V_iRTr2qa4A1kWyuKzpk2MrAAlSlB3M,11059
149
151
  uncountable/types/async_batch.py,sha256=yCCWrrLQfxXVqZp-KskxLBNkNmuELdz4PJjx8ULppgs,662
150
- uncountable/types/async_batch_processor.py,sha256=hvTGI4NNBlHF1q6ec_DuZhLSvX8F32L9lFztNLNjWHw,23451
151
- uncountable/types/async_batch_t.py,sha256=mAQ2AXao_v76e7hZGzUCoSroq2Kf2FVz6hmmMX0icHo,3836
152
+ uncountable/types/async_batch_processor.py,sha256=TKAzEDBpwQ9FKQdkiFa_bcAyZ2EffpAx8GsA6whObQo,28215
153
+ uncountable/types/async_batch_t.py,sha256=E3Lo2_wot1lm0oblkLc9Uf5lmMt_zlw0VQ1yA507z8g,3945
152
154
  uncountable/types/async_jobs.py,sha256=JI0ScfawaqMRbJ2jbgW3YQLhijPnBeYdMnZJjygSxHg,322
153
155
  uncountable/types/async_jobs_t.py,sha256=u4xd3i512PZ-9592Q2ZgWh_faMiI4UMm0F_gOmZnerI,1389
154
156
  uncountable/types/auth_retrieval.py,sha256=770zjN1K9EF5zs1Xml7x6ke6Hkze7rcMT5FdDVCIl9M,549
@@ -159,7 +161,7 @@ uncountable/types/calculations.py,sha256=fApOFpgBemt_t7IVneVR0VdI3X5EOxiG6Xhzr6R
159
161
  uncountable/types/calculations_t.py,sha256=pl-lhjyDQuj11Sf9g1-0BsSkN7Ez8UxDp8-KMQ_3enM,709
160
162
  uncountable/types/chemical_structure.py,sha256=ujyragaD26-QG5jgKnWhO7TN3N1V9b_04T2WhqNYxxo,281
161
163
  uncountable/types/chemical_structure_t.py,sha256=VFFyits_vx4t5L2euu_qFiSpsGJjURkDPr3ISnr3nPc,855
162
- uncountable/types/client_base.py,sha256=6e1Z82JWbT8D6g9tjnPz6Gjdq8cUmLNjkacztpktJoM,78733
164
+ uncountable/types/client_base.py,sha256=2HCcT8J0Fb8DXlubq1vLHoCA-LQuki6hpLN3I8Z8p3Y,81359
163
165
  uncountable/types/client_config.py,sha256=qLpHt4O_B098CyN6qQajoxZ2zjZ1DILXLUEGyyGP0TQ,280
164
166
  uncountable/types/client_config_t.py,sha256=yTFIYAitMrcc4oV9J-HADODS_Hwi45z-piz7rr7QT04,781
165
167
  uncountable/types/curves.py,sha256=QyEyC20jsG-LGKVx6miiF-w70vKMwNkILFBDIJ5Ok9g,345
@@ -167,7 +169,7 @@ uncountable/types/curves_t.py,sha256=DxYepdC3QKKR7mepOOBoyarNcFZQdUa5ZYH-hwCY3BI
167
169
  uncountable/types/data.py,sha256=u2isf4XEug3Eu-xSIoqGaCQmW2dFaKBHCkP_WKYwwBc,500
168
170
  uncountable/types/data_t.py,sha256=vFoypK_WMGfN28r1sSlDYHZNUdBQC0XCN7-_Mlo4FJk,2832
169
171
  uncountable/types/entity.py,sha256=Zclk1LYcRaYrMDhqyCjMSLEg0fE6_q8LHvV22Qvscgs,566
170
- uncountable/types/entity_t.py,sha256=cULJs6qZAWnN4U8pZadcsf9A5KmlLTkIlwW_sQf627I,20742
172
+ uncountable/types/entity_t.py,sha256=eHSnrO4u6GbPaMaQsRar8o3Jy5cllH1QeYn-19S9C_I,20795
171
173
  uncountable/types/experiment_groups.py,sha256=qUpFOx1AKgzaT_4khCOv5Xs6jwiQGbvHH-GUh3v1nv4,288
172
174
  uncountable/types/experiment_groups_t.py,sha256=29Ct-WPejpYMuGfnFfOoosU9iSfjzxpabpBX6oTPFUA,761
173
175
  uncountable/types/exports.py,sha256=VMmxUO2PpV1Y63hZ2AnVor4H-B6aswJ7YpSru_u89lU,334
@@ -206,8 +208,8 @@ uncountable/types/phases.py,sha256=Capx0Tbx52151tHWw8tdOT_NMKMOyHZhrNuGrhuBzfo,2
206
208
  uncountable/types/phases_t.py,sha256=q6ooPMO60JhzoE_a6MrSmDHYXKyTcRr4TXez3Xu64uE,685
207
209
  uncountable/types/post_base.py,sha256=nHqFw6U6ENxcuj_Y3VG-Sk1NEt4Tud2iBxPhRsJpQKM,258
208
210
  uncountable/types/post_base_t.py,sha256=nZl7XQHc9cSnLgccaBZM93bcnSSjTlo2_TL40n-o7K0,734
209
- uncountable/types/queued_job.py,sha256=mhHR4J1agqepnSV62d6gi10UdVRg6MbqzzO3aft7BxA,886
210
- uncountable/types/queued_job_t.py,sha256=qX9BQx8um9HxOqq3qCa0bquo1tCcuvJ09I6g9yxh84w,4251
211
+ uncountable/types/queued_job.py,sha256=ifVXTwYqb1W_o-_6W52B0uYboGqKEj7s-LnQBUJ7ILg,935
212
+ uncountable/types/queued_job_t.py,sha256=BdYls1sZuRDzT2WvLRY1eZHTQ5s1pXnO7J6CGeVBAq4,4455
211
213
  uncountable/types/recipe_identifiers.py,sha256=nqrubqofaeg_zV6vOrzqbiuX5tDUQYrGyvugpWX38mY,633
212
214
  uncountable/types/recipe_identifiers_t.py,sha256=OpA884KEZEWrymlwEDwIkuv_qrEiNV9kyBuLeBeD0N8,2443
213
215
  uncountable/types/recipe_inputs.py,sha256=dLqKvac-Ff3owutgvBD8Hc5KPoiu-6Zy22WOUJtAuus,330
@@ -228,12 +230,12 @@ uncountable/types/response.py,sha256=SJTwjTxZGItGJJYPZ_T1zTooEbtR5ZA8GT_cf8aXfn8
228
230
  uncountable/types/response_t.py,sha256=EJwr5j9IZrtmyD4k8PxHSmTtHa470XkZCQYIpbpsJx0,728
229
231
  uncountable/types/secret_retrieval.py,sha256=poY_nuZBIjNu64Wa0x5Ytsmh3OdAxps2kzuDgv1sa_8,571
230
232
  uncountable/types/secret_retrieval_t.py,sha256=igWrOW_CwRvAE7BHIHVJojBwgcAG05Pqup8D45Sb0F4,2342
231
- uncountable/types/sockets.py,sha256=avkDlKqvvA9W492N9jrfYbnQlVWHN94hne39RM0cUxM,552
232
- uncountable/types/sockets_t.py,sha256=EC3qRIegdIOcIITC1Y_O79xfo-FSevxsM_IhJ-Up_Bw,2224
233
+ uncountable/types/sockets.py,sha256=OogyQ-pLyhJkV6JrBSLTOz9v6cDViYY5QM1ScSXPU3U,1208
234
+ uncountable/types/sockets_t.py,sha256=s--y5nbN4uHA2HVKW6rOz3HwIMk3MT2VKGXCA7reXb4,5608
233
235
  uncountable/types/units.py,sha256=yxuddayiE8cnzrjQiIsURisWc-Vm1F37uyS3fjM--Ao,254
234
236
  uncountable/types/units_t.py,sha256=d62vY2ETqIgMHASw_IcREwDDqKAqI-vPnoBOqzMt4-o,704
235
237
  uncountable/types/uploader.py,sha256=odT7wkBfXUf1MoFy6W5JzZ-WY8JX0vO6odGOS_C2Voo,1222
236
- uncountable/types/uploader_t.py,sha256=yEeJFk5AN9WL2IpZs79PbATIcgzlb6wTpd-opjwp8zg,6685
238
+ uncountable/types/uploader_t.py,sha256=msC5P-l0EUHXvG7HjoFsf-sOymvxAj6lJk2BpM5MvZY,6747
237
239
  uncountable/types/users.py,sha256=R-bFIh07mMl6HyxP8hKmlT-QMbBXZPZ7mVuOIeOlCsg,254
238
240
  uncountable/types/users_t.py,sha256=HaaGjdYZFmfiG0Oio4zBusQUQE2PONmPKcYnCGJP3-Q,727
239
241
  uncountable/types/webhook_job.py,sha256=22fT212MjSpKZNzDjpFbAEW2-UBGRsDHf3Z8ChHpS_g,418
@@ -286,6 +288,7 @@ uncountable/types/api/inputs/set_intermediate_type.py,sha256=S1RLI2RtrRze0NdMUfK
286
288
  uncountable/types/api/integrations/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
287
289
  uncountable/types/api/integrations/publish_realtime_data.py,sha256=-5r2U78AwKUCpModcUIchVIZ9b7L-Ln6O6T-9d57M2A,1181
288
290
  uncountable/types/api/integrations/push_notification.py,sha256=_ycqsGSd7pdt480JWCwMf-SoL_XIwWzEF-lyWoPmqIY,1404
291
+ uncountable/types/api/integrations/register_sockets_token.py,sha256=OOtQKY7B3T5tpz2WCtvMm1jOLNM5dXuSqpsY5FJ2IXk,1218
289
292
  uncountable/types/api/material_families/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
290
293
  uncountable/types/api/material_families/update_entity_material_families.py,sha256=qWJgAKH0MayadXvxckePCdo9yd34QXOmGZ7cKz5VLNo,1761
291
294
  uncountable/types/api/outputs/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
@@ -314,15 +317,15 @@ uncountable/types/api/recipes/create_mix_order.py,sha256=LMLTw5malVnHsegFsKW04SB
314
317
  uncountable/types/api/recipes/create_recipe.py,sha256=ESgjPKKQLPLZUOqn20LpYupxYyKl8g52RE25TC-Gjx4,1594
315
318
  uncountable/types/api/recipes/create_recipes.py,sha256=vSBCmHWdXDGacNXiRgK22G_nei8SHK1kwSJRRBQnaPU,2106
316
319
  uncountable/types/api/recipes/disassociate_recipe_as_input.py,sha256=Lka3041BI6nXYIzKFjvKs_E9XO67ioHuFg8bEB85GCM,1251
317
- uncountable/types/api/recipes/edit_recipe_inputs.py,sha256=pWaCDxpwpwE9aKB6kAw2b_sSgChS5-c5NYdB9ne-FNQ,11391
320
+ uncountable/types/api/recipes/edit_recipe_inputs.py,sha256=RDMSbKSf9BfHjd-bADjb421n82CxRiyzvmZB5kKBNZ0,11398
318
321
  uncountable/types/api/recipes/get_column_calculation_values.py,sha256=2lTqSOJ_0ZKgPLMVXkAIUU_KIvxKEhl10CKxh5NMm30,1854
319
322
  uncountable/types/api/recipes/get_curve.py,sha256=1Zf41GRBArll1fnpap6I5cYlw6SDDC_ks1RnVxFix2I,1207
320
323
  uncountable/types/api/recipes/get_recipe_calculations.py,sha256=fHCQY-y3c640jR8K5b-XLFFx7GAH3kAgmVDX7Qcj7n0,1862
321
324
  uncountable/types/api/recipes/get_recipe_links.py,sha256=j8jBbgBqR2GAdw8vTZwyoXL0NyazTgquoc2l9ojQxMY,1271
322
325
  uncountable/types/api/recipes/get_recipe_names.py,sha256=GOnKuPjGlNy89__Cp6pIudf8Xjv9MxA7DbNJhP-DAao,1457
323
326
  uncountable/types/api/recipes/get_recipe_output_metadata.py,sha256=aTTYgg1uVXyEpz7mbtWMmw9kvoLHFONW3XEd4Kz1Grw,1914
324
- uncountable/types/api/recipes/get_recipes_data.py,sha256=EvByENq-RuUABaiGKOlXbHRK7Cb6X4bpqI9PUVD-gPQ,6770
325
- uncountable/types/api/recipes/lock_recipes.py,sha256=3mEhU2Sn_-vWnqAFqNRDnqE20ucT76PF5Zz6sMb7DNg,1787
327
+ uncountable/types/api/recipes/get_recipes_data.py,sha256=XF2jq3K3dbHzrilLZjrDQX1LNKZ_ANEvsTCVoGCdvr4,7259
328
+ uncountable/types/api/recipes/lock_recipes.py,sha256=8nXh2OViududWO4m0Q3zA-Bzgu5-quQ2-z4-E5FX_dE,1855
326
329
  uncountable/types/api/recipes/remove_recipe_from_project.py,sha256=eVmG8MBUScVtjt2Z3_EIjdzyeT0UMSFvdYunNG4mVNo,1221
327
330
  uncountable/types/api/recipes/set_recipe_inputs.py,sha256=GSuT-Vgrn8-OG_eFuPCElI3mVWs2XaC_RUXasVCmABw,1766
328
331
  uncountable/types/api/recipes/set_recipe_metadata.py,sha256=lrMB_wyOKjTLl9fiKT30M2HBU7lPwjtDsqZY8ODA-oA,1249
@@ -330,18 +333,19 @@ uncountable/types/api/recipes/set_recipe_output_annotations.py,sha256=OEMKfY_CEp
330
333
  uncountable/types/api/recipes/set_recipe_output_file.py,sha256=2q63zD5-JEfWk5AffNHwERjzn8MzfQCtgGTKZQhcwsU,1685
331
334
  uncountable/types/api/recipes/set_recipe_outputs.py,sha256=ENIP8T1rUZpuI4iPrrGpwZInPNdB6m1ZIyEIbyobkj4,2752
332
335
  uncountable/types/api/recipes/set_recipe_tags.py,sha256=C4GzlHVfTDUA2CrgDqfYrDpS9jgOBf9bIgu4iqGvdno,3464
336
+ uncountable/types/api/recipes/set_recipe_total.py,sha256=K1eHfz95txl6EUoDNap3QEsRX-if2Ns5UihzMBawwMM,1859
333
337
  uncountable/types/api/recipes/unarchive_recipes.py,sha256=ke3JPaj6hRdTjP-Qot8Gc-_ptTYqC_1ZF3kKbPJ0H88,1145
334
- uncountable/types/api/recipes/unlock_recipes.py,sha256=bwFFsgeozIMuyR9XmeUK1s3RuH1R8jRsFiF8SUKxBAg,1403
338
+ uncountable/types/api/recipes/unlock_recipes.py,sha256=Qa_qLyp0McWpaIAXIOJxe6L9p5dfdEId_TtgUk8Lnzo,1471
335
339
  uncountable/types/api/runsheet/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
336
340
  uncountable/types/api/runsheet/complete_async_upload.py,sha256=r3zsmD8tcalMfa67MNdF7LE_YJjBsSXK07zZ9fMap0Y,1156
337
341
  uncountable/types/api/triggers/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
338
342
  uncountable/types/api/triggers/run_trigger.py,sha256=dgDX_sRWSJ36UuzMZhG25oHV1HIOUKYY2G3fjKugZrw,1204
339
343
  uncountable/types/api/uploader/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
340
- uncountable/types/api/uploader/complete_async_parse.py,sha256=zx2FyihtSXOjPUPQMW9ErjYeORW0naSS_I1BcoYkpNE,1239
344
+ uncountable/types/api/uploader/complete_async_parse.py,sha256=nYYBzjT_j4L7_1Ge-iqgFhI4HYSQ20kO6r8b7rhwZTE,1412
341
345
  uncountable/types/api/uploader/invoke_uploader.py,sha256=Bj7Dq4A90k00suacwk3bLA_dCb2aovS1kAbVam2AQnM,1395
342
346
  uncountable/types/api/user/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
343
347
  uncountable/types/api/user/get_current_user_info.py,sha256=Avqi_RXtRgbefrT_dwJ9MrO6eDNSSa_Nu650FSuESlg,1109
344
- uncountablepythonsdk-0.0.126.dist-info/METADATA,sha256=_cUnINlyNcykuSDvSOi8r6GGdyOzD0rGHuilsJ2aRDQ,2174
345
- uncountablepythonsdk-0.0.126.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
346
- uncountablepythonsdk-0.0.126.dist-info/top_level.txt,sha256=1UVGjAU-6hJY9qw2iJ7nCBeEwZ793AEN5ZfKX9A1uj4,31
347
- uncountablepythonsdk-0.0.126.dist-info/RECORD,,
348
+ uncountablepythonsdk-0.0.128.dist-info/METADATA,sha256=J7DAPIol3tInaykdWto7qqNgzTU7-ZbeMCks78LgUXs,2174
349
+ uncountablepythonsdk-0.0.128.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
350
+ uncountablepythonsdk-0.0.128.dist-info/top_level.txt,sha256=1UVGjAU-6hJY9qw2iJ7nCBeEwZ793AEN5ZfKX9A1uj4,31
351
+ uncountablepythonsdk-0.0.128.dist-info/RECORD,,