UncountablePythonSDK 0.0.24__py3-none-any.whl → 0.0.131__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.
- docs/conf.py +60 -8
- docs/index.md +107 -4
- docs/integration_examples/create_ingredient.md +43 -0
- docs/integration_examples/create_output.md +56 -0
- docs/integration_examples/index.md +6 -0
- docs/justfile +2 -2
- docs/requirements.txt +7 -5
- examples/async_batch.py +5 -6
- examples/basic_auth.py +7 -0
- examples/create_entity.py +4 -6
- examples/create_ingredient_sdk.py +34 -0
- examples/download_files.py +26 -0
- examples/edit_recipe_inputs.py +50 -0
- examples/integration-server/jobs/materials_auto/concurrent_cron.py +11 -0
- examples/integration-server/jobs/materials_auto/example_cron.py +21 -0
- examples/integration-server/jobs/materials_auto/example_http.py +47 -0
- examples/integration-server/jobs/materials_auto/example_instrument.py +100 -0
- examples/integration-server/jobs/materials_auto/example_parse.py +140 -0
- examples/integration-server/jobs/materials_auto/example_predictions.py +61 -0
- examples/integration-server/jobs/materials_auto/example_runsheet_wh.py +39 -0
- examples/integration-server/jobs/materials_auto/example_wh.py +23 -0
- examples/integration-server/jobs/materials_auto/profile.yaml +104 -0
- examples/integration-server/pyproject.toml +224 -0
- examples/invoke_uploader.py +26 -0
- examples/oauth.py +7 -0
- examples/set_recipe_metadata_file.py +40 -0
- examples/set_recipe_output_file_sdk.py +26 -0
- examples/upload_files.py +2 -3
- pkgs/argument_parser/__init__.py +9 -0
- pkgs/argument_parser/_is_namedtuple.py +3 -0
- pkgs/argument_parser/argument_parser.py +295 -74
- pkgs/argument_parser/case_convert.py +4 -3
- pkgs/filesystem_utils/__init__.py +20 -0
- pkgs/filesystem_utils/_blob_session.py +144 -0
- pkgs/filesystem_utils/_gdrive_session.py +309 -0
- pkgs/filesystem_utils/_local_session.py +69 -0
- pkgs/filesystem_utils/_s3_session.py +118 -0
- pkgs/filesystem_utils/_sftp_session.py +151 -0
- pkgs/filesystem_utils/file_type_utils.py +91 -0
- pkgs/filesystem_utils/filesystem_session.py +39 -0
- pkgs/py.typed +0 -0
- pkgs/serialization/__init__.py +8 -1
- pkgs/serialization/annotation.py +64 -0
- pkgs/serialization/missing_sentry.py +1 -1
- pkgs/serialization/opaque_key.py +1 -1
- pkgs/serialization/serial_alias.py +47 -0
- pkgs/serialization/serial_class.py +69 -54
- pkgs/serialization/serial_generic.py +16 -0
- pkgs/serialization/serial_union.py +84 -0
- pkgs/serialization/yaml.py +57 -0
- pkgs/serialization_util/__init__.py +7 -7
- pkgs/serialization_util/convert_to_snakecase.py +27 -0
- pkgs/serialization_util/dataclasses.py +14 -0
- pkgs/serialization_util/serialization_helpers.py +117 -71
- pkgs/type_spec/actions_registry/__main__.py +0 -4
- pkgs/type_spec/actions_registry/emit_typescript.py +5 -5
- pkgs/type_spec/builder.py +438 -109
- pkgs/type_spec/builder_types.py +9 -0
- pkgs/type_spec/config.py +52 -24
- pkgs/type_spec/cross_output_links.py +99 -0
- pkgs/type_spec/emit_io_ts.py +1 -1
- pkgs/type_spec/emit_open_api.py +160 -41
- pkgs/type_spec/emit_open_api_util.py +13 -7
- pkgs/type_spec/emit_python.py +450 -136
- pkgs/type_spec/emit_typescript.py +117 -250
- pkgs/type_spec/emit_typescript_util.py +293 -4
- pkgs/type_spec/load_types.py +20 -5
- pkgs/type_spec/non_discriminated_union_exceptions.py +14 -0
- pkgs/type_spec/open_api_util.py +29 -4
- pkgs/type_spec/parts/base.py.prepart +13 -10
- pkgs/type_spec/parts/base.ts.prepart +4 -0
- pkgs/type_spec/type_info/__main__.py +3 -1
- pkgs/type_spec/type_info/emit_type_info.py +161 -32
- pkgs/type_spec/ui_entry_actions/__init__.py +4 -0
- pkgs/type_spec/ui_entry_actions/generate_ui_entry_actions.py +308 -0
- pkgs/type_spec/util.py +4 -4
- pkgs/type_spec/value_spec/__main__.py +27 -10
- pkgs/type_spec/value_spec/convert_type.py +21 -1
- pkgs/type_spec/value_spec/emit_python.py +25 -7
- pkgs/type_spec/value_spec/types.py +1 -1
- uncountable/__init__.py +1 -2
- uncountable/core/__init__.py +11 -3
- uncountable/core/async_batch.py +16 -1
- uncountable/core/client.py +247 -52
- uncountable/core/environment.py +41 -0
- uncountable/core/file_upload.py +67 -22
- uncountable/core/types.py +8 -13
- uncountable/integration/cli.py +142 -0
- uncountable/integration/construct_client.py +43 -27
- uncountable/integration/cron.py +12 -11
- uncountable/integration/db/connect.py +12 -2
- uncountable/integration/db/session.py +25 -0
- uncountable/integration/entrypoint.py +4 -34
- uncountable/integration/executors/executors.py +147 -0
- uncountable/integration/executors/generic_upload_executor.py +336 -0
- uncountable/integration/executors/script_executor.py +15 -9
- uncountable/integration/http_server/__init__.py +5 -0
- uncountable/integration/http_server/types.py +69 -0
- uncountable/integration/job.py +246 -19
- uncountable/integration/queue_runner/__init__.py +0 -0
- uncountable/integration/queue_runner/command_server/__init__.py +28 -0
- uncountable/integration/queue_runner/command_server/command_client.py +133 -0
- uncountable/integration/queue_runner/command_server/command_server.py +142 -0
- uncountable/integration/queue_runner/command_server/constants.py +4 -0
- uncountable/integration/queue_runner/command_server/protocol/__init__.py +0 -0
- uncountable/integration/queue_runner/command_server/protocol/command_server.proto +58 -0
- uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.py +57 -0
- uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.pyi +114 -0
- uncountable/integration/queue_runner/command_server/protocol/command_server_pb2_grpc.py +264 -0
- uncountable/integration/queue_runner/command_server/types.py +75 -0
- uncountable/integration/queue_runner/datastore/__init__.py +3 -0
- uncountable/integration/queue_runner/datastore/datastore_sqlite.py +250 -0
- uncountable/integration/queue_runner/datastore/interface.py +29 -0
- uncountable/integration/queue_runner/datastore/model.py +24 -0
- uncountable/integration/queue_runner/job_scheduler.py +200 -0
- uncountable/integration/queue_runner/queue_runner.py +34 -0
- uncountable/integration/queue_runner/types.py +7 -0
- uncountable/integration/queue_runner/worker.py +116 -0
- uncountable/integration/scan_profiles.py +67 -0
- uncountable/integration/scheduler.py +199 -0
- uncountable/integration/secret_retrieval/__init__.py +3 -0
- uncountable/integration/secret_retrieval/retrieve_secret.py +93 -0
- uncountable/integration/server.py +103 -54
- uncountable/integration/telemetry.py +251 -0
- uncountable/integration/webhook_server/entrypoint.py +97 -0
- uncountable/types/__init__.py +149 -30
- uncountable/types/api/batch/execute_batch.py +16 -9
- uncountable/types/api/batch/execute_batch_load_async.py +13 -7
- uncountable/types/api/chemical/convert_chemical_formats.py +20 -8
- uncountable/types/api/condition_parameters/__init__.py +1 -0
- uncountable/types/api/condition_parameters/upsert_condition_match.py +72 -0
- uncountable/types/api/entity/create_entities.py +24 -12
- uncountable/types/api/entity/create_entity.py +22 -13
- uncountable/types/api/entity/create_or_update_entity.py +48 -0
- uncountable/types/api/entity/export_entities.py +59 -0
- uncountable/types/api/entity/get_entities_data.py +18 -9
- uncountable/types/api/entity/grant_entity_permissions.py +48 -0
- uncountable/types/api/entity/list_aggregate.py +79 -0
- uncountable/types/api/entity/list_entities.py +53 -14
- uncountable/types/api/entity/lock_entity.py +45 -0
- uncountable/types/api/entity/lookup_entity.py +116 -0
- uncountable/types/api/entity/resolve_entity_ids.py +19 -10
- uncountable/types/api/entity/set_entity_field_values.py +44 -0
- uncountable/types/api/entity/set_values.py +15 -8
- uncountable/types/api/entity/transition_entity_phase.py +27 -12
- uncountable/types/api/entity/unlock_entity.py +44 -0
- uncountable/types/api/equipment/__init__.py +1 -0
- uncountable/types/api/equipment/associate_equipment_input.py +43 -0
- uncountable/types/api/field_options/__init__.py +1 -0
- uncountable/types/api/field_options/upsert_field_options.py +55 -0
- uncountable/types/api/files/__init__.py +1 -0
- uncountable/types/api/files/download_file.py +77 -0
- uncountable/types/api/id_source/list_id_source.py +20 -11
- uncountable/types/api/id_source/match_id_source.py +15 -10
- uncountable/types/api/input_groups/get_input_group_names.py +16 -7
- uncountable/types/api/inputs/create_inputs.py +28 -14
- uncountable/types/api/inputs/get_input_data.py +34 -16
- uncountable/types/api/inputs/get_input_names.py +19 -10
- uncountable/types/api/inputs/get_inputs_data.py +29 -11
- uncountable/types/api/inputs/set_input_attribute_values.py +16 -10
- uncountable/types/api/inputs/set_input_category.py +44 -0
- uncountable/types/api/inputs/set_input_subcategories.py +45 -0
- uncountable/types/api/inputs/set_intermediate_type.py +50 -0
- uncountable/types/api/integrations/__init__.py +1 -0
- uncountable/types/api/integrations/publish_realtime_data.py +41 -0
- uncountable/types/api/integrations/push_notification.py +49 -0
- uncountable/types/api/integrations/register_sockets_token.py +41 -0
- uncountable/types/api/listing/__init__.py +1 -0
- uncountable/types/api/listing/fetch_listing.py +58 -0
- uncountable/types/api/material_families/__init__.py +1 -0
- uncountable/types/api/material_families/update_entity_material_families.py +47 -0
- uncountable/types/api/notebooks/__init__.py +1 -0
- uncountable/types/api/notebooks/add_notebook_content.py +119 -0
- uncountable/types/api/outputs/get_output_data.py +32 -17
- uncountable/types/api/outputs/get_output_names.py +18 -9
- uncountable/types/api/outputs/get_output_organization.py +173 -0
- uncountable/types/api/outputs/resolve_output_conditions.py +23 -11
- uncountable/types/api/permissions/set_core_permissions.py +31 -15
- uncountable/types/api/project/get_projects.py +20 -11
- uncountable/types/api/project/get_projects_data.py +23 -14
- uncountable/types/api/recipe_links/create_recipe_link.py +17 -10
- uncountable/types/api/recipe_links/remove_recipe_link.py +45 -0
- uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py +19 -10
- uncountable/types/api/recipes/add_recipe_to_project.py +42 -0
- uncountable/types/api/recipes/add_time_series_data.py +64 -0
- uncountable/types/api/recipes/archive_recipes.py +14 -7
- uncountable/types/api/recipes/associate_recipe_as_input.py +16 -8
- uncountable/types/api/recipes/associate_recipe_as_lot.py +14 -7
- uncountable/types/api/recipes/clear_recipe_outputs.py +42 -0
- uncountable/types/api/recipes/create_mix_order.py +44 -0
- uncountable/types/api/recipes/create_recipe.py +21 -14
- uncountable/types/api/recipes/create_recipes.py +25 -13
- uncountable/types/api/recipes/disassociate_recipe_as_input.py +14 -7
- uncountable/types/api/recipes/edit_recipe_inputs.py +208 -19
- uncountable/types/api/recipes/get_column_calculation_values.py +57 -0
- uncountable/types/api/recipes/get_curve.py +15 -9
- uncountable/types/api/recipes/get_recipe_calculations.py +17 -11
- uncountable/types/api/recipes/get_recipe_links.py +14 -8
- uncountable/types/api/recipes/get_recipe_names.py +16 -7
- uncountable/types/api/recipes/get_recipe_output_metadata.py +16 -10
- uncountable/types/api/recipes/get_recipes_data.py +96 -45
- uncountable/types/api/recipes/lock_recipes.py +64 -0
- uncountable/types/api/recipes/remove_recipe_from_project.py +42 -0
- uncountable/types/api/recipes/set_recipe_inputs.py +19 -13
- uncountable/types/api/recipes/set_recipe_metadata.py +14 -7
- uncountable/types/api/recipes/set_recipe_output_annotations.py +114 -0
- uncountable/types/api/recipes/set_recipe_output_file.py +55 -0
- uncountable/types/api/recipes/set_recipe_outputs.py +40 -15
- uncountable/types/api/recipes/set_recipe_tags.py +30 -13
- uncountable/types/api/recipes/set_recipe_total.py +59 -0
- uncountable/types/api/recipes/unarchive_recipes.py +41 -0
- uncountable/types/api/recipes/unlock_recipes.py +51 -0
- uncountable/types/api/runsheet/__init__.py +1 -0
- uncountable/types/api/runsheet/complete_async_upload.py +41 -0
- uncountable/types/api/triggers/run_trigger.py +15 -8
- uncountable/types/api/uploader/__init__.py +1 -0
- uncountable/types/api/uploader/complete_async_parse.py +46 -0
- uncountable/types/api/uploader/invoke_uploader.py +46 -0
- uncountable/types/api/user/__init__.py +1 -0
- uncountable/types/api/user/get_current_user_info.py +40 -0
- uncountable/types/async_batch.py +8 -52
- uncountable/types/async_batch_processor.py +694 -18
- uncountable/types/async_batch_t.py +108 -0
- uncountable/types/async_jobs.py +8 -0
- uncountable/types/async_jobs_t.py +52 -0
- uncountable/types/auth_retrieval.py +11 -0
- uncountable/types/auth_retrieval_t.py +75 -0
- uncountable/types/base.py +5 -80
- uncountable/types/base_t.py +87 -0
- uncountable/types/calculations.py +3 -19
- uncountable/types/calculations_t.py +26 -0
- uncountable/types/chemical_structure.py +3 -23
- uncountable/types/chemical_structure_t.py +28 -0
- uncountable/types/client_base.py +1170 -88
- uncountable/types/client_config.py +8 -0
- uncountable/types/client_config_t.py +36 -0
- uncountable/types/curves.py +5 -43
- uncountable/types/curves_t.py +50 -0
- uncountable/types/data.py +12 -0
- uncountable/types/data_t.py +103 -0
- uncountable/types/entity.py +8 -270
- uncountable/types/entity_t.py +446 -0
- uncountable/types/experiment_groups.py +3 -19
- uncountable/types/experiment_groups_t.py +26 -0
- uncountable/types/exports.py +8 -0
- uncountable/types/exports_t.py +34 -0
- uncountable/types/field_values.py +25 -61
- uncountable/types/field_values_t.py +302 -0
- uncountable/types/fields.py +3 -20
- uncountable/types/fields_t.py +27 -0
- uncountable/types/generic_upload.py +14 -0
- uncountable/types/generic_upload_t.py +119 -0
- uncountable/types/id_source.py +7 -45
- uncountable/types/id_source_t.py +68 -0
- uncountable/types/identifier.py +6 -50
- uncountable/types/identifier_t.py +62 -0
- uncountable/types/input_attributes.py +3 -25
- uncountable/types/input_attributes_t.py +29 -0
- uncountable/types/inputs.py +6 -57
- uncountable/types/inputs_t.py +82 -0
- uncountable/types/integration_server.py +8 -0
- uncountable/types/integration_server_t.py +46 -0
- uncountable/types/integration_session.py +10 -0
- uncountable/types/integration_session_t.py +60 -0
- uncountable/types/integrations.py +10 -0
- uncountable/types/integrations_t.py +62 -0
- uncountable/types/job_definition.py +28 -0
- uncountable/types/job_definition_t.py +285 -0
- uncountable/types/listing.py +9 -0
- uncountable/types/listing_t.py +51 -0
- uncountable/types/notices.py +8 -0
- uncountable/types/notices_t.py +37 -0
- uncountable/types/notifications.py +11 -0
- uncountable/types/notifications_t.py +74 -0
- uncountable/types/outputs.py +3 -22
- uncountable/types/outputs_t.py +29 -0
- uncountable/types/overrides.py +9 -0
- uncountable/types/overrides_t.py +49 -0
- uncountable/types/permissions.py +3 -42
- uncountable/types/permissions_t.py +45 -0
- uncountable/types/phases.py +3 -19
- uncountable/types/phases_t.py +26 -0
- uncountable/types/post_base.py +3 -26
- uncountable/types/post_base_t.py +29 -0
- uncountable/types/queued_job.py +17 -0
- uncountable/types/queued_job_t.py +140 -0
- uncountable/types/recipe_identifiers.py +7 -58
- uncountable/types/recipe_identifiers_t.py +75 -0
- uncountable/types/recipe_inputs.py +4 -26
- uncountable/types/recipe_inputs_t.py +29 -0
- uncountable/types/recipe_links.py +4 -46
- uncountable/types/recipe_links_t.py +53 -0
- uncountable/types/recipe_metadata.py +5 -48
- uncountable/types/recipe_metadata_t.py +57 -0
- uncountable/types/recipe_output_metadata.py +3 -20
- uncountable/types/recipe_output_metadata_t.py +27 -0
- uncountable/types/recipe_tags.py +3 -19
- uncountable/types/recipe_tags_t.py +26 -0
- uncountable/types/recipe_workflow_steps.py +9 -73
- uncountable/types/recipe_workflow_steps_t.py +95 -0
- uncountable/types/recipes.py +7 -0
- uncountable/types/recipes_t.py +25 -0
- uncountable/types/response.py +3 -21
- uncountable/types/response_t.py +26 -0
- uncountable/types/secret_retrieval.py +11 -0
- uncountable/types/secret_retrieval_t.py +75 -0
- uncountable/types/sockets.py +20 -0
- uncountable/types/sockets_t.py +169 -0
- uncountable/types/structured_filters.py +25 -0
- uncountable/types/structured_filters_t.py +248 -0
- uncountable/types/units.py +3 -19
- uncountable/types/units_t.py +26 -0
- uncountable/types/uploader.py +24 -0
- uncountable/types/uploader_t.py +222 -0
- uncountable/types/users.py +3 -20
- uncountable/types/users_t.py +27 -0
- uncountable/types/webhook_job.py +9 -0
- uncountable/types/webhook_job_t.py +48 -0
- uncountable/types/workflows.py +4 -28
- uncountable/types/workflows_t.py +38 -0
- uncountablepythonsdk-0.0.131.dist-info/METADATA +64 -0
- uncountablepythonsdk-0.0.131.dist-info/RECORD +363 -0
- {UncountablePythonSDK-0.0.24.dist-info → uncountablepythonsdk-0.0.131.dist-info}/WHEEL +1 -1
- {UncountablePythonSDK-0.0.24.dist-info → uncountablepythonsdk-0.0.131.dist-info}/top_level.txt +0 -1
- UncountablePythonSDK-0.0.24.dist-info/METADATA +0 -47
- UncountablePythonSDK-0.0.24.dist-info/RECORD +0 -216
- docs/quickstart.md +0 -19
- examples/recipe-import/importer.py +0 -39
- type_spec/external/api/batch/execute_batch.yaml +0 -56
- type_spec/external/api/batch/execute_batch_load_async.yaml +0 -18
- type_spec/external/api/chemical/convert_chemical_formats.yaml +0 -33
- type_spec/external/api/entity/create_entities.yaml +0 -45
- type_spec/external/api/entity/create_entity.yaml +0 -51
- type_spec/external/api/entity/get_entities_data.yaml +0 -29
- type_spec/external/api/entity/list_entities.yaml +0 -52
- type_spec/external/api/entity/resolve_entity_ids.yaml +0 -29
- type_spec/external/api/entity/set_values.yaml +0 -18
- type_spec/external/api/entity/transition_entity_phase.yaml +0 -44
- type_spec/external/api/id_source/list_id_source.yaml +0 -35
- type_spec/external/api/id_source/match_id_source.yaml +0 -32
- type_spec/external/api/input_groups/get_input_group_names.yaml +0 -29
- type_spec/external/api/inputs/create_inputs.yaml +0 -48
- type_spec/external/api/inputs/get_input_data.yaml +0 -95
- type_spec/external/api/inputs/get_input_names.yaml +0 -38
- type_spec/external/api/inputs/get_inputs_data.yaml +0 -82
- type_spec/external/api/inputs/set_input_attribute_values.yaml +0 -33
- type_spec/external/api/outputs/get_output_data.yaml +0 -92
- type_spec/external/api/outputs/get_output_names.yaml +0 -35
- type_spec/external/api/outputs/resolve_output_conditions.yaml +0 -50
- type_spec/external/api/permissions/set_core_permissions.yaml +0 -69
- type_spec/external/api/project/get_projects.yaml +0 -42
- type_spec/external/api/project/get_projects_data.yaml +0 -50
- type_spec/external/api/recipe_links/create_recipe_link.yaml +0 -25
- type_spec/external/api/recipe_metadata/get_recipe_metadata_data.yaml +0 -41
- type_spec/external/api/recipes/archive_recipes.yaml +0 -20
- type_spec/external/api/recipes/associate_recipe_as_input.yaml +0 -19
- type_spec/external/api/recipes/associate_recipe_as_lot.yaml +0 -19
- type_spec/external/api/recipes/create_recipe.yaml +0 -39
- type_spec/external/api/recipes/create_recipes.yaml +0 -47
- type_spec/external/api/recipes/disassociate_recipe_as_input.yaml +0 -16
- type_spec/external/api/recipes/edit_recipe_inputs.yaml +0 -85
- type_spec/external/api/recipes/get_curve.yaml +0 -21
- type_spec/external/api/recipes/get_recipe_calculations.yaml +0 -39
- type_spec/external/api/recipes/get_recipe_links.yaml +0 -26
- type_spec/external/api/recipes/get_recipe_names.yaml +0 -29
- type_spec/external/api/recipes/get_recipe_output_metadata.yaml +0 -36
- type_spec/external/api/recipes/get_recipes_data.yaml +0 -244
- type_spec/external/api/recipes/set_recipe_inputs.yaml +0 -42
- type_spec/external/api/recipes/set_recipe_metadata.yaml +0 -20
- type_spec/external/api/recipes/set_recipe_outputs.yaml +0 -52
- type_spec/external/api/recipes/set_recipe_tags.yaml +0 -62
- type_spec/external/api/triggers/run_trigger.yaml +0 -18
- uncountable/integration/types.py +0 -89
|
@@ -0,0 +1,108 @@
|
|
|
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 . import base_t
|
|
13
|
+
from . import entity_t
|
|
14
|
+
|
|
15
|
+
__all__: list[str] = [
|
|
16
|
+
"AsyncBatchActionReturn",
|
|
17
|
+
"AsyncBatchRequest",
|
|
18
|
+
"AsyncBatchRequestPath",
|
|
19
|
+
"AsyncBatchResultValue",
|
|
20
|
+
"QueuedAsyncBatchRequest",
|
|
21
|
+
"SavedAsyncBatchActionReturn",
|
|
22
|
+
]
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
26
|
+
class AsyncBatchRequestPath(StrEnum):
|
|
27
|
+
CREATE_RECIPE = "recipes/create_recipe"
|
|
28
|
+
SET_RECIPE_METADATA = "recipes/set_recipe_metadata"
|
|
29
|
+
SET_RECIPE_TAGS = "recipes/set_recipe_tags"
|
|
30
|
+
EDIT_RECIPE_INPUTS = "recipes/edit_recipe_inputs"
|
|
31
|
+
ARCHIVE_RECIPES = "recipes/archive"
|
|
32
|
+
LOCK_RECIPES = "recipes/lock_recipes"
|
|
33
|
+
UNLOCK_RECIPES = "recipes/unlock_recipes"
|
|
34
|
+
ASSOCIATE_EQUIPMENT_INPUT = "equipment/associate_equipment_input"
|
|
35
|
+
INVOKE_UPLOADER = "uploader/invoke_uploader"
|
|
36
|
+
ASSOCIATE_RECIPE_AS_INPUT = "recipes/associate_recipe_as_input"
|
|
37
|
+
CLEAR_RECIPE_OUTPUTS = "recipes/clear_recipe_outputs"
|
|
38
|
+
GRANT_ENTITY_PERMISSIONS = "entity/grant_entity_permissions"
|
|
39
|
+
SET_ENTITY_FIELD_VALUES = "entity/set_entity_field_values"
|
|
40
|
+
ASSOCIATE_RECIPE_AS_LOT = "recipes/associate_recipe_as_lot"
|
|
41
|
+
CREATE_OR_UPDATE_ENTITY = "entity/create_or_update_entity"
|
|
42
|
+
ADD_TIME_SERIES_DATA = "recipes/add_time_series_data"
|
|
43
|
+
LOOKUP_ENTITY = "entity/lookup_entity"
|
|
44
|
+
CREATE_RECIPE_LINK = "recipe_links/create_recipe_link"
|
|
45
|
+
UPSERT_CONDITION_MATCH = "condition_parameters/upsert_condition_match"
|
|
46
|
+
COMPLETE_ASYNC_UPLOAD = "runsheet/complete_async_upload"
|
|
47
|
+
CREATE_MIX_ORDER = "recipes/create_mix_order"
|
|
48
|
+
PUSH_NOTIFICATION = "integrations/push_notification"
|
|
49
|
+
COMPLETE_ASYNC_PARSE = "uploader/complete_async_parse"
|
|
50
|
+
SET_RECIPE_TOTAL = "recipes/set_recipe_total"
|
|
51
|
+
TRANSITION_ENTITY_PHASE = "entity/transition_entity_phase"
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
55
|
+
@serial_class(
|
|
56
|
+
named_type_path="sdk.async_batch.AsyncBatchRequest",
|
|
57
|
+
unconverted_values={"data"},
|
|
58
|
+
)
|
|
59
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
60
|
+
class AsyncBatchRequest:
|
|
61
|
+
path: AsyncBatchRequestPath
|
|
62
|
+
data: base_t.JsonValue
|
|
63
|
+
batch_reference: str
|
|
64
|
+
depends_on: list[str] | None = None
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
68
|
+
@serial_class(
|
|
69
|
+
named_type_path="sdk.async_batch.AsyncBatchResultValue",
|
|
70
|
+
unconverted_values={"value"},
|
|
71
|
+
)
|
|
72
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
73
|
+
class AsyncBatchResultValue:
|
|
74
|
+
data_key: str
|
|
75
|
+
value: base_t.JsonValue
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
79
|
+
@serial_class(
|
|
80
|
+
named_type_path="sdk.async_batch.AsyncBatchActionReturn",
|
|
81
|
+
)
|
|
82
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
83
|
+
class AsyncBatchActionReturn:
|
|
84
|
+
modification_made: bool
|
|
85
|
+
result_id: base_t.ObjectId | None = None
|
|
86
|
+
entity: entity_t.Entity | None = None
|
|
87
|
+
result_values: list[AsyncBatchResultValue] | None = None
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
91
|
+
@serial_class(
|
|
92
|
+
named_type_path="sdk.async_batch.SavedAsyncBatchActionReturn",
|
|
93
|
+
)
|
|
94
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
95
|
+
class SavedAsyncBatchActionReturn:
|
|
96
|
+
identifier: str
|
|
97
|
+
result_data: AsyncBatchActionReturn
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
101
|
+
@serial_class(
|
|
102
|
+
named_type_path="sdk.async_batch.QueuedAsyncBatchRequest",
|
|
103
|
+
)
|
|
104
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True, frozen=True, eq=True) # type: ignore[literal-required]
|
|
105
|
+
class QueuedAsyncBatchRequest:
|
|
106
|
+
path: AsyncBatchRequestPath
|
|
107
|
+
batch_reference: str
|
|
108
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -0,0 +1,8 @@
|
|
|
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 .async_jobs_t import AsyncJobType as AsyncJobType
|
|
7
|
+
from .async_jobs_t import AsyncJobStatus as AsyncJobStatus
|
|
8
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -0,0 +1,52 @@
|
|
|
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
|
+
from pkgs.serialization import serial_string_enum
|
|
11
|
+
|
|
12
|
+
__all__: list[str] = [
|
|
13
|
+
"ASYNC_JOB_STATUS_FIELD_REF_NAME",
|
|
14
|
+
"ASYNC_JOB_TYPE_FIELD_REF_NAME",
|
|
15
|
+
"AsyncJobStatus",
|
|
16
|
+
"AsyncJobType",
|
|
17
|
+
]
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
21
|
+
@serial_string_enum(
|
|
22
|
+
labels={
|
|
23
|
+
"async_batch_load": "Async Batch Load",
|
|
24
|
+
"integration_server_run": "Integration Server Run",
|
|
25
|
+
},
|
|
26
|
+
)
|
|
27
|
+
class AsyncJobType(StrEnum):
|
|
28
|
+
ASYNC_BATCH_LOAD = "async_batch_load"
|
|
29
|
+
INTEGRATION_SERVER_RUN = "integration_server_run"
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
33
|
+
@serial_string_enum(
|
|
34
|
+
labels={
|
|
35
|
+
"in_progress": "In Progress",
|
|
36
|
+
"completed": "Completed",
|
|
37
|
+
"error": "Error",
|
|
38
|
+
},
|
|
39
|
+
)
|
|
40
|
+
class AsyncJobStatus(StrEnum):
|
|
41
|
+
IN_PROGRESS = "in_progress"
|
|
42
|
+
COMPLETED = "completed"
|
|
43
|
+
ERROR = "error"
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
47
|
+
ASYNC_JOB_TYPE_FIELD_REF_NAME = "core_async_job_jobType"
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
51
|
+
ASYNC_JOB_STATUS_FIELD_REF_NAME = "core_async_job_status"
|
|
52
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -0,0 +1,11 @@
|
|
|
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 .auth_retrieval_t import AuthRetrievalType as AuthRetrievalType
|
|
7
|
+
from .auth_retrieval_t import AuthRetrievalBase as AuthRetrievalBase
|
|
8
|
+
from .auth_retrieval_t import AuthRetrievalOAuth as AuthRetrievalOAuth
|
|
9
|
+
from .auth_retrieval_t import AuthRetrievalBasic as AuthRetrievalBasic
|
|
10
|
+
from .auth_retrieval_t import AuthRetrieval as AuthRetrieval
|
|
11
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -0,0 +1,75 @@
|
|
|
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 secret_retrieval_t
|
|
15
|
+
|
|
16
|
+
__all__: list[str] = [
|
|
17
|
+
"AuthRetrieval",
|
|
18
|
+
"AuthRetrievalBase",
|
|
19
|
+
"AuthRetrievalBasic",
|
|
20
|
+
"AuthRetrievalOAuth",
|
|
21
|
+
"AuthRetrievalType",
|
|
22
|
+
]
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
26
|
+
class AuthRetrievalType(StrEnum):
|
|
27
|
+
OAUTH = "oauth"
|
|
28
|
+
BASIC = "basic"
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
32
|
+
@serial_class(
|
|
33
|
+
named_type_path="sdk.auth_retrieval.AuthRetrievalBase",
|
|
34
|
+
)
|
|
35
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
36
|
+
class AuthRetrievalBase:
|
|
37
|
+
type: AuthRetrievalType
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
41
|
+
@serial_class(
|
|
42
|
+
named_type_path="sdk.auth_retrieval.AuthRetrievalOAuth",
|
|
43
|
+
parse_require={"type"},
|
|
44
|
+
)
|
|
45
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
46
|
+
class AuthRetrievalOAuth(AuthRetrievalBase):
|
|
47
|
+
type: typing.Literal[AuthRetrievalType.OAUTH] = AuthRetrievalType.OAUTH
|
|
48
|
+
refresh_token_secret: secret_retrieval_t.SecretRetrieval
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
52
|
+
@serial_class(
|
|
53
|
+
named_type_path="sdk.auth_retrieval.AuthRetrievalBasic",
|
|
54
|
+
parse_require={"type"},
|
|
55
|
+
)
|
|
56
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
57
|
+
class AuthRetrievalBasic(AuthRetrievalBase):
|
|
58
|
+
type: typing.Literal[AuthRetrievalType.BASIC] = AuthRetrievalType.BASIC
|
|
59
|
+
api_id_secret: secret_retrieval_t.SecretRetrieval
|
|
60
|
+
api_key_secret: secret_retrieval_t.SecretRetrieval
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
64
|
+
AuthRetrieval = typing.Annotated[
|
|
65
|
+
AuthRetrievalOAuth | AuthRetrievalBasic,
|
|
66
|
+
serial_union_annotation(
|
|
67
|
+
named_type_path="sdk.auth_retrieval.AuthRetrieval",
|
|
68
|
+
discriminator="type",
|
|
69
|
+
discriminator_map={
|
|
70
|
+
"oauth": AuthRetrievalOAuth,
|
|
71
|
+
"basic": AuthRetrievalBasic,
|
|
72
|
+
},
|
|
73
|
+
),
|
|
74
|
+
]
|
|
75
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
uncountable/types/base.py
CHANGED
|
@@ -1,85 +1,10 @@
|
|
|
1
|
-
#
|
|
2
|
-
# flake8: noqa: F821
|
|
3
|
-
# ruff: noqa: E402
|
|
1
|
+
# ruff: noqa: E402 Q003
|
|
4
2
|
# fmt: off
|
|
5
3
|
# isort: skip_file
|
|
6
|
-
from __future__ import annotations
|
|
7
|
-
import typing # noqa: F401
|
|
8
|
-
import datetime # noqa: F401
|
|
9
|
-
from decimal import Decimal # noqa: F401
|
|
10
|
-
|
|
11
|
-
__all__: list[str] = [
|
|
12
|
-
"JsonScalar",
|
|
13
|
-
"JsonValue",
|
|
14
|
-
"ObjectId",
|
|
15
|
-
]
|
|
16
4
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
17
|
-
#
|
|
18
|
-
"""
|
|
19
|
-
Types that type_spec will use in the emitted files.
|
|
20
|
-
"""
|
|
21
|
-
from typing import Union, Any, TYPE_CHECKING
|
|
22
|
-
from collections.abc import Mapping, Sequence
|
|
23
|
-
|
|
24
|
-
# These two are part of the core output, thus don't duplicate here
|
|
25
|
-
# from decimal import Decimal
|
|
26
|
-
# import datetime
|
|
27
|
-
|
|
28
|
-
# Decimal/datetime are included as this list includes JSON serializable objects
|
|
29
|
-
# It is preferred to use ExtJsonScalar and leave JsonScalar as deprecated, as
|
|
30
|
-
# a type that we intend on migrating.
|
|
31
|
-
JsonScalar = Union[str, float, bool, Decimal, None, datetime.datetime, datetime.date]
|
|
32
|
-
ExtJsonScalar = JsonScalar
|
|
33
|
-
|
|
34
|
-
# PureJsonScalar/PureJsonValue should be used in places where the type
|
|
35
|
-
# is expected to already serialized and not expecting any high-order types.
|
|
36
|
-
# this type is fully representable in the JSON format, and in JavaScript
|
|
37
|
-
PureJsonScalar = Union[str, float, bool, None]
|
|
38
|
-
|
|
39
|
-
# Regular expressions for identifying ref names and IDs. Ref names should be
|
|
40
|
-
# using this regular expression as a constriant in the database.
|
|
41
|
-
REF_NAME_REGEX = r"^[a-zA-Z0-9_/-]+$"
|
|
42
|
-
# Does not support nonpositive integers at the moment.
|
|
43
|
-
ID_REGEX = r"[1-9][0-9]{0,20}"
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
if TYPE_CHECKING:
|
|
47
|
-
JsonValue = Union[JsonScalar, Mapping[str, "JsonValue"], Sequence["JsonValue"]]
|
|
48
|
-
ExtJsonValue = JsonValue
|
|
49
|
-
PureJsonValue = Union[
|
|
50
|
-
PureJsonScalar,
|
|
51
|
-
Mapping[str, "PureJsonValue"],
|
|
52
|
-
Sequence["PureJsonValue"]
|
|
53
|
-
]
|
|
54
|
-
else:
|
|
55
|
-
JsonValue = Union[JsonScalar, dict[str, Any], list[Any]]
|
|
56
|
-
ExtJsonValue = JsonValue
|
|
57
|
-
PureJsonValue = Union[PureJsonScalar, dict[str, Any], list[Any]]
|
|
58
|
-
|
|
59
|
-
ObjectId = int
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
def is_pure_json_value(value: ExtJsonValue) -> bool:
|
|
63
|
-
"""
|
|
64
|
-
Checks if the runtime type of value is a PureJsonValue.
|
|
65
|
-
"""
|
|
66
|
-
if value is None:
|
|
67
|
-
return True
|
|
68
|
-
if isinstance(value, (int, float, bool, str)):
|
|
69
|
-
return True
|
|
70
|
-
|
|
71
|
-
if isinstance(value, list):
|
|
72
|
-
for item in value:
|
|
73
|
-
if not is_pure_json_value(item):
|
|
74
|
-
return False
|
|
75
|
-
return True
|
|
76
|
-
|
|
77
|
-
if isinstance(value, dict):
|
|
78
|
-
for key, item in value.items():
|
|
79
|
-
if not is_pure_json_value(key) or not is_pure_json_value(item):
|
|
80
|
-
return False
|
|
81
|
-
return True
|
|
5
|
+
# Kept only for SDK backwards compatibility
|
|
82
6
|
|
|
83
|
-
|
|
84
|
-
|
|
7
|
+
from .base_t import JsonScalar as JsonScalar
|
|
8
|
+
from .base_t import JsonValue as JsonValue
|
|
9
|
+
from .base_t import ObjectId as ObjectId
|
|
85
10
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -0,0 +1,87 @@
|
|
|
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
|
+
|
|
10
|
+
__all__: list[str] = [
|
|
11
|
+
"JsonScalar",
|
|
12
|
+
"JsonValue",
|
|
13
|
+
"ObjectId",
|
|
14
|
+
]
|
|
15
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
16
|
+
# === START section from base.prepart.py ===
|
|
17
|
+
"""
|
|
18
|
+
Types that type_spec will use in the emitted files.
|
|
19
|
+
"""
|
|
20
|
+
from typing import Union, Any, TYPE_CHECKING
|
|
21
|
+
from collections.abc import Mapping, Sequence
|
|
22
|
+
|
|
23
|
+
# These two are part of the core output, thus don't duplicate here
|
|
24
|
+
# from decimal import Decimal
|
|
25
|
+
# import datetime
|
|
26
|
+
|
|
27
|
+
# Decimal/datetime are included as this list includes JSON serializable objects
|
|
28
|
+
# It is preferred to use ExtJsonScalar and leave JsonScalar as deprecated, as
|
|
29
|
+
# a type that we intend on migrating.
|
|
30
|
+
JsonScalar = Union[str, float, bool, Decimal, None, datetime.datetime, datetime.date]
|
|
31
|
+
ExtJsonScalar = JsonScalar
|
|
32
|
+
|
|
33
|
+
# PureJsonScalar/PureJsonValue should be used in places where the type
|
|
34
|
+
# is expected to already serialized and not expecting any high-order types.
|
|
35
|
+
# this type is fully representable in the JSON format, and in JavaScript
|
|
36
|
+
PureJsonScalar = Union[str, float, bool, None]
|
|
37
|
+
|
|
38
|
+
# Regular expressions for identifying ref names and IDs. Ref names should be
|
|
39
|
+
# using this regular expression as a constriant in the database.
|
|
40
|
+
REF_NAME_REGEX = r"^[a-zA-Z0-9_/-]+$"
|
|
41
|
+
REF_NAME_STRICT_REGEX_STRING = "^[a-zA-Z_][a-zA-Z0-9_]*$"
|
|
42
|
+
REF_NAME_STRICT_REGEX = rf"{REF_NAME_STRICT_REGEX_STRING}"
|
|
43
|
+
# Ids matching a strict integer number are converted to integers
|
|
44
|
+
ID_REGEX = r"-?[1-9][0-9]{0,20}"
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
# ENABLE_SLOTS should be removed after slots have been tested locally
|
|
48
|
+
import os
|
|
49
|
+
ENABLE_SLOTS = os.environ.get("UNC_ENABLE_DATACLASS_SLOTS") == "true"
|
|
50
|
+
|
|
51
|
+
if TYPE_CHECKING:
|
|
52
|
+
JsonValue = Union[JsonScalar, Mapping[str, "JsonValue"], Sequence["JsonValue"]]
|
|
53
|
+
ExtJsonValue = JsonValue
|
|
54
|
+
PureJsonValue = Union[
|
|
55
|
+
PureJsonScalar,
|
|
56
|
+
Mapping[str, "PureJsonValue"],
|
|
57
|
+
Sequence["PureJsonValue"]
|
|
58
|
+
]
|
|
59
|
+
else:
|
|
60
|
+
JsonValue = Union[JsonScalar, dict[str, Any], list[Any]]
|
|
61
|
+
ExtJsonValue = JsonValue
|
|
62
|
+
PureJsonValue = Union[PureJsonScalar, dict[str, Any], list[Any]]
|
|
63
|
+
|
|
64
|
+
ObjectId = int
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def is_pure_json_value(value: ExtJsonValue) -> bool:
|
|
68
|
+
"""
|
|
69
|
+
Checks if the runtime type of value is a PureJsonValue.
|
|
70
|
+
"""
|
|
71
|
+
if value is None:
|
|
72
|
+
return True
|
|
73
|
+
if isinstance(value, (int, float, bool, str)):
|
|
74
|
+
return True
|
|
75
|
+
|
|
76
|
+
if isinstance(value, list):
|
|
77
|
+
return all(is_pure_json_value(item) for item in value)
|
|
78
|
+
|
|
79
|
+
if isinstance(value, dict):
|
|
80
|
+
return all(
|
|
81
|
+
is_pure_json_value(key) and is_pure_json_value(item)
|
|
82
|
+
for key, item in value.items()
|
|
83
|
+
)
|
|
84
|
+
|
|
85
|
+
return False
|
|
86
|
+
# === END section from base.prepart.py ===
|
|
87
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -1,23 +1,7 @@
|
|
|
1
|
-
#
|
|
2
|
-
# flake8: noqa: F821
|
|
3
|
-
# ruff: noqa: E402
|
|
1
|
+
# ruff: noqa: E402 Q003
|
|
4
2
|
# fmt: off
|
|
5
3
|
# isort: skip_file
|
|
6
|
-
from __future__ import annotations
|
|
7
|
-
import typing # noqa: F401
|
|
8
|
-
import datetime # noqa: F401
|
|
9
|
-
from decimal import Decimal # noqa: F401
|
|
10
|
-
from dataclasses import dataclass
|
|
11
|
-
from . import base as base_t
|
|
12
|
-
|
|
13
|
-
__all__: list[str] = [
|
|
14
|
-
"Calculation",
|
|
15
|
-
]
|
|
16
|
-
|
|
17
|
-
|
|
18
4
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
id: base_t.ObjectId
|
|
22
|
-
name: str
|
|
5
|
+
# Kept only for SDK backwards compatibility
|
|
6
|
+
from .calculations_t import Calculation as Calculation
|
|
23
7
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -0,0 +1,26 @@
|
|
|
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
|
+
import dataclasses
|
|
10
|
+
from pkgs.serialization import serial_class
|
|
11
|
+
from . import base_t
|
|
12
|
+
|
|
13
|
+
__all__: list[str] = [
|
|
14
|
+
"Calculation",
|
|
15
|
+
]
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
19
|
+
@serial_class(
|
|
20
|
+
named_type_path="sdk.calculations.Calculation",
|
|
21
|
+
)
|
|
22
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
23
|
+
class Calculation:
|
|
24
|
+
id: base_t.ObjectId
|
|
25
|
+
name: str
|
|
26
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -1,27 +1,7 @@
|
|
|
1
|
-
#
|
|
2
|
-
# flake8: noqa: F821
|
|
3
|
-
# ruff: noqa: E402
|
|
1
|
+
# ruff: noqa: E402 Q003
|
|
4
2
|
# fmt: off
|
|
5
3
|
# isort: skip_file
|
|
6
|
-
from __future__ import annotations
|
|
7
|
-
import typing # noqa: F401
|
|
8
|
-
import datetime # noqa: F401
|
|
9
|
-
from decimal import Decimal # noqa: F401
|
|
10
|
-
from dataclasses import dataclass
|
|
11
|
-
from pkgs.serialization import serial_class
|
|
12
|
-
|
|
13
|
-
__all__: list[str] = [
|
|
14
|
-
"ChemicalStructure",
|
|
15
|
-
]
|
|
16
|
-
|
|
17
|
-
|
|
18
4
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
)
|
|
22
|
-
@dataclass(kw_only=True)
|
|
23
|
-
class ChemicalStructure:
|
|
24
|
-
ketcher_file: typing.Optional[str] = None
|
|
25
|
-
gross_formula: typing.Optional[str] = None
|
|
26
|
-
molecular_weight: typing.Optional[Decimal] = None
|
|
5
|
+
# Kept only for SDK backwards compatibility
|
|
6
|
+
from .chemical_structure_t import ChemicalStructure as ChemicalStructure
|
|
27
7
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -0,0 +1,28 @@
|
|
|
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
|
+
import dataclasses
|
|
10
|
+
from pkgs.serialization import serial_class
|
|
11
|
+
from . import base_t
|
|
12
|
+
|
|
13
|
+
__all__: list[str] = [
|
|
14
|
+
"ChemicalStructure",
|
|
15
|
+
]
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
19
|
+
@serial_class(
|
|
20
|
+
named_type_path="sdk.chemical_structure.ChemicalStructure",
|
|
21
|
+
to_string_values={"molecular_weight"},
|
|
22
|
+
)
|
|
23
|
+
@dataclasses.dataclass(slots=base_t.ENABLE_SLOTS, kw_only=True) # type: ignore[literal-required]
|
|
24
|
+
class ChemicalStructure:
|
|
25
|
+
ketcher_file: str | None = None
|
|
26
|
+
gross_formula: str | None = None
|
|
27
|
+
molecular_weight: Decimal | None = None
|
|
28
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|