UncountablePythonSDK 0.0.115__py3-none-any.whl → 0.0.142.dev0__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 (119) hide show
  1. docs/conf.py +52 -5
  2. docs/index.md +107 -4
  3. docs/integration_examples/create_ingredient.md +43 -0
  4. docs/integration_examples/create_output.md +56 -0
  5. docs/integration_examples/index.md +6 -0
  6. docs/justfile +1 -1
  7. docs/requirements.txt +3 -2
  8. examples/basic_auth.py +7 -0
  9. examples/integration-server/jobs/materials_auto/example_cron.py +3 -0
  10. examples/integration-server/jobs/materials_auto/example_http.py +19 -7
  11. examples/integration-server/jobs/materials_auto/example_instrument.py +100 -0
  12. examples/integration-server/jobs/materials_auto/example_parse.py +140 -0
  13. examples/integration-server/jobs/materials_auto/example_predictions.py +61 -0
  14. examples/integration-server/jobs/materials_auto/example_runsheet_wh.py +57 -16
  15. examples/integration-server/jobs/materials_auto/profile.yaml +27 -0
  16. examples/integration-server/pyproject.toml +4 -4
  17. examples/oauth.py +7 -0
  18. pkgs/argument_parser/__init__.py +1 -0
  19. pkgs/argument_parser/_is_namedtuple.py +3 -0
  20. pkgs/argument_parser/argument_parser.py +22 -3
  21. pkgs/serialization_util/serialization_helpers.py +3 -1
  22. pkgs/type_spec/builder.py +66 -19
  23. pkgs/type_spec/builder_types.py +9 -0
  24. pkgs/type_spec/config.py +26 -5
  25. pkgs/type_spec/cross_output_links.py +10 -16
  26. pkgs/type_spec/emit_open_api.py +72 -22
  27. pkgs/type_spec/emit_open_api_util.py +1 -0
  28. pkgs/type_spec/emit_python.py +76 -12
  29. pkgs/type_spec/emit_typescript.py +48 -32
  30. pkgs/type_spec/emit_typescript_util.py +44 -6
  31. pkgs/type_spec/load_types.py +2 -2
  32. pkgs/type_spec/open_api_util.py +16 -1
  33. pkgs/type_spec/parts/base.ts.prepart +4 -0
  34. pkgs/type_spec/type_info/emit_type_info.py +37 -4
  35. pkgs/type_spec/ui_entry_actions/generate_ui_entry_actions.py +1 -0
  36. pkgs/type_spec/value_spec/__main__.py +2 -2
  37. pkgs/type_spec/value_spec/emit_python.py +6 -1
  38. uncountable/core/client.py +10 -3
  39. uncountable/integration/cli.py +175 -23
  40. uncountable/integration/executors/executors.py +1 -2
  41. uncountable/integration/executors/generic_upload_executor.py +1 -1
  42. uncountable/integration/http_server/types.py +3 -1
  43. uncountable/integration/job.py +35 -3
  44. uncountable/integration/queue_runner/command_server/__init__.py +4 -0
  45. uncountable/integration/queue_runner/command_server/command_client.py +89 -0
  46. uncountable/integration/queue_runner/command_server/command_server.py +117 -5
  47. uncountable/integration/queue_runner/command_server/constants.py +4 -0
  48. uncountable/integration/queue_runner/command_server/protocol/command_server.proto +51 -0
  49. uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.py +34 -11
  50. uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.pyi +102 -1
  51. uncountable/integration/queue_runner/command_server/protocol/command_server_pb2_grpc.py +180 -0
  52. uncountable/integration/queue_runner/command_server/types.py +44 -1
  53. uncountable/integration/queue_runner/datastore/datastore_sqlite.py +189 -8
  54. uncountable/integration/queue_runner/datastore/interface.py +13 -0
  55. uncountable/integration/queue_runner/datastore/model.py +8 -1
  56. uncountable/integration/queue_runner/job_scheduler.py +85 -21
  57. uncountable/integration/queue_runner/queue_runner.py +10 -2
  58. uncountable/integration/queue_runner/types.py +2 -0
  59. uncountable/integration/queue_runner/worker.py +28 -29
  60. uncountable/integration/scheduler.py +121 -23
  61. uncountable/integration/server.py +36 -6
  62. uncountable/integration/telemetry.py +129 -8
  63. uncountable/integration/webhook_server/entrypoint.py +2 -0
  64. uncountable/types/__init__.py +38 -0
  65. uncountable/types/api/entity/create_or_update_entity.py +1 -0
  66. uncountable/types/api/entity/export_entities.py +13 -0
  67. uncountable/types/api/entity/list_aggregate.py +79 -0
  68. uncountable/types/api/entity/list_entities.py +25 -0
  69. uncountable/types/api/entity/set_barcode.py +43 -0
  70. uncountable/types/api/entity/transition_entity_phase.py +2 -1
  71. uncountable/types/api/files/download_file.py +15 -1
  72. uncountable/types/api/integrations/__init__.py +1 -0
  73. uncountable/types/api/integrations/publish_realtime_data.py +41 -0
  74. uncountable/types/api/integrations/push_notification.py +49 -0
  75. uncountable/types/api/integrations/register_sockets_token.py +41 -0
  76. uncountable/types/api/listing/__init__.py +1 -0
  77. uncountable/types/api/listing/fetch_listing.py +57 -0
  78. uncountable/types/api/notebooks/__init__.py +1 -0
  79. uncountable/types/api/notebooks/add_notebook_content.py +119 -0
  80. uncountable/types/api/outputs/get_output_organization.py +173 -0
  81. uncountable/types/api/recipes/edit_recipe_inputs.py +1 -1
  82. uncountable/types/api/recipes/get_recipe_output_metadata.py +2 -2
  83. uncountable/types/api/recipes/get_recipes_data.py +29 -0
  84. uncountable/types/api/recipes/lock_recipes.py +2 -1
  85. uncountable/types/api/recipes/set_recipe_total.py +59 -0
  86. uncountable/types/api/recipes/unlock_recipes.py +2 -1
  87. uncountable/types/api/runsheet/export_default_runsheet.py +44 -0
  88. uncountable/types/api/uploader/complete_async_parse.py +46 -0
  89. uncountable/types/api/user/__init__.py +1 -0
  90. uncountable/types/api/user/get_current_user_info.py +40 -0
  91. uncountable/types/async_batch_processor.py +266 -0
  92. uncountable/types/async_batch_t.py +5 -0
  93. uncountable/types/client_base.py +432 -2
  94. uncountable/types/client_config.py +1 -0
  95. uncountable/types/client_config_t.py +10 -0
  96. uncountable/types/entity_t.py +9 -1
  97. uncountable/types/exports_t.py +1 -0
  98. uncountable/types/integration_server_t.py +2 -0
  99. uncountable/types/integration_session.py +10 -0
  100. uncountable/types/integration_session_t.py +60 -0
  101. uncountable/types/integrations.py +10 -0
  102. uncountable/types/integrations_t.py +62 -0
  103. uncountable/types/listing.py +46 -0
  104. uncountable/types/listing_t.py +533 -0
  105. uncountable/types/notices.py +8 -0
  106. uncountable/types/notices_t.py +37 -0
  107. uncountable/types/notifications.py +11 -0
  108. uncountable/types/notifications_t.py +74 -0
  109. uncountable/types/queued_job.py +2 -0
  110. uncountable/types/queued_job_t.py +20 -2
  111. uncountable/types/sockets.py +20 -0
  112. uncountable/types/sockets_t.py +169 -0
  113. uncountable/types/uploader.py +24 -0
  114. uncountable/types/uploader_t.py +222 -0
  115. {uncountablepythonsdk-0.0.115.dist-info → uncountablepythonsdk-0.0.142.dev0.dist-info}/METADATA +5 -2
  116. {uncountablepythonsdk-0.0.115.dist-info → uncountablepythonsdk-0.0.142.dev0.dist-info}/RECORD +118 -79
  117. docs/quickstart.md +0 -19
  118. {uncountablepythonsdk-0.0.115.dist-info → uncountablepythonsdk-0.0.142.dev0.dist-info}/WHEEL +0 -0
  119. {uncountablepythonsdk-0.0.115.dist-info → uncountablepythonsdk-0.0.142.dev0.dist-info}/top_level.txt +0 -0
@@ -4,4 +4,5 @@
4
4
  # DO NOT MODIFY -- This file is generated by type_spec
5
5
  # Kept only for SDK backwards compatibility
6
6
  from .client_config_t import ClientConfigOptions as ClientConfigOptions
7
+ from .client_config_t import RequestOptions as RequestOptions
7
8
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -12,6 +12,7 @@ from . import base_t
12
12
 
13
13
  __all__: list[str] = [
14
14
  "ClientConfigOptions",
15
+ "RequestOptions",
15
16
  ]
16
17
 
17
18
 
@@ -23,4 +24,13 @@ __all__: list[str] = [
23
24
  class ClientConfigOptions:
24
25
  allow_insecure_tls: bool = False
25
26
  extra_headers: dict[str, str] | None = None
27
+
28
+
29
+ # DO NOT MODIFY -- This file is generated by type_spec
30
+ @serial_class(
31
+ named_type_path="sdk.client_config.RequestOptions",
32
+ )
33
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
34
+ class RequestOptions:
35
+ timeout_secs: int | None = None
26
36
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -32,6 +32,7 @@ __all__: list[str] = [
32
32
  "annotation_type": "Annotation Type",
33
33
  "approval": "Approval",
34
34
  "async_job": "Async Job",
35
+ "barcode": "Barcode",
35
36
  "calculation": "Calculation",
36
37
  "calendar": "Calendar",
37
38
  "calendar_event": "Calendar Event",
@@ -42,6 +43,7 @@ __all__: list[str] = [
42
43
  "condition_match": "Condition Match",
43
44
  "condition_parameter": "Condition Parameter",
44
45
  "condition_parameter_mat_family": "Condition Parameter Material Family",
46
+ "condition_parameter_matches": "Condition Parameter Matches",
45
47
  "condition_parameter_rule": "Condition Parameter Rule",
46
48
  "condition_parameter_value": "Condition Parameter Value",
47
49
  "constraint": "Constraint",
@@ -110,6 +112,7 @@ __all__: list[str] = [
110
112
  "output_calculation_entity_mapping": "Output Calculation Entity Mapping",
111
113
  "output_category_all": "Output Category",
112
114
  "output_condition": "Output Condition",
115
+ "output_condition_condition_parameter": "Output Condition Condition Parameter",
113
116
  "output_default_condition": "Output Default Condition",
114
117
  "output_condition_parameter": "Output Condition Parameter",
115
118
  "output_condition_parameter_analytical_method_category": "Output Condition Parameter Analytical Method Category",
@@ -138,6 +141,7 @@ __all__: list[str] = [
138
141
  "recipe_ingredient_actual": "Recipe Ingredient Actual",
139
142
  "recipe_ingredients_compounded": "Recipe Ingredients Compounded",
140
143
  "recipe_ingredients_compounded_calculation": "Recipe Ingredients Compounded Calculation",
144
+ "recipe_link": "Experiment Link",
141
145
  "recipe_output": "Recipe Output",
142
146
  "recipe_output_annotation": "Recipe Output Annotation",
143
147
  "recipe_output_metadata": "Recipe Output Metadata",
@@ -214,6 +218,7 @@ class EntityType(StrEnum):
214
218
  ANNOTATION_TYPE = "annotation_type"
215
219
  APPROVAL = "approval"
216
220
  ASYNC_JOB = "async_job"
221
+ BARCODE = "barcode"
217
222
  CALCULATION = "calculation"
218
223
  CALENDAR = "calendar"
219
224
  CALENDAR_EVENT = "calendar_event"
@@ -224,6 +229,7 @@ class EntityType(StrEnum):
224
229
  CONDITION_MATCH = "condition_match"
225
230
  CONDITION_PARAMETER = "condition_parameter"
226
231
  CONDITION_PARAMETER_MAT_FAMILY = "condition_parameter_mat_family"
232
+ CONDITION_PARAMETER_MATCHES = "condition_parameter_matches"
227
233
  CONDITION_PARAMETER_RULE = "condition_parameter_rule"
228
234
  CONDITION_PARAMETER_VALUE = "condition_parameter_value"
229
235
  CONSTRAINT = "constraint"
@@ -292,6 +298,7 @@ class EntityType(StrEnum):
292
298
  OUTPUT_CALCULATION_ENTITY_MAPPING = "output_calculation_entity_mapping"
293
299
  OUTPUT_CATEGORY_ALL = "output_category_all"
294
300
  OUTPUT_CONDITION = "output_condition"
301
+ OUTPUT_CONDITION_CONDITION_PARAMETER = "output_condition_condition_parameter"
295
302
  OUTPUT_DEFAULT_CONDITION = "output_default_condition"
296
303
  OUTPUT_CONDITION_PARAMETER = "output_condition_parameter"
297
304
  OUTPUT_CONDITION_PARAMETER_ANALYTICAL_METHOD_CATEGORY = "output_condition_parameter_analytical_method_category"
@@ -320,6 +327,7 @@ class EntityType(StrEnum):
320
327
  RECIPE_INGREDIENT_ACTUAL = "recipe_ingredient_actual"
321
328
  RECIPE_INGREDIENTS_COMPOUNDED = "recipe_ingredients_compounded"
322
329
  RECIPE_INGREDIENTS_COMPOUNDED_CALCULATION = "recipe_ingredients_compounded_calculation"
330
+ RECIPE_LINK = "recipe_link"
323
331
  RECIPE_OUTPUT = "recipe_output"
324
332
  RECIPE_OUTPUT_ANNOTATION = "recipe_output_annotation"
325
333
  RECIPE_OUTPUT_METADATA = "recipe_output_metadata"
@@ -392,7 +400,7 @@ class EntityType(StrEnum):
392
400
 
393
401
  # DO NOT MODIFY -- This file is generated by type_spec
394
402
  LimitedEntityType = typing.Annotated[
395
- 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],
403
+ 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.NOTEBOOK] | 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],
396
404
  serial_alias_annotation(
397
405
  named_type_path="sdk.entity.LimitedEntityType",
398
406
  ),
@@ -30,4 +30,5 @@ class ListingExportUserTimezone:
30
30
  class ExportType(StrEnum):
31
31
  EXCEL = "excel"
32
32
  PDF = "pdf"
33
+ JSON = "json"
33
34
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -26,6 +26,8 @@ class IntegrationEnvironment(StrEnum):
26
26
  DEV = "dev"
27
27
  TEST = "test"
28
28
  PROD = "prod"
29
+ STG = "stg"
30
+ SBX = "sbx"
29
31
 
30
32
 
31
33
  # DO NOT MODIFY -- This file is generated by type_spec
@@ -0,0 +1,10 @@
1
+ # ruff: noqa: E402 Q003
2
+ # fmt: off
3
+ # isort: skip_file
4
+ # DO NOT MODIFY -- This file is generated by type_spec
5
+ # Kept only for SDK backwards compatibility
6
+ from .integration_session_t import IntegrationSessionType as IntegrationSessionType
7
+ from .integration_session_t import IntegrationSessionBase as IntegrationSessionBase
8
+ from .integration_session_t import IntegrationSessionInstrument as IntegrationSessionInstrument
9
+ from .integration_session_t import IntegrationSession as IntegrationSession
10
+ # DO NOT MODIFY -- This file is generated by type_spec
@@ -0,0 +1,60 @@
1
+ # DO NOT MODIFY -- This file is generated by type_spec
2
+ # ruff: noqa: E402 Q003
3
+ # fmt: off
4
+ # isort: skip_file
5
+ from __future__ import annotations
6
+ import typing # noqa: F401
7
+ import datetime # noqa: F401
8
+ from decimal import Decimal # noqa: F401
9
+ from enum import StrEnum
10
+ import dataclasses
11
+ from pkgs.serialization import serial_class
12
+ from pkgs.serialization import serial_union_annotation
13
+ from . import base_t
14
+ from . import identifier_t
15
+
16
+ __all__: list[str] = [
17
+ "IntegrationSession",
18
+ "IntegrationSessionBase",
19
+ "IntegrationSessionInstrument",
20
+ "IntegrationSessionType",
21
+ ]
22
+
23
+
24
+ # DO NOT MODIFY -- This file is generated by type_spec
25
+ class IntegrationSessionType(StrEnum):
26
+ INSTRUMENT = "instrument"
27
+
28
+
29
+ # DO NOT MODIFY -- This file is generated by type_spec
30
+ @serial_class(
31
+ named_type_path="sdk.integration_session.IntegrationSessionBase",
32
+ )
33
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
34
+ class IntegrationSessionBase:
35
+ type: IntegrationSessionType
36
+
37
+
38
+ # DO NOT MODIFY -- This file is generated by type_spec
39
+ @serial_class(
40
+ named_type_path="sdk.integration_session.IntegrationSessionInstrument",
41
+ parse_require={"type"},
42
+ )
43
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
44
+ class IntegrationSessionInstrument(IntegrationSessionBase):
45
+ type: typing.Literal[IntegrationSessionType.INSTRUMENT] = IntegrationSessionType.INSTRUMENT
46
+ equipment_key: identifier_t.IdentifierKey
47
+
48
+
49
+ # DO NOT MODIFY -- This file is generated by type_spec
50
+ IntegrationSession = typing.Annotated[
51
+ typing.Union[IntegrationSessionInstrument],
52
+ serial_union_annotation(
53
+ named_type_path="sdk.integration_session.IntegrationSession",
54
+ discriminator="type",
55
+ discriminator_map={
56
+ "instrument": IntegrationSessionInstrument,
57
+ },
58
+ ),
59
+ ]
60
+ # DO NOT MODIFY -- This file is generated by type_spec
@@ -0,0 +1,10 @@
1
+ # ruff: noqa: E402 Q003
2
+ # fmt: off
3
+ # isort: skip_file
4
+ # DO NOT MODIFY -- This file is generated by type_spec
5
+ # Kept only for SDK backwards compatibility
6
+ from .integrations_t import DataPackageType as DataPackageType
7
+ from .integrations_t import DataPackageBase as DataPackageBase
8
+ from .integrations_t import DataPackageNumericReading as DataPackageNumericReading
9
+ from .integrations_t import DataPackage as DataPackage
10
+ # DO NOT MODIFY -- This file is generated by type_spec
@@ -0,0 +1,62 @@
1
+ # DO NOT MODIFY -- This file is generated by type_spec
2
+ # ruff: noqa: E402 Q003
3
+ # fmt: off
4
+ # isort: skip_file
5
+ from __future__ import annotations
6
+ import typing # noqa: F401
7
+ import datetime # noqa: F401
8
+ from decimal import Decimal # noqa: F401
9
+ from enum import StrEnum
10
+ import dataclasses
11
+ from pkgs.serialization import serial_class
12
+ from pkgs.serialization import serial_union_annotation
13
+ from . import base_t
14
+ from . import entity_t
15
+
16
+ __all__: list[str] = [
17
+ "DataPackage",
18
+ "DataPackageBase",
19
+ "DataPackageNumericReading",
20
+ "DataPackageType",
21
+ ]
22
+
23
+
24
+ # DO NOT MODIFY -- This file is generated by type_spec
25
+ class DataPackageType(StrEnum):
26
+ NUMERIC_READING = "numeric_reading"
27
+
28
+
29
+ # DO NOT MODIFY -- This file is generated by type_spec
30
+ @serial_class(
31
+ named_type_path="sdk.integrations.DataPackageBase",
32
+ )
33
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
34
+ class DataPackageBase:
35
+ type: DataPackageType
36
+
37
+
38
+ # DO NOT MODIFY -- This file is generated by type_spec
39
+ @serial_class(
40
+ named_type_path="sdk.integrations.DataPackageNumericReading",
41
+ to_string_values={"value"},
42
+ parse_require={"type"},
43
+ )
44
+ @dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
45
+ class DataPackageNumericReading(DataPackageBase):
46
+ type: typing.Literal[DataPackageType.NUMERIC_READING] = DataPackageType.NUMERIC_READING
47
+ value: Decimal
48
+ target_entity: entity_t.EntityIdentifier
49
+
50
+
51
+ # DO NOT MODIFY -- This file is generated by type_spec
52
+ DataPackage = typing.Annotated[
53
+ typing.Union[DataPackageNumericReading],
54
+ serial_union_annotation(
55
+ named_type_path="sdk.integrations.DataPackage",
56
+ discriminator="type",
57
+ discriminator_map={
58
+ "numeric_reading": DataPackageNumericReading,
59
+ },
60
+ ),
61
+ ]
62
+ # DO NOT MODIFY -- This file is generated by type_spec
@@ -0,0 +1,46 @@
1
+ # ruff: noqa: E402 Q003
2
+ # fmt: off
3
+ # isort: skip_file
4
+ # DO NOT MODIFY -- This file is generated by type_spec
5
+ # Kept only for SDK backwards compatibility
6
+ from .listing_t import ColumnType as ColumnType
7
+ from .listing_t import ColumnIdentifierEntityRefName as ColumnIdentifierEntityRefName
8
+ from .listing_t import ColumnIdentifierTransitive as ColumnIdentifierTransitive
9
+ from .listing_t import LoadAggregateType as LoadAggregateType
10
+ from .listing_t import LoadAggregateGroupBy as LoadAggregateGroupBy
11
+ from .listing_t import LoadAggregateCollect as LoadAggregateCollect
12
+ from .listing_t import LoadAggregateCollectDistinct as LoadAggregateCollectDistinct
13
+ from .listing_t import LoadAggregateCount as LoadAggregateCount
14
+ from .listing_t import LoadAggregateCountDistinct as LoadAggregateCountDistinct
15
+ from .listing_t import LoadAggregateFirst as LoadAggregateFirst
16
+ from .listing_t import LoadAggregateUniqueValue as LoadAggregateUniqueValue
17
+ from .listing_t import LoadAggregateMin as LoadAggregateMin
18
+ from .listing_t import LoadAggregateMax as LoadAggregateMax
19
+ from .listing_t import LoadAggregateMean as LoadAggregateMean
20
+ from .listing_t import LoadAggregateStddev as LoadAggregateStddev
21
+ from .listing_t import LoadAggregateSum as LoadAggregateSum
22
+ from .listing_t import DateGroupType as DateGroupType
23
+ from .listing_t import LoadAggregateGroupByDate as LoadAggregateGroupByDate
24
+ from .listing_t import AggregateLoadTypes as AggregateLoadTypes
25
+ from .listing_t import ColumnIdentifierTransitiveAggregate as ColumnIdentifierTransitiveAggregate
26
+ from .listing_t import ColumnIdentifier as ColumnIdentifier
27
+ from .listing_t import FilterRelation as FilterRelation
28
+ from .listing_t import FilterSpecBase as FilterSpecBase
29
+ from .listing_t import FilterScalarType as FilterScalarType
30
+ from .listing_t import FilterIdType as FilterIdType
31
+ from .listing_t import StringFilterValue as StringFilterValue
32
+ from .listing_t import FilterSpecEquals as FilterSpecEquals
33
+ from .listing_t import FilterSpecInclude as FilterSpecInclude
34
+ from .listing_t import FilterSpecIStrContains as FilterSpecIStrContains
35
+ from .listing_t import FilterSpecIStrStartsWith as FilterSpecIStrStartsWith
36
+ from .listing_t import FilterSpecExists as FilterSpecExists
37
+ from .listing_t import FilterSpecGreater as FilterSpecGreater
38
+ from .listing_t import FilterSpecLess as FilterSpecLess
39
+ from .listing_t import FilterSpecGeq as FilterSpecGeq
40
+ from .listing_t import FilterSpecLeq as FilterSpecLeq
41
+ from .listing_t import FilterSpec as FilterSpec
42
+ from .listing_t import FilterNodeType as FilterNodeType
43
+ from .listing_t import FilterNodeBase as FilterNodeBase
44
+ from .listing_t import FilterNodeColumnAnd as FilterNodeColumnAnd
45
+ from .listing_t import FilterNode as FilterNode
46
+ # DO NOT MODIFY -- This file is generated by type_spec