UncountablePythonSDK 0.0.24__py3-none-any.whl → 0.0.131__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of UncountablePythonSDK might be problematic. Click here for more details.
- docs/conf.py +60 -8
- docs/index.md +107 -4
- docs/integration_examples/create_ingredient.md +43 -0
- docs/integration_examples/create_output.md +56 -0
- docs/integration_examples/index.md +6 -0
- docs/justfile +2 -2
- docs/requirements.txt +7 -5
- examples/async_batch.py +5 -6
- examples/basic_auth.py +7 -0
- examples/create_entity.py +4 -6
- examples/create_ingredient_sdk.py +34 -0
- examples/download_files.py +26 -0
- examples/edit_recipe_inputs.py +50 -0
- examples/integration-server/jobs/materials_auto/concurrent_cron.py +11 -0
- examples/integration-server/jobs/materials_auto/example_cron.py +21 -0
- examples/integration-server/jobs/materials_auto/example_http.py +47 -0
- examples/integration-server/jobs/materials_auto/example_instrument.py +100 -0
- examples/integration-server/jobs/materials_auto/example_parse.py +140 -0
- examples/integration-server/jobs/materials_auto/example_predictions.py +61 -0
- examples/integration-server/jobs/materials_auto/example_runsheet_wh.py +39 -0
- examples/integration-server/jobs/materials_auto/example_wh.py +23 -0
- examples/integration-server/jobs/materials_auto/profile.yaml +104 -0
- examples/integration-server/pyproject.toml +224 -0
- examples/invoke_uploader.py +26 -0
- examples/oauth.py +7 -0
- examples/set_recipe_metadata_file.py +40 -0
- examples/set_recipe_output_file_sdk.py +26 -0
- examples/upload_files.py +2 -3
- pkgs/argument_parser/__init__.py +9 -0
- pkgs/argument_parser/_is_namedtuple.py +3 -0
- pkgs/argument_parser/argument_parser.py +295 -74
- pkgs/argument_parser/case_convert.py +4 -3
- pkgs/filesystem_utils/__init__.py +20 -0
- pkgs/filesystem_utils/_blob_session.py +144 -0
- pkgs/filesystem_utils/_gdrive_session.py +309 -0
- pkgs/filesystem_utils/_local_session.py +69 -0
- pkgs/filesystem_utils/_s3_session.py +118 -0
- pkgs/filesystem_utils/_sftp_session.py +151 -0
- pkgs/filesystem_utils/file_type_utils.py +91 -0
- pkgs/filesystem_utils/filesystem_session.py +39 -0
- pkgs/py.typed +0 -0
- pkgs/serialization/__init__.py +8 -1
- pkgs/serialization/annotation.py +64 -0
- pkgs/serialization/missing_sentry.py +1 -1
- pkgs/serialization/opaque_key.py +1 -1
- pkgs/serialization/serial_alias.py +47 -0
- pkgs/serialization/serial_class.py +69 -54
- pkgs/serialization/serial_generic.py +16 -0
- pkgs/serialization/serial_union.py +84 -0
- pkgs/serialization/yaml.py +57 -0
- pkgs/serialization_util/__init__.py +7 -7
- pkgs/serialization_util/convert_to_snakecase.py +27 -0
- pkgs/serialization_util/dataclasses.py +14 -0
- pkgs/serialization_util/serialization_helpers.py +117 -71
- pkgs/type_spec/actions_registry/__main__.py +0 -4
- pkgs/type_spec/actions_registry/emit_typescript.py +5 -5
- pkgs/type_spec/builder.py +438 -109
- pkgs/type_spec/builder_types.py +9 -0
- pkgs/type_spec/config.py +52 -24
- pkgs/type_spec/cross_output_links.py +99 -0
- pkgs/type_spec/emit_io_ts.py +1 -1
- pkgs/type_spec/emit_open_api.py +160 -41
- pkgs/type_spec/emit_open_api_util.py +13 -7
- pkgs/type_spec/emit_python.py +450 -136
- pkgs/type_spec/emit_typescript.py +117 -250
- pkgs/type_spec/emit_typescript_util.py +293 -4
- pkgs/type_spec/load_types.py +20 -5
- pkgs/type_spec/non_discriminated_union_exceptions.py +14 -0
- pkgs/type_spec/open_api_util.py +29 -4
- pkgs/type_spec/parts/base.py.prepart +13 -10
- pkgs/type_spec/parts/base.ts.prepart +4 -0
- pkgs/type_spec/type_info/__main__.py +3 -1
- pkgs/type_spec/type_info/emit_type_info.py +161 -32
- pkgs/type_spec/ui_entry_actions/__init__.py +4 -0
- pkgs/type_spec/ui_entry_actions/generate_ui_entry_actions.py +308 -0
- pkgs/type_spec/util.py +4 -4
- pkgs/type_spec/value_spec/__main__.py +27 -10
- pkgs/type_spec/value_spec/convert_type.py +21 -1
- pkgs/type_spec/value_spec/emit_python.py +25 -7
- pkgs/type_spec/value_spec/types.py +1 -1
- uncountable/__init__.py +1 -2
- uncountable/core/__init__.py +11 -3
- uncountable/core/async_batch.py +16 -1
- uncountable/core/client.py +247 -52
- uncountable/core/environment.py +41 -0
- uncountable/core/file_upload.py +67 -22
- uncountable/core/types.py +8 -13
- uncountable/integration/cli.py +142 -0
- uncountable/integration/construct_client.py +43 -27
- uncountable/integration/cron.py +12 -11
- uncountable/integration/db/connect.py +12 -2
- uncountable/integration/db/session.py +25 -0
- uncountable/integration/entrypoint.py +4 -34
- uncountable/integration/executors/executors.py +147 -0
- uncountable/integration/executors/generic_upload_executor.py +336 -0
- uncountable/integration/executors/script_executor.py +15 -9
- uncountable/integration/http_server/__init__.py +5 -0
- uncountable/integration/http_server/types.py +69 -0
- uncountable/integration/job.py +246 -19
- uncountable/integration/queue_runner/__init__.py +0 -0
- uncountable/integration/queue_runner/command_server/__init__.py +28 -0
- uncountable/integration/queue_runner/command_server/command_client.py +133 -0
- uncountable/integration/queue_runner/command_server/command_server.py +142 -0
- uncountable/integration/queue_runner/command_server/constants.py +4 -0
- uncountable/integration/queue_runner/command_server/protocol/__init__.py +0 -0
- uncountable/integration/queue_runner/command_server/protocol/command_server.proto +58 -0
- uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.py +57 -0
- uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.pyi +114 -0
- uncountable/integration/queue_runner/command_server/protocol/command_server_pb2_grpc.py +264 -0
- uncountable/integration/queue_runner/command_server/types.py +75 -0
- uncountable/integration/queue_runner/datastore/__init__.py +3 -0
- uncountable/integration/queue_runner/datastore/datastore_sqlite.py +250 -0
- uncountable/integration/queue_runner/datastore/interface.py +29 -0
- uncountable/integration/queue_runner/datastore/model.py +24 -0
- uncountable/integration/queue_runner/job_scheduler.py +200 -0
- uncountable/integration/queue_runner/queue_runner.py +34 -0
- uncountable/integration/queue_runner/types.py +7 -0
- uncountable/integration/queue_runner/worker.py +116 -0
- uncountable/integration/scan_profiles.py +67 -0
- uncountable/integration/scheduler.py +199 -0
- uncountable/integration/secret_retrieval/__init__.py +3 -0
- uncountable/integration/secret_retrieval/retrieve_secret.py +93 -0
- uncountable/integration/server.py +103 -54
- uncountable/integration/telemetry.py +251 -0
- uncountable/integration/webhook_server/entrypoint.py +97 -0
- uncountable/types/__init__.py +149 -30
- uncountable/types/api/batch/execute_batch.py +16 -9
- uncountable/types/api/batch/execute_batch_load_async.py +13 -7
- uncountable/types/api/chemical/convert_chemical_formats.py +20 -8
- uncountable/types/api/condition_parameters/__init__.py +1 -0
- uncountable/types/api/condition_parameters/upsert_condition_match.py +72 -0
- uncountable/types/api/entity/create_entities.py +24 -12
- uncountable/types/api/entity/create_entity.py +22 -13
- uncountable/types/api/entity/create_or_update_entity.py +48 -0
- uncountable/types/api/entity/export_entities.py +59 -0
- uncountable/types/api/entity/get_entities_data.py +18 -9
- uncountable/types/api/entity/grant_entity_permissions.py +48 -0
- uncountable/types/api/entity/list_aggregate.py +79 -0
- uncountable/types/api/entity/list_entities.py +53 -14
- uncountable/types/api/entity/lock_entity.py +45 -0
- uncountable/types/api/entity/lookup_entity.py +116 -0
- uncountable/types/api/entity/resolve_entity_ids.py +19 -10
- uncountable/types/api/entity/set_entity_field_values.py +44 -0
- uncountable/types/api/entity/set_values.py +15 -8
- uncountable/types/api/entity/transition_entity_phase.py +27 -12
- uncountable/types/api/entity/unlock_entity.py +44 -0
- uncountable/types/api/equipment/__init__.py +1 -0
- uncountable/types/api/equipment/associate_equipment_input.py +43 -0
- uncountable/types/api/field_options/__init__.py +1 -0
- uncountable/types/api/field_options/upsert_field_options.py +55 -0
- uncountable/types/api/files/__init__.py +1 -0
- uncountable/types/api/files/download_file.py +77 -0
- uncountable/types/api/id_source/list_id_source.py +20 -11
- uncountable/types/api/id_source/match_id_source.py +15 -10
- uncountable/types/api/input_groups/get_input_group_names.py +16 -7
- uncountable/types/api/inputs/create_inputs.py +28 -14
- uncountable/types/api/inputs/get_input_data.py +34 -16
- uncountable/types/api/inputs/get_input_names.py +19 -10
- uncountable/types/api/inputs/get_inputs_data.py +29 -11
- uncountable/types/api/inputs/set_input_attribute_values.py +16 -10
- uncountable/types/api/inputs/set_input_category.py +44 -0
- uncountable/types/api/inputs/set_input_subcategories.py +45 -0
- uncountable/types/api/inputs/set_intermediate_type.py +50 -0
- uncountable/types/api/integrations/__init__.py +1 -0
- uncountable/types/api/integrations/publish_realtime_data.py +41 -0
- uncountable/types/api/integrations/push_notification.py +49 -0
- uncountable/types/api/integrations/register_sockets_token.py +41 -0
- uncountable/types/api/listing/__init__.py +1 -0
- uncountable/types/api/listing/fetch_listing.py +58 -0
- uncountable/types/api/material_families/__init__.py +1 -0
- uncountable/types/api/material_families/update_entity_material_families.py +47 -0
- uncountable/types/api/notebooks/__init__.py +1 -0
- uncountable/types/api/notebooks/add_notebook_content.py +119 -0
- uncountable/types/api/outputs/get_output_data.py +32 -17
- uncountable/types/api/outputs/get_output_names.py +18 -9
- uncountable/types/api/outputs/get_output_organization.py +173 -0
- uncountable/types/api/outputs/resolve_output_conditions.py +23 -11
- uncountable/types/api/permissions/set_core_permissions.py +31 -15
- uncountable/types/api/project/get_projects.py +20 -11
- uncountable/types/api/project/get_projects_data.py +23 -14
- uncountable/types/api/recipe_links/create_recipe_link.py +17 -10
- uncountable/types/api/recipe_links/remove_recipe_link.py +45 -0
- uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py +19 -10
- uncountable/types/api/recipes/add_recipe_to_project.py +42 -0
- uncountable/types/api/recipes/add_time_series_data.py +64 -0
- uncountable/types/api/recipes/archive_recipes.py +14 -7
- uncountable/types/api/recipes/associate_recipe_as_input.py +16 -8
- uncountable/types/api/recipes/associate_recipe_as_lot.py +14 -7
- uncountable/types/api/recipes/clear_recipe_outputs.py +42 -0
- uncountable/types/api/recipes/create_mix_order.py +44 -0
- uncountable/types/api/recipes/create_recipe.py +21 -14
- uncountable/types/api/recipes/create_recipes.py +25 -13
- uncountable/types/api/recipes/disassociate_recipe_as_input.py +14 -7
- uncountable/types/api/recipes/edit_recipe_inputs.py +208 -19
- uncountable/types/api/recipes/get_column_calculation_values.py +57 -0
- uncountable/types/api/recipes/get_curve.py +15 -9
- uncountable/types/api/recipes/get_recipe_calculations.py +17 -11
- uncountable/types/api/recipes/get_recipe_links.py +14 -8
- uncountable/types/api/recipes/get_recipe_names.py +16 -7
- uncountable/types/api/recipes/get_recipe_output_metadata.py +16 -10
- uncountable/types/api/recipes/get_recipes_data.py +96 -45
- uncountable/types/api/recipes/lock_recipes.py +64 -0
- uncountable/types/api/recipes/remove_recipe_from_project.py +42 -0
- uncountable/types/api/recipes/set_recipe_inputs.py +19 -13
- uncountable/types/api/recipes/set_recipe_metadata.py +14 -7
- uncountable/types/api/recipes/set_recipe_output_annotations.py +114 -0
- uncountable/types/api/recipes/set_recipe_output_file.py +55 -0
- uncountable/types/api/recipes/set_recipe_outputs.py +40 -15
- uncountable/types/api/recipes/set_recipe_tags.py +30 -13
- uncountable/types/api/recipes/set_recipe_total.py +59 -0
- uncountable/types/api/recipes/unarchive_recipes.py +41 -0
- uncountable/types/api/recipes/unlock_recipes.py +51 -0
- uncountable/types/api/runsheet/__init__.py +1 -0
- uncountable/types/api/runsheet/complete_async_upload.py +41 -0
- uncountable/types/api/triggers/run_trigger.py +15 -8
- uncountable/types/api/uploader/__init__.py +1 -0
- uncountable/types/api/uploader/complete_async_parse.py +46 -0
- uncountable/types/api/uploader/invoke_uploader.py +46 -0
- uncountable/types/api/user/__init__.py +1 -0
- uncountable/types/api/user/get_current_user_info.py +40 -0
- uncountable/types/async_batch.py +8 -52
- uncountable/types/async_batch_processor.py +694 -18
- uncountable/types/async_batch_t.py +108 -0
- uncountable/types/async_jobs.py +8 -0
- uncountable/types/async_jobs_t.py +52 -0
- uncountable/types/auth_retrieval.py +11 -0
- uncountable/types/auth_retrieval_t.py +75 -0
- uncountable/types/base.py +5 -80
- uncountable/types/base_t.py +87 -0
- uncountable/types/calculations.py +3 -19
- uncountable/types/calculations_t.py +26 -0
- uncountable/types/chemical_structure.py +3 -23
- uncountable/types/chemical_structure_t.py +28 -0
- uncountable/types/client_base.py +1170 -88
- uncountable/types/client_config.py +8 -0
- uncountable/types/client_config_t.py +36 -0
- uncountable/types/curves.py +5 -43
- uncountable/types/curves_t.py +50 -0
- uncountable/types/data.py +12 -0
- uncountable/types/data_t.py +103 -0
- uncountable/types/entity.py +8 -270
- uncountable/types/entity_t.py +446 -0
- uncountable/types/experiment_groups.py +3 -19
- uncountable/types/experiment_groups_t.py +26 -0
- uncountable/types/exports.py +8 -0
- uncountable/types/exports_t.py +34 -0
- uncountable/types/field_values.py +25 -61
- uncountable/types/field_values_t.py +302 -0
- uncountable/types/fields.py +3 -20
- uncountable/types/fields_t.py +27 -0
- uncountable/types/generic_upload.py +14 -0
- uncountable/types/generic_upload_t.py +119 -0
- uncountable/types/id_source.py +7 -45
- uncountable/types/id_source_t.py +68 -0
- uncountable/types/identifier.py +6 -50
- uncountable/types/identifier_t.py +62 -0
- uncountable/types/input_attributes.py +3 -25
- uncountable/types/input_attributes_t.py +29 -0
- uncountable/types/inputs.py +6 -57
- uncountable/types/inputs_t.py +82 -0
- uncountable/types/integration_server.py +8 -0
- uncountable/types/integration_server_t.py +46 -0
- uncountable/types/integration_session.py +10 -0
- uncountable/types/integration_session_t.py +60 -0
- uncountable/types/integrations.py +10 -0
- uncountable/types/integrations_t.py +62 -0
- uncountable/types/job_definition.py +28 -0
- uncountable/types/job_definition_t.py +285 -0
- uncountable/types/listing.py +9 -0
- uncountable/types/listing_t.py +51 -0
- uncountable/types/notices.py +8 -0
- uncountable/types/notices_t.py +37 -0
- uncountable/types/notifications.py +11 -0
- uncountable/types/notifications_t.py +74 -0
- uncountable/types/outputs.py +3 -22
- uncountable/types/outputs_t.py +29 -0
- uncountable/types/overrides.py +9 -0
- uncountable/types/overrides_t.py +49 -0
- uncountable/types/permissions.py +3 -42
- uncountable/types/permissions_t.py +45 -0
- uncountable/types/phases.py +3 -19
- uncountable/types/phases_t.py +26 -0
- uncountable/types/post_base.py +3 -26
- uncountable/types/post_base_t.py +29 -0
- uncountable/types/queued_job.py +17 -0
- uncountable/types/queued_job_t.py +140 -0
- uncountable/types/recipe_identifiers.py +7 -58
- uncountable/types/recipe_identifiers_t.py +75 -0
- uncountable/types/recipe_inputs.py +4 -26
- uncountable/types/recipe_inputs_t.py +29 -0
- uncountable/types/recipe_links.py +4 -46
- uncountable/types/recipe_links_t.py +53 -0
- uncountable/types/recipe_metadata.py +5 -48
- uncountable/types/recipe_metadata_t.py +57 -0
- uncountable/types/recipe_output_metadata.py +3 -20
- uncountable/types/recipe_output_metadata_t.py +27 -0
- uncountable/types/recipe_tags.py +3 -19
- uncountable/types/recipe_tags_t.py +26 -0
- uncountable/types/recipe_workflow_steps.py +9 -73
- uncountable/types/recipe_workflow_steps_t.py +95 -0
- uncountable/types/recipes.py +7 -0
- uncountable/types/recipes_t.py +25 -0
- uncountable/types/response.py +3 -21
- uncountable/types/response_t.py +26 -0
- uncountable/types/secret_retrieval.py +11 -0
- uncountable/types/secret_retrieval_t.py +75 -0
- uncountable/types/sockets.py +20 -0
- uncountable/types/sockets_t.py +169 -0
- uncountable/types/structured_filters.py +25 -0
- uncountable/types/structured_filters_t.py +248 -0
- uncountable/types/units.py +3 -19
- uncountable/types/units_t.py +26 -0
- uncountable/types/uploader.py +24 -0
- uncountable/types/uploader_t.py +222 -0
- uncountable/types/users.py +3 -20
- uncountable/types/users_t.py +27 -0
- uncountable/types/webhook_job.py +9 -0
- uncountable/types/webhook_job_t.py +48 -0
- uncountable/types/workflows.py +4 -28
- uncountable/types/workflows_t.py +38 -0
- uncountablepythonsdk-0.0.131.dist-info/METADATA +64 -0
- uncountablepythonsdk-0.0.131.dist-info/RECORD +363 -0
- {UncountablePythonSDK-0.0.24.dist-info → uncountablepythonsdk-0.0.131.dist-info}/WHEEL +1 -1
- {UncountablePythonSDK-0.0.24.dist-info → uncountablepythonsdk-0.0.131.dist-info}/top_level.txt +0 -1
- UncountablePythonSDK-0.0.24.dist-info/METADATA +0 -47
- UncountablePythonSDK-0.0.24.dist-info/RECORD +0 -216
- docs/quickstart.md +0 -19
- examples/recipe-import/importer.py +0 -39
- type_spec/external/api/batch/execute_batch.yaml +0 -56
- type_spec/external/api/batch/execute_batch_load_async.yaml +0 -18
- type_spec/external/api/chemical/convert_chemical_formats.yaml +0 -33
- type_spec/external/api/entity/create_entities.yaml +0 -45
- type_spec/external/api/entity/create_entity.yaml +0 -51
- type_spec/external/api/entity/get_entities_data.yaml +0 -29
- type_spec/external/api/entity/list_entities.yaml +0 -52
- type_spec/external/api/entity/resolve_entity_ids.yaml +0 -29
- type_spec/external/api/entity/set_values.yaml +0 -18
- type_spec/external/api/entity/transition_entity_phase.yaml +0 -44
- type_spec/external/api/id_source/list_id_source.yaml +0 -35
- type_spec/external/api/id_source/match_id_source.yaml +0 -32
- type_spec/external/api/input_groups/get_input_group_names.yaml +0 -29
- type_spec/external/api/inputs/create_inputs.yaml +0 -48
- type_spec/external/api/inputs/get_input_data.yaml +0 -95
- type_spec/external/api/inputs/get_input_names.yaml +0 -38
- type_spec/external/api/inputs/get_inputs_data.yaml +0 -82
- type_spec/external/api/inputs/set_input_attribute_values.yaml +0 -33
- type_spec/external/api/outputs/get_output_data.yaml +0 -92
- type_spec/external/api/outputs/get_output_names.yaml +0 -35
- type_spec/external/api/outputs/resolve_output_conditions.yaml +0 -50
- type_spec/external/api/permissions/set_core_permissions.yaml +0 -69
- type_spec/external/api/project/get_projects.yaml +0 -42
- type_spec/external/api/project/get_projects_data.yaml +0 -50
- type_spec/external/api/recipe_links/create_recipe_link.yaml +0 -25
- type_spec/external/api/recipe_metadata/get_recipe_metadata_data.yaml +0 -41
- type_spec/external/api/recipes/archive_recipes.yaml +0 -20
- type_spec/external/api/recipes/associate_recipe_as_input.yaml +0 -19
- type_spec/external/api/recipes/associate_recipe_as_lot.yaml +0 -19
- type_spec/external/api/recipes/create_recipe.yaml +0 -39
- type_spec/external/api/recipes/create_recipes.yaml +0 -47
- type_spec/external/api/recipes/disassociate_recipe_as_input.yaml +0 -16
- type_spec/external/api/recipes/edit_recipe_inputs.yaml +0 -85
- type_spec/external/api/recipes/get_curve.yaml +0 -21
- type_spec/external/api/recipes/get_recipe_calculations.yaml +0 -39
- type_spec/external/api/recipes/get_recipe_links.yaml +0 -26
- type_spec/external/api/recipes/get_recipe_names.yaml +0 -29
- type_spec/external/api/recipes/get_recipe_output_metadata.yaml +0 -36
- type_spec/external/api/recipes/get_recipes_data.yaml +0 -244
- type_spec/external/api/recipes/set_recipe_inputs.yaml +0 -42
- type_spec/external/api/recipes/set_recipe_metadata.yaml +0 -20
- type_spec/external/api/recipes/set_recipe_outputs.yaml +0 -52
- type_spec/external/api/recipes/set_recipe_tags.yaml +0 -62
- type_spec/external/api/triggers/run_trigger.yaml +0 -18
- uncountable/integration/types.py +0 -89
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# ruff: noqa
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
|
4
|
+
# source: uncountable/integration/queue_runner/command_server/protocol/command_server.proto
|
|
5
|
+
# Protobuf Python Version: 4.25.1
|
|
6
|
+
"""Generated protocol buffer code."""
|
|
7
|
+
|
|
8
|
+
from google.protobuf import descriptor as _descriptor
|
|
9
|
+
from google.protobuf import descriptor_pool as _descriptor_pool
|
|
10
|
+
from google.protobuf import symbol_database as _symbol_database
|
|
11
|
+
from google.protobuf.internal import builder as _builder
|
|
12
|
+
# @@protoc_insertion_point(imports)
|
|
13
|
+
|
|
14
|
+
_sym_db = _symbol_database.Default()
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(
|
|
21
|
+
b'\nQuncountable/integration/queue_runner/command_server/protocol/command_server.proto\x1a\x1fgoogle/protobuf/timestamp.proto"E\n\x11\x45nqueueJobRequest\x12\x14\n\x0cjob_ref_name\x18\x01 \x01(\t\x12\x1a\n\x12serialized_payload\x18\x02 \x01(\t"H\n\x10\x45nqueueJobResult\x12\x1b\n\x13successfully_queued\x18\x01 \x01(\x08\x12\x17\n\x0fqueued_job_uuid\x18\x02 \x01(\t"\x1f\n\x0fRetryJobRequest\x12\x0c\n\x04uuid\x18\x01 \x01(\t"F\n\x0eRetryJobResult\x12\x1b\n\x13successfully_queued\x18\x01 \x01(\x08\x12\x17\n\x0fqueued_job_uuid\x18\x02 \x01(\t"\x1a\n\x18VaccuumQueuedJobsRequest"\x19\n\x17VaccuumQueuedJobsResult"\x14\n\x12\x43heckHealthRequest"$\n\x11\x43heckHealthResult\x12\x0f\n\x07success\x18\x01 \x01(\x08"6\n\x15ListQueuedJobsRequest\x12\x0e\n\x06offset\x18\x01 \x01(\r\x12\r\n\x05limit\x18\x02 \x01(\r"\xf4\x01\n\x14ListQueuedJobsResult\x12\x43\n\x0bqueued_jobs\x18\x01 \x03(\x0b\x32..ListQueuedJobsResult.ListQueuedJobsResultItem\x1a\x96\x01\n\x18ListQueuedJobsResultItem\x12\x0c\n\x04uuid\x18\x01 \x01(\t\x12\x14\n\x0cjob_ref_name\x18\x02 \x01(\t\x12\x14\n\x0cnum_attempts\x18\x03 \x01(\x03\x12\x30\n\x0csubmitted_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x0e\n\x06status\x18\x05 \x01(\t2\xc0\x02\n\rCommandServer\x12\x35\n\nEnqueueJob\x12\x12.EnqueueJobRequest\x1a\x11.EnqueueJobResult"\x00\x12/\n\x08RetryJob\x12\x10.RetryJobRequest\x1a\x0f.RetryJobResult"\x00\x12\x38\n\x0b\x43heckHealth\x12\x13.CheckHealthRequest\x1a\x12.CheckHealthResult"\x00\x12\x41\n\x0eListQueuedJobs\x12\x16.ListQueuedJobsRequest\x1a\x15.ListQueuedJobsResult"\x00\x12J\n\x11VaccuumQueuedJobs\x12\x19.VaccuumQueuedJobsRequest\x1a\x18.VaccuumQueuedJobsResult"\x00\x62\x06proto3'
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
_globals = globals()
|
|
25
|
+
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
26
|
+
_builder.BuildTopDescriptorsAndMessages(
|
|
27
|
+
DESCRIPTOR,
|
|
28
|
+
"uncountable.integration.queue_runner.command_server.protocol.command_server_pb2",
|
|
29
|
+
_globals,
|
|
30
|
+
)
|
|
31
|
+
if _descriptor._USE_C_DESCRIPTORS == False:
|
|
32
|
+
DESCRIPTOR._options = None
|
|
33
|
+
_globals["_ENQUEUEJOBREQUEST"]._serialized_start = 118
|
|
34
|
+
_globals["_ENQUEUEJOBREQUEST"]._serialized_end = 187
|
|
35
|
+
_globals["_ENQUEUEJOBRESULT"]._serialized_start = 189
|
|
36
|
+
_globals["_ENQUEUEJOBRESULT"]._serialized_end = 261
|
|
37
|
+
_globals["_RETRYJOBREQUEST"]._serialized_start = 263
|
|
38
|
+
_globals["_RETRYJOBREQUEST"]._serialized_end = 294
|
|
39
|
+
_globals["_RETRYJOBRESULT"]._serialized_start = 296
|
|
40
|
+
_globals["_RETRYJOBRESULT"]._serialized_end = 366
|
|
41
|
+
_globals["_VACCUUMQUEUEDJOBSREQUEST"]._serialized_start = 368
|
|
42
|
+
_globals["_VACCUUMQUEUEDJOBSREQUEST"]._serialized_end = 394
|
|
43
|
+
_globals["_VACCUUMQUEUEDJOBSRESULT"]._serialized_start = 396
|
|
44
|
+
_globals["_VACCUUMQUEUEDJOBSRESULT"]._serialized_end = 421
|
|
45
|
+
_globals["_CHECKHEALTHREQUEST"]._serialized_start = 423
|
|
46
|
+
_globals["_CHECKHEALTHREQUEST"]._serialized_end = 443
|
|
47
|
+
_globals["_CHECKHEALTHRESULT"]._serialized_start = 445
|
|
48
|
+
_globals["_CHECKHEALTHRESULT"]._serialized_end = 481
|
|
49
|
+
_globals["_LISTQUEUEDJOBSREQUEST"]._serialized_start = 483
|
|
50
|
+
_globals["_LISTQUEUEDJOBSREQUEST"]._serialized_end = 537
|
|
51
|
+
_globals["_LISTQUEUEDJOBSRESULT"]._serialized_start = 540
|
|
52
|
+
_globals["_LISTQUEUEDJOBSRESULT"]._serialized_end = 784
|
|
53
|
+
_globals["_LISTQUEUEDJOBSRESULT_LISTQUEUEDJOBSRESULTITEM"]._serialized_start = 634
|
|
54
|
+
_globals["_LISTQUEUEDJOBSRESULT_LISTQUEUEDJOBSRESULTITEM"]._serialized_end = 784
|
|
55
|
+
_globals["_COMMANDSERVER"]._serialized_start = 787
|
|
56
|
+
_globals["_COMMANDSERVER"]._serialized_end = 1107
|
|
57
|
+
# @@protoc_insertion_point(module_scope)
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# ruff: noqa
|
|
2
|
+
from google.protobuf import timestamp_pb2 as _timestamp_pb2
|
|
3
|
+
from google.protobuf.internal import containers as _containers
|
|
4
|
+
from google.protobuf import descriptor as _descriptor
|
|
5
|
+
from google.protobuf import message as _message
|
|
6
|
+
from typing import (
|
|
7
|
+
ClassVar as _ClassVar,
|
|
8
|
+
Iterable as _Iterable,
|
|
9
|
+
Mapping as _Mapping,
|
|
10
|
+
Optional as _Optional,
|
|
11
|
+
Union as _Union,
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
DESCRIPTOR: _descriptor.FileDescriptor
|
|
15
|
+
|
|
16
|
+
class EnqueueJobRequest(_message.Message):
|
|
17
|
+
__slots__ = ("job_ref_name", "serialized_payload")
|
|
18
|
+
JOB_REF_NAME_FIELD_NUMBER: _ClassVar[int]
|
|
19
|
+
SERIALIZED_PAYLOAD_FIELD_NUMBER: _ClassVar[int]
|
|
20
|
+
job_ref_name: str
|
|
21
|
+
serialized_payload: str
|
|
22
|
+
def __init__(
|
|
23
|
+
self,
|
|
24
|
+
job_ref_name: _Optional[str] = ...,
|
|
25
|
+
serialized_payload: _Optional[str] = ...,
|
|
26
|
+
) -> None: ...
|
|
27
|
+
|
|
28
|
+
class EnqueueJobResult(_message.Message):
|
|
29
|
+
__slots__ = ("successfully_queued", "queued_job_uuid")
|
|
30
|
+
SUCCESSFULLY_QUEUED_FIELD_NUMBER: _ClassVar[int]
|
|
31
|
+
QUEUED_JOB_UUID_FIELD_NUMBER: _ClassVar[int]
|
|
32
|
+
successfully_queued: bool
|
|
33
|
+
queued_job_uuid: str
|
|
34
|
+
def __init__(
|
|
35
|
+
self, successfully_queued: bool = ..., queued_job_uuid: _Optional[str] = ...
|
|
36
|
+
) -> None: ...
|
|
37
|
+
|
|
38
|
+
class RetryJobRequest(_message.Message):
|
|
39
|
+
__slots__ = ("uuid",)
|
|
40
|
+
UUID_FIELD_NUMBER: _ClassVar[int]
|
|
41
|
+
uuid: str
|
|
42
|
+
def __init__(self, uuid: _Optional[str] = ...) -> None: ...
|
|
43
|
+
|
|
44
|
+
class RetryJobResult(_message.Message):
|
|
45
|
+
__slots__ = ("successfully_queued", "queued_job_uuid")
|
|
46
|
+
SUCCESSFULLY_QUEUED_FIELD_NUMBER: _ClassVar[int]
|
|
47
|
+
QUEUED_JOB_UUID_FIELD_NUMBER: _ClassVar[int]
|
|
48
|
+
successfully_queued: bool
|
|
49
|
+
queued_job_uuid: str
|
|
50
|
+
def __init__(
|
|
51
|
+
self, successfully_queued: bool = ..., queued_job_uuid: _Optional[str] = ...
|
|
52
|
+
) -> None: ...
|
|
53
|
+
|
|
54
|
+
class VaccuumQueuedJobsRequest(_message.Message):
|
|
55
|
+
__slots__ = ()
|
|
56
|
+
def __init__(self) -> None: ...
|
|
57
|
+
|
|
58
|
+
class VaccuumQueuedJobsResult(_message.Message):
|
|
59
|
+
__slots__ = ()
|
|
60
|
+
def __init__(self) -> None: ...
|
|
61
|
+
|
|
62
|
+
class CheckHealthRequest(_message.Message):
|
|
63
|
+
__slots__ = ()
|
|
64
|
+
def __init__(self) -> None: ...
|
|
65
|
+
|
|
66
|
+
class CheckHealthResult(_message.Message):
|
|
67
|
+
__slots__ = ("success",)
|
|
68
|
+
SUCCESS_FIELD_NUMBER: _ClassVar[int]
|
|
69
|
+
success: bool
|
|
70
|
+
def __init__(self, success: bool = ...) -> None: ...
|
|
71
|
+
|
|
72
|
+
class ListQueuedJobsRequest(_message.Message):
|
|
73
|
+
__slots__ = ("offset", "limit")
|
|
74
|
+
OFFSET_FIELD_NUMBER: _ClassVar[int]
|
|
75
|
+
LIMIT_FIELD_NUMBER: _ClassVar[int]
|
|
76
|
+
offset: int
|
|
77
|
+
limit: int
|
|
78
|
+
def __init__(
|
|
79
|
+
self, offset: _Optional[int] = ..., limit: _Optional[int] = ...
|
|
80
|
+
) -> None: ...
|
|
81
|
+
|
|
82
|
+
class ListQueuedJobsResult(_message.Message):
|
|
83
|
+
__slots__ = ("queued_jobs",)
|
|
84
|
+
class ListQueuedJobsResultItem(_message.Message):
|
|
85
|
+
__slots__ = ("uuid", "job_ref_name", "num_attempts", "submitted_at", "status")
|
|
86
|
+
UUID_FIELD_NUMBER: _ClassVar[int]
|
|
87
|
+
JOB_REF_NAME_FIELD_NUMBER: _ClassVar[int]
|
|
88
|
+
NUM_ATTEMPTS_FIELD_NUMBER: _ClassVar[int]
|
|
89
|
+
SUBMITTED_AT_FIELD_NUMBER: _ClassVar[int]
|
|
90
|
+
STATUS_FIELD_NUMBER: _ClassVar[int]
|
|
91
|
+
uuid: str
|
|
92
|
+
job_ref_name: str
|
|
93
|
+
num_attempts: int
|
|
94
|
+
submitted_at: _timestamp_pb2.Timestamp
|
|
95
|
+
status: str
|
|
96
|
+
def __init__(
|
|
97
|
+
self,
|
|
98
|
+
uuid: _Optional[str] = ...,
|
|
99
|
+
job_ref_name: _Optional[str] = ...,
|
|
100
|
+
num_attempts: _Optional[int] = ...,
|
|
101
|
+
submitted_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ...,
|
|
102
|
+
status: _Optional[str] = ...,
|
|
103
|
+
) -> None: ...
|
|
104
|
+
|
|
105
|
+
QUEUED_JOBS_FIELD_NUMBER: _ClassVar[int]
|
|
106
|
+
queued_jobs: _containers.RepeatedCompositeFieldContainer[
|
|
107
|
+
ListQueuedJobsResult.ListQueuedJobsResultItem
|
|
108
|
+
]
|
|
109
|
+
def __init__(
|
|
110
|
+
self,
|
|
111
|
+
queued_jobs: _Optional[
|
|
112
|
+
_Iterable[_Union[ListQueuedJobsResult.ListQueuedJobsResultItem, _Mapping]]
|
|
113
|
+
] = ...,
|
|
114
|
+
) -> None: ...
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
# mypy: disable-error-code="no-untyped-def"
|
|
2
|
+
# ruff: noqa
|
|
3
|
+
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
|
|
4
|
+
"""Client and server classes corresponding to protobuf-defined services."""
|
|
5
|
+
|
|
6
|
+
import grpc
|
|
7
|
+
|
|
8
|
+
from uncountable.integration.queue_runner.command_server.protocol import (
|
|
9
|
+
command_server_pb2 as uncountable_dot_integration_dot_queue__runner_dot_command__server_dot_protocol_dot_command__server__pb2,
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class CommandServerStub(object):
|
|
14
|
+
"""Missing associated documentation comment in .proto file."""
|
|
15
|
+
|
|
16
|
+
def __init__(self, channel):
|
|
17
|
+
"""Constructor.
|
|
18
|
+
|
|
19
|
+
Args:
|
|
20
|
+
channel: A grpc.Channel.
|
|
21
|
+
"""
|
|
22
|
+
self.EnqueueJob = channel.unary_unary(
|
|
23
|
+
"/CommandServer/EnqueueJob",
|
|
24
|
+
request_serializer=uncountable_dot_integration_dot_queue__runner_dot_command__server_dot_protocol_dot_command__server__pb2.EnqueueJobRequest.SerializeToString,
|
|
25
|
+
response_deserializer=uncountable_dot_integration_dot_queue__runner_dot_command__server_dot_protocol_dot_command__server__pb2.EnqueueJobResult.FromString,
|
|
26
|
+
)
|
|
27
|
+
self.RetryJob = channel.unary_unary(
|
|
28
|
+
"/CommandServer/RetryJob",
|
|
29
|
+
request_serializer=uncountable_dot_integration_dot_queue__runner_dot_command__server_dot_protocol_dot_command__server__pb2.RetryJobRequest.SerializeToString,
|
|
30
|
+
response_deserializer=uncountable_dot_integration_dot_queue__runner_dot_command__server_dot_protocol_dot_command__server__pb2.RetryJobResult.FromString,
|
|
31
|
+
)
|
|
32
|
+
self.CheckHealth = channel.unary_unary(
|
|
33
|
+
"/CommandServer/CheckHealth",
|
|
34
|
+
request_serializer=uncountable_dot_integration_dot_queue__runner_dot_command__server_dot_protocol_dot_command__server__pb2.CheckHealthRequest.SerializeToString,
|
|
35
|
+
response_deserializer=uncountable_dot_integration_dot_queue__runner_dot_command__server_dot_protocol_dot_command__server__pb2.CheckHealthResult.FromString,
|
|
36
|
+
)
|
|
37
|
+
self.ListQueuedJobs = channel.unary_unary(
|
|
38
|
+
"/CommandServer/ListQueuedJobs",
|
|
39
|
+
request_serializer=uncountable_dot_integration_dot_queue__runner_dot_command__server_dot_protocol_dot_command__server__pb2.ListQueuedJobsRequest.SerializeToString,
|
|
40
|
+
response_deserializer=uncountable_dot_integration_dot_queue__runner_dot_command__server_dot_protocol_dot_command__server__pb2.ListQueuedJobsResult.FromString,
|
|
41
|
+
)
|
|
42
|
+
self.VaccuumQueuedJobs = channel.unary_unary(
|
|
43
|
+
"/CommandServer/VaccuumQueuedJobs",
|
|
44
|
+
request_serializer=uncountable_dot_integration_dot_queue__runner_dot_command__server_dot_protocol_dot_command__server__pb2.VaccuumQueuedJobsRequest.SerializeToString,
|
|
45
|
+
response_deserializer=uncountable_dot_integration_dot_queue__runner_dot_command__server_dot_protocol_dot_command__server__pb2.VaccuumQueuedJobsResult.FromString,
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
class CommandServerServicer(object):
|
|
50
|
+
"""Missing associated documentation comment in .proto file."""
|
|
51
|
+
|
|
52
|
+
def EnqueueJob(self, request, context):
|
|
53
|
+
"""Missing associated documentation comment in .proto file."""
|
|
54
|
+
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
|
55
|
+
context.set_details("Method not implemented!")
|
|
56
|
+
raise NotImplementedError("Method not implemented!")
|
|
57
|
+
|
|
58
|
+
def RetryJob(self, request, context):
|
|
59
|
+
"""Missing associated documentation comment in .proto file."""
|
|
60
|
+
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
|
61
|
+
context.set_details("Method not implemented!")
|
|
62
|
+
raise NotImplementedError("Method not implemented!")
|
|
63
|
+
|
|
64
|
+
def CheckHealth(self, request, context):
|
|
65
|
+
"""Missing associated documentation comment in .proto file."""
|
|
66
|
+
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
|
67
|
+
context.set_details("Method not implemented!")
|
|
68
|
+
raise NotImplementedError("Method not implemented!")
|
|
69
|
+
|
|
70
|
+
def ListQueuedJobs(self, request, context):
|
|
71
|
+
"""Missing associated documentation comment in .proto file."""
|
|
72
|
+
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
|
73
|
+
context.set_details("Method not implemented!")
|
|
74
|
+
raise NotImplementedError("Method not implemented!")
|
|
75
|
+
|
|
76
|
+
def VaccuumQueuedJobs(self, request, context):
|
|
77
|
+
"""Missing associated documentation comment in .proto file."""
|
|
78
|
+
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
|
79
|
+
context.set_details("Method not implemented!")
|
|
80
|
+
raise NotImplementedError("Method not implemented!")
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
def add_CommandServerServicer_to_server(servicer, server):
|
|
84
|
+
rpc_method_handlers = {
|
|
85
|
+
"EnqueueJob": grpc.unary_unary_rpc_method_handler(
|
|
86
|
+
servicer.EnqueueJob,
|
|
87
|
+
request_deserializer=uncountable_dot_integration_dot_queue__runner_dot_command__server_dot_protocol_dot_command__server__pb2.EnqueueJobRequest.FromString,
|
|
88
|
+
response_serializer=uncountable_dot_integration_dot_queue__runner_dot_command__server_dot_protocol_dot_command__server__pb2.EnqueueJobResult.SerializeToString,
|
|
89
|
+
),
|
|
90
|
+
"RetryJob": grpc.unary_unary_rpc_method_handler(
|
|
91
|
+
servicer.RetryJob,
|
|
92
|
+
request_deserializer=uncountable_dot_integration_dot_queue__runner_dot_command__server_dot_protocol_dot_command__server__pb2.RetryJobRequest.FromString,
|
|
93
|
+
response_serializer=uncountable_dot_integration_dot_queue__runner_dot_command__server_dot_protocol_dot_command__server__pb2.RetryJobResult.SerializeToString,
|
|
94
|
+
),
|
|
95
|
+
"CheckHealth": grpc.unary_unary_rpc_method_handler(
|
|
96
|
+
servicer.CheckHealth,
|
|
97
|
+
request_deserializer=uncountable_dot_integration_dot_queue__runner_dot_command__server_dot_protocol_dot_command__server__pb2.CheckHealthRequest.FromString,
|
|
98
|
+
response_serializer=uncountable_dot_integration_dot_queue__runner_dot_command__server_dot_protocol_dot_command__server__pb2.CheckHealthResult.SerializeToString,
|
|
99
|
+
),
|
|
100
|
+
"ListQueuedJobs": grpc.unary_unary_rpc_method_handler(
|
|
101
|
+
servicer.ListQueuedJobs,
|
|
102
|
+
request_deserializer=uncountable_dot_integration_dot_queue__runner_dot_command__server_dot_protocol_dot_command__server__pb2.ListQueuedJobsRequest.FromString,
|
|
103
|
+
response_serializer=uncountable_dot_integration_dot_queue__runner_dot_command__server_dot_protocol_dot_command__server__pb2.ListQueuedJobsResult.SerializeToString,
|
|
104
|
+
),
|
|
105
|
+
"VaccuumQueuedJobs": grpc.unary_unary_rpc_method_handler(
|
|
106
|
+
servicer.VaccuumQueuedJobs,
|
|
107
|
+
request_deserializer=uncountable_dot_integration_dot_queue__runner_dot_command__server_dot_protocol_dot_command__server__pb2.VaccuumQueuedJobsRequest.FromString,
|
|
108
|
+
response_serializer=uncountable_dot_integration_dot_queue__runner_dot_command__server_dot_protocol_dot_command__server__pb2.VaccuumQueuedJobsResult.SerializeToString,
|
|
109
|
+
),
|
|
110
|
+
}
|
|
111
|
+
generic_handler = grpc.method_handlers_generic_handler(
|
|
112
|
+
"CommandServer", rpc_method_handlers
|
|
113
|
+
)
|
|
114
|
+
server.add_generic_rpc_handlers((generic_handler,))
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
# This class is part of an EXPERIMENTAL API.
|
|
118
|
+
class CommandServer(object):
|
|
119
|
+
"""Missing associated documentation comment in .proto file."""
|
|
120
|
+
|
|
121
|
+
@staticmethod
|
|
122
|
+
def EnqueueJob(
|
|
123
|
+
request,
|
|
124
|
+
target,
|
|
125
|
+
options=(),
|
|
126
|
+
channel_credentials=None,
|
|
127
|
+
call_credentials=None,
|
|
128
|
+
insecure=False,
|
|
129
|
+
compression=None,
|
|
130
|
+
wait_for_ready=None,
|
|
131
|
+
timeout=None,
|
|
132
|
+
metadata=None,
|
|
133
|
+
):
|
|
134
|
+
return grpc.experimental.unary_unary(
|
|
135
|
+
request,
|
|
136
|
+
target,
|
|
137
|
+
"/CommandServer/EnqueueJob",
|
|
138
|
+
uncountable_dot_integration_dot_queue__runner_dot_command__server_dot_protocol_dot_command__server__pb2.EnqueueJobRequest.SerializeToString,
|
|
139
|
+
uncountable_dot_integration_dot_queue__runner_dot_command__server_dot_protocol_dot_command__server__pb2.EnqueueJobResult.FromString,
|
|
140
|
+
options,
|
|
141
|
+
channel_credentials,
|
|
142
|
+
insecure,
|
|
143
|
+
call_credentials,
|
|
144
|
+
compression,
|
|
145
|
+
wait_for_ready,
|
|
146
|
+
timeout,
|
|
147
|
+
metadata,
|
|
148
|
+
)
|
|
149
|
+
|
|
150
|
+
@staticmethod
|
|
151
|
+
def RetryJob(
|
|
152
|
+
request,
|
|
153
|
+
target,
|
|
154
|
+
options=(),
|
|
155
|
+
channel_credentials=None,
|
|
156
|
+
call_credentials=None,
|
|
157
|
+
insecure=False,
|
|
158
|
+
compression=None,
|
|
159
|
+
wait_for_ready=None,
|
|
160
|
+
timeout=None,
|
|
161
|
+
metadata=None,
|
|
162
|
+
):
|
|
163
|
+
return grpc.experimental.unary_unary(
|
|
164
|
+
request,
|
|
165
|
+
target,
|
|
166
|
+
"/CommandServer/RetryJob",
|
|
167
|
+
uncountable_dot_integration_dot_queue__runner_dot_command__server_dot_protocol_dot_command__server__pb2.RetryJobRequest.SerializeToString,
|
|
168
|
+
uncountable_dot_integration_dot_queue__runner_dot_command__server_dot_protocol_dot_command__server__pb2.RetryJobResult.FromString,
|
|
169
|
+
options,
|
|
170
|
+
channel_credentials,
|
|
171
|
+
insecure,
|
|
172
|
+
call_credentials,
|
|
173
|
+
compression,
|
|
174
|
+
wait_for_ready,
|
|
175
|
+
timeout,
|
|
176
|
+
metadata,
|
|
177
|
+
)
|
|
178
|
+
|
|
179
|
+
@staticmethod
|
|
180
|
+
def CheckHealth(
|
|
181
|
+
request,
|
|
182
|
+
target,
|
|
183
|
+
options=(),
|
|
184
|
+
channel_credentials=None,
|
|
185
|
+
call_credentials=None,
|
|
186
|
+
insecure=False,
|
|
187
|
+
compression=None,
|
|
188
|
+
wait_for_ready=None,
|
|
189
|
+
timeout=None,
|
|
190
|
+
metadata=None,
|
|
191
|
+
):
|
|
192
|
+
return grpc.experimental.unary_unary(
|
|
193
|
+
request,
|
|
194
|
+
target,
|
|
195
|
+
"/CommandServer/CheckHealth",
|
|
196
|
+
uncountable_dot_integration_dot_queue__runner_dot_command__server_dot_protocol_dot_command__server__pb2.CheckHealthRequest.SerializeToString,
|
|
197
|
+
uncountable_dot_integration_dot_queue__runner_dot_command__server_dot_protocol_dot_command__server__pb2.CheckHealthResult.FromString,
|
|
198
|
+
options,
|
|
199
|
+
channel_credentials,
|
|
200
|
+
insecure,
|
|
201
|
+
call_credentials,
|
|
202
|
+
compression,
|
|
203
|
+
wait_for_ready,
|
|
204
|
+
timeout,
|
|
205
|
+
metadata,
|
|
206
|
+
)
|
|
207
|
+
|
|
208
|
+
@staticmethod
|
|
209
|
+
def ListQueuedJobs(
|
|
210
|
+
request,
|
|
211
|
+
target,
|
|
212
|
+
options=(),
|
|
213
|
+
channel_credentials=None,
|
|
214
|
+
call_credentials=None,
|
|
215
|
+
insecure=False,
|
|
216
|
+
compression=None,
|
|
217
|
+
wait_for_ready=None,
|
|
218
|
+
timeout=None,
|
|
219
|
+
metadata=None,
|
|
220
|
+
):
|
|
221
|
+
return grpc.experimental.unary_unary(
|
|
222
|
+
request,
|
|
223
|
+
target,
|
|
224
|
+
"/CommandServer/ListQueuedJobs",
|
|
225
|
+
uncountable_dot_integration_dot_queue__runner_dot_command__server_dot_protocol_dot_command__server__pb2.ListQueuedJobsRequest.SerializeToString,
|
|
226
|
+
uncountable_dot_integration_dot_queue__runner_dot_command__server_dot_protocol_dot_command__server__pb2.ListQueuedJobsResult.FromString,
|
|
227
|
+
options,
|
|
228
|
+
channel_credentials,
|
|
229
|
+
insecure,
|
|
230
|
+
call_credentials,
|
|
231
|
+
compression,
|
|
232
|
+
wait_for_ready,
|
|
233
|
+
timeout,
|
|
234
|
+
metadata,
|
|
235
|
+
)
|
|
236
|
+
|
|
237
|
+
@staticmethod
|
|
238
|
+
def VaccuumQueuedJobs(
|
|
239
|
+
request,
|
|
240
|
+
target,
|
|
241
|
+
options=(),
|
|
242
|
+
channel_credentials=None,
|
|
243
|
+
call_credentials=None,
|
|
244
|
+
insecure=False,
|
|
245
|
+
compression=None,
|
|
246
|
+
wait_for_ready=None,
|
|
247
|
+
timeout=None,
|
|
248
|
+
metadata=None,
|
|
249
|
+
):
|
|
250
|
+
return grpc.experimental.unary_unary(
|
|
251
|
+
request,
|
|
252
|
+
target,
|
|
253
|
+
"/CommandServer/VaccuumQueuedJobs",
|
|
254
|
+
uncountable_dot_integration_dot_queue__runner_dot_command__server_dot_protocol_dot_command__server__pb2.VaccuumQueuedJobsRequest.SerializeToString,
|
|
255
|
+
uncountable_dot_integration_dot_queue__runner_dot_command__server_dot_protocol_dot_command__server__pb2.VaccuumQueuedJobsResult.FromString,
|
|
256
|
+
options,
|
|
257
|
+
channel_credentials,
|
|
258
|
+
insecure,
|
|
259
|
+
call_credentials,
|
|
260
|
+
compression,
|
|
261
|
+
wait_for_ready,
|
|
262
|
+
timeout,
|
|
263
|
+
metadata,
|
|
264
|
+
)
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import asyncio
|
|
2
|
+
import typing
|
|
3
|
+
from dataclasses import dataclass
|
|
4
|
+
from enum import StrEnum
|
|
5
|
+
|
|
6
|
+
from uncountable.types import queued_job_t
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class CommandType(StrEnum):
|
|
10
|
+
ENQUEUE_JOB = "enqueue_job"
|
|
11
|
+
RETRY_JOB = "retry_job"
|
|
12
|
+
VACCUUM_QUEUED_JOBS = "vaccuum_queued_jobs"
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
RT = typing.TypeVar("RT")
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
@dataclass(kw_only=True)
|
|
19
|
+
class CommandBase[RT]:
|
|
20
|
+
type: CommandType
|
|
21
|
+
response_queue: asyncio.Queue[RT]
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
@dataclass(kw_only=True)
|
|
25
|
+
class CommandEnqueueJobResponse:
|
|
26
|
+
queued_job_uuid: str
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
@dataclass(kw_only=True)
|
|
30
|
+
class CommandRetryJobResponse:
|
|
31
|
+
queued_job_uuid: str | None
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
@dataclass(kw_only=True)
|
|
35
|
+
class CommandVaccuumQueuedJobsResponse:
|
|
36
|
+
pass
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
@dataclass(kw_only=True)
|
|
40
|
+
class CommandEnqueueJob(CommandBase[CommandEnqueueJobResponse]):
|
|
41
|
+
type: CommandType = CommandType.ENQUEUE_JOB
|
|
42
|
+
job_ref_name: str
|
|
43
|
+
payload: queued_job_t.QueuedJobPayload
|
|
44
|
+
response_queue: asyncio.Queue[CommandEnqueueJobResponse]
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
@dataclass(kw_only=True)
|
|
48
|
+
class CommandRetryJob(CommandBase[CommandRetryJobResponse]):
|
|
49
|
+
type: CommandType = CommandType.RETRY_JOB
|
|
50
|
+
queued_job_uuid: str
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
@dataclass(kw_only=True)
|
|
54
|
+
class CommandVaccuumQueuedJobs(CommandBase[CommandVaccuumQueuedJobsResponse]):
|
|
55
|
+
type: CommandType = CommandType.VACCUUM_QUEUED_JOBS
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
_Command = CommandEnqueueJob | CommandRetryJob | CommandVaccuumQueuedJobs
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
CommandQueue = asyncio.Queue[_Command]
|
|
62
|
+
|
|
63
|
+
CommandTask = asyncio.Task[_Command]
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
class CommandServerException(Exception):
|
|
67
|
+
pass
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
class CommandServerTimeout(CommandServerException):
|
|
71
|
+
pass
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
class CommandServerBadResponse(CommandServerException):
|
|
75
|
+
pass
|