UncountablePythonSDK 0.0.79__tar.gz → 0.0.81__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.79/UncountablePythonSDK.egg-info → uncountablepythonsdk-0.0.81}/PKG-INFO +1 -1
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81/UncountablePythonSDK.egg-info}/PKG-INFO +1 -1
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/UncountablePythonSDK.egg-info/SOURCES.txt +1 -0
- uncountablepythonsdk-0.0.81/examples/integration-server/jobs/materials_auto/example_wh.py +15 -0
- uncountablepythonsdk-0.0.81/examples/integration-server/jobs/materials_auto/profile.yaml +43 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/serialization/serial_class.py +4 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/type_spec/parts/base.py.prepart +2 -2
- uncountablepythonsdk-0.0.81/uncountable/integration/executors/executors.py +137 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/integration/queue_runner/job_scheduler.py +41 -9
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/integration/queue_runner/worker.py +3 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/base_t.py +2 -2
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/entity_t.py +4 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/job_definition_t.py +2 -2
- uncountablepythonsdk-0.0.79/examples/integration-server/jobs/materials_auto/profile.yaml +0 -19
- uncountablepythonsdk-0.0.79/uncountable/integration/executors/executors.py +0 -56
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/.github/workflows/documentation.yml +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/.github/workflows/publish.yml +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/.gitignore +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/README.md +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/UncountablePythonSDK.egg-info/dependency_links.txt +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/UncountablePythonSDK.egg-info/requires.txt +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/UncountablePythonSDK.egg-info/top_level.txt +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/docs/.gitignore +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/docs/conf.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/docs/index.md +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/docs/justfile +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/docs/quickstart.md +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/docs/requirements.txt +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/docs/static/favicons/android-chrome-192x192.png +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/docs/static/favicons/android-chrome-512x512.png +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/docs/static/favicons/apple-touch-icon.png +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/docs/static/favicons/browserconfig.xml +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/docs/static/favicons/favicon-16x16.png +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/docs/static/favicons/favicon-32x32.png +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/docs/static/favicons/manifest.json +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/docs/static/favicons/mstile-150x150.png +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/docs/static/favicons/safari-pinned-tab.svg +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/docs/static/logo_blue.png +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/examples/async_batch.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/examples/create_entity.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/examples/edit_recipe_inputs.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/examples/integration-server/jobs/materials_auto/example_cron.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/examples/integration-server/pyproject.toml +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/examples/invoke_uploader.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/examples/set_recipe_metadata_file.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/examples/set_recipe_output_file_sdk.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/examples/upload_files.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/__init__.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/argument_parser/__init__.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/argument_parser/_is_enum.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/argument_parser/_is_namedtuple.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/argument_parser/argument_parser.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/argument_parser/case_convert.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/filesystem_utils/__init__.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/filesystem_utils/_gdrive_session.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/filesystem_utils/_local_session.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/filesystem_utils/_s3_session.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/filesystem_utils/_sftp_session.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/filesystem_utils/file_type_utils.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/filesystem_utils/filesystem_session.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/py.typed +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/serialization/__init__.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/serialization/missing_sentry.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/serialization/opaque_key.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/serialization/serial_union.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/serialization/yaml.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/serialization_util/__init__.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/serialization_util/_get_type_for_serialization.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/serialization_util/convert_to_snakecase.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/serialization_util/serialization_helpers.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/strenum_compat/__init__.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/strenum_compat/strenum_compat.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/type_spec/__init__.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/type_spec/__main__.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/type_spec/actions_registry/__init__.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/type_spec/actions_registry/__main__.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/type_spec/actions_registry/emit_typescript.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/type_spec/builder.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/type_spec/config.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/type_spec/emit_io_ts.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/type_spec/emit_open_api.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/type_spec/emit_open_api_util.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/type_spec/emit_python.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/type_spec/emit_typescript.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/type_spec/emit_typescript_util.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/type_spec/load_types.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/type_spec/open_api_util.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/type_spec/parts/base.ts.prepart +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/type_spec/test.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/type_spec/type_info/__main__.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/type_spec/type_info/emit_type_info.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/type_spec/util.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/type_spec/value_spec/__init__.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/type_spec/value_spec/__main__.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/type_spec/value_spec/convert_type.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/type_spec/value_spec/emit_python.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/type_spec/value_spec/types.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pyproject.toml +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/setup.cfg +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/__init__.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/core/__init__.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/core/async_batch.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/core/client.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/core/environment.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/core/file_upload.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/core/types.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/integration/__init__.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/integration/cli.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/integration/construct_client.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/integration/cron.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/integration/db/__init__.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/integration/db/connect.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/integration/db/session.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/integration/entrypoint.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/integration/executors/__init__.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/integration/executors/generic_upload_executor.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/integration/executors/script_executor.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/integration/job.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/integration/queue_runner/__init__.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/integration/queue_runner/command_server/__init__.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/integration/queue_runner/command_server/command_client.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/integration/queue_runner/command_server/command_server.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/integration/queue_runner/command_server/protocol/__init__.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/integration/queue_runner/command_server/protocol/command_server.proto +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.pyi +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/integration/queue_runner/command_server/protocol/command_server_pb2_grpc.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/integration/queue_runner/command_server/types.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/integration/queue_runner/datastore/__init__.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/integration/queue_runner/datastore/datastore_sqlite.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/integration/queue_runner/datastore/interface.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/integration/queue_runner/datastore/model.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/integration/queue_runner/queue_runner.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/integration/queue_runner/types.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/integration/scan_profiles.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/integration/scheduler.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/integration/secret_retrieval/__init__.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/integration/secret_retrieval/retrieve_secret.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/integration/server.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/integration/telemetry.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/integration/webhook_server/entrypoint.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/py.typed +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/__init__.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/__init__.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/batch/__init__.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/batch/execute_batch.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/batch/execute_batch_load_async.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/chemical/__init__.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/chemical/convert_chemical_formats.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/entity/__init__.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/entity/create_entities.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/entity/create_entity.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/entity/get_entities_data.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/entity/grant_entity_permissions.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/entity/list_entities.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/entity/lock_entity.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/entity/resolve_entity_ids.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/entity/set_values.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/entity/transition_entity_phase.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/entity/unlock_entity.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/equipment/__init__.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/equipment/associate_equipment_input.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/field_options/__init__.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/field_options/upsert_field_options.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/id_source/__init__.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/id_source/list_id_source.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/id_source/match_id_source.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/input_groups/__init__.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/input_groups/get_input_group_names.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/inputs/__init__.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/inputs/create_inputs.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/inputs/get_input_data.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/inputs/get_input_names.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/inputs/get_inputs_data.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/inputs/set_input_attribute_values.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/inputs/set_input_category.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/inputs/set_input_subcategories.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/inputs/set_intermediate_type.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/material_families/__init__.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/material_families/update_entity_material_families.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/outputs/__init__.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/outputs/get_output_data.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/outputs/get_output_names.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/outputs/resolve_output_conditions.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/permissions/__init__.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/permissions/set_core_permissions.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/project/__init__.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/project/get_projects.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/project/get_projects_data.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/recipe_links/__init__.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/recipe_links/create_recipe_link.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/recipe_links/remove_recipe_link.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/recipe_metadata/__init__.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/recipes/__init__.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/recipes/add_recipe_to_project.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/recipes/archive_recipes.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/recipes/associate_recipe_as_input.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/recipes/associate_recipe_as_lot.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/recipes/clear_recipe_outputs.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/recipes/create_recipe.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/recipes/create_recipes.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/recipes/disassociate_recipe_as_input.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/recipes/edit_recipe_inputs.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/recipes/get_column_calculation_values.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/recipes/get_curve.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/recipes/get_recipe_calculations.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/recipes/get_recipe_links.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/recipes/get_recipe_names.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/recipes/get_recipe_output_metadata.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/recipes/get_recipes_data.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/recipes/lock_recipes.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/recipes/remove_recipe_from_project.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/recipes/set_recipe_inputs.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/recipes/set_recipe_metadata.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/recipes/set_recipe_output_annotations.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/recipes/set_recipe_output_file.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/recipes/set_recipe_outputs.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/recipes/set_recipe_tags.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/recipes/unarchive_recipes.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/recipes/unlock_recipes.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/triggers/__init__.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/triggers/run_trigger.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/uploader/__init__.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/api/uploader/invoke_uploader.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/async_batch.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/async_batch_processor.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/async_batch_t.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/async_jobs.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/async_jobs_t.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/auth_retrieval.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/auth_retrieval_t.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/base.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/calculations.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/calculations_t.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/chemical_structure.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/chemical_structure_t.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/client_base.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/client_config.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/client_config_t.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/curves.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/curves_t.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/entity.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/experiment_groups.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/experiment_groups_t.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/field_values.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/field_values_t.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/fields.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/fields_t.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/generic_upload.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/generic_upload_t.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/id_source.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/id_source_t.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/identifier.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/identifier_t.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/input_attributes.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/input_attributes_t.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/inputs.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/inputs_t.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/integration_server.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/integration_server_t.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/job_definition.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/outputs.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/outputs_t.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/overrides.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/overrides_t.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/permissions.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/permissions_t.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/phases.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/phases_t.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/post_base.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/post_base_t.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/queued_job.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/queued_job_t.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/recipe_identifiers.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/recipe_identifiers_t.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/recipe_inputs.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/recipe_inputs_t.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/recipe_links.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/recipe_links_t.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/recipe_metadata.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/recipe_metadata_t.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/recipe_output_metadata.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/recipe_output_metadata_t.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/recipe_tags.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/recipe_tags_t.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/recipe_workflow_steps.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/recipe_workflow_steps_t.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/recipes.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/recipes_t.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/response.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/response_t.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/secret_retrieval.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/secret_retrieval_t.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/units.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/units_t.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/users.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/users_t.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/webhook_job.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/webhook_job_t.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/workflows.py +0 -0
- {uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/workflows_t.py +0 -0
{uncountablepythonsdk-0.0.79/UncountablePythonSDK.egg-info → uncountablepythonsdk-0.0.81}/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.81
|
|
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
|
{uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81/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.81
|
|
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
|
|
@@ -33,6 +33,7 @@ examples/set_recipe_output_file_sdk.py
|
|
|
33
33
|
examples/upload_files.py
|
|
34
34
|
examples/integration-server/pyproject.toml
|
|
35
35
|
examples/integration-server/jobs/materials_auto/example_cron.py
|
|
36
|
+
examples/integration-server/jobs/materials_auto/example_wh.py
|
|
36
37
|
examples/integration-server/jobs/materials_auto/profile.yaml
|
|
37
38
|
pkgs/__init__.py
|
|
38
39
|
pkgs/py.typed
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import typing
|
|
2
|
+
|
|
3
|
+
from uncountable.integration.job import JobArguments, WebhookJob, register_job
|
|
4
|
+
from uncountable.types.job_definition_t import JobResult
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
@register_job
|
|
8
|
+
class WebhookExample(WebhookJob):
|
|
9
|
+
@property
|
|
10
|
+
def payload_type(self) -> typing.Any:
|
|
11
|
+
return super().payload_type
|
|
12
|
+
|
|
13
|
+
def run(self, args: JobArguments, payload: typing.Any) -> JobResult:
|
|
14
|
+
args.logger.log_info(f"webhook invoked with payload: {payload}")
|
|
15
|
+
return JobResult(success=True)
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
base_url: http://host.docker.internal:5000
|
|
2
|
+
auth_retrieval:
|
|
3
|
+
type: basic
|
|
4
|
+
api_id_secret:
|
|
5
|
+
type: env
|
|
6
|
+
env_key: API_ID
|
|
7
|
+
api_key_secret:
|
|
8
|
+
type: env
|
|
9
|
+
env_key: API_SECRET_KEY
|
|
10
|
+
jobs:
|
|
11
|
+
- id: example_cron
|
|
12
|
+
enabled: true
|
|
13
|
+
type: cron
|
|
14
|
+
name: MyCron - Example
|
|
15
|
+
cron_spec: "* * * * *"
|
|
16
|
+
executor:
|
|
17
|
+
type: script
|
|
18
|
+
import_path: example_cron
|
|
19
|
+
logging_settings:
|
|
20
|
+
enabled: true
|
|
21
|
+
share_with_user_groups:
|
|
22
|
+
- admin:
|
|
23
|
+
type: ref_name
|
|
24
|
+
ref_name: admin
|
|
25
|
+
|
|
26
|
+
- id: example_wh1
|
|
27
|
+
type: webhook
|
|
28
|
+
name: Webhook 1
|
|
29
|
+
signature_key_secret:
|
|
30
|
+
type: env
|
|
31
|
+
env_key: WH1_SIGNATURE_KEY
|
|
32
|
+
executor:
|
|
33
|
+
type: script
|
|
34
|
+
import_path: example_wh
|
|
35
|
+
- id: example_wh2
|
|
36
|
+
type: webhook
|
|
37
|
+
name: Webhook 2
|
|
38
|
+
signature_key_secret:
|
|
39
|
+
type: env
|
|
40
|
+
env_key: WH2_SIGNATURE_KEY
|
|
41
|
+
executor:
|
|
42
|
+
type: script
|
|
43
|
+
import_path: example_wh
|
{uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/serialization/serial_class.py
RENAMED
|
@@ -96,6 +96,10 @@ class SerialClassDataInspector:
|
|
|
96
96
|
def named_type_path(self) -> Optional[str]:
|
|
97
97
|
return self.current.named_type_path
|
|
98
98
|
|
|
99
|
+
@property
|
|
100
|
+
def is_field_proper(self) -> bool:
|
|
101
|
+
return self.current.from_decorator and self.current.named_type_path is not None
|
|
102
|
+
|
|
99
103
|
|
|
100
104
|
def _get_merged_serial_class_data(type_class: type[Any]) -> _SerialClassData | None:
|
|
101
105
|
base_class_data = (
|
{uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/type_spec/parts/base.py.prepart
RENAMED
|
@@ -22,8 +22,8 @@ PureJsonScalar = Union[str, float, bool, None]
|
|
|
22
22
|
# Regular expressions for identifying ref names and IDs. Ref names should be
|
|
23
23
|
# using this regular expression as a constriant in the database.
|
|
24
24
|
REF_NAME_REGEX = r"^[a-zA-Z0-9_/-]+$"
|
|
25
|
-
#
|
|
26
|
-
ID_REGEX = r"[1-9][0-9]{0,20}"
|
|
25
|
+
# Ids matching a strict integer number are converted to integers
|
|
26
|
+
ID_REGEX = r"-?[1-9][0-9]{0,20}"
|
|
27
27
|
|
|
28
28
|
|
|
29
29
|
if TYPE_CHECKING:
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
from typing import assert_never
|
|
2
|
+
|
|
3
|
+
from uncountable.core.client import Client
|
|
4
|
+
from uncountable.integration.executors.generic_upload_executor import GenericUploadJob
|
|
5
|
+
from uncountable.integration.executors.script_executor import resolve_script_executor
|
|
6
|
+
from uncountable.integration.job import Job, JobArguments
|
|
7
|
+
from uncountable.types import (
|
|
8
|
+
async_jobs_t,
|
|
9
|
+
entity_t,
|
|
10
|
+
field_values_t,
|
|
11
|
+
identifier_t,
|
|
12
|
+
job_definition_t,
|
|
13
|
+
transition_entity_phase_t,
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def resolve_executor(
|
|
18
|
+
job_executor: job_definition_t.JobExecutor,
|
|
19
|
+
profile_metadata: job_definition_t.ProfileMetadata,
|
|
20
|
+
) -> Job:
|
|
21
|
+
match job_executor:
|
|
22
|
+
case job_definition_t.JobExecutorScript():
|
|
23
|
+
return resolve_script_executor(
|
|
24
|
+
job_executor, profile_metadata=profile_metadata
|
|
25
|
+
)
|
|
26
|
+
case job_definition_t.JobExecutorGenericUpload():
|
|
27
|
+
return GenericUploadJob(
|
|
28
|
+
remote_directories=job_executor.remote_directories,
|
|
29
|
+
upload_strategy=job_executor.upload_strategy,
|
|
30
|
+
data_source=job_executor.data_source,
|
|
31
|
+
)
|
|
32
|
+
assert_never(job_executor)
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def _create_run_entity(
|
|
36
|
+
*, client: Client, logging_settings: job_definition_t.JobLoggingSettings
|
|
37
|
+
) -> entity_t.Entity:
|
|
38
|
+
run_entity = client.create_entity(
|
|
39
|
+
entity_type=entity_t.EntityType.ASYNC_JOB,
|
|
40
|
+
definition_key=identifier_t.IdentifierKeyRefName(
|
|
41
|
+
ref_name="unc_integration_server_run_definition"
|
|
42
|
+
),
|
|
43
|
+
field_values=[
|
|
44
|
+
field_values_t.FieldRefNameValue(
|
|
45
|
+
field_ref_name=async_jobs_t.ASYNC_JOB_TYPE_FIELD_REF_NAME,
|
|
46
|
+
value=async_jobs_t.AsyncJobType.INTEGRATION_SERVER_RUN,
|
|
47
|
+
),
|
|
48
|
+
field_values_t.FieldRefNameValue(
|
|
49
|
+
field_ref_name=async_jobs_t.ASYNC_JOB_STATUS_FIELD_REF_NAME,
|
|
50
|
+
value=async_jobs_t.AsyncJobStatus.IN_PROGRESS,
|
|
51
|
+
),
|
|
52
|
+
],
|
|
53
|
+
).entity
|
|
54
|
+
client.transition_entity_phase(
|
|
55
|
+
entity=run_entity,
|
|
56
|
+
transition=transition_entity_phase_t.TransitionIdentifierPhases(
|
|
57
|
+
phase_from_key=identifier_t.IdentifierKeyRefName(
|
|
58
|
+
ref_name="unc_integration_server_run__queued"
|
|
59
|
+
),
|
|
60
|
+
phase_to_key=identifier_t.IdentifierKeyRefName(
|
|
61
|
+
ref_name="unc_integration_server_run__started"
|
|
62
|
+
),
|
|
63
|
+
),
|
|
64
|
+
)
|
|
65
|
+
if logging_settings.share_with_user_groups is not None:
|
|
66
|
+
client.grant_entity_permissions(
|
|
67
|
+
entity_type=entity_t.EntityType.ASYNC_JOB,
|
|
68
|
+
entity_key=identifier_t.IdentifierKeyId(id=run_entity.id),
|
|
69
|
+
permission_types=[
|
|
70
|
+
entity_t.EntityPermissionType.READ,
|
|
71
|
+
entity_t.EntityPermissionType.WRITE,
|
|
72
|
+
],
|
|
73
|
+
user_group_keys=logging_settings.share_with_user_groups,
|
|
74
|
+
)
|
|
75
|
+
return run_entity
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def execute_job(
|
|
79
|
+
*,
|
|
80
|
+
job_definition: job_definition_t.JobDefinition,
|
|
81
|
+
profile_metadata: job_definition_t.ProfileMetadata,
|
|
82
|
+
args: JobArguments,
|
|
83
|
+
) -> job_definition_t.JobResult:
|
|
84
|
+
with args.logger.push_scope(job_definition.name) as job_logger:
|
|
85
|
+
job = resolve_executor(job_definition.executor, profile_metadata)
|
|
86
|
+
|
|
87
|
+
job_logger.log_info("running job")
|
|
88
|
+
|
|
89
|
+
run_entity: entity_t.Entity | None = None
|
|
90
|
+
try:
|
|
91
|
+
if (
|
|
92
|
+
job_definition.logging_settings is not None
|
|
93
|
+
and job_definition.logging_settings.enabled
|
|
94
|
+
):
|
|
95
|
+
run_entity = _create_run_entity(
|
|
96
|
+
client=args.client, logging_settings=job_definition.logging_settings
|
|
97
|
+
)
|
|
98
|
+
result = job.run_outer(args=args)
|
|
99
|
+
except Exception as e:
|
|
100
|
+
job_logger.log_exception(e)
|
|
101
|
+
if run_entity is not None:
|
|
102
|
+
args.client.set_values(
|
|
103
|
+
entity=run_entity,
|
|
104
|
+
values=[
|
|
105
|
+
field_values_t.ArgumentValueRefName(
|
|
106
|
+
field_ref_name=async_jobs_t.ASYNC_JOB_STATUS_FIELD_REF_NAME,
|
|
107
|
+
value=async_jobs_t.AsyncJobStatus.ERROR,
|
|
108
|
+
),
|
|
109
|
+
],
|
|
110
|
+
)
|
|
111
|
+
return job_definition_t.JobResult(success=False)
|
|
112
|
+
|
|
113
|
+
if args.batch_processor.current_queue_size() != 0:
|
|
114
|
+
args.batch_processor.send()
|
|
115
|
+
|
|
116
|
+
submitted_batch_job_ids = args.batch_processor.get_submitted_job_ids()
|
|
117
|
+
job_logger.log_info(
|
|
118
|
+
"completed job",
|
|
119
|
+
attributes={
|
|
120
|
+
"submitted_batch_job_ids": submitted_batch_job_ids,
|
|
121
|
+
"success": result.success,
|
|
122
|
+
},
|
|
123
|
+
)
|
|
124
|
+
if run_entity is not None:
|
|
125
|
+
args.client.set_values(
|
|
126
|
+
entity=run_entity,
|
|
127
|
+
values=[
|
|
128
|
+
field_values_t.ArgumentValueRefName(
|
|
129
|
+
field_ref_name=async_jobs_t.ASYNC_JOB_STATUS_FIELD_REF_NAME,
|
|
130
|
+
value=async_jobs_t.AsyncJobStatus.COMPLETED
|
|
131
|
+
if result.success
|
|
132
|
+
else async_jobs_t.AsyncJobStatus.ERROR,
|
|
133
|
+
),
|
|
134
|
+
],
|
|
135
|
+
)
|
|
136
|
+
|
|
137
|
+
return result
|
|
@@ -8,6 +8,7 @@ from opentelemetry.trace import get_current_span
|
|
|
8
8
|
from uncountable.integration.db.connect import IntegrationDBService, create_db_engine
|
|
9
9
|
from uncountable.integration.db.session import get_session_maker
|
|
10
10
|
from uncountable.integration.queue_runner.command_server import (
|
|
11
|
+
CommandEnqueueJob,
|
|
11
12
|
CommandEnqueueJobResponse,
|
|
12
13
|
CommandQueue,
|
|
13
14
|
CommandTask,
|
|
@@ -99,6 +100,41 @@ async def start_scheduler(command_queue: CommandQueue) -> None:
|
|
|
99
100
|
return
|
|
100
101
|
await worker.listen_queue.put(queued_job)
|
|
101
102
|
|
|
103
|
+
async def _enqueue_or_deduplicate_job(
|
|
104
|
+
job_ref_name: str,
|
|
105
|
+
payload: queued_job_t.QueuedJobPayload,
|
|
106
|
+
) -> str:
|
|
107
|
+
if isinstance(
|
|
108
|
+
payload.invocation_context,
|
|
109
|
+
queued_job_t.InvocationContextCron,
|
|
110
|
+
):
|
|
111
|
+
existing_queued_jobs = datastore.load_job_queue()
|
|
112
|
+
duplicate_job = next(
|
|
113
|
+
(
|
|
114
|
+
job
|
|
115
|
+
for job in existing_queued_jobs
|
|
116
|
+
if job.job_ref_name == job_ref_name
|
|
117
|
+
),
|
|
118
|
+
None,
|
|
119
|
+
)
|
|
120
|
+
if duplicate_job is not None:
|
|
121
|
+
return duplicate_job.queued_job_uuid
|
|
122
|
+
queued_job = datastore.add_job_to_queue(
|
|
123
|
+
job_payload=payload,
|
|
124
|
+
job_ref_name=job_ref_name,
|
|
125
|
+
)
|
|
126
|
+
await enqueue_queued_job(queued_job)
|
|
127
|
+
return queued_job.queued_job_uuid
|
|
128
|
+
|
|
129
|
+
async def _handle_enqueue_job_command(command: CommandEnqueueJob) -> None:
|
|
130
|
+
queued_job_uuid = await _enqueue_or_deduplicate_job(
|
|
131
|
+
job_ref_name=command.job_ref_name,
|
|
132
|
+
payload=command.payload,
|
|
133
|
+
)
|
|
134
|
+
await command.response_queue.put(
|
|
135
|
+
CommandEnqueueJobResponse(queued_job_uuid=queued_job_uuid)
|
|
136
|
+
)
|
|
137
|
+
|
|
102
138
|
for queued_job in queued_jobs:
|
|
103
139
|
await enqueue_queued_job(queued_job)
|
|
104
140
|
|
|
@@ -112,15 +148,11 @@ async def start_scheduler(command_queue: CommandQueue) -> None:
|
|
|
112
148
|
for task in finished:
|
|
113
149
|
if task == command_task:
|
|
114
150
|
command = command_task.result()
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
queued_job_uuid=queued_job.queued_job_uuid
|
|
121
|
-
)
|
|
122
|
-
)
|
|
123
|
-
await enqueue_queued_job(queued_job)
|
|
151
|
+
match command:
|
|
152
|
+
case CommandEnqueueJob():
|
|
153
|
+
await _handle_enqueue_job_command(command=command)
|
|
154
|
+
case _:
|
|
155
|
+
typing.assert_never(command)
|
|
124
156
|
command_task = asyncio.create_task(command_queue.get())
|
|
125
157
|
elif task == result_task:
|
|
126
158
|
queued_job_result = result_task.result()
|
|
@@ -39,8 +39,8 @@ PureJsonScalar = Union[str, float, bool, None]
|
|
|
39
39
|
# Regular expressions for identifying ref names and IDs. Ref names should be
|
|
40
40
|
# using this regular expression as a constriant in the database.
|
|
41
41
|
REF_NAME_REGEX = r"^[a-zA-Z0-9_/-]+$"
|
|
42
|
-
#
|
|
43
|
-
ID_REGEX = r"[1-9][0-9]{0,20}"
|
|
42
|
+
# Ids matching a strict integer number are converted to integers
|
|
43
|
+
ID_REGEX = r"-?[1-9][0-9]{0,20}"
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
if TYPE_CHECKING:
|
|
@@ -70,10 +70,12 @@ __all__: list[str] = [
|
|
|
70
70
|
"ingredient": "Ingredient",
|
|
71
71
|
"ingredient_attribute": "Ingredient Attribute",
|
|
72
72
|
"ingredient_attribute_category": "Ingredient Attribute Category",
|
|
73
|
+
"ingredient_attribute_value": "Ingredient Attribute Value",
|
|
73
74
|
"ingredient_category": "Ingredient Category (Project)",
|
|
74
75
|
"ingredient_category_all": "Ingredient Category",
|
|
75
76
|
"ingredient_category_all_material_family": "Ingredient Category Material Family",
|
|
76
77
|
"ingredient_lot": "Ingredient Lot",
|
|
78
|
+
"ingredient_mat_family": "Ingredient Material Family",
|
|
77
79
|
"ingredient_role": "Ingredient Role",
|
|
78
80
|
"ingredient_tag": "Ingredient Subcategory",
|
|
79
81
|
"ingredient_tag_map": "Ingredient Tag Map",
|
|
@@ -225,10 +227,12 @@ class EntityType(StrEnum):
|
|
|
225
227
|
INGREDIENT = "ingredient"
|
|
226
228
|
INGREDIENT_ATTRIBUTE = "ingredient_attribute"
|
|
227
229
|
INGREDIENT_ATTRIBUTE_CATEGORY = "ingredient_attribute_category"
|
|
230
|
+
INGREDIENT_ATTRIBUTE_VALUE = "ingredient_attribute_value"
|
|
228
231
|
INGREDIENT_CATEGORY = "ingredient_category"
|
|
229
232
|
INGREDIENT_CATEGORY_ALL = "ingredient_category_all"
|
|
230
233
|
INGREDIENT_CATEGORY_ALL_MATERIAL_FAMILY = "ingredient_category_all_material_family"
|
|
231
234
|
INGREDIENT_LOT = "ingredient_lot"
|
|
235
|
+
INGREDIENT_MAT_FAMILY = "ingredient_mat_family"
|
|
232
236
|
INGREDIENT_ROLE = "ingredient_role"
|
|
233
237
|
INGREDIENT_TAG = "ingredient_tag"
|
|
234
238
|
INGREDIENT_TAG_MAP = "ingredient_tag_map"
|
{uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/uncountable/types/job_definition_t.py
RENAMED
|
@@ -12,9 +12,9 @@ import dataclasses
|
|
|
12
12
|
from pkgs.serialization import serial_class
|
|
13
13
|
from pkgs.serialization import serial_union_annotation
|
|
14
14
|
from . import auth_retrieval_t
|
|
15
|
-
from . import base_t
|
|
16
15
|
from . import client_config_t
|
|
17
16
|
from . import generic_upload_t
|
|
17
|
+
from . import identifier_t
|
|
18
18
|
from . import integration_server_t
|
|
19
19
|
from . import secret_retrieval_t
|
|
20
20
|
|
|
@@ -172,7 +172,7 @@ JobExecutor = typing.Annotated[
|
|
|
172
172
|
@dataclasses.dataclass(kw_only=True)
|
|
173
173
|
class JobLoggingSettings:
|
|
174
174
|
enabled: bool = False
|
|
175
|
-
share_with_user_groups: typing.Optional[list[
|
|
175
|
+
share_with_user_groups: typing.Optional[list[identifier_t.IdentifierKey]] = None
|
|
176
176
|
|
|
177
177
|
|
|
178
178
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
base_url: http://host.docker.internal:5000
|
|
2
|
-
auth_retrieval:
|
|
3
|
-
type: basic
|
|
4
|
-
api_id_secret:
|
|
5
|
-
type: env
|
|
6
|
-
env_key: API_ID
|
|
7
|
-
api_key_secret:
|
|
8
|
-
type: env
|
|
9
|
-
env_key: API_SECRET_KEY
|
|
10
|
-
jobs:
|
|
11
|
-
- id: example_cron
|
|
12
|
-
enabled: true
|
|
13
|
-
type: cron
|
|
14
|
-
name: MyCron - Example
|
|
15
|
-
cron_spec: "* * * * *"
|
|
16
|
-
executor:
|
|
17
|
-
type: script
|
|
18
|
-
import_path: example_cron
|
|
19
|
-
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
from typing import assert_never
|
|
2
|
-
|
|
3
|
-
from uncountable.integration.executors.generic_upload_executor import GenericUploadJob
|
|
4
|
-
from uncountable.integration.executors.script_executor import resolve_script_executor
|
|
5
|
-
from uncountable.integration.job import Job, JobArguments
|
|
6
|
-
from uncountable.types import job_definition_t
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
def resolve_executor(
|
|
10
|
-
job_executor: job_definition_t.JobExecutor,
|
|
11
|
-
profile_metadata: job_definition_t.ProfileMetadata,
|
|
12
|
-
) -> Job:
|
|
13
|
-
match job_executor:
|
|
14
|
-
case job_definition_t.JobExecutorScript():
|
|
15
|
-
return resolve_script_executor(
|
|
16
|
-
job_executor, profile_metadata=profile_metadata
|
|
17
|
-
)
|
|
18
|
-
case job_definition_t.JobExecutorGenericUpload():
|
|
19
|
-
return GenericUploadJob(
|
|
20
|
-
remote_directories=job_executor.remote_directories,
|
|
21
|
-
upload_strategy=job_executor.upload_strategy,
|
|
22
|
-
data_source=job_executor.data_source,
|
|
23
|
-
)
|
|
24
|
-
assert_never(job_executor)
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
def execute_job(
|
|
28
|
-
*,
|
|
29
|
-
job_definition: job_definition_t.JobDefinition,
|
|
30
|
-
profile_metadata: job_definition_t.ProfileMetadata,
|
|
31
|
-
args: JobArguments,
|
|
32
|
-
) -> job_definition_t.JobResult:
|
|
33
|
-
with args.logger.push_scope(job_definition.name) as job_logger:
|
|
34
|
-
job = resolve_executor(job_definition.executor, profile_metadata)
|
|
35
|
-
|
|
36
|
-
job_logger.log_info("running job")
|
|
37
|
-
|
|
38
|
-
try:
|
|
39
|
-
result = job.run_outer(args=args)
|
|
40
|
-
except Exception as e:
|
|
41
|
-
job_logger.log_exception(e)
|
|
42
|
-
return job_definition_t.JobResult(success=False)
|
|
43
|
-
|
|
44
|
-
if args.batch_processor.current_queue_size() != 0:
|
|
45
|
-
args.batch_processor.send()
|
|
46
|
-
|
|
47
|
-
submitted_batch_job_ids = args.batch_processor.get_submitted_job_ids()
|
|
48
|
-
job_logger.log_info(
|
|
49
|
-
"completed job",
|
|
50
|
-
attributes={
|
|
51
|
-
"submitted_batch_job_ids": submitted_batch_job_ids,
|
|
52
|
-
"success": result.success,
|
|
53
|
-
},
|
|
54
|
-
)
|
|
55
|
-
|
|
56
|
-
return result
|
{uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/.github/workflows/documentation.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/docs/static/favicons/browserconfig.xml
RENAMED
|
File without changes
|
{uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/docs/static/favicons/favicon-16x16.png
RENAMED
|
File without changes
|
{uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/docs/static/favicons/favicon-32x32.png
RENAMED
|
File without changes
|
{uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/docs/static/favicons/manifest.json
RENAMED
|
File without changes
|
{uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/docs/static/favicons/mstile-150x150.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/examples/set_recipe_metadata_file.py
RENAMED
|
File without changes
|
{uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/examples/set_recipe_output_file_sdk.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/argument_parser/__init__.py
RENAMED
|
File without changes
|
{uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/argument_parser/_is_enum.py
RENAMED
|
File without changes
|
{uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/argument_parser/_is_namedtuple.py
RENAMED
|
File without changes
|
{uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/argument_parser/argument_parser.py
RENAMED
|
File without changes
|
{uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/argument_parser/case_convert.py
RENAMED
|
File without changes
|
{uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/filesystem_utils/__init__.py
RENAMED
|
File without changes
|
{uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/filesystem_utils/_gdrive_session.py
RENAMED
|
File without changes
|
{uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/filesystem_utils/_local_session.py
RENAMED
|
File without changes
|
{uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/filesystem_utils/_s3_session.py
RENAMED
|
File without changes
|
{uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/filesystem_utils/_sftp_session.py
RENAMED
|
File without changes
|
{uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/filesystem_utils/file_type_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/serialization/missing_sentry.py
RENAMED
|
File without changes
|
{uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/serialization/opaque_key.py
RENAMED
|
File without changes
|
{uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/serialization/serial_union.py
RENAMED
|
File without changes
|
|
File without changes
|
{uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/serialization_util/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/strenum_compat/strenum_compat.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{uncountablepythonsdk-0.0.79 → uncountablepythonsdk-0.0.81}/pkgs/type_spec/emit_open_api_util.py
RENAMED
|
File without changes
|
|
File without changes
|