UncountablePythonSDK 0.0.30__tar.gz → 0.0.31__tar.gz
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.
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/.github/workflows/documentation.yml +4 -4
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/.github/workflows/publish.yml +5 -5
- {uncountablepythonsdk-0.0.30/UncountablePythonSDK.egg-info → uncountablepythonsdk-0.0.31}/PKG-INFO +2 -2
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31/UncountablePythonSDK.egg-info}/PKG-INFO +2 -2
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/UncountablePythonSDK.egg-info/SOURCES.txt +4 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/UncountablePythonSDK.egg-info/requires.txt +1 -1
- uncountablepythonsdk-0.0.31/docs/requirements.txt +7 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/pkgs/argument_parser/case_convert.py +4 -3
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/pkgs/serialization/serial_class.py +31 -37
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/pkgs/type_spec/type_info/emit_type_info.py +14 -6
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/pyproject.toml +1 -1
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/__init__.py +8 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/entity/list_entities.py +7 -0
- uncountablepythonsdk-0.0.31/uncountable/types/api/inputs/set_intermediate_type.py +43 -0
- uncountablepythonsdk-0.0.31/uncountable/types/api/recipes/add_recipe_to_project.py +35 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/recipes/associate_recipe_as_input.py +1 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/recipes/edit_recipe_inputs.py +27 -1
- uncountablepythonsdk-0.0.31/uncountable/types/api/recipes/remove_recipe_from_project.py +35 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/recipes/set_recipe_outputs.py +2 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/client_base.py +72 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/inputs.py +1 -0
- uncountablepythonsdk-0.0.31/uncountable/types/recipes.py +21 -0
- uncountablepythonsdk-0.0.30/docs/requirements.txt +0 -7
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/.gitignore +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/README.md +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/UncountablePythonSDK.egg-info/dependency_links.txt +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/UncountablePythonSDK.egg-info/top_level.txt +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/docs/.gitignore +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/docs/conf.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/docs/index.md +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/docs/justfile +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/docs/quickstart.md +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/docs/static/favicons/android-chrome-192x192.png +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/docs/static/favicons/android-chrome-512x512.png +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/docs/static/favicons/apple-touch-icon.png +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/docs/static/favicons/browserconfig.xml +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/docs/static/favicons/favicon-16x16.png +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/docs/static/favicons/favicon-32x32.png +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/docs/static/favicons/manifest.json +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/docs/static/favicons/mstile-150x150.png +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/docs/static/favicons/safari-pinned-tab.svg +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/docs/static/logo_blue.png +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/examples/async_batch.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/examples/create_entity.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/examples/upload_files.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/pkgs/__init__.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/pkgs/argument_parser/__init__.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/pkgs/argument_parser/_is_enum.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/pkgs/argument_parser/_is_namedtuple.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/pkgs/argument_parser/argument_parser.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/pkgs/serialization/__init__.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/pkgs/serialization/missing_sentry.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/pkgs/serialization/opaque_key.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/pkgs/serialization_util/__init__.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/pkgs/serialization_util/_get_type_for_serialization.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/pkgs/serialization_util/serialization_helpers.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/pkgs/strenum_compat/__init__.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/pkgs/strenum_compat/strenum_compat.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/pkgs/type_spec/__init__.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/pkgs/type_spec/__main__.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/pkgs/type_spec/actions_registry/__init__.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/pkgs/type_spec/actions_registry/__main__.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/pkgs/type_spec/actions_registry/emit_typescript.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/pkgs/type_spec/builder.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/pkgs/type_spec/config.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/pkgs/type_spec/emit_io_ts.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/pkgs/type_spec/emit_open_api.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/pkgs/type_spec/emit_open_api_util.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/pkgs/type_spec/emit_python.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/pkgs/type_spec/emit_typescript.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/pkgs/type_spec/emit_typescript_util.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/pkgs/type_spec/load_types.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/pkgs/type_spec/open_api_util.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/pkgs/type_spec/parts/base.py.prepart +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/pkgs/type_spec/parts/base.ts.prepart +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/pkgs/type_spec/test.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/pkgs/type_spec/type_info/__main__.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/pkgs/type_spec/util.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/pkgs/type_spec/value_spec/__init__.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/pkgs/type_spec/value_spec/__main__.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/pkgs/type_spec/value_spec/convert_type.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/pkgs/type_spec/value_spec/emit_python.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/pkgs/type_spec/value_spec/types.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/setup.cfg +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/__init__.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/core/__init__.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/core/async_batch.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/core/client.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/core/file_upload.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/core/types.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/integration/__init__.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/integration/construct_client.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/integration/cron.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/integration/db/__init__.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/integration/db/connect.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/integration/entrypoint.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/integration/executors/__init__.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/integration/executors/script_executor.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/integration/job.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/integration/server.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/integration/types.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/py.typed +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/__init__.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/batch/__init__.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/batch/execute_batch.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/batch/execute_batch_load_async.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/chemical/__init__.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/chemical/convert_chemical_formats.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/entity/__init__.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/entity/create_entities.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/entity/create_entity.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/entity/get_entities_data.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/entity/lock_entity.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/entity/resolve_entity_ids.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/entity/set_values.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/entity/transition_entity_phase.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/entity/unlock_entity.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/field_options/__init__.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/field_options/upsert_field_options.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/id_source/__init__.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/id_source/list_id_source.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/id_source/match_id_source.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/input_groups/__init__.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/input_groups/get_input_group_names.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/inputs/__init__.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/inputs/create_inputs.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/inputs/get_input_data.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/inputs/get_input_names.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/inputs/get_inputs_data.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/inputs/set_input_attribute_values.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/inputs/set_input_category.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/inputs/set_input_subcategories.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/material_families/__init__.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/material_families/update_entity_material_families.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/outputs/__init__.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/outputs/get_output_data.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/outputs/get_output_names.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/outputs/resolve_output_conditions.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/permissions/__init__.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/permissions/set_core_permissions.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/project/__init__.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/project/get_projects.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/project/get_projects_data.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/recipe_links/__init__.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/recipe_links/create_recipe_link.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/recipe_metadata/__init__.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/recipes/__init__.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/recipes/archive_recipes.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/recipes/associate_recipe_as_lot.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/recipes/create_recipe.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/recipes/create_recipes.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/recipes/disassociate_recipe_as_input.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/recipes/get_curve.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/recipes/get_recipe_calculations.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/recipes/get_recipe_links.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/recipes/get_recipe_names.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/recipes/get_recipe_output_metadata.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/recipes/get_recipes_data.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/recipes/set_recipe_inputs.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/recipes/set_recipe_metadata.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/recipes/set_recipe_tags.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/recipes/unarchive_recipes.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/triggers/__init__.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/api/triggers/run_trigger.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/async_batch.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/async_batch_processor.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/base.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/calculations.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/chemical_structure.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/curves.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/entity.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/experiment_groups.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/field_values.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/fields.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/id_source.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/identifier.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/input_attributes.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/outputs.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/permissions.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/phases.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/post_base.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/recipe_identifiers.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/recipe_inputs.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/recipe_links.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/recipe_metadata.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/recipe_output_metadata.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/recipe_tags.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/recipe_workflow_steps.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/response.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/units.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/users.py +0 -0
- {uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/uncountable/types/workflows.py +0 -0
{uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/.github/workflows/documentation.yml
RENAMED
|
@@ -9,9 +9,9 @@ jobs:
|
|
|
9
9
|
docs:
|
|
10
10
|
runs-on: ubuntu-latest
|
|
11
11
|
steps:
|
|
12
|
-
- uses: actions/checkout@v3
|
|
13
|
-
- uses: actions/setup-python@
|
|
14
|
-
- uses: extractions/setup-just@
|
|
12
|
+
- uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3
|
|
13
|
+
- uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5
|
|
14
|
+
- uses: extractions/setup-just@dd310ad5a97d8e7b41793f8ef055398d51ad4de6 # v2
|
|
15
15
|
with:
|
|
16
16
|
just-version: '1.8.0'
|
|
17
17
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
@@ -25,7 +25,7 @@ jobs:
|
|
|
25
25
|
run: |
|
|
26
26
|
just -f docs/justfile docs-build
|
|
27
27
|
- name: Deploy to GitHub Pages
|
|
28
|
-
uses: peaceiris/actions-gh-pages@
|
|
28
|
+
uses: peaceiris/actions-gh-pages@4f9cc6602d3f66b9c108549d475ec49e8ef4d45e # v4
|
|
29
29
|
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }}
|
|
30
30
|
with:
|
|
31
31
|
publish_branch: gh-pages
|
|
@@ -19,10 +19,10 @@ jobs:
|
|
|
19
19
|
name: Build distribution packages
|
|
20
20
|
runs-on: ubuntu-latest
|
|
21
21
|
steps:
|
|
22
|
-
- uses: actions/checkout@v4
|
|
22
|
+
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
|
|
23
23
|
with:
|
|
24
24
|
fetch-depth: 0
|
|
25
|
-
- uses: actions/setup-python@v5
|
|
25
|
+
- uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5
|
|
26
26
|
with:
|
|
27
27
|
python-version: '3.11'
|
|
28
28
|
- name: Install build dependencies
|
|
@@ -31,7 +31,7 @@ jobs:
|
|
|
31
31
|
- name: Build distributions and wheels
|
|
32
32
|
run: |
|
|
33
33
|
python3 -m build
|
|
34
|
-
- uses: actions/upload-artifact@v4
|
|
34
|
+
- uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4
|
|
35
35
|
with:
|
|
36
36
|
name: package-distributions
|
|
37
37
|
path: dist/
|
|
@@ -45,9 +45,9 @@ jobs:
|
|
|
45
45
|
permissions:
|
|
46
46
|
id-token: write
|
|
47
47
|
steps:
|
|
48
|
-
- uses: actions/download-artifact@v4
|
|
48
|
+
- uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e # v4
|
|
49
49
|
with:
|
|
50
50
|
name: package-distributions
|
|
51
51
|
path: dist/
|
|
52
52
|
- name: Publish package distributions to PyPI
|
|
53
|
-
uses: pypa/gh-action-pypi-publish@
|
|
53
|
+
uses: pypa/gh-action-pypi-publish@ec4db0b4ddc65acdf4bff5fa45ac92d78b56bdf0
|
{uncountablepythonsdk-0.0.30/UncountablePythonSDK.egg-info → uncountablepythonsdk-0.0.31}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: UncountablePythonSDK
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.31
|
|
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
|
|
@@ -28,7 +28,7 @@ Provides-Extra: test
|
|
|
28
28
|
Requires-Dist: mypy==1.*; extra == "test"
|
|
29
29
|
Requires-Dist: ruff==0.*; extra == "test"
|
|
30
30
|
Requires-Dist: pytest==8.*; extra == "test"
|
|
31
|
-
Requires-Dist: coverage[toml]==
|
|
31
|
+
Requires-Dist: coverage[toml]==7.*; extra == "test"
|
|
32
32
|
Requires-Dist: pytest-cov==5.*; extra == "test"
|
|
33
33
|
Requires-Dist: pytest-xdist==3.*; extra == "test"
|
|
34
34
|
|
{uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31/UncountablePythonSDK.egg-info}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: UncountablePythonSDK
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.31
|
|
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
|
|
@@ -28,7 +28,7 @@ Provides-Extra: test
|
|
|
28
28
|
Requires-Dist: mypy==1.*; extra == "test"
|
|
29
29
|
Requires-Dist: ruff==0.*; extra == "test"
|
|
30
30
|
Requires-Dist: pytest==8.*; extra == "test"
|
|
31
|
-
Requires-Dist: coverage[toml]==
|
|
31
|
+
Requires-Dist: coverage[toml]==7.*; extra == "test"
|
|
32
32
|
Requires-Dist: pytest-cov==5.*; extra == "test"
|
|
33
33
|
Requires-Dist: pytest-xdist==3.*; extra == "test"
|
|
34
34
|
|
|
@@ -113,6 +113,7 @@ uncountable/types/recipe_metadata.py
|
|
|
113
113
|
uncountable/types/recipe_output_metadata.py
|
|
114
114
|
uncountable/types/recipe_tags.py
|
|
115
115
|
uncountable/types/recipe_workflow_steps.py
|
|
116
|
+
uncountable/types/recipes.py
|
|
116
117
|
uncountable/types/response.py
|
|
117
118
|
uncountable/types/units.py
|
|
118
119
|
uncountable/types/users.py
|
|
@@ -148,6 +149,7 @@ uncountable/types/api/inputs/get_inputs_data.py
|
|
|
148
149
|
uncountable/types/api/inputs/set_input_attribute_values.py
|
|
149
150
|
uncountable/types/api/inputs/set_input_category.py
|
|
150
151
|
uncountable/types/api/inputs/set_input_subcategories.py
|
|
152
|
+
uncountable/types/api/inputs/set_intermediate_type.py
|
|
151
153
|
uncountable/types/api/material_families/__init__.py
|
|
152
154
|
uncountable/types/api/material_families/update_entity_material_families.py
|
|
153
155
|
uncountable/types/api/outputs/__init__.py
|
|
@@ -164,6 +166,7 @@ uncountable/types/api/recipe_links/create_recipe_link.py
|
|
|
164
166
|
uncountable/types/api/recipe_metadata/__init__.py
|
|
165
167
|
uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py
|
|
166
168
|
uncountable/types/api/recipes/__init__.py
|
|
169
|
+
uncountable/types/api/recipes/add_recipe_to_project.py
|
|
167
170
|
uncountable/types/api/recipes/archive_recipes.py
|
|
168
171
|
uncountable/types/api/recipes/associate_recipe_as_input.py
|
|
169
172
|
uncountable/types/api/recipes/associate_recipe_as_lot.py
|
|
@@ -177,6 +180,7 @@ uncountable/types/api/recipes/get_recipe_links.py
|
|
|
177
180
|
uncountable/types/api/recipes/get_recipe_names.py
|
|
178
181
|
uncountable/types/api/recipes/get_recipe_output_metadata.py
|
|
179
182
|
uncountable/types/api/recipes/get_recipes_data.py
|
|
183
|
+
uncountable/types/api/recipes/remove_recipe_from_project.py
|
|
180
184
|
uncountable/types/api/recipes/set_recipe_inputs.py
|
|
181
185
|
uncountable/types/api/recipes/set_recipe_metadata.py
|
|
182
186
|
uncountable/types/api/recipes/set_recipe_outputs.py
|
{uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/pkgs/argument_parser/case_convert.py
RENAMED
|
@@ -4,9 +4,10 @@ import re
|
|
|
4
4
|
|
|
5
5
|
@functools.lru_cache(maxsize=500000)
|
|
6
6
|
def snake_to_camel_case(o: str) -> str:
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
tokens = o.split("_")
|
|
8
|
+
if len(tokens) < 2:
|
|
9
|
+
return o
|
|
10
|
+
return "".join([part.title() if i > 0 else part for i, part in enumerate(tokens)])
|
|
10
11
|
|
|
11
12
|
|
|
12
13
|
def kebab_to_pascal_case(o: str) -> str:
|
{uncountablepythonsdk-0.0.30 → uncountablepythonsdk-0.0.31}/pkgs/serialization/serial_class.py
RENAMED
|
@@ -16,6 +16,9 @@ class _SerialClassData:
|
|
|
16
16
|
parse_require: set[str] = dataclasses.field(default_factory=set)
|
|
17
17
|
|
|
18
18
|
|
|
19
|
+
EMPTY_SERIAL_CLASS_DATA = _SerialClassData()
|
|
20
|
+
|
|
21
|
+
|
|
19
22
|
def serial_class(
|
|
20
23
|
*,
|
|
21
24
|
unconverted_keys: Optional[set[str]] = None,
|
|
@@ -57,58 +60,49 @@ def serial_class(
|
|
|
57
60
|
|
|
58
61
|
|
|
59
62
|
class SerialClassDataInspector:
|
|
60
|
-
bases: list[SerialClassDataInspector]
|
|
61
|
-
|
|
62
63
|
def __init__(
|
|
63
|
-
self,
|
|
64
|
+
self,
|
|
65
|
+
current: _SerialClassData,
|
|
64
66
|
) -> None:
|
|
65
|
-
self.bases = bases
|
|
66
67
|
self.current = current
|
|
67
68
|
|
|
68
69
|
def has_unconverted_key(self, key: str) -> bool:
|
|
69
|
-
|
|
70
|
-
return True
|
|
71
|
-
for base in self.bases:
|
|
72
|
-
if base.has_unconverted_key(key):
|
|
73
|
-
return True
|
|
74
|
-
return False
|
|
70
|
+
return key in self.current.unconverted_keys
|
|
75
71
|
|
|
76
72
|
def has_unconverted_value(self, key: str) -> bool:
|
|
77
|
-
|
|
78
|
-
return True
|
|
79
|
-
for base in self.bases:
|
|
80
|
-
if base.has_unconverted_value(key):
|
|
81
|
-
return True
|
|
82
|
-
return False
|
|
73
|
+
return key in self.current.unconverted_values
|
|
83
74
|
|
|
84
75
|
def has_to_string_value(self, key: str) -> bool:
|
|
85
|
-
|
|
86
|
-
return True
|
|
87
|
-
for base in self.bases:
|
|
88
|
-
if base.has_to_string_value(key):
|
|
89
|
-
return True
|
|
90
|
-
return False
|
|
76
|
+
return key in self.current.to_string_values
|
|
91
77
|
|
|
92
78
|
def has_parse_require(self, key: str) -> bool:
|
|
93
|
-
|
|
94
|
-
return True
|
|
95
|
-
for base in self.bases:
|
|
96
|
-
if base.has_parse_require(key):
|
|
97
|
-
return True
|
|
98
|
-
return False
|
|
79
|
+
return key in self.current.parse_require
|
|
99
80
|
|
|
100
81
|
|
|
101
|
-
def
|
|
102
|
-
|
|
103
|
-
[get_serial_class_data(base) for base in type_class.__bases__]
|
|
104
|
-
if type_class.__bases__ is not None
|
|
105
|
-
else []
|
|
106
|
-
)
|
|
107
|
-
return SerialClassDataInspector(
|
|
108
|
-
bases,
|
|
82
|
+
def _get_merged_serial_class_data(type_class: type[Any]) -> _SerialClassData | None:
|
|
83
|
+
base_class_data = (
|
|
109
84
|
cast(_SerialClassData, type_class.__unc_serial_data)
|
|
110
85
|
if hasattr(type_class, "__unc_serial_data")
|
|
111
|
-
else
|
|
86
|
+
else None
|
|
87
|
+
)
|
|
88
|
+
if type_class.__bases__ is not None:
|
|
89
|
+
for base in type_class.__bases__:
|
|
90
|
+
curr_base_class_data = _get_merged_serial_class_data(base)
|
|
91
|
+
if curr_base_class_data is not None:
|
|
92
|
+
if base_class_data is None:
|
|
93
|
+
base_class_data = _SerialClassData()
|
|
94
|
+
base_class_data.unconverted_keys |= curr_base_class_data.unconverted_keys
|
|
95
|
+
base_class_data.unconverted_values |= (
|
|
96
|
+
curr_base_class_data.unconverted_values
|
|
97
|
+
)
|
|
98
|
+
base_class_data.to_string_values |= curr_base_class_data.to_string_values
|
|
99
|
+
base_class_data.parse_require |= curr_base_class_data.parse_require
|
|
100
|
+
return base_class_data
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
def get_serial_class_data(type_class: type[Any]) -> SerialClassDataInspector:
|
|
104
|
+
return SerialClassDataInspector(
|
|
105
|
+
_get_merged_serial_class_data(type_class) or EMPTY_SERIAL_CLASS_DATA
|
|
112
106
|
)
|
|
113
107
|
|
|
114
108
|
|
|
@@ -247,17 +247,25 @@ def _extract_and_validate_layout(
|
|
|
247
247
|
return layout
|
|
248
248
|
|
|
249
249
|
|
|
250
|
-
def _validate_type_ext_info(
|
|
250
|
+
def _validate_type_ext_info(
|
|
251
|
+
stype: builder.SpecTypeDefnObject,
|
|
252
|
+
) -> tuple[ExtInfoLayout | None, Optional[data_t.ExtInfo]]:
|
|
251
253
|
ext_info = _parse_ext_info(stype.ext_info)
|
|
252
254
|
if ext_info is None:
|
|
253
|
-
return None
|
|
255
|
+
return None, None
|
|
256
|
+
|
|
257
|
+
if ext_info.label_fields is not None:
|
|
258
|
+
assert stype.properties is not None
|
|
259
|
+
for name in ext_info.label_fields:
|
|
260
|
+
prop = stype.properties.get(name)
|
|
261
|
+
assert prop is not None, f"missing-label-field:{name}"
|
|
254
262
|
|
|
255
263
|
if not stype.is_base and isinstance(stype.base, builder.SpecTypeDefnObject):
|
|
256
|
-
base_layout = _validate_type_ext_info(stype.base)
|
|
264
|
+
base_layout, _ = _validate_type_ext_info(stype.base)
|
|
257
265
|
else:
|
|
258
266
|
base_layout = None
|
|
259
267
|
|
|
260
|
-
return _extract_and_validate_layout(stype, ext_info, base_layout)
|
|
268
|
+
return _extract_and_validate_layout(stype, ext_info, base_layout), ext_info
|
|
261
269
|
|
|
262
270
|
|
|
263
271
|
def _build_map_type(
|
|
@@ -270,7 +278,7 @@ def _build_map_type(
|
|
|
270
278
|
and not stype.is_base
|
|
271
279
|
and stype.base is not None
|
|
272
280
|
):
|
|
273
|
-
_validate_type_ext_info(stype)
|
|
281
|
+
_, ext_info = _validate_type_ext_info(stype)
|
|
274
282
|
|
|
275
283
|
properties: dict[str, MapProperty] = {}
|
|
276
284
|
map_type = MapTypeObject(
|
|
@@ -279,7 +287,7 @@ def _build_map_type(
|
|
|
279
287
|
properties=properties,
|
|
280
288
|
desc=stype.desc,
|
|
281
289
|
base_type_path=type_path_of(stype.base),
|
|
282
|
-
ext_info=
|
|
290
|
+
ext_info=serialize_for_api(ext_info),
|
|
283
291
|
)
|
|
284
292
|
|
|
285
293
|
if stype.properties is not None:
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
# ruff: noqa: E402
|
|
4
4
|
# fmt: off
|
|
5
5
|
# isort: skip_file
|
|
6
|
+
from .api.recipes import add_recipe_to_project as add_recipe_to_project_t
|
|
6
7
|
from .api.recipes import archive_recipes as archive_recipes_t
|
|
7
8
|
from .api.recipes import associate_recipe_as_input as associate_recipe_as_input_t
|
|
8
9
|
from .api.recipes import associate_recipe_as_lot as associate_recipe_as_lot_t
|
|
@@ -61,6 +62,8 @@ from . import recipe_metadata as recipe_metadata_t
|
|
|
61
62
|
from . import recipe_output_metadata as recipe_output_metadata_t
|
|
62
63
|
from . import recipe_tags as recipe_tags_t
|
|
63
64
|
from . import recipe_workflow_steps as recipe_workflow_steps_t
|
|
65
|
+
from . import recipes as recipes_t
|
|
66
|
+
from .api.recipes import remove_recipe_from_project as remove_recipe_from_project_t
|
|
64
67
|
from .api.entity import resolve_entity_ids as resolve_entity_ids_t
|
|
65
68
|
from .api.outputs import resolve_output_conditions as resolve_output_conditions_t
|
|
66
69
|
from . import response as response_t
|
|
@@ -69,6 +72,7 @@ from .api.permissions import set_core_permissions as set_core_permissions_t
|
|
|
69
72
|
from .api.inputs import set_input_attribute_values as set_input_attribute_values_t
|
|
70
73
|
from .api.inputs import set_input_category as set_input_category_t
|
|
71
74
|
from .api.inputs import set_input_subcategories as set_input_subcategories_t
|
|
75
|
+
from .api.inputs import set_intermediate_type as set_intermediate_type_t
|
|
72
76
|
from .api.recipes import set_recipe_inputs as set_recipe_inputs_t
|
|
73
77
|
from .api.recipes import set_recipe_metadata as set_recipe_metadata_t
|
|
74
78
|
from .api.recipes import set_recipe_outputs as set_recipe_outputs_t
|
|
@@ -85,6 +89,7 @@ from . import workflows as workflows_t
|
|
|
85
89
|
|
|
86
90
|
|
|
87
91
|
__all__: list[str] = [
|
|
92
|
+
"add_recipe_to_project_t",
|
|
88
93
|
"archive_recipes_t",
|
|
89
94
|
"associate_recipe_as_input_t",
|
|
90
95
|
"associate_recipe_as_lot_t",
|
|
@@ -143,6 +148,8 @@ __all__: list[str] = [
|
|
|
143
148
|
"recipe_output_metadata_t",
|
|
144
149
|
"recipe_tags_t",
|
|
145
150
|
"recipe_workflow_steps_t",
|
|
151
|
+
"recipes_t",
|
|
152
|
+
"remove_recipe_from_project_t",
|
|
146
153
|
"resolve_entity_ids_t",
|
|
147
154
|
"resolve_output_conditions_t",
|
|
148
155
|
"response_t",
|
|
@@ -151,6 +158,7 @@ __all__: list[str] = [
|
|
|
151
158
|
"set_input_attribute_values_t",
|
|
152
159
|
"set_input_category_t",
|
|
153
160
|
"set_input_subcategories_t",
|
|
161
|
+
"set_intermediate_type_t",
|
|
154
162
|
"set_recipe_inputs_t",
|
|
155
163
|
"set_recipe_metadata_t",
|
|
156
164
|
"set_recipe_outputs_t",
|
|
@@ -8,6 +8,7 @@ import typing # noqa: F401
|
|
|
8
8
|
import datetime # noqa: F401
|
|
9
9
|
from decimal import Decimal # noqa: F401
|
|
10
10
|
from dataclasses import dataclass
|
|
11
|
+
from pkgs.serialization import serial_class
|
|
11
12
|
from pkgs.serialization import OpaqueKey
|
|
12
13
|
from ... import base as base_t
|
|
13
14
|
from ... import entity as entity_t
|
|
@@ -26,6 +27,9 @@ ENDPOINT_PATH = "api/external/entity/external_list_entities"
|
|
|
26
27
|
|
|
27
28
|
|
|
28
29
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
30
|
+
@serial_class(
|
|
31
|
+
unconverted_values={"attributes"},
|
|
32
|
+
)
|
|
29
33
|
@dataclass(kw_only=True)
|
|
30
34
|
class Arguments:
|
|
31
35
|
entity_type: entity_t.EntityType
|
|
@@ -36,6 +40,9 @@ class Arguments:
|
|
|
36
40
|
|
|
37
41
|
|
|
38
42
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
43
|
+
@serial_class(
|
|
44
|
+
unconverted_values={"column_values"},
|
|
45
|
+
)
|
|
39
46
|
@dataclass(kw_only=True)
|
|
40
47
|
class EntityResult:
|
|
41
48
|
entity: entity_t.Entity
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
2
|
+
# flake8: noqa: F821
|
|
3
|
+
# ruff: noqa: E402
|
|
4
|
+
# fmt: off
|
|
5
|
+
# 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 pkgs.strenum_compat import StrEnum
|
|
11
|
+
from dataclasses import dataclass
|
|
12
|
+
from ... import identifier as identifier_t
|
|
13
|
+
|
|
14
|
+
__all__: list[str] = [
|
|
15
|
+
"Arguments",
|
|
16
|
+
"Data",
|
|
17
|
+
"ENDPOINT_METHOD",
|
|
18
|
+
"ENDPOINT_PATH",
|
|
19
|
+
"IntermediateType",
|
|
20
|
+
]
|
|
21
|
+
|
|
22
|
+
ENDPOINT_METHOD = "POST"
|
|
23
|
+
ENDPOINT_PATH = "api/external/inputs/set_intermediate_type"
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
27
|
+
class IntermediateType(StrEnum):
|
|
28
|
+
FINAL_PRODUCT = "final_product"
|
|
29
|
+
COMPOUND_AS_INTERMEDIATE = "compound_as_intermediate"
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
33
|
+
@dataclass(kw_only=True)
|
|
34
|
+
class Arguments:
|
|
35
|
+
input_key: identifier_t.IdentifierKey
|
|
36
|
+
intermediate_type: IntermediateType
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
40
|
+
@dataclass(kw_only=True)
|
|
41
|
+
class Data:
|
|
42
|
+
pass
|
|
43
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
2
|
+
# flake8: noqa: F821
|
|
3
|
+
# ruff: noqa: E402
|
|
4
|
+
# fmt: off
|
|
5
|
+
# 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 identifier as identifier_t
|
|
12
|
+
|
|
13
|
+
__all__: list[str] = [
|
|
14
|
+
"Arguments",
|
|
15
|
+
"Data",
|
|
16
|
+
"ENDPOINT_METHOD",
|
|
17
|
+
"ENDPOINT_PATH",
|
|
18
|
+
]
|
|
19
|
+
|
|
20
|
+
ENDPOINT_METHOD = "POST"
|
|
21
|
+
ENDPOINT_PATH = "api/external/recipes/add_recipe_to_project"
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
25
|
+
@dataclass(kw_only=True)
|
|
26
|
+
class Arguments:
|
|
27
|
+
recipe_key: identifier_t.IdentifierKey
|
|
28
|
+
project_key: identifier_t.IdentifierKey
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
32
|
+
@dataclass(kw_only=True)
|
|
33
|
+
class Data:
|
|
34
|
+
pass
|
|
35
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -27,6 +27,7 @@ ENDPOINT_PATH = "api/external/recipes/associate_recipe_as_input"
|
|
|
27
27
|
class Arguments:
|
|
28
28
|
recipe_key: identifier_t.IdentifierKey
|
|
29
29
|
input_key: typing.Optional[identifier_t.IdentifierKey] = None
|
|
30
|
+
show_in_listings: typing.Optional[bool] = None
|
|
30
31
|
|
|
31
32
|
|
|
32
33
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -15,6 +15,7 @@ from ... import recipe_inputs as recipe_inputs_t
|
|
|
15
15
|
from ... import recipe_workflow_steps as recipe_workflow_steps_t
|
|
16
16
|
|
|
17
17
|
__all__: list[str] = [
|
|
18
|
+
"AnnotationEdit",
|
|
18
19
|
"Arguments",
|
|
19
20
|
"Data",
|
|
20
21
|
"ENDPOINT_METHOD",
|
|
@@ -25,6 +26,7 @@ __all__: list[str] = [
|
|
|
25
26
|
"RecipeInputEditClearInputs",
|
|
26
27
|
"RecipeInputEditInputBase",
|
|
27
28
|
"RecipeInputEditType",
|
|
29
|
+
"RecipeInputEditUpdateAnnotations",
|
|
28
30
|
"RecipeInputEditUpsertInput",
|
|
29
31
|
]
|
|
30
32
|
|
|
@@ -37,6 +39,7 @@ class RecipeInputEditType(StrEnum):
|
|
|
37
39
|
CLEAR_INPUTS = "clear_inputs"
|
|
38
40
|
UPSERT_INPUT = "upsert_input"
|
|
39
41
|
ADD_INPUT = "add_input"
|
|
42
|
+
UPDATE_ANNOTATIONS = "update_annotations"
|
|
40
43
|
|
|
41
44
|
|
|
42
45
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -88,7 +91,30 @@ class RecipeInputEditAddInput(RecipeInputEditInputBase):
|
|
|
88
91
|
|
|
89
92
|
|
|
90
93
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
91
|
-
|
|
94
|
+
@serial_class(
|
|
95
|
+
to_string_values={"lower_value", "upper_value"},
|
|
96
|
+
)
|
|
97
|
+
@dataclass(kw_only=True)
|
|
98
|
+
class AnnotationEdit:
|
|
99
|
+
annotation_type_key: identifier_t.IdentifierKey
|
|
100
|
+
lower_value: typing.Optional[Decimal] = None
|
|
101
|
+
upper_value: typing.Optional[Decimal] = None
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
105
|
+
@serial_class(
|
|
106
|
+
parse_require={"type"},
|
|
107
|
+
)
|
|
108
|
+
@dataclass(kw_only=True)
|
|
109
|
+
class RecipeInputEditUpdateAnnotations(RecipeInputEditInputBase):
|
|
110
|
+
type: typing.Literal[RecipeInputEditType.UPDATE_ANNOTATIONS] = RecipeInputEditType.UPDATE_ANNOTATIONS
|
|
111
|
+
ingredient_key: identifier_t.IdentifierKey
|
|
112
|
+
clear_first: bool
|
|
113
|
+
annotations: list[AnnotationEdit]
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
117
|
+
RecipeInputEdit = typing.Union[RecipeInputEditClearInputs, RecipeInputEditUpsertInput, RecipeInputEditAddInput, RecipeInputEditUpdateAnnotations]
|
|
92
118
|
|
|
93
119
|
|
|
94
120
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
2
|
+
# flake8: noqa: F821
|
|
3
|
+
# ruff: noqa: E402
|
|
4
|
+
# fmt: off
|
|
5
|
+
# 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 identifier as identifier_t
|
|
12
|
+
|
|
13
|
+
__all__: list[str] = [
|
|
14
|
+
"Arguments",
|
|
15
|
+
"Data",
|
|
16
|
+
"ENDPOINT_METHOD",
|
|
17
|
+
"ENDPOINT_PATH",
|
|
18
|
+
]
|
|
19
|
+
|
|
20
|
+
ENDPOINT_METHOD = "POST"
|
|
21
|
+
ENDPOINT_PATH = "api/external/recipes/remove_recipe_from_project"
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
25
|
+
@dataclass(kw_only=True)
|
|
26
|
+
class Arguments:
|
|
27
|
+
recipe_key: identifier_t.IdentifierKey
|
|
28
|
+
project_key: identifier_t.IdentifierKey
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
32
|
+
@dataclass(kw_only=True)
|
|
33
|
+
class Data:
|
|
34
|
+
pass
|
|
35
|
+
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -10,6 +10,7 @@ from decimal import Decimal # noqa: F401
|
|
|
10
10
|
from dataclasses import dataclass
|
|
11
11
|
from pkgs.serialization import serial_class
|
|
12
12
|
from ... import base as base_t
|
|
13
|
+
from ... import recipes as recipes_t
|
|
13
14
|
from ... import response as response_t
|
|
14
15
|
|
|
15
16
|
__all__: list[str] = [
|
|
@@ -45,6 +46,7 @@ class RecipeOutputValue:
|
|
|
45
46
|
value_numeric: typing.Optional[Decimal] = None
|
|
46
47
|
value_str: typing.Optional[str] = None
|
|
47
48
|
value_curve: typing.Optional[CurveValues] = None
|
|
49
|
+
formatting: typing.Optional[recipes_t.RecipeAttributeFormatting] = None
|
|
48
50
|
|
|
49
51
|
|
|
50
52
|
# DO NOT MODIFY -- This file is generated by type_spec
|