UncountablePythonSDK 0.0.177__tar.gz → 0.0.179__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.
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/.github/workflows/documentation.yml +1 -1
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/.github/workflows/publish.yml +1 -1
- {uncountablepythonsdk-0.0.177/UncountablePythonSDK.egg-info → uncountablepythonsdk-0.0.179}/PKG-INFO +2 -1
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179/UncountablePythonSDK.egg-info}/PKG-INFO +2 -1
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/UncountablePythonSDK.egg-info/SOURCES.txt +3 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/UncountablePythonSDK.egg-info/requires.txt +1 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/examples/integration-server/pyproject.toml +1 -1
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/filesystem_utils/__init__.py +31 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/filesystem_utils/_file_share_session.py +1 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/serialization/opaque_key.py +2 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/strenum_compat/__init__.py +2 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pyproject.toml +1 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/core/client.py +5 -1
- uncountablepythonsdk-0.0.179/uncountable/integration/db/connect.py +48 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/integration/queue_runner/command_server/command_server.py +2 -2
- uncountablepythonsdk-0.0.179/uncountable/integration/queue_runner/datastore/__init__.py +11 -0
- uncountablepythonsdk-0.0.179/uncountable/integration/queue_runner/datastore/datastore_postgres.py +12 -0
- uncountablepythonsdk-0.0.177/uncountable/integration/queue_runner/datastore/datastore_sqlite.py → uncountablepythonsdk-0.0.179/uncountable/integration/queue_runner/datastore/datastore_sql_base.py +3 -29
- uncountablepythonsdk-0.0.179/uncountable/integration/queue_runner/datastore/datastore_sqlite.py +34 -0
- uncountablepythonsdk-0.0.179/uncountable/integration/queue_runner/datastore/factory.py +24 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/integration/queue_runner/datastore/interface.py +17 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/integration/queue_runner/datastore/model.py +1 -1
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/integration/queue_runner/job_scheduler.py +2 -5
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/integration/queue_runner/queue_runner.py +2 -6
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/integration/queue_runner/worker.py +1 -1
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/integration/telemetry.py +4 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/integrations/publish_realtime_data.py +1 -1
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/client_base.py +1 -1
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/entity_t.py +12 -0
- uncountablepythonsdk-0.0.177/uncountable/integration/db/connect.py +0 -18
- uncountablepythonsdk-0.0.177/uncountable/integration/queue_runner/datastore/__init__.py +0 -3
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/.gitignore +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/README.md +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/UncountablePythonSDK.egg-info/dependency_links.txt +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/UncountablePythonSDK.egg-info/top_level.txt +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/docs/.flowmarkignore +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/docs/.gitignore +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/docs/conf.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/docs/index.md +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/docs/integration_examples/add_file_to_folder.md +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/docs/integration_examples/create_ingredient.md +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/docs/integration_examples/create_output.md +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/docs/integration_examples/index.md +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/docs/integration_examples/upload_file.md +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/docs/justfile +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/docs/requirements.txt +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/docs/static/favicons/android-chrome-192x192.png +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/docs/static/favicons/android-chrome-512x512.png +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/docs/static/favicons/apple-touch-icon.png +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/docs/static/favicons/browserconfig.xml +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/docs/static/favicons/favicon-16x16.png +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/docs/static/favicons/favicon-32x32.png +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/docs/static/favicons/manifest.json +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/docs/static/favicons/mstile-150x150.png +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/docs/static/favicons/safari-pinned-tab.svg +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/docs/static/logo_blue.png +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/examples/async_batch.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/examples/async_batch_large_parse.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/examples/basic_auth.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/examples/create_entity.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/examples/create_ingredient_sdk.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/examples/download_files.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/examples/edit_recipe_inputs.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/examples/integration-server/jobs/materials_auto/concurrent_cron.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/examples/integration-server/jobs/materials_auto/example_cron.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/examples/integration-server/jobs/materials_auto/example_http.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/examples/integration-server/jobs/materials_auto/example_instrument.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/examples/integration-server/jobs/materials_auto/example_parse.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/examples/integration-server/jobs/materials_auto/example_predictions.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/examples/integration-server/jobs/materials_auto/example_runsheet_wh.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/examples/integration-server/jobs/materials_auto/example_wh.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/examples/integration-server/jobs/materials_auto/profile.yaml +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/examples/invoke_uploader.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/examples/oauth.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/examples/set_input_pdf_attribute.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/examples/set_recipe_metadata_file.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/examples/set_recipe_output_file_sdk.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/examples/upload_files.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/__init__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/argument_parser/__init__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/argument_parser/cached_parser.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/argument_parser/case_convert.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/argument_parser/parser_base.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/argument_parser/parser_builder.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/argument_parser/parser_cache.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/argument_parser/parser_error.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/argument_parser/parser_function_type.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/argument_parser/parser_inner.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/argument_parser/parser_options.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/argument_parser/type_predicates.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/filesystem_utils/_blob_session.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/filesystem_utils/_gdrive_session.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/filesystem_utils/_local_session.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/filesystem_utils/_s3_session.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/filesystem_utils/_sftp_connection.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/filesystem_utils/_sftp_session.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/filesystem_utils/file_type_utils.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/filesystem_utils/filesystem_session.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/py.typed +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/serialization/__init__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/serialization/annotation.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/serialization/missing_sentry.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/serialization/serial_alias.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/serialization/serial_class.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/serialization/serial_generic.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/serialization/serial_union.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/serialization/unknown.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/serialization/yaml.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/serialization_util/__init__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/serialization_util/_get_type_for_serialization.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/serialization_util/convert_to_snakecase.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/serialization_util/dataclasses.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/serialization_util/serialization_helpers.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/strenum_compat/strenum_compat.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/type_spec/__init__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/type_spec/__main__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/type_spec/actions_registry/__init__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/type_spec/actions_registry/__main__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/type_spec/actions_registry/emit_python.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/type_spec/actions_registry/emit_typescript.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/type_spec/builder.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/type_spec/builder_types.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/type_spec/config.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/type_spec/cross_output_links.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/type_spec/emit_io_ts.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/type_spec/emit_open_api.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/type_spec/emit_open_api_util.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/type_spec/emit_python.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/type_spec/emit_typescript.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/type_spec/emit_typescript_util.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/type_spec/load_types.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/type_spec/non_discriminated_union_exceptions.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/type_spec/open_api_util.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/type_spec/parts/base.py.prepart +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/type_spec/parts/base.ts.prepart +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/type_spec/test.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/type_spec/type_info/__main__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/type_spec/type_info/emit_type_info.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/type_spec/ui_entry_actions/__init__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/type_spec/ui_entry_actions/generate_ui_entry_actions.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/type_spec/util.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/type_spec/value_spec/__init__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/type_spec/value_spec/__main__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/type_spec/value_spec/convert_type.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/type_spec/value_spec/emit_python.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/type_spec/value_spec/types.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/setup.cfg +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/__init__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/core/__init__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/core/async_batch.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/core/environment.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/core/file_upload.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/core/query/__init__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/core/query/builder.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/core/query/column.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/core/query/row.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/core/query/types.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/core/types.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/integration/__init__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/integration/cli.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/integration/construct_client.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/integration/cron.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/integration/db/__init__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/integration/db/session.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/integration/entrypoint.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/integration/executors/__init__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/integration/executors/executors.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/integration/executors/generic_upload_executor.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/integration/executors/script_executor.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/integration/http_server/__init__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/integration/http_server/types.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/integration/job.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/integration/queue_runner/__init__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/integration/queue_runner/command_server/__init__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/integration/queue_runner/command_server/command_client.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/integration/queue_runner/command_server/constants.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/integration/queue_runner/command_server/protocol/__init__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/integration/queue_runner/command_server/protocol/command_server.proto +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.pyi +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/integration/queue_runner/command_server/protocol/command_server_pb2_grpc.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/integration/queue_runner/command_server/provision_webhook.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/integration/queue_runner/command_server/types.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/integration/queue_runner/types.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/integration/request_context.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/integration/scan_profiles.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/integration/scheduler.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/integration/secret_retrieval/__init__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/integration/secret_retrieval/basic_secret.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/integration/secret_retrieval/retrieve_secret.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/integration/server.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/integration/webhook_server/entrypoint.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/integration/webhook_signature_key.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/py.typed +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/__init__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/__init__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/batch/__init__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/batch/execute_batch.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/batch/execute_batch_load_async.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/chemical/__init__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/chemical/convert_chemical_formats.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/condition_parameters/__init__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/condition_parameters/upsert_condition_match.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/condition_parameters/upsert_condition_matches.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/entity/__init__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/entity/create_entities.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/entity/create_entity.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/entity/create_or_update_entities.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/entity/create_or_update_entity.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/entity/export_entities.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/entity/get_entities_data.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/entity/grant_entity_permissions.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/entity/list_aggregate.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/entity/list_entities.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/entity/lock_entity.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/entity/lookup_entity.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/entity/resolve_entity_ids.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/entity/set_barcode.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/entity/set_entities_field_values.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/entity/set_entity_field_values.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/entity/set_values.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/entity/transition_entity_phase.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/entity/unlock_entity.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/equipment/__init__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/equipment/associate_equipment_input.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/field_options/__init__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/field_options/upsert_field_options.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/file_folders/__init__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/file_folders/add_file_to_folder.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/file_folders/modify_file_system.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/files/__init__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/files/download_file.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/id_source/__init__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/id_source/list_id_source.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/id_source/match_id_source.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/input_groups/__init__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/input_groups/get_input_group_names.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/inputs/__init__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/inputs/create_inputs.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/inputs/get_input_data.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/inputs/get_input_names.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/inputs/get_inputs_data.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/inputs/set_input_attribute_values.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/inputs/set_input_category.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/inputs/set_input_subcategories.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/inputs/set_intermediate_type.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/integrations/__init__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/integrations/push_notification.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/integrations/register_sockets_token.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/listing/__init__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/listing/export_listing.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/listing/fetch_listing.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/material_families/__init__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/material_families/update_entity_material_families.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/notebooks/__init__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/notebooks/add_notebook_content.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/notebooks/get_notebook_content.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/output_parameters/__init__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/output_parameters/swap_output_condition_parameters.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/outputs/__init__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/outputs/get_output_data.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/outputs/get_output_names.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/outputs/get_output_organization.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/outputs/resolve_output_conditions.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/outputs/update_output_condition_parameter.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/permissions/__init__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/permissions/set_core_permissions.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/permissions/set_entity_permission.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/project/__init__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/project/get_projects.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/project/get_projects_data.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/recipe_links/__init__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/recipe_links/create_recipe_link.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/recipe_links/create_recipe_links.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/recipe_links/remove_recipe_link.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/recipe_metadata/__init__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/recipes/__init__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/recipes/add_recipe_to_project.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/recipes/add_time_series_data.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/recipes/archive_recipes.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/recipes/associate_recipe_as_input.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/recipes/associate_recipe_as_lot.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/recipes/clear_recipe_outputs.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/recipes/create_mix_order.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/recipes/create_recipe.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/recipes/create_recipes.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/recipes/disassociate_recipe_as_input.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/recipes/edit_recipe_inputs.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/recipes/get_column_calculation_values.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/recipes/get_curve.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/recipes/get_recipe_calculations.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/recipes/get_recipe_links.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/recipes/get_recipe_names.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/recipes/get_recipe_output_metadata.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/recipes/get_recipes_data.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/recipes/lock_recipes.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/recipes/remove_recipe_from_project.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/recipes/set_recipe_inputs.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/recipes/set_recipe_metadata.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/recipes/set_recipe_output_annotations.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/recipes/set_recipe_output_file.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/recipes/set_recipe_outputs.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/recipes/set_recipe_tags.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/recipes/set_recipe_total.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/recipes/unarchive_recipes.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/recipes/unlock_recipes.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/recipes/upsert_recipe_workflow_step.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/recipes/upsert_step_relationships.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/runsheet/__init__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/runsheet/complete_async_upload.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/runsheet/export_default_runsheet.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/triggers/__init__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/triggers/run_trigger.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/uploader/__init__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/uploader/complete_async_parse.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/uploader/invoke_uploader.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/user/__init__.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/api/user/get_current_user_info.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/async_batch.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/async_batch_processor.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/async_batch_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/async_jobs.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/async_jobs_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/auth_retrieval.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/auth_retrieval_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/base.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/base_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/calculations.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/calculations_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/chemical_structure.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/chemical_structure_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/client_config.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/client_config_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/condition_match.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/condition_match_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/curves.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/curves_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/data.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/data_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/entity.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/experiment_groups.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/experiment_groups_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/exports.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/exports_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/field_values.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/field_values_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/fields.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/fields_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/generic_upload.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/generic_upload_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/id_source.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/id_source_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/identifier.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/identifier_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/input_attributes.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/input_attributes_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/inputs.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/inputs_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/integration_server.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/integration_server_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/integration_session.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/integration_session_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/integrations.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/integrations_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/job_definition.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/job_definition_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/listing.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/listing_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/notices.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/notices_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/notifications.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/notifications_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/outputs.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/outputs_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/overrides.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/overrides_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/permissions.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/permissions_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/phases.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/phases_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/post_base.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/post_base_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/queued_job.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/queued_job_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/recipe_identifiers.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/recipe_identifiers_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/recipe_inputs.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/recipe_inputs_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/recipe_links.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/recipe_links_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/recipe_metadata.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/recipe_metadata_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/recipe_output_metadata.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/recipe_output_metadata_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/recipe_step_relationships.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/recipe_step_relationships_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/recipe_tags.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/recipe_tags_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/recipe_workflow_step_types.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/recipe_workflow_step_types_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/recipe_workflow_steps.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/recipe_workflow_steps_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/recipes.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/recipes_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/request_headers.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/request_headers_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/response.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/response_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/runsheet.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/runsheet_format.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/runsheet_format_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/runsheet_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/secret_retrieval.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/secret_retrieval_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/sockets.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/sockets_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/specs.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/specs_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/step_relationships.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/step_relationships_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/units.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/units_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/uploader.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/uploader_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/users.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/users_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/webhook.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/webhook_job.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/webhook_job_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/webhook_t.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/workflows.py +0 -0
- {uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/workflows_t.py +0 -0
{uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/.github/workflows/documentation.yml
RENAMED
|
@@ -9,7 +9,7 @@ jobs:
|
|
|
9
9
|
docs:
|
|
10
10
|
runs-on: ubuntu-latest
|
|
11
11
|
steps:
|
|
12
|
-
- uses: actions/checkout@
|
|
12
|
+
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
|
|
13
13
|
- uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6
|
|
14
14
|
- uses: extractions/setup-crate@0551596312d4008a6dfbc4d3c38fa20eaef46d2d # v2
|
|
15
15
|
with:
|
|
@@ -19,7 +19,7 @@ jobs:
|
|
|
19
19
|
name: Build distribution packages
|
|
20
20
|
runs-on: ubuntu-latest
|
|
21
21
|
steps:
|
|
22
|
-
- uses: actions/checkout@
|
|
22
|
+
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
|
|
23
23
|
with:
|
|
24
24
|
fetch-depth: 0
|
|
25
25
|
tags: true
|
{uncountablepythonsdk-0.0.177/UncountablePythonSDK.egg-info → uncountablepythonsdk-0.0.179}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: UncountablePythonSDK
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.179
|
|
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
|
|
@@ -20,6 +20,7 @@ Requires-Dist: aiotus==1.*
|
|
|
20
20
|
Requires-Dist: aiohttp>=3.14.1
|
|
21
21
|
Requires-Dist: requests==2.*
|
|
22
22
|
Requires-Dist: SQLAlchemy>=1.4.0
|
|
23
|
+
Requires-Dist: psycopg[binary]==3.*
|
|
23
24
|
Requires-Dist: APScheduler==3.*
|
|
24
25
|
Requires-Dist: python-dateutil==2.*
|
|
25
26
|
Requires-Dist: PyYAML==6.*
|
{uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179/UncountablePythonSDK.egg-info}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: UncountablePythonSDK
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.179
|
|
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
|
|
@@ -20,6 +20,7 @@ Requires-Dist: aiotus==1.*
|
|
|
20
20
|
Requires-Dist: aiohttp>=3.14.1
|
|
21
21
|
Requires-Dist: requests==2.*
|
|
22
22
|
Requires-Dist: SQLAlchemy>=1.4.0
|
|
23
|
+
Requires-Dist: psycopg[binary]==3.*
|
|
23
24
|
Requires-Dist: APScheduler==3.*
|
|
24
25
|
Requires-Dist: python-dateutil==2.*
|
|
25
26
|
Requires-Dist: PyYAML==6.*
|
|
@@ -175,7 +175,10 @@ uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.
|
|
|
175
175
|
uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.pyi
|
|
176
176
|
uncountable/integration/queue_runner/command_server/protocol/command_server_pb2_grpc.py
|
|
177
177
|
uncountable/integration/queue_runner/datastore/__init__.py
|
|
178
|
+
uncountable/integration/queue_runner/datastore/datastore_postgres.py
|
|
179
|
+
uncountable/integration/queue_runner/datastore/datastore_sql_base.py
|
|
178
180
|
uncountable/integration/queue_runner/datastore/datastore_sqlite.py
|
|
181
|
+
uncountable/integration/queue_runner/datastore/factory.py
|
|
179
182
|
uncountable/integration/queue_runner/datastore/interface.py
|
|
180
183
|
uncountable/integration/queue_runner/datastore/model.py
|
|
181
184
|
uncountable/integration/secret_retrieval/__init__.py
|
{uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/pkgs/filesystem_utils/__init__.py
RENAMED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# CLOSED MODULE
|
|
2
|
+
|
|
1
3
|
from ._blob_session import BlobSession as BlobSession
|
|
2
4
|
from ._file_share_session import FileShareSession as FileShareSession
|
|
3
5
|
from ._gdrive_session import (
|
|
@@ -32,3 +34,32 @@ from .file_type_utils import (
|
|
|
32
34
|
RemoteObjectReference as RemoteObjectReference,
|
|
33
35
|
)
|
|
34
36
|
from .filesystem_session import FileSystemSession as FileSystemSession
|
|
37
|
+
|
|
38
|
+
__all__ = [
|
|
39
|
+
"BlobSession",
|
|
40
|
+
"FileObjectData",
|
|
41
|
+
"FileShareSession",
|
|
42
|
+
"FileSystemBlobConfig",
|
|
43
|
+
"FileSystemFileReference",
|
|
44
|
+
"FileSystemFileShareConfig",
|
|
45
|
+
"FileSystemObject",
|
|
46
|
+
"FileSystemS3Config",
|
|
47
|
+
"FileSystemSFTPConfig",
|
|
48
|
+
"FileSystemSession",
|
|
49
|
+
"FileTransfer",
|
|
50
|
+
"GDriveSession",
|
|
51
|
+
"IncompatibleFileReference",
|
|
52
|
+
"LocalSession",
|
|
53
|
+
"RemoteObjectReference",
|
|
54
|
+
"S3Session",
|
|
55
|
+
"SFTPConnection",
|
|
56
|
+
"SFTPCredentialError",
|
|
57
|
+
"SFTPSession",
|
|
58
|
+
"delete_gdrive_file",
|
|
59
|
+
"download_gdrive_file",
|
|
60
|
+
"list_gdrive_files",
|
|
61
|
+
"list_sftp_files",
|
|
62
|
+
"move_gdrive_file",
|
|
63
|
+
"move_sftp_files",
|
|
64
|
+
"upload_file_gdrive",
|
|
65
|
+
]
|
|
@@ -201,7 +201,7 @@ DownloadedFiles = list[DownloadedFile]
|
|
|
201
201
|
|
|
202
202
|
|
|
203
203
|
class Client(ClientMethods):
|
|
204
|
-
_parser_map: dict[type, CachedParser] = {}
|
|
204
|
+
_parser_map: typing.ClassVar[dict[type, CachedParser]] = {}
|
|
205
205
|
_auth_details: AuthDetailsAll
|
|
206
206
|
_base_url: str
|
|
207
207
|
_file_uploader: FileUploader
|
|
@@ -298,6 +298,10 @@ class Client(ClientMethods):
|
|
|
298
298
|
else None
|
|
299
299
|
)
|
|
300
300
|
response = self._send_request(request, timeout=timeout)
|
|
301
|
+
if self._cfg.logger is not None:
|
|
302
|
+
self._cfg.logger.set_span_attribute(
|
|
303
|
+
"http.status_code", response.status_code
|
|
304
|
+
)
|
|
301
305
|
response_data = self._get_response_json(response, request_id=request_id)
|
|
302
306
|
cached_parser = self._get_cached_parser(return_type)
|
|
303
307
|
try:
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import os
|
|
2
|
+
from enum import StrEnum
|
|
3
|
+
|
|
4
|
+
from opentelemetry.trace import get_current_span
|
|
5
|
+
from sqlalchemy import create_engine
|
|
6
|
+
from sqlalchemy.engine.base import Engine
|
|
7
|
+
|
|
8
|
+
from uncountable.integration.telemetry import Logger
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class IntegrationDBService(StrEnum):
|
|
12
|
+
CRON = "cron"
|
|
13
|
+
RUNNER = "runner"
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
_DB_URI_ENV_VARS: dict[IntegrationDBService, str] = {
|
|
17
|
+
IntegrationDBService.CRON: "UNC_CRON_DB_URI",
|
|
18
|
+
IntegrationDBService.RUNNER: "UNC_RUNNER_DB_URI",
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
_DEPRECATED_DB_URI_ENV_VARS: dict[IntegrationDBService, str] = {
|
|
22
|
+
IntegrationDBService.CRON: "UNC_CRON_SQLITE_URI",
|
|
23
|
+
IntegrationDBService.RUNNER: "UNC_RUNNER_SQLITE_URI",
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def _resolve_db_uri(service: IntegrationDBService) -> str:
|
|
28
|
+
logger = Logger(get_current_span())
|
|
29
|
+
env_var = _DB_URI_ENV_VARS[service]
|
|
30
|
+
uri = os.environ.get(env_var)
|
|
31
|
+
if uri is not None:
|
|
32
|
+
return uri
|
|
33
|
+
|
|
34
|
+
deprecated_env_var = _DEPRECATED_DB_URI_ENV_VARS[service]
|
|
35
|
+
deprecated_uri = os.environ.get(deprecated_env_var)
|
|
36
|
+
if deprecated_uri is not None:
|
|
37
|
+
logger.log_warning(
|
|
38
|
+
f"{deprecated_env_var} is deprecated and will be removed; set {env_var} instead.",
|
|
39
|
+
)
|
|
40
|
+
return deprecated_uri
|
|
41
|
+
|
|
42
|
+
raise KeyError(
|
|
43
|
+
f"no database URI configured for the {service} service: set {env_var}"
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def create_db_engine(service: IntegrationDBService) -> Engine:
|
|
48
|
+
return create_engine(_resolve_db_uri(service))
|
|
@@ -41,7 +41,7 @@ from uncountable.integration.queue_runner.command_server.types import (
|
|
|
41
41
|
CommandVaccuumQueuedJobs,
|
|
42
42
|
CommandVaccuumQueuedJobsResponse,
|
|
43
43
|
)
|
|
44
|
-
from uncountable.integration.queue_runner.datastore import
|
|
44
|
+
from uncountable.integration.queue_runner.datastore import Datastore
|
|
45
45
|
from uncountable.types import queued_job_t
|
|
46
46
|
|
|
47
47
|
from .constants import ListQueuedJobsConstants
|
|
@@ -53,7 +53,7 @@ from .protocol.command_server_pb2_grpc import (
|
|
|
53
53
|
queued_job_payload_parser = CachedParser(queued_job_t.QueuedJobPayload)
|
|
54
54
|
|
|
55
55
|
|
|
56
|
-
async def serve(command_queue: CommandQueue, datastore:
|
|
56
|
+
async def serve(command_queue: CommandQueue, datastore: Datastore) -> None:
|
|
57
57
|
server = grpc_aio.server()
|
|
58
58
|
|
|
59
59
|
class CommandServerHandler(CommandServerServicer):
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
from .datastore_postgres import DatastorePostgres
|
|
2
|
+
from .datastore_sqlite import DatastoreSqlite
|
|
3
|
+
from .factory import create_datastore
|
|
4
|
+
from .interface import Datastore
|
|
5
|
+
|
|
6
|
+
__all__: list[str] = [
|
|
7
|
+
"Datastore",
|
|
8
|
+
"DatastorePostgres",
|
|
9
|
+
"DatastoreSqlite",
|
|
10
|
+
"create_datastore",
|
|
11
|
+
]
|
uncountablepythonsdk-0.0.179/uncountable/integration/queue_runner/datastore/datastore_postgres.py
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
from sqlalchemy.engine import Engine
|
|
2
|
+
|
|
3
|
+
from uncountable.integration.queue_runner.datastore.datastore_sql_base import (
|
|
4
|
+
DatastoreSqlBase,
|
|
5
|
+
)
|
|
6
|
+
from uncountable.integration.queue_runner.datastore.model import Base
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class DatastorePostgres(DatastoreSqlBase):
|
|
10
|
+
@classmethod
|
|
11
|
+
def setup(cls, engine: Engine) -> None:
|
|
12
|
+
Base.metadata.create_all(engine)
|
|
@@ -2,14 +2,13 @@ import datetime
|
|
|
2
2
|
import uuid
|
|
3
3
|
from datetime import UTC
|
|
4
4
|
|
|
5
|
-
from sqlalchemy import delete, insert, or_, select,
|
|
6
|
-
from sqlalchemy.engine import Engine
|
|
5
|
+
from sqlalchemy import delete, insert, or_, select, update
|
|
7
6
|
|
|
8
7
|
from pkgs.argument_parser import CachedParser
|
|
9
8
|
from pkgs.serialization_util import serialize_for_storage
|
|
10
9
|
from uncountable.integration.db.session import DBSessionMaker
|
|
11
10
|
from uncountable.integration.queue_runner.datastore.interface import Datastore
|
|
12
|
-
from uncountable.integration.queue_runner.datastore.model import
|
|
11
|
+
from uncountable.integration.queue_runner.datastore.model import QueuedJob
|
|
13
12
|
from uncountable.types import queued_job_t
|
|
14
13
|
|
|
15
14
|
queued_job_payload_parser = CachedParser(queued_job_t.QueuedJobPayload)
|
|
@@ -17,36 +16,11 @@ queued_job_payload_parser = CachedParser(queued_job_t.QueuedJobPayload)
|
|
|
17
16
|
MAX_QUEUE_WINDOW_DAYS = 30
|
|
18
17
|
|
|
19
18
|
|
|
20
|
-
class
|
|
19
|
+
class DatastoreSqlBase(Datastore):
|
|
21
20
|
def __init__(self, session_maker: DBSessionMaker) -> None:
|
|
22
21
|
self.session_maker = session_maker
|
|
23
22
|
super().__init__()
|
|
24
23
|
|
|
25
|
-
@classmethod
|
|
26
|
-
def setup(cls, engine: Engine) -> None:
|
|
27
|
-
Base.metadata.create_all(engine)
|
|
28
|
-
with engine.connect() as connection:
|
|
29
|
-
if not bool(
|
|
30
|
-
connection.execute(
|
|
31
|
-
text(
|
|
32
|
-
"select exists (select 1 from pragma_table_info('queued_jobs') where name='status');"
|
|
33
|
-
)
|
|
34
|
-
).scalar()
|
|
35
|
-
):
|
|
36
|
-
connection.execute(
|
|
37
|
-
text("alter table queued_jobs add column status VARCHAR")
|
|
38
|
-
)
|
|
39
|
-
connection.execute(
|
|
40
|
-
text(
|
|
41
|
-
"create index if not exists ix_queued_jobs_status on queued_jobs (status)"
|
|
42
|
-
)
|
|
43
|
-
)
|
|
44
|
-
connection.execute(
|
|
45
|
-
text(
|
|
46
|
-
"create index if not exists ix_queued_jobs_submitted_at on queued_jobs (submitted_at)"
|
|
47
|
-
)
|
|
48
|
-
)
|
|
49
|
-
|
|
50
24
|
def add_job_to_queue(
|
|
51
25
|
self, job_payload: queued_job_t.QueuedJobPayload, job_ref_name: str
|
|
52
26
|
) -> queued_job_t.QueuedJob:
|
uncountablepythonsdk-0.0.179/uncountable/integration/queue_runner/datastore/datastore_sqlite.py
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
from sqlalchemy import text
|
|
2
|
+
from sqlalchemy.engine import Engine
|
|
3
|
+
|
|
4
|
+
from uncountable.integration.queue_runner.datastore.datastore_sql_base import (
|
|
5
|
+
DatastoreSqlBase,
|
|
6
|
+
)
|
|
7
|
+
from uncountable.integration.queue_runner.datastore.model import Base
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class DatastoreSqlite(DatastoreSqlBase):
|
|
11
|
+
@classmethod
|
|
12
|
+
def setup(cls, engine: Engine) -> None:
|
|
13
|
+
Base.metadata.create_all(engine)
|
|
14
|
+
with engine.connect() as connection:
|
|
15
|
+
if not bool(
|
|
16
|
+
connection.execute(
|
|
17
|
+
text(
|
|
18
|
+
"select exists (select 1 from pragma_table_info('queued_jobs') where name='status');"
|
|
19
|
+
)
|
|
20
|
+
).scalar()
|
|
21
|
+
):
|
|
22
|
+
connection.execute(
|
|
23
|
+
text("alter table queued_jobs add column status VARCHAR")
|
|
24
|
+
)
|
|
25
|
+
connection.execute(
|
|
26
|
+
text(
|
|
27
|
+
"create index if not exists ix_queued_jobs_status on queued_jobs (status)"
|
|
28
|
+
)
|
|
29
|
+
)
|
|
30
|
+
connection.execute(
|
|
31
|
+
text(
|
|
32
|
+
"create index if not exists ix_queued_jobs_submitted_at on queued_jobs (submitted_at)"
|
|
33
|
+
)
|
|
34
|
+
)
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
from sqlalchemy.engine import Engine
|
|
2
|
+
|
|
3
|
+
from uncountable.integration.db.session import get_session_maker
|
|
4
|
+
from uncountable.integration.queue_runner.datastore.datastore_postgres import (
|
|
5
|
+
DatastorePostgres,
|
|
6
|
+
)
|
|
7
|
+
from uncountable.integration.queue_runner.datastore.datastore_sqlite import (
|
|
8
|
+
DatastoreSqlite,
|
|
9
|
+
)
|
|
10
|
+
from uncountable.integration.queue_runner.datastore.interface import Datastore
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def create_datastore(engine: Engine) -> Datastore:
|
|
14
|
+
session_maker = get_session_maker(engine)
|
|
15
|
+
dialect_name = engine.dialect.name
|
|
16
|
+
match dialect_name:
|
|
17
|
+
case "sqlite":
|
|
18
|
+
datastore: Datastore = DatastoreSqlite(session_maker)
|
|
19
|
+
case "postgresql":
|
|
20
|
+
datastore = DatastorePostgres(session_maker)
|
|
21
|
+
case _:
|
|
22
|
+
raise ValueError(f"unsupported database dialect: {dialect_name!r}")
|
|
23
|
+
datastore.setup(engine)
|
|
24
|
+
return datastore
|
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
from abc import ABC, abstractmethod
|
|
2
2
|
from datetime import datetime
|
|
3
3
|
|
|
4
|
+
from sqlalchemy.engine import Engine
|
|
5
|
+
|
|
4
6
|
from uncountable.types import queued_job_t
|
|
5
7
|
|
|
6
8
|
|
|
7
9
|
class Datastore(ABC):
|
|
10
|
+
@classmethod
|
|
11
|
+
@abstractmethod
|
|
12
|
+
def setup(cls, engine: Engine) -> None: ...
|
|
13
|
+
|
|
8
14
|
@abstractmethod
|
|
9
15
|
def add_job_to_queue(
|
|
10
16
|
self, job_payload: queued_job_t.QueuedJobPayload, job_ref_name: str
|
|
@@ -13,6 +19,14 @@ class Datastore(ABC):
|
|
|
13
19
|
@abstractmethod
|
|
14
20
|
def remove_job_from_queue(self, queued_job_uuid: str) -> None: ...
|
|
15
21
|
|
|
22
|
+
@abstractmethod
|
|
23
|
+
def update_job_status(
|
|
24
|
+
self, queued_job_uuid: str, status: queued_job_t.JobStatus
|
|
25
|
+
) -> None: ...
|
|
26
|
+
|
|
27
|
+
@abstractmethod
|
|
28
|
+
def retry_job(self, queued_job_uuid: str) -> queued_job_t.QueuedJob | None: ...
|
|
29
|
+
|
|
16
30
|
@abstractmethod
|
|
17
31
|
def increment_num_attempts(self, queued_job_uuid: str) -> int: ...
|
|
18
32
|
|
|
@@ -38,3 +52,6 @@ class Datastore(ABC):
|
|
|
38
52
|
|
|
39
53
|
@abstractmethod
|
|
40
54
|
def get_queued_job(self, *, uuid: str) -> queued_job_t.QueuedJob | None: ...
|
|
55
|
+
|
|
56
|
+
@abstractmethod
|
|
57
|
+
def vaccuum_queued_jobs(self) -> list[str]: ...
|
|
@@ -21,7 +21,7 @@ class QueuedJob(Base):
|
|
|
21
21
|
payload = Column(JSON, nullable=False)
|
|
22
22
|
num_attempts = Column(BigInteger, nullable=False, default=0, server_default="0")
|
|
23
23
|
status = Column(
|
|
24
|
-
Enum(queued_job_t.JobStatus, length=None),
|
|
24
|
+
Enum(queued_job_t.JobStatus, length=None, native_enum=False),
|
|
25
25
|
default=queued_job_t.JobStatus.QUEUED,
|
|
26
26
|
nullable=True,
|
|
27
27
|
index=True,
|
|
@@ -23,8 +23,7 @@ from uncountable.integration.queue_runner.command_server.types import (
|
|
|
23
23
|
CommandCancelJobStatus,
|
|
24
24
|
CommandVaccuumQueuedJobs,
|
|
25
25
|
)
|
|
26
|
-
from uncountable.integration.queue_runner.datastore import
|
|
27
|
-
from uncountable.integration.queue_runner.datastore.interface import Datastore
|
|
26
|
+
from uncountable.integration.queue_runner.datastore import Datastore
|
|
28
27
|
from uncountable.integration.queue_runner.worker import Worker
|
|
29
28
|
from uncountable.integration.scan_profiles import load_profiles
|
|
30
29
|
from uncountable.integration.telemetry import Logger
|
|
@@ -90,9 +89,7 @@ def _start_workers(
|
|
|
90
89
|
return job_worker_lookup
|
|
91
90
|
|
|
92
91
|
|
|
93
|
-
async def start_scheduler(
|
|
94
|
-
command_queue: CommandQueue, datastore: DatastoreSqlite
|
|
95
|
-
) -> None:
|
|
92
|
+
async def start_scheduler(command_queue: CommandQueue, datastore: Datastore) -> None:
|
|
96
93
|
logger = Logger(get_current_span())
|
|
97
94
|
result_queue: ResultQueue = asyncio.Queue()
|
|
98
95
|
|
|
@@ -1,20 +1,16 @@
|
|
|
1
1
|
import asyncio
|
|
2
2
|
|
|
3
3
|
from uncountable.integration.db.connect import IntegrationDBService, create_db_engine
|
|
4
|
-
from uncountable.integration.db.session import get_session_maker
|
|
5
4
|
from uncountable.integration.queue_runner.command_server import serve
|
|
6
5
|
from uncountable.integration.queue_runner.command_server.types import CommandQueue
|
|
7
|
-
from uncountable.integration.queue_runner.datastore import
|
|
6
|
+
from uncountable.integration.queue_runner.datastore import create_datastore
|
|
8
7
|
from uncountable.integration.queue_runner.job_scheduler import start_scheduler
|
|
9
8
|
|
|
10
9
|
|
|
11
10
|
async def queue_runner_loop() -> None:
|
|
12
11
|
command_queue: CommandQueue = asyncio.Queue()
|
|
13
12
|
engine = create_db_engine(IntegrationDBService.RUNNER)
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
datastore = DatastoreSqlite(session_maker)
|
|
17
|
-
datastore.setup(engine)
|
|
13
|
+
datastore = create_datastore(engine)
|
|
18
14
|
|
|
19
15
|
command_server = asyncio.create_task(serve(command_queue, datastore))
|
|
20
16
|
|
|
@@ -21,7 +21,7 @@ from uncountable.core.async_batch import AsyncBatchProcessor
|
|
|
21
21
|
from uncountable.integration.construct_client import construct_uncountable_client
|
|
22
22
|
from uncountable.integration.executors.executors import execute_job
|
|
23
23
|
from uncountable.integration.job import JobArguments
|
|
24
|
-
from uncountable.integration.queue_runner.datastore
|
|
24
|
+
from uncountable.integration.queue_runner.datastore import Datastore
|
|
25
25
|
from uncountable.integration.queue_runner.types import ListenQueue, ResultQueue
|
|
26
26
|
from uncountable.integration.scan_profiles import load_profiles
|
|
27
27
|
from uncountable.integration.telemetry import JobLogger, Logger, get_otel_tracer
|
{uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/integration/telemetry.py
RENAMED
|
@@ -27,6 +27,7 @@ from opentelemetry.sdk.trace.export import (
|
|
|
27
27
|
SimpleSpanProcessor,
|
|
28
28
|
)
|
|
29
29
|
from opentelemetry.trace import Span, Tracer
|
|
30
|
+
from opentelemetry.util.types import AttributeValue
|
|
30
31
|
|
|
31
32
|
from pkgs.serialization_util import dict_fields
|
|
32
33
|
from uncountable.core.environment import (
|
|
@@ -188,6 +189,9 @@ class Logger:
|
|
|
188
189
|
)
|
|
189
190
|
otel_logger.emit(log_record)
|
|
190
191
|
|
|
192
|
+
def set_span_attribute(self, key: str, value: AttributeValue) -> None:
|
|
193
|
+
self._current_span_with_fallback().set_attribute(key, value)
|
|
194
|
+
|
|
191
195
|
def bind(self, *, attributes: Attributes) -> None:
|
|
192
196
|
# Bound attributes flow into log records and the X-UNC-METADATA request
|
|
193
197
|
# header on outbound API calls. The header is capped at 2048 bytes; if
|
|
@@ -22,7 +22,7 @@ __all__: list[str] = [
|
|
|
22
22
|
|
|
23
23
|
ENDPOINT_METHOD = "POST"
|
|
24
24
|
ENDPOINT_PATH = "api/external/integrations/publish_realtime_data"
|
|
25
|
-
ENDPOINT_DESCRIPTION = "Publish a numeric reading for a realtime instrument integration. Currently only supports equipment entities. Resolves the target equipment via identifier key. Returns the integration session details and status.
|
|
25
|
+
ENDPOINT_DESCRIPTION = "Publish a numeric reading for a realtime instrument integration. Currently only supports equipment entities. Resolves the target equipment via identifier key. Returns the integration session details and status. Contact Uncountable for realtime integration guidance."
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
# DO NOT MODIFY -- This file is generated by type_spec
|
{uncountablepythonsdk-0.0.177 → uncountablepythonsdk-0.0.179}/uncountable/types/client_base.py
RENAMED
|
@@ -1713,7 +1713,7 @@ class ClientMethods(ABC):
|
|
|
1713
1713
|
data_package: integrations_t.DataPackage,
|
|
1714
1714
|
_request_options: client_config_t.RequestOptions | None = None,
|
|
1715
1715
|
) -> publish_realtime_data_t.Data:
|
|
1716
|
-
"""Publish a numeric reading for a realtime instrument integration. Currently only supports equipment entities. Resolves the target equipment via identifier key. Returns the integration session details and status.
|
|
1716
|
+
"""Publish a numeric reading for a realtime instrument integration. Currently only supports equipment entities. Resolves the target equipment via identifier key. Returns the integration session details and status. Contact Uncountable for realtime integration guidance.
|
|
1717
1717
|
|
|
1718
1718
|
"""
|
|
1719
1719
|
args = publish_realtime_data_t.Arguments(
|
|
@@ -43,6 +43,7 @@ __all__: list[str] = [
|
|
|
43
43
|
"comment": "Comment",
|
|
44
44
|
"comment_thread": "Comment Thread",
|
|
45
45
|
"condition_match": "Condition Match",
|
|
46
|
+
"condition_nickname": "Condition Nickname",
|
|
46
47
|
"condition_parameter": "Condition Parameter",
|
|
47
48
|
"condition_parameter_mat_family": "Condition Parameter Material Family",
|
|
48
49
|
"condition_parameter_matches": "Condition Parameter Matches",
|
|
@@ -52,6 +53,7 @@ __all__: list[str] = [
|
|
|
52
53
|
"constraint": "Constraint",
|
|
53
54
|
"constraint_set": "Constraint Set",
|
|
54
55
|
"control_type": "Control Type",
|
|
56
|
+
"credit_balance": "Credit Balance",
|
|
55
57
|
"curve_settings": "Curve Settings",
|
|
56
58
|
"custom_entity": "Custom Entity",
|
|
57
59
|
"default_permissions_new_project": "Default Permissions New Project",
|
|
@@ -83,6 +85,7 @@ __all__: list[str] = [
|
|
|
83
85
|
"external_ai_connector": "External AI Connector",
|
|
84
86
|
"external_ai_model": "External AI Model",
|
|
85
87
|
"external_ai_session": "External AI Session",
|
|
88
|
+
"external_ai_usage": "External AI Usage",
|
|
86
89
|
"experiment_group": "Experiment Group",
|
|
87
90
|
"experiment_group_member": "Experiment Group Member",
|
|
88
91
|
"experiment_group_type": "Experiment Group Type",
|
|
@@ -116,6 +119,7 @@ __all__: list[str] = [
|
|
|
116
119
|
"inventory_history": "Inventory History",
|
|
117
120
|
"inventory_reconciliation_action": "Inventory Reconciliation Action",
|
|
118
121
|
"inventory_reconciliation_session": "Inventory Reconciliation Session",
|
|
122
|
+
"it_admin_permission": "IT Admin Permission",
|
|
119
123
|
"lab_location": "Lab Location",
|
|
120
124
|
"lab_request": "Lab Request",
|
|
121
125
|
"license": "License",
|
|
@@ -128,6 +132,7 @@ __all__: list[str] = [
|
|
|
128
132
|
"measurement_timeline_type": "Measurement Timeline Type",
|
|
129
133
|
"milestone": "Milestone",
|
|
130
134
|
"ml_job": "Batch Processing Job",
|
|
135
|
+
"monitor": "Monitor",
|
|
131
136
|
"monitor_dataset": "Monitor Dataset",
|
|
132
137
|
"naming_scheme": "Naming Scheme",
|
|
133
138
|
"naming_counter": "Naming Counter",
|
|
@@ -228,6 +233,7 @@ __all__: list[str] = [
|
|
|
228
233
|
"timesheet_entry": "Timesheet Entry",
|
|
229
234
|
"training_module": "Training Module",
|
|
230
235
|
"training_module_answer": "Training Module Answer",
|
|
236
|
+
"training_module_attempt": "Training Module Attempt",
|
|
231
237
|
"training_module_block": "Training Module Block",
|
|
232
238
|
"training_module_page": "Training Module Page",
|
|
233
239
|
"training_module_question": "Training Module Question",
|
|
@@ -295,6 +301,7 @@ class EntityType(StrEnum):
|
|
|
295
301
|
COMMENT = "comment"
|
|
296
302
|
COMMENT_THREAD = "comment_thread"
|
|
297
303
|
CONDITION_MATCH = "condition_match"
|
|
304
|
+
CONDITION_NICKNAME = "condition_nickname"
|
|
298
305
|
CONDITION_PARAMETER = "condition_parameter"
|
|
299
306
|
CONDITION_PARAMETER_MAT_FAMILY = "condition_parameter_mat_family"
|
|
300
307
|
CONDITION_PARAMETER_MATCHES = "condition_parameter_matches"
|
|
@@ -304,6 +311,7 @@ class EntityType(StrEnum):
|
|
|
304
311
|
CONSTRAINT = "constraint"
|
|
305
312
|
CONSTRAINT_SET = "constraint_set"
|
|
306
313
|
CONTROL_TYPE = "control_type"
|
|
314
|
+
CREDIT_BALANCE = "credit_balance"
|
|
307
315
|
CURVE_SETTINGS = "curve_settings"
|
|
308
316
|
CUSTOM_ENTITY = "custom_entity"
|
|
309
317
|
DEFAULT_PERMISSIONS_NEW_PROJECT = "default_permissions_new_project"
|
|
@@ -335,6 +343,7 @@ class EntityType(StrEnum):
|
|
|
335
343
|
EXTERNAL_AI_CONNECTOR = "external_ai_connector"
|
|
336
344
|
EXTERNAL_AI_MODEL = "external_ai_model"
|
|
337
345
|
EXTERNAL_AI_SESSION = "external_ai_session"
|
|
346
|
+
EXTERNAL_AI_USAGE = "external_ai_usage"
|
|
338
347
|
EXPERIMENT_GROUP = "experiment_group"
|
|
339
348
|
EXPERIMENT_GROUP_MEMBER = "experiment_group_member"
|
|
340
349
|
EXPERIMENT_GROUP_TYPE = "experiment_group_type"
|
|
@@ -368,6 +377,7 @@ class EntityType(StrEnum):
|
|
|
368
377
|
INVENTORY_HISTORY = "inventory_history"
|
|
369
378
|
INVENTORY_RECONCILIATION_ACTION = "inventory_reconciliation_action"
|
|
370
379
|
INVENTORY_RECONCILIATION_SESSION = "inventory_reconciliation_session"
|
|
380
|
+
IT_ADMIN_PERMISSION = "it_admin_permission"
|
|
371
381
|
LAB_LOCATION = "lab_location"
|
|
372
382
|
LAB_REQUEST = "lab_request"
|
|
373
383
|
LICENSE = "license"
|
|
@@ -380,6 +390,7 @@ class EntityType(StrEnum):
|
|
|
380
390
|
MEASUREMENT_TIMELINE_TYPE = "measurement_timeline_type"
|
|
381
391
|
MILESTONE = "milestone"
|
|
382
392
|
ML_JOB = "ml_job"
|
|
393
|
+
MONITOR = "monitor"
|
|
383
394
|
MONITOR_DATASET = "monitor_dataset"
|
|
384
395
|
NAMING_SCHEME = "naming_scheme"
|
|
385
396
|
NAMING_COUNTER = "naming_counter"
|
|
@@ -480,6 +491,7 @@ class EntityType(StrEnum):
|
|
|
480
491
|
TIMESHEET_ENTRY = "timesheet_entry"
|
|
481
492
|
TRAINING_MODULE = "training_module"
|
|
482
493
|
TRAINING_MODULE_ANSWER = "training_module_answer"
|
|
494
|
+
TRAINING_MODULE_ATTEMPT = "training_module_attempt"
|
|
483
495
|
TRAINING_MODULE_BLOCK = "training_module_block"
|
|
484
496
|
TRAINING_MODULE_PAGE = "training_module_page"
|
|
485
497
|
TRAINING_MODULE_QUESTION = "training_module_question"
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import os
|
|
2
|
-
from enum import StrEnum
|
|
3
|
-
|
|
4
|
-
from sqlalchemy import create_engine
|
|
5
|
-
from sqlalchemy.engine.base import Engine
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
class IntegrationDBService(StrEnum):
|
|
9
|
-
CRON = "cron"
|
|
10
|
-
RUNNER = "runner"
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
def create_db_engine(service: IntegrationDBService) -> Engine:
|
|
14
|
-
match service:
|
|
15
|
-
case IntegrationDBService.CRON:
|
|
16
|
-
return create_engine(os.environ["UNC_CRON_SQLITE_URI"])
|
|
17
|
-
case IntegrationDBService.RUNNER:
|
|
18
|
-
return create_engine(os.environ["UNC_RUNNER_SQLITE_URI"])
|
|
File without changes
|
|
File without changes
|