UncountablePythonSDK 0.0.171__tar.gz → 0.0.173__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.171 → uncountablepythonsdk-0.0.173}/PKG-INFO +6 -8
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/UncountablePythonSDK.egg-info/PKG-INFO +6 -8
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/UncountablePythonSDK.egg-info/SOURCES.txt +11 -4
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/UncountablePythonSDK.egg-info/requires.txt +4 -6
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/docs/requirements.txt +1 -1
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/examples/integration-server/jobs/materials_auto/example_instrument.py +1 -1
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/examples/integration-server/pyproject.toml +3 -4
- uncountablepythonsdk-0.0.173/pkgs/argument_parser/__init__.py +47 -0
- uncountablepythonsdk-0.0.173/pkgs/argument_parser/cached_parser.py +56 -0
- uncountablepythonsdk-0.0.173/pkgs/argument_parser/parser_base.py +42 -0
- uncountablepythonsdk-0.0.173/pkgs/argument_parser/parser_builder.py +52 -0
- uncountablepythonsdk-0.0.173/pkgs/argument_parser/parser_cache.py +30 -0
- uncountablepythonsdk-0.0.173/pkgs/argument_parser/parser_function_type.py +6 -0
- uncountablepythonsdk-0.0.171/pkgs/argument_parser/argument_parser.py → uncountablepythonsdk-0.0.173/pkgs/argument_parser/parser_inner.py +80 -210
- uncountablepythonsdk-0.0.173/pkgs/argument_parser/parser_options.py +49 -0
- uncountablepythonsdk-0.0.173/pkgs/argument_parser/type_predicates.py +45 -0
- uncountablepythonsdk-0.0.173/pkgs/filesystem_utils/__init__.py +34 -0
- uncountablepythonsdk-0.0.173/pkgs/filesystem_utils/_sftp_connection.py +168 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/filesystem_utils/_sftp_session.py +9 -10
- uncountablepythonsdk-0.0.173/pkgs/serialization/__init__.py +26 -0
- uncountablepythonsdk-0.0.173/pkgs/serialization/annotation.py +95 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/serialization/serial_class.py +23 -2
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/serialization/serial_generic.py +2 -2
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/serialization/serial_union.py +18 -5
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/serialization/yaml.py +1 -6
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/serialization_util/__init__.py +1 -2
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/serialization_util/serialization_helpers.py +10 -3
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/actions_registry/__main__.py +10 -1
- uncountablepythonsdk-0.0.173/pkgs/type_spec/actions_registry/emit_python.py +92 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/builder.py +22 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/emit_io_ts.py +2 -2
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/emit_open_api.py +2 -2
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/emit_python.py +23 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/emit_typescript_util.py +10 -2
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/load_types.py +35 -25
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/non_discriminated_union_exceptions.py +2 -1
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/open_api_util.py +5 -5
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/type_info/emit_type_info.py +4 -4
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/value_spec/__main__.py +53 -21
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/value_spec/emit_python.py +6 -1
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pyproject.toml +5 -7
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/core/client.py +34 -1
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/integration/cli.py +1 -2
- uncountablepythonsdk-0.0.173/uncountable/integration/http_server/__init__.py +7 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/integration/queue_runner/job_scheduler.py +4 -1
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/integration/telemetry.py +30 -12
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/__init__.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/batch/execute_batch.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/batch/execute_batch_load_async.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/chemical/convert_chemical_formats.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/condition_parameters/upsert_condition_match.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/condition_parameters/upsert_condition_matches.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/entity/create_entities.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/entity/create_entity.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/entity/create_or_update_entities.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/entity/create_or_update_entity.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/entity/export_entities.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/entity/get_entities_data.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/entity/grant_entity_permissions.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/entity/list_aggregate.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/entity/list_entities.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/entity/lock_entity.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/entity/lookup_entity.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/entity/resolve_entity_ids.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/entity/set_barcode.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/entity/set_entities_field_values.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/entity/set_entity_field_values.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/entity/set_values.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/entity/transition_entity_phase.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/entity/unlock_entity.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/equipment/associate_equipment_input.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/field_options/upsert_field_options.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/file_folders/add_file_to_folder.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/file_folders/modify_file_system.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/files/download_file.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/id_source/list_id_source.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/id_source/match_id_source.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/input_groups/get_input_group_names.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/inputs/create_inputs.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/inputs/get_input_data.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/inputs/get_input_names.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/inputs/get_inputs_data.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/inputs/set_input_attribute_values.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/inputs/set_input_category.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/inputs/set_input_subcategories.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/inputs/set_intermediate_type.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/integrations/publish_realtime_data.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/integrations/push_notification.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/integrations/register_sockets_token.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/listing/export_listing.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/listing/fetch_listing.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/material_families/update_entity_material_families.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/notebooks/add_notebook_content.py +4 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/notebooks/get_notebook_content.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/output_parameters/swap_output_condition_parameters.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/outputs/get_output_data.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/outputs/get_output_names.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/outputs/get_output_organization.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/outputs/resolve_output_conditions.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/outputs/update_output_condition_parameter.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/permissions/set_core_permissions.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/permissions/set_entity_permission.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/project/get_projects.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/project/get_projects_data.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipe_links/create_recipe_link.py +2 -0
- uncountablepythonsdk-0.0.173/uncountable/types/api/recipe_links/create_recipe_links.py +57 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipe_links/remove_recipe_link.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/add_recipe_to_project.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/add_time_series_data.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/archive_recipes.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/associate_recipe_as_input.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/associate_recipe_as_lot.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/clear_recipe_outputs.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/create_mix_order.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/create_recipe.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/create_recipes.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/disassociate_recipe_as_input.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/edit_recipe_inputs.py +61 -2
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/get_column_calculation_values.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/get_curve.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/get_recipe_calculations.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/get_recipe_links.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/get_recipe_names.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/get_recipe_output_metadata.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/get_recipes_data.py +16 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/lock_recipes.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/remove_recipe_from_project.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/set_recipe_inputs.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/set_recipe_metadata.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/set_recipe_output_annotations.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/set_recipe_output_file.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/set_recipe_outputs.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/set_recipe_tags.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/set_recipe_total.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/unarchive_recipes.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/unlock_recipes.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/upsert_recipe_workflow_step.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/upsert_step_relationships.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/runsheet/complete_async_upload.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/runsheet/export_default_runsheet.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/triggers/run_trigger.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/uploader/complete_async_parse.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/uploader/invoke_uploader.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/user/get_current_user_info.py +2 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/async_batch_processor.py +1 -1
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/client_base.py +29 -2
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/entity_t.py +18 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/recipe_workflow_step_types_t.py +2 -2
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/request_headers.py +1 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/request_headers_t.py +6 -0
- uncountablepythonsdk-0.0.171/.python-version +0 -1
- uncountablepythonsdk-0.0.171/pkgs/argument_parser/__init__.py +0 -17
- uncountablepythonsdk-0.0.171/pkgs/argument_parser/_is_enum.py +0 -11
- uncountablepythonsdk-0.0.171/pkgs/argument_parser/_is_namedtuple.py +0 -14
- uncountablepythonsdk-0.0.171/pkgs/filesystem_utils/__init__.py +0 -24
- uncountablepythonsdk-0.0.171/pkgs/serialization/__init__.py +0 -18
- uncountablepythonsdk-0.0.171/pkgs/serialization/annotation.py +0 -64
- uncountablepythonsdk-0.0.171/uncountable/integration/http_server/__init__.py +0 -5
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/.github/workflows/documentation.yml +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/.github/workflows/publish.yml +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/.gitignore +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/README.md +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/UncountablePythonSDK.egg-info/dependency_links.txt +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/UncountablePythonSDK.egg-info/top_level.txt +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/docs/.gitignore +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/docs/conf.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/docs/index.md +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/docs/integration_examples/add_file_to_folder.md +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/docs/integration_examples/create_ingredient.md +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/docs/integration_examples/create_output.md +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/docs/integration_examples/index.md +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/docs/integration_examples/upload_file.md +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/docs/justfile +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/docs/static/favicons/android-chrome-192x192.png +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/docs/static/favicons/android-chrome-512x512.png +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/docs/static/favicons/apple-touch-icon.png +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/docs/static/favicons/browserconfig.xml +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/docs/static/favicons/favicon-16x16.png +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/docs/static/favicons/favicon-32x32.png +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/docs/static/favicons/manifest.json +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/docs/static/favicons/mstile-150x150.png +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/docs/static/favicons/safari-pinned-tab.svg +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/docs/static/logo_blue.png +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/examples/async_batch.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/examples/async_batch_large_parse.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/examples/basic_auth.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/examples/create_entity.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/examples/create_ingredient_sdk.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/examples/download_files.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/examples/edit_recipe_inputs.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/examples/integration-server/jobs/materials_auto/concurrent_cron.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/examples/integration-server/jobs/materials_auto/example_cron.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/examples/integration-server/jobs/materials_auto/example_http.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/examples/integration-server/jobs/materials_auto/example_parse.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/examples/integration-server/jobs/materials_auto/example_predictions.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/examples/integration-server/jobs/materials_auto/example_runsheet_wh.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/examples/integration-server/jobs/materials_auto/example_wh.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/examples/integration-server/jobs/materials_auto/profile.yaml +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/examples/invoke_uploader.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/examples/oauth.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/examples/set_input_pdf_attribute.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/examples/set_recipe_metadata_file.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/examples/set_recipe_output_file_sdk.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/examples/upload_files.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/__init__.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/argument_parser/case_convert.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/argument_parser/parser_error.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/filesystem_utils/_blob_session.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/filesystem_utils/_file_share_session.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/filesystem_utils/_gdrive_session.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/filesystem_utils/_local_session.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/filesystem_utils/_s3_session.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/filesystem_utils/file_type_utils.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/filesystem_utils/filesystem_session.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/py.typed +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/serialization/missing_sentry.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/serialization/opaque_key.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/serialization/serial_alias.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/serialization/unknown.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/serialization_util/_get_type_for_serialization.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/serialization_util/convert_to_snakecase.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/serialization_util/dataclasses.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/strenum_compat/__init__.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/strenum_compat/strenum_compat.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/__init__.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/__main__.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/actions_registry/__init__.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/actions_registry/emit_typescript.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/builder_types.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/config.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/cross_output_links.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/emit_open_api_util.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/emit_typescript.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/parts/base.py.prepart +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/parts/base.ts.prepart +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/test.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/type_info/__main__.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/ui_entry_actions/__init__.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/ui_entry_actions/generate_ui_entry_actions.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/util.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/value_spec/__init__.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/value_spec/convert_type.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/pkgs/type_spec/value_spec/types.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/setup.cfg +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/__init__.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/core/__init__.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/core/async_batch.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/core/environment.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/core/file_upload.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/core/query/__init__.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/core/query/builder.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/core/query/column.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/core/query/row.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/core/query/types.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/core/types.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/integration/__init__.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/integration/construct_client.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/integration/cron.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/integration/db/__init__.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/integration/db/connect.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/integration/db/session.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/integration/entrypoint.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/integration/executors/__init__.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/integration/executors/executors.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/integration/executors/generic_upload_executor.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/integration/executors/script_executor.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/integration/http_server/types.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/integration/job.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/integration/queue_runner/__init__.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/integration/queue_runner/command_server/__init__.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/integration/queue_runner/command_server/command_client.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/integration/queue_runner/command_server/command_server.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/integration/queue_runner/command_server/constants.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/integration/queue_runner/command_server/protocol/__init__.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/integration/queue_runner/command_server/protocol/command_server.proto +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.pyi +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/integration/queue_runner/command_server/protocol/command_server_pb2_grpc.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/integration/queue_runner/command_server/types.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/integration/queue_runner/datastore/__init__.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/integration/queue_runner/datastore/datastore_sqlite.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/integration/queue_runner/datastore/interface.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/integration/queue_runner/datastore/model.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/integration/queue_runner/queue_runner.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/integration/queue_runner/types.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/integration/queue_runner/worker.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/integration/request_context.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/integration/scan_profiles.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/integration/scheduler.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/integration/secret_retrieval/__init__.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/integration/secret_retrieval/retrieve_secret.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/integration/server.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/integration/webhook_server/entrypoint.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/py.typed +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/__init__.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/batch/__init__.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/chemical/__init__.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/condition_parameters/__init__.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/entity/__init__.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/equipment/__init__.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/field_options/__init__.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/file_folders/__init__.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/files/__init__.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/id_source/__init__.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/input_groups/__init__.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/inputs/__init__.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/integrations/__init__.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/listing/__init__.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/material_families/__init__.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/notebooks/__init__.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/output_parameters/__init__.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/outputs/__init__.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/permissions/__init__.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/project/__init__.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipe_links/__init__.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipe_metadata/__init__.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/recipes/__init__.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/runsheet/__init__.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/triggers/__init__.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/uploader/__init__.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/api/user/__init__.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/async_batch.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/async_batch_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/async_jobs.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/async_jobs_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/auth_retrieval.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/auth_retrieval_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/base.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/base_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/calculations.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/calculations_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/chemical_structure.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/chemical_structure_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/client_config.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/client_config_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/condition_match.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/condition_match_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/curves.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/curves_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/data.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/data_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/entity.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/experiment_groups.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/experiment_groups_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/exports.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/exports_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/field_values.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/field_values_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/fields.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/fields_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/generic_upload.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/generic_upload_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/id_source.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/id_source_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/identifier.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/identifier_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/input_attributes.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/input_attributes_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/inputs.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/inputs_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/integration_server.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/integration_server_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/integration_session.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/integration_session_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/integrations.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/integrations_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/job_definition.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/job_definition_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/listing.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/listing_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/notices.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/notices_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/notifications.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/notifications_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/outputs.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/outputs_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/overrides.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/overrides_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/permissions.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/permissions_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/phases.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/phases_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/post_base.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/post_base_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/queued_job.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/queued_job_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/recipe_identifiers.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/recipe_identifiers_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/recipe_inputs.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/recipe_inputs_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/recipe_links.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/recipe_links_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/recipe_metadata.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/recipe_metadata_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/recipe_output_metadata.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/recipe_output_metadata_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/recipe_step_relationships.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/recipe_step_relationships_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/recipe_tags.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/recipe_tags_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/recipe_workflow_step_types.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/recipe_workflow_steps.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/recipe_workflow_steps_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/recipes.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/recipes_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/response.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/response_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/runsheet.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/runsheet_format.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/runsheet_format_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/runsheet_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/secret_retrieval.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/secret_retrieval_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/sockets.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/sockets_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/specs.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/specs_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/step_relationships.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/step_relationships_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/units.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/units_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/uploader.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/uploader_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/users.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/users_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/webhook_job.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/webhook_job_t.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/workflows.py +0 -0
- {uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/uncountable/types/workflows_t.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: UncountablePythonSDK
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.173
|
|
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
|
|
@@ -14,7 +14,7 @@ Classifier: Programming Language :: Python :: 3
|
|
|
14
14
|
Classifier: Topic :: Software Development
|
|
15
15
|
Classifier: Topic :: Utilities
|
|
16
16
|
Classifier: Typing :: Typed
|
|
17
|
-
Requires-Python: >=3.
|
|
17
|
+
Requires-Python: >=3.12
|
|
18
18
|
Description-Content-Type: text/markdown
|
|
19
19
|
Requires-Dist: aiotus==1.*
|
|
20
20
|
Requires-Dist: aiohttp==3.*
|
|
@@ -22,16 +22,14 @@ Requires-Dist: requests==2.*
|
|
|
22
22
|
Requires-Dist: SQLAlchemy>=1.4.0
|
|
23
23
|
Requires-Dist: APScheduler==3.*
|
|
24
24
|
Requires-Dist: python-dateutil==2.*
|
|
25
|
-
Requires-Dist: shelljob==0.*
|
|
26
25
|
Requires-Dist: PyYAML==6.*
|
|
27
26
|
Requires-Dist: google-api-python-client==2.*
|
|
28
27
|
Requires-Dist: tqdm==4.*
|
|
29
|
-
Requires-Dist: pysftp==0.*
|
|
30
28
|
Requires-Dist: opentelemetry-api==1.*
|
|
31
29
|
Requires-Dist: opentelemetry-exporter-otlp-proto-common==1.*
|
|
32
30
|
Requires-Dist: opentelemetry-exporter-otlp-proto-http==1.*
|
|
33
31
|
Requires-Dist: opentelemetry-sdk>=1.39.1
|
|
34
|
-
Requires-Dist: paramiko==
|
|
32
|
+
Requires-Dist: paramiko==5.*
|
|
35
33
|
Requires-Dist: boto3==1.*
|
|
36
34
|
Requires-Dist: flask==3.*
|
|
37
35
|
Requires-Dist: simplejson==3.*
|
|
@@ -40,12 +38,12 @@ Requires-Dist: protobuf>=4.21.1
|
|
|
40
38
|
Requires-Dist: azure-storage-blob==12.*
|
|
41
39
|
Requires-Dist: azure-storage-file-share==12.*
|
|
42
40
|
Requires-Dist: boto3-stubs[essential,ses]==1.*
|
|
43
|
-
Requires-Dist: msgspec<0.
|
|
44
|
-
Requires-Dist: tabulate==0.
|
|
41
|
+
Requires-Dist: msgspec<0.22,>=0.21
|
|
42
|
+
Requires-Dist: tabulate==0.10.0
|
|
45
43
|
Requires-Dist: types-psutil~=7.2.1
|
|
46
44
|
Requires-Dist: psutil>=5.9.0
|
|
47
45
|
Provides-Extra: test
|
|
48
|
-
Requires-Dist: mypy
|
|
46
|
+
Requires-Dist: mypy>=1; extra == "test"
|
|
49
47
|
Requires-Dist: ruff==0.*; extra == "test"
|
|
50
48
|
Requires-Dist: pytest>=8; extra == "test"
|
|
51
49
|
Requires-Dist: coverage[toml]==7.*; extra == "test"
|
{uncountablepythonsdk-0.0.171 → uncountablepythonsdk-0.0.173}/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.173
|
|
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
|
|
@@ -14,7 +14,7 @@ Classifier: Programming Language :: Python :: 3
|
|
|
14
14
|
Classifier: Topic :: Software Development
|
|
15
15
|
Classifier: Topic :: Utilities
|
|
16
16
|
Classifier: Typing :: Typed
|
|
17
|
-
Requires-Python: >=3.
|
|
17
|
+
Requires-Python: >=3.12
|
|
18
18
|
Description-Content-Type: text/markdown
|
|
19
19
|
Requires-Dist: aiotus==1.*
|
|
20
20
|
Requires-Dist: aiohttp==3.*
|
|
@@ -22,16 +22,14 @@ Requires-Dist: requests==2.*
|
|
|
22
22
|
Requires-Dist: SQLAlchemy>=1.4.0
|
|
23
23
|
Requires-Dist: APScheduler==3.*
|
|
24
24
|
Requires-Dist: python-dateutil==2.*
|
|
25
|
-
Requires-Dist: shelljob==0.*
|
|
26
25
|
Requires-Dist: PyYAML==6.*
|
|
27
26
|
Requires-Dist: google-api-python-client==2.*
|
|
28
27
|
Requires-Dist: tqdm==4.*
|
|
29
|
-
Requires-Dist: pysftp==0.*
|
|
30
28
|
Requires-Dist: opentelemetry-api==1.*
|
|
31
29
|
Requires-Dist: opentelemetry-exporter-otlp-proto-common==1.*
|
|
32
30
|
Requires-Dist: opentelemetry-exporter-otlp-proto-http==1.*
|
|
33
31
|
Requires-Dist: opentelemetry-sdk>=1.39.1
|
|
34
|
-
Requires-Dist: paramiko==
|
|
32
|
+
Requires-Dist: paramiko==5.*
|
|
35
33
|
Requires-Dist: boto3==1.*
|
|
36
34
|
Requires-Dist: flask==3.*
|
|
37
35
|
Requires-Dist: simplejson==3.*
|
|
@@ -40,12 +38,12 @@ Requires-Dist: protobuf>=4.21.1
|
|
|
40
38
|
Requires-Dist: azure-storage-blob==12.*
|
|
41
39
|
Requires-Dist: azure-storage-file-share==12.*
|
|
42
40
|
Requires-Dist: boto3-stubs[essential,ses]==1.*
|
|
43
|
-
Requires-Dist: msgspec<0.
|
|
44
|
-
Requires-Dist: tabulate==0.
|
|
41
|
+
Requires-Dist: msgspec<0.22,>=0.21
|
|
42
|
+
Requires-Dist: tabulate==0.10.0
|
|
45
43
|
Requires-Dist: types-psutil~=7.2.1
|
|
46
44
|
Requires-Dist: psutil>=5.9.0
|
|
47
45
|
Provides-Extra: test
|
|
48
|
-
Requires-Dist: mypy
|
|
46
|
+
Requires-Dist: mypy>=1; extra == "test"
|
|
49
47
|
Requires-Dist: ruff==0.*; extra == "test"
|
|
50
48
|
Requires-Dist: pytest>=8; extra == "test"
|
|
51
49
|
Requires-Dist: coverage[toml]==7.*; extra == "test"
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
.gitignore
|
|
2
|
-
.python-version
|
|
3
2
|
README.md
|
|
4
3
|
pyproject.toml
|
|
5
4
|
.github/workflows/documentation.yml
|
|
@@ -55,17 +54,23 @@ examples/integration-server/jobs/materials_auto/profile.yaml
|
|
|
55
54
|
pkgs/__init__.py
|
|
56
55
|
pkgs/py.typed
|
|
57
56
|
pkgs/argument_parser/__init__.py
|
|
58
|
-
pkgs/argument_parser/
|
|
59
|
-
pkgs/argument_parser/_is_namedtuple.py
|
|
60
|
-
pkgs/argument_parser/argument_parser.py
|
|
57
|
+
pkgs/argument_parser/cached_parser.py
|
|
61
58
|
pkgs/argument_parser/case_convert.py
|
|
59
|
+
pkgs/argument_parser/parser_base.py
|
|
60
|
+
pkgs/argument_parser/parser_builder.py
|
|
61
|
+
pkgs/argument_parser/parser_cache.py
|
|
62
62
|
pkgs/argument_parser/parser_error.py
|
|
63
|
+
pkgs/argument_parser/parser_function_type.py
|
|
64
|
+
pkgs/argument_parser/parser_inner.py
|
|
65
|
+
pkgs/argument_parser/parser_options.py
|
|
66
|
+
pkgs/argument_parser/type_predicates.py
|
|
63
67
|
pkgs/filesystem_utils/__init__.py
|
|
64
68
|
pkgs/filesystem_utils/_blob_session.py
|
|
65
69
|
pkgs/filesystem_utils/_file_share_session.py
|
|
66
70
|
pkgs/filesystem_utils/_gdrive_session.py
|
|
67
71
|
pkgs/filesystem_utils/_local_session.py
|
|
68
72
|
pkgs/filesystem_utils/_s3_session.py
|
|
73
|
+
pkgs/filesystem_utils/_sftp_connection.py
|
|
69
74
|
pkgs/filesystem_utils/_sftp_session.py
|
|
70
75
|
pkgs/filesystem_utils/file_type_utils.py
|
|
71
76
|
pkgs/filesystem_utils/filesystem_session.py
|
|
@@ -105,6 +110,7 @@ pkgs/type_spec/test.py
|
|
|
105
110
|
pkgs/type_spec/util.py
|
|
106
111
|
pkgs/type_spec/actions_registry/__init__.py
|
|
107
112
|
pkgs/type_spec/actions_registry/__main__.py
|
|
113
|
+
pkgs/type_spec/actions_registry/emit_python.py
|
|
108
114
|
pkgs/type_spec/actions_registry/emit_typescript.py
|
|
109
115
|
pkgs/type_spec/parts/base.py.prepart
|
|
110
116
|
pkgs/type_spec/parts/base.ts.prepart
|
|
@@ -366,6 +372,7 @@ uncountable/types/api/project/get_projects.py
|
|
|
366
372
|
uncountable/types/api/project/get_projects_data.py
|
|
367
373
|
uncountable/types/api/recipe_links/__init__.py
|
|
368
374
|
uncountable/types/api/recipe_links/create_recipe_link.py
|
|
375
|
+
uncountable/types/api/recipe_links/create_recipe_links.py
|
|
369
376
|
uncountable/types/api/recipe_links/remove_recipe_link.py
|
|
370
377
|
uncountable/types/api/recipe_metadata/__init__.py
|
|
371
378
|
uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py
|
|
@@ -4,16 +4,14 @@ requests==2.*
|
|
|
4
4
|
SQLAlchemy>=1.4.0
|
|
5
5
|
APScheduler==3.*
|
|
6
6
|
python-dateutil==2.*
|
|
7
|
-
shelljob==0.*
|
|
8
7
|
PyYAML==6.*
|
|
9
8
|
google-api-python-client==2.*
|
|
10
9
|
tqdm==4.*
|
|
11
|
-
pysftp==0.*
|
|
12
10
|
opentelemetry-api==1.*
|
|
13
11
|
opentelemetry-exporter-otlp-proto-common==1.*
|
|
14
12
|
opentelemetry-exporter-otlp-proto-http==1.*
|
|
15
13
|
opentelemetry-sdk>=1.39.1
|
|
16
|
-
paramiko==
|
|
14
|
+
paramiko==5.*
|
|
17
15
|
boto3==1.*
|
|
18
16
|
flask==3.*
|
|
19
17
|
simplejson==3.*
|
|
@@ -22,13 +20,13 @@ protobuf>=4.21.1
|
|
|
22
20
|
azure-storage-blob==12.*
|
|
23
21
|
azure-storage-file-share==12.*
|
|
24
22
|
boto3-stubs[essential,ses]==1.*
|
|
25
|
-
msgspec<0.
|
|
26
|
-
tabulate==0.
|
|
23
|
+
msgspec<0.22,>=0.21
|
|
24
|
+
tabulate==0.10.0
|
|
27
25
|
types-psutil~=7.2.1
|
|
28
26
|
psutil>=5.9.0
|
|
29
27
|
|
|
30
28
|
[test]
|
|
31
|
-
mypy
|
|
29
|
+
mypy>=1
|
|
32
30
|
ruff==0.*
|
|
33
31
|
pytest>=8
|
|
34
32
|
coverage[toml]==7.*
|
|
@@ -14,7 +14,7 @@ from uncountable.types.integration_session_t import IntegrationSessionInstrument
|
|
|
14
14
|
from websockets.sync.client import connect
|
|
15
15
|
from websockets.typing import Data
|
|
16
16
|
|
|
17
|
-
from pkgs.argument_parser
|
|
17
|
+
from pkgs.argument_parser import CachedParser
|
|
18
18
|
from pkgs.serialization_util import serialize_for_api
|
|
19
19
|
|
|
20
20
|
|
|
@@ -5,19 +5,18 @@ name = "integration-server-testing"
|
|
|
5
5
|
# end_project_name
|
|
6
6
|
dynamic = ["version"]
|
|
7
7
|
dependencies = [
|
|
8
|
-
"mypy
|
|
8
|
+
"mypy >= 2.1.0, < 3",
|
|
9
9
|
"ruff == 0.*",
|
|
10
10
|
"openpyxl == 3.*",
|
|
11
11
|
"more_itertools ==11.*",
|
|
12
|
-
"types-paramiko ==4.0.0.
|
|
12
|
+
"types-paramiko ==4.0.0.20260518",
|
|
13
13
|
"types-openpyxl == 3.*",
|
|
14
|
-
"types-pysftp == 0.*",
|
|
15
14
|
"types-pytz ==2026.*",
|
|
16
15
|
"types-requests == 2.*",
|
|
17
16
|
"types-simplejson == 3.*",
|
|
18
17
|
"pandas-stubs",
|
|
19
18
|
"xlrd == 2.*",
|
|
20
|
-
"msgspec ==0.
|
|
19
|
+
"msgspec ==0.21.*",
|
|
21
20
|
"websockets==16.0",
|
|
22
21
|
]
|
|
23
22
|
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# CLOSED MODULE
|
|
2
|
+
|
|
3
|
+
__all__ = [
|
|
4
|
+
"CachedParser",
|
|
5
|
+
"ParserBase",
|
|
6
|
+
"ParserEnumError",
|
|
7
|
+
"ParserError",
|
|
8
|
+
"ParserExtraFieldsError",
|
|
9
|
+
"ParserFunction",
|
|
10
|
+
"ParserOptions",
|
|
11
|
+
"ParserTypeError",
|
|
12
|
+
"SourceEncoding",
|
|
13
|
+
"build_parser",
|
|
14
|
+
"camel_to_snake_case",
|
|
15
|
+
"is_missing",
|
|
16
|
+
"is_optional",
|
|
17
|
+
"is_string_enum_class",
|
|
18
|
+
"is_union",
|
|
19
|
+
"kebab_to_pascal_case",
|
|
20
|
+
"snake_to_camel_case",
|
|
21
|
+
]
|
|
22
|
+
|
|
23
|
+
from .cached_parser import CachedParser as CachedParser
|
|
24
|
+
from .case_convert import (
|
|
25
|
+
camel_to_snake_case as camel_to_snake_case,
|
|
26
|
+
kebab_to_pascal_case as kebab_to_pascal_case,
|
|
27
|
+
snake_to_camel_case as snake_to_camel_case,
|
|
28
|
+
)
|
|
29
|
+
from .parser_base import ParserBase as ParserBase
|
|
30
|
+
from .parser_builder import build_parser as build_parser
|
|
31
|
+
from .parser_error import (
|
|
32
|
+
ParserEnumError as ParserEnumError,
|
|
33
|
+
ParserError as ParserError,
|
|
34
|
+
ParserExtraFieldsError as ParserExtraFieldsError,
|
|
35
|
+
ParserTypeError as ParserTypeError,
|
|
36
|
+
)
|
|
37
|
+
from .parser_function_type import ParserFunction as ParserFunction
|
|
38
|
+
from .parser_options import (
|
|
39
|
+
ParserOptions as ParserOptions,
|
|
40
|
+
SourceEncoding as SourceEncoding,
|
|
41
|
+
)
|
|
42
|
+
from .type_predicates import (
|
|
43
|
+
is_missing as is_missing,
|
|
44
|
+
is_optional as is_optional,
|
|
45
|
+
is_string_enum_class as is_string_enum_class,
|
|
46
|
+
is_union as is_union,
|
|
47
|
+
)
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
from pkgs.serialization import SerialType
|
|
6
|
+
|
|
7
|
+
from .parser_base import ParserBase
|
|
8
|
+
from .parser_builder import build_parser
|
|
9
|
+
from .parser_function_type import ParserFunction
|
|
10
|
+
from .parser_options import ParserOptions
|
|
11
|
+
|
|
12
|
+
T = typing.TypeVar("T")
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class CachedParser(ParserBase[T], typing.Generic[T]):
|
|
16
|
+
def __init__(
|
|
17
|
+
self,
|
|
18
|
+
args: SerialType[T],
|
|
19
|
+
strict_property_parsing: bool = False,
|
|
20
|
+
):
|
|
21
|
+
self.arguments = args
|
|
22
|
+
self.parser_api: ParserFunction[T] | None = None
|
|
23
|
+
self.parser_storage: ParserFunction[T] | None = None
|
|
24
|
+
self.strict_property_parsing = strict_property_parsing
|
|
25
|
+
|
|
26
|
+
def parse_api(self, args: typing.Any) -> T:
|
|
27
|
+
"""
|
|
28
|
+
Parses data coming from an API/Endpoint
|
|
29
|
+
|
|
30
|
+
NOTE: Some places use this to parse storage data due to backwards
|
|
31
|
+
compatibility. If your data is coming from the DB or a file, it is
|
|
32
|
+
preferred to use parse_storage.
|
|
33
|
+
"""
|
|
34
|
+
if self.parser_api is None:
|
|
35
|
+
self.parser_api = build_parser(
|
|
36
|
+
self.arguments,
|
|
37
|
+
ParserOptions.Api(
|
|
38
|
+
strict_property_parsing=self.strict_property_parsing,
|
|
39
|
+
),
|
|
40
|
+
)
|
|
41
|
+
assert self.parser_api is not None
|
|
42
|
+
return self.parser_api(args)
|
|
43
|
+
|
|
44
|
+
def parse_storage(self, args: typing.Any) -> T:
|
|
45
|
+
"""
|
|
46
|
+
Parses data coming from the database or file.
|
|
47
|
+
"""
|
|
48
|
+
if self.parser_storage is None:
|
|
49
|
+
self.parser_storage = build_parser(
|
|
50
|
+
self.arguments,
|
|
51
|
+
ParserOptions.Storage(
|
|
52
|
+
strict_property_parsing=self.strict_property_parsing,
|
|
53
|
+
),
|
|
54
|
+
)
|
|
55
|
+
assert self.parser_storage is not None
|
|
56
|
+
return self.parser_storage(args)
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
from abc import ABC, abstractmethod
|
|
5
|
+
from importlib import resources
|
|
6
|
+
|
|
7
|
+
import msgspec.yaml
|
|
8
|
+
|
|
9
|
+
from .parser_options import SourceEncoding
|
|
10
|
+
|
|
11
|
+
T = typing.TypeVar("T")
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class ParserBase(ABC, typing.Generic[T]):
|
|
15
|
+
def parse_from_encoding(
|
|
16
|
+
self,
|
|
17
|
+
args: typing.Any,
|
|
18
|
+
*,
|
|
19
|
+
source_encoding: SourceEncoding,
|
|
20
|
+
) -> T:
|
|
21
|
+
match source_encoding:
|
|
22
|
+
case SourceEncoding.API:
|
|
23
|
+
return self.parse_api(args)
|
|
24
|
+
case SourceEncoding.STORAGE:
|
|
25
|
+
return self.parse_storage(args)
|
|
26
|
+
case _:
|
|
27
|
+
typing.assert_never(source_encoding)
|
|
28
|
+
|
|
29
|
+
# IMPROVE: Args would be better typed as "object"
|
|
30
|
+
@abstractmethod
|
|
31
|
+
def parse_storage(self, args: typing.Any) -> T: ...
|
|
32
|
+
|
|
33
|
+
@abstractmethod
|
|
34
|
+
def parse_api(self, args: typing.Any) -> T: ...
|
|
35
|
+
|
|
36
|
+
def parse_yaml_file(self, path: str) -> T:
|
|
37
|
+
with open(path, encoding="utf-8") as data_in:
|
|
38
|
+
return self.parse_storage(msgspec.yaml.decode(data_in.read()))
|
|
39
|
+
|
|
40
|
+
def parse_yaml_resource(self, package: resources.Package, resource: str) -> T:
|
|
41
|
+
with resources.open_text(package, resource) as fp:
|
|
42
|
+
return self.parse_storage(msgspec.yaml.decode(fp.read()))
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
from collections import defaultdict
|
|
5
|
+
|
|
6
|
+
from pkgs.serialization import SerialType
|
|
7
|
+
|
|
8
|
+
from .parser_cache import ParserCache, ParserCacheManager
|
|
9
|
+
from .parser_function_type import ParserFunction
|
|
10
|
+
from .parser_inner import build_parser_inner
|
|
11
|
+
from .parser_options import ParserContext, ParserOptions
|
|
12
|
+
|
|
13
|
+
T = typing.TypeVar("T")
|
|
14
|
+
|
|
15
|
+
_CACHE_MAP: dict[ParserOptions, ParserCache] = defaultdict(ParserCache)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def build_parser(
|
|
19
|
+
parsed_type: SerialType[T],
|
|
20
|
+
options: ParserOptions,
|
|
21
|
+
) -> ParserFunction[T]:
|
|
22
|
+
"""
|
|
23
|
+
Consider using CachedParser to provide a cleaner API for storage and API
|
|
24
|
+
data parsing.
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
# Keep a cache per ParserOptions type, as they produce distinct parsers
|
|
28
|
+
global_cache = _CACHE_MAP[options]
|
|
29
|
+
|
|
30
|
+
context = ParserContext(options=options, cache=ParserCacheManager(global_cache))
|
|
31
|
+
|
|
32
|
+
# PEP 695 ``type X[T] = ...`` aliases (and their subscripted forms) are not
|
|
33
|
+
# ``type`` instances, so they can't share the top-level cache keyed on
|
|
34
|
+
# ``type[Any]``. Skip the top-level cache for them; ``build_parser_inner``
|
|
35
|
+
# caches parameterized dataclasses internally by ``(type, type_var_map)``.
|
|
36
|
+
is_alias_type = isinstance(parsed_type, typing.TypeAliasType) or isinstance(
|
|
37
|
+
typing.get_origin(parsed_type), typing.TypeAliasType
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
if not is_alias_type:
|
|
41
|
+
cur_parser = global_cache.get(parsed_type)
|
|
42
|
+
if cur_parser is not None:
|
|
43
|
+
return cur_parser
|
|
44
|
+
|
|
45
|
+
built_parser = build_parser_inner(parsed_type, context, {})
|
|
46
|
+
|
|
47
|
+
if not is_alias_type:
|
|
48
|
+
context.cache.put(parsed_type, built_parser)
|
|
49
|
+
|
|
50
|
+
global_cache.update(context.cache.local_cache())
|
|
51
|
+
|
|
52
|
+
return built_parser
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import types
|
|
4
|
+
import typing
|
|
5
|
+
|
|
6
|
+
from .parser_function_type import ParserFunction
|
|
7
|
+
|
|
8
|
+
T = typing.TypeVar("T")
|
|
9
|
+
ParserCacheKey = type[typing.Any] | typing.TypeAliasType | types.UnionType
|
|
10
|
+
ParserCache = dict[
|
|
11
|
+
ParserCacheKey,
|
|
12
|
+
ParserFunction[typing.Any],
|
|
13
|
+
]
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class ParserCacheManager:
|
|
17
|
+
def __init__(self, global_cache: ParserCache) -> None:
|
|
18
|
+
self._global_cache = global_cache
|
|
19
|
+
self._local_cache: ParserCache = dict()
|
|
20
|
+
|
|
21
|
+
def get(self, key: ParserCacheKey) -> ParserFunction[typing.Any] | None:
|
|
22
|
+
if key in self._local_cache:
|
|
23
|
+
return self._local_cache[key]
|
|
24
|
+
return self._global_cache.get(key)
|
|
25
|
+
|
|
26
|
+
def put(self, key: ParserCacheKey, value: ParserFunction[typing.Any]) -> None:
|
|
27
|
+
self._local_cache[key] = value
|
|
28
|
+
|
|
29
|
+
def local_cache(self) -> ParserCache:
|
|
30
|
+
return self._local_cache
|