mint-sdk 1.2.4__tar.gz → 1.2.6__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.
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/PKG-INFO +1 -1
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/_version.py +2 -2
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/bundled/frontend.json +1 -1
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/job_manager.py +39 -8
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_job_manager.py +105 -5
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/.gitignore +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/README.md +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/pyproject.toml +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/__init__.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/_discover.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/_envelope.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/_files.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/_optional.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/_prompt.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/_staging_base.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/_transport.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/actors.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_backend_artifact.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_backend_commands.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_backend_endpoint.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_backend_hook.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_backend_migration.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_backend_router.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_backend_schema.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_backend_service.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_backend_setting.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_backend_wiring.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_command.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_data_template_backend_templates.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_data_template_commands.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_data_template_frontend_assay_templates.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_data_template_frontend_core_templates.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_data_template_frontend_helpers.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_data_template_frontend_lab_templates.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_data_template_frontend_pack_templates.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_data_template_frontend_panel_templates.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_data_template_frontend_templates.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_data_template_frontend_workflow_templates.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_data_template_router_templates.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_field_specs.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_frontend_commands.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_frontend_routes.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_naming.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_project.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_r_analysis_command.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_r_templates.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_source_edits.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_template_catalog.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/ai_generated_instructions.md.template +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/ai_instructions.md.template +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/analysis.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/api_errors.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/app.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/cli.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/cli_build.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/cli_build_cmd.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/cli_commands/__init__.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/cli_commands/_utils.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/cli_commands/add_scaffold_cmd.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/cli_commands/add_templates_cmd.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/cli_commands/admin_cmd.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/cli_commands/auth_cmd.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/cli_commands/debug_cmd.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/cli_commands/experiment_cmd.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/cli_commands/init_cmd.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/cli_commands/plugin_cmd.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/cli_commands/project_cmd.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/cli_commands/status_cmd.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/cli_commands/status_formatting.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/cli_commands/update_cmd.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/cli_data_templates.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/cli_entry.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/client/__init__.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/client/_config.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/client/_exceptions.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/client/_http.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/client/_types.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/client/client.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/client/resources/__init__.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/client/resources/admin.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/client/resources/auth.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/client/resources/experiments.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/client/resources/objects.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/client/resources/plugins.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/client/resources/projects.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/client/resources/updates.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/compat.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/config.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/context.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/contract.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/contract_ts_types.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/contract_typescript.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/data_store.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/db_commands.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/dependency_locks.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/dependency_policy.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/deploy_command.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/deprecated_api_catalog.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/deprecated_apis.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/deprecated_frontend_destructure_patterns.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/deprecated_frontend_doc_text_patterns.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/deprecated_frontend_expression_patterns.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/deprecated_frontend_import_patterns.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/deprecated_frontend_patterns.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/deprecated_frontend_tag_patterns.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/deps_command.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/design_validation.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/dev_command.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/dev_proxy_config.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/__init__.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/cache.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/cli_docs.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/contract_docs.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/formatter.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/frontend_component_catalog.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/frontend_component_chooser.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/frontend_css_formatters.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/frontend_detail_formatters.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/frontend_extractor.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/manifest_lookup.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/python_detail_formatters.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/python_extractor.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/python_introspection.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/reference_docs.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/reference_guides.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/reference_search.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/search.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/suggestions.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/template_data.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/template_docs.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/template_search.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/template_usage.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/terminal_style.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/topic_routes.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs_command.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_boot.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_command.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_database_checks.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_decorator_checks.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_deprecated_api_usage.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_deprecated_frontend.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_deprecated_python.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_fixes.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_frontend_checks.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_frontend_component_guidance.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_frontend_component_patterns.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_frontend_guidance.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_frontend_import_guidance.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_frontend_sdk_catalog.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_frontend_sdk_patterns.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_frontend_sidebar_guidance.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_frontend_source_utils.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_guidance.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_import_rules.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_models.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_output.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_platform_constraints.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_plugin_metadata.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_r_command.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_scan_config.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_sdk_checks.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_source_files.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_workspace.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/endpoint.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/ephemeral_results.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/events_router.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/exceptions.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/export.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/export_common.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/export_tree.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/filesystem.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/frontend_assets.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/generated_router.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/info_command.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/init_ai.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/init_backend_templates.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/init_command.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/init_files.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/init_frontend_templates.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/init_mode_templates.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/init_naming.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/init_post_scaffold.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/init_script_templates.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/init_templates.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/init_versions.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/init_workflow_templates.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/instrument.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/integrations.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/job_notifications.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/job_profiles.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/job_sessions.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/job_staging.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/job_stream.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/jobs.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/lcms.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/link_command.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/local_database.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/logging.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/logs_command.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/migrations/__init__.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/migrations/_alembic/env.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/migrations/_alembic/script.py.mako +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/migrations/_alembic_runtime.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/migrations/base.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/migrations/conformance.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/migrations/errors.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/migrations/locking.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/migrations/ops.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/migrations/runner.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/migrations/runtime.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/models.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/package_metadata.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/path_staging.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/payloads.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/permissions.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/platform_daemon.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/platform_daemon_supervisor.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/plugin.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/plugin_database.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/plugin_decorators.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/plugin_exports.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/plugin_frontend.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/plugin_lifecycle.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/plugin_persistence.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/plugin_settings.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/project_layout.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/project_python.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/py.typed +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/pyproject_edit.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/r.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/remote_context.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/repositories.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/result_schema.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/runtime.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/runtime_dependencies.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/s3.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/schema.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/sdk_generate_command.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/settings_router.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/static/generated-ui/assets/BaseModal-CJrCXCfY.js +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/static/generated-ui/assets/ExperimentPopover-IJzKM7P3.js +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/static/generated-ui/assets/ExperimentSelectorModal-N0ANhxH5.js +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/static/generated-ui/assets/SettingsModal-Bg6ixjmN.js +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/static/generated-ui/assets/Skeleton-BdmBYpaw.js +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/static/generated-ui/assets/chunk-5LNFb4hk.js +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/static/generated-ui/assets/plotly.min-DHWXmmi3.js +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/static/generated-ui/generated-ui.css +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/static/generated-ui/generated-ui.js +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/static/generated-ui/index.html +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/temp_byte_quota.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/templates/__init__.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/templates/assay_matrix.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/templates/base.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/templates/calibration_curve.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/templates/catalog.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/templates/dose_response.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/templates/flow_cytometry_panel.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/templates/instrument_run.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/templates/packs.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/templates/plate_map.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/templates/preset_catalog.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/templates/preset_helpers.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/templates/presets.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/templates/protocol_steps.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/templates/qpcr_plate.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/templates/reagent_list.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/templates/sample_prep.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/templates/sample_sheet.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/templates/time_course.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/testing/__init__.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/testing/harness.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/testing/plugins.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/testing/recording_context.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/testing/subprocess.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/token_auth.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/update_command.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/verify_command.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/wire.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/__init__.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/conftest.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/scaffold_helpers.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_add_backend_artifact.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_add_backend_endpoint.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_add_backend_hook.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_add_backend_migration.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_add_backend_router.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_add_backend_schema.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_add_backend_service.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_add_backend_setting.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_add_command.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_add_r_templates.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_alembic_metadata.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_alembic_runtime.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_alembic_runtime_concurrency.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_alembic_runtime_safety.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_api_errors.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_app.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_calendar_contract.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_cli.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_cli_command_utils.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_cli_extras.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_cli_status_formatting.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_cli_typer.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_cli_utils.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_client/__init__.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_client/test_admin_plugin_update_api.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_client/test_analysis_artifacts_api.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_client/test_auth_api.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_client/test_client.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_client/test_config.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_client/test_exceptions.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_client/test_experiments_api.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_client/test_http.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_client/test_objects_api.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_compat.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_config_runtime.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_contract.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_data_store.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_db_commands.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_dependency_locks.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_dependency_policy.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_deploy_command.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_deprecated_frontend_patterns.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_design_validation.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_dev_command.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_discover.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_docs_command.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_docs_manifest_lookup.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_docs_python_detail_formatters.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_docs_python_extractor.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_docs_python_introspection.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_docs_template_search.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_doctor_command.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_doctor_decorator_checks.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_doctor_fixes_versions.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_doctor_import_rules.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_doctor_output.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_doctor_platform_constraints.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_doctor_r_command.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_doctor_sdk_checks.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_doctor_workspace.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_endpoint_host_integration.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_endpoint_routing.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_ephemeral_results.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_error_envelope.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_events_router.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_exceptions.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_experiment_endpoint_scope.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_export.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_filesystem.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_foreground_daemon.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_frontend_assets.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_generated_ui_example.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_generated_ui_router.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_info_command.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_init_command.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_init_modes.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_init_versions.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_instrument.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_job_definition.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_job_manager_activity.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_job_notification_bridge.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_job_results.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_job_router.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_job_staging.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_job_stream.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_jobs.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_lazy_exports.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_lcms.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_link_command.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_local_database.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_logs_command.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_migration_base.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_migration_conformance.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_migration_errors.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_migration_locking.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_migration_ops.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_migration_runner.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_migrations_lazy_import.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_models.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_models_color.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_notification_contract.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_path_staging.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_permission_decorators.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_permissions.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_platform_cli_commands.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_platform_daemon.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_platform_daemon_supervisor.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_plugin.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_plugin_actor.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_plugin_database.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_plugin_decorators.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_plugin_save_load.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_plugin_settings_model.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_plugin_test_harness.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_project_layout.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_project_layout_integration.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_prompt.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_r_bridge.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_recording_context.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_remote_calendar_dispatch.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_remote_context.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_remote_notification_dispatch.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_remote_transport.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_repository_contract.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_runtime.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_runtime_dependencies.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_schema.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_sdk_dependency_ownership.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_sdk_documentation.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_sdk_generate_command.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_security_boundaries.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_settings_atomic_patch.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_settings_router.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_staged_job_runtime.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_temp_byte_quota.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_templates.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_testing.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_token_auth.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_typed_actor_contract.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_update_command.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_verify_command.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_wire.py +0 -0
- {mint_sdk-1.2.4 → mint_sdk-1.2.6}/uv.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: mint-sdk
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.6
|
|
4
4
|
Summary: MINT Plugin SDK - Build analysis plugins for the MINT (Mass-spec INtegrated Toolkit) platform
|
|
5
5
|
Project-URL: Homepage, https://github.com/MorscherLab/MINT
|
|
6
6
|
Project-URL: Documentation, https://github.com/MorscherLab/MINT/tree/main/packages/sdk-python#readme
|
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '1.2.
|
|
22
|
-
__version_tuple__ = version_tuple = (1, 2,
|
|
21
|
+
__version__ = version = '1.2.6'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 2, 6)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -21,6 +21,7 @@ import os
|
|
|
21
21
|
import pickle
|
|
22
22
|
import re
|
|
23
23
|
import signal
|
|
24
|
+
import traceback
|
|
24
25
|
from collections import deque
|
|
25
26
|
from collections.abc import Callable, Mapping
|
|
26
27
|
from contextlib import suppress
|
|
@@ -83,8 +84,13 @@ from mint_sdk.temp_byte_quota import (
|
|
|
83
84
|
)
|
|
84
85
|
|
|
85
86
|
_CANCEL_GRACE_SECONDS = 3.0
|
|
87
|
+
# SIGKILL cannot be caught, but the kernel still has to tear the worker down:
|
|
88
|
+
# a 10 GB, 158-thread worker took ~1 s after SIGKILL to disappear.
|
|
89
|
+
_WORKER_KILL_WAIT_SECONDS = 30.0
|
|
86
90
|
_FINALIZER_RETRY_BASE_SECONDS = 0.1
|
|
87
91
|
_MAX_PROGRESS_BYTES = 64 * 1024
|
|
92
|
+
_MAX_ERROR_CHARS = 2000
|
|
93
|
+
_MAX_TRACEBACK_CHARS = 64 * 1024
|
|
88
94
|
_MEDIA_TYPE_PATTERN = re.compile(r"^[A-Za-z0-9!#$&^_.+-]+/[A-Za-z0-9!#$&^_.+-]+$")
|
|
89
95
|
|
|
90
96
|
logger = logging.getLogger(__name__)
|
|
@@ -1568,10 +1574,12 @@ class JobManager:
|
|
|
1568
1574
|
item.job_id,
|
|
1569
1575
|
f"Job result exceeds the configured size limit (job {item.job_id})",
|
|
1570
1576
|
)
|
|
1571
|
-
except Exception:
|
|
1577
|
+
except Exception as exc:
|
|
1578
|
+
logger.exception("Service job failed (job %s)", item.job_id)
|
|
1572
1579
|
state = runtime.jobs.get_snapshot(item.job_id)
|
|
1573
1580
|
if state is not None and state.status not in TERMINAL_JOB_STATUSES:
|
|
1574
|
-
|
|
1581
|
+
cause = exc.__cause__ or exc
|
|
1582
|
+
runtime.jobs.fail(item.job_id, _job_error(_describe_exception(cause), item.job_id))
|
|
1575
1583
|
finally:
|
|
1576
1584
|
if running.draining:
|
|
1577
1585
|
runtime.jobs.finish_draining(item.job_id)
|
|
@@ -1651,7 +1659,17 @@ class JobManager:
|
|
|
1651
1659
|
if running.cancel_requested:
|
|
1652
1660
|
runtime.jobs.cancel(item.job_id)
|
|
1653
1661
|
else:
|
|
1654
|
-
|
|
1662
|
+
failure = payload if isinstance(payload, dict) else {}
|
|
1663
|
+
detail = failure.get("message")
|
|
1664
|
+
trace = failure.get("traceback")
|
|
1665
|
+
logger.error(
|
|
1666
|
+
"Job worker failed (job %s)\n%s",
|
|
1667
|
+
item.job_id,
|
|
1668
|
+
trace[:_MAX_TRACEBACK_CHARS] if isinstance(trace, str) else "",
|
|
1669
|
+
)
|
|
1670
|
+
if not isinstance(detail, str) or not detail:
|
|
1671
|
+
detail = "Job failed"
|
|
1672
|
+
runtime.jobs.fail(item.job_id, _job_error(detail, item.job_id))
|
|
1655
1673
|
break
|
|
1656
1674
|
if not running.process.is_alive():
|
|
1657
1675
|
if running.cancel_requested:
|
|
@@ -1707,7 +1725,7 @@ class JobManager:
|
|
|
1707
1725
|
force=True,
|
|
1708
1726
|
)
|
|
1709
1727
|
if running.process.is_alive():
|
|
1710
|
-
await asyncio.to_thread(running.process.join,
|
|
1728
|
+
await asyncio.to_thread(running.process.join, _WORKER_KILL_WAIT_SECONDS)
|
|
1711
1729
|
running.reaped = not running.process.is_alive()
|
|
1712
1730
|
return running.reaped
|
|
1713
1731
|
|
|
@@ -2085,10 +2103,13 @@ def _job_worker_entry(
|
|
|
2085
2103
|
connection.send(("result_too_large", None))
|
|
2086
2104
|
return
|
|
2087
2105
|
connection.send(("result", payload))
|
|
2088
|
-
except BaseException:
|
|
2089
|
-
|
|
2090
|
-
|
|
2091
|
-
|
|
2106
|
+
except BaseException as exc:
|
|
2107
|
+
# The host logs the traceback; its handlers own the platform log file.
|
|
2108
|
+
failure = {"message": _describe_exception(exc), "traceback": traceback.format_exc()}
|
|
2109
|
+
try:
|
|
2110
|
+
connection.send(("error", failure))
|
|
2111
|
+
except (BrokenPipeError, EOFError, OSError):
|
|
2112
|
+
logger.exception("Job worker failed (job %s)", job_id)
|
|
2092
2113
|
finally:
|
|
2093
2114
|
connection.close()
|
|
2094
2115
|
|
|
@@ -2117,6 +2138,16 @@ def _has_control_characters(value: str) -> bool:
|
|
|
2117
2138
|
return any(ord(character) < 32 or ord(character) == 127 for character in value)
|
|
2118
2139
|
|
|
2119
2140
|
|
|
2141
|
+
def _describe_exception(exc: BaseException) -> str:
|
|
2142
|
+
return f"{type(exc).__name__}: {exc}" if str(exc) else type(exc).__name__
|
|
2143
|
+
|
|
2144
|
+
|
|
2145
|
+
def _job_error(detail: str, job_id: str) -> str:
|
|
2146
|
+
"""Bound a handler-supplied failure reason and tag it with the job id."""
|
|
2147
|
+
|
|
2148
|
+
return f"{detail[:_MAX_ERROR_CHARS]} (job {job_id})"
|
|
2149
|
+
|
|
2150
|
+
|
|
2120
2151
|
def _send_worker_progress(connection: Connection, values: dict[str, Any]) -> None:
|
|
2121
2152
|
if _json_size(values) > _MAX_PROGRESS_BYTES:
|
|
2122
2153
|
raise ValueError("Job progress update exceeds the configured size limit")
|
|
@@ -169,6 +169,10 @@ class _ServicePlugin:
|
|
|
169
169
|
finally:
|
|
170
170
|
self.active -= 1
|
|
171
171
|
|
|
172
|
+
@job(profile=ServiceJob(timeout=1))
|
|
173
|
+
async def raises(self, inputs: _Inputs) -> str:
|
|
174
|
+
raise ValueError(f"service broke on {inputs.label}")
|
|
175
|
+
|
|
172
176
|
@job(profile=ServiceJob(timeout=0.01))
|
|
173
177
|
async def times_out(self, inputs: _Inputs) -> str:
|
|
174
178
|
await asyncio.sleep(inputs.delay)
|
|
@@ -280,6 +284,10 @@ class _Plugin:
|
|
|
280
284
|
context.warn("Low signal")
|
|
281
285
|
return inputs.label
|
|
282
286
|
|
|
287
|
+
@job(cpu=1)
|
|
288
|
+
def raises(self, inputs: _Inputs) -> str:
|
|
289
|
+
raise ValueError(f"worker broke on {inputs.label}")
|
|
290
|
+
|
|
283
291
|
@job(cpu=1)
|
|
284
292
|
def invalid_output(self, inputs: _Inputs) -> int:
|
|
285
293
|
return inputs.label # type: ignore[return-value]
|
|
@@ -718,6 +726,26 @@ async def test_service_jobs_timeout_and_cancel_without_worker_processes() -> Non
|
|
|
718
726
|
assert cancelled is not None and cancelled.status.value == "cancelled"
|
|
719
727
|
|
|
720
728
|
|
|
729
|
+
@pytest.mark.asyncio
|
|
730
|
+
async def test_service_exception_message_is_reported_as_job_error() -> None:
|
|
731
|
+
manager = JobManager(JobManagerLimits(cpu_slots=1))
|
|
732
|
+
runtime = manager.register(_ServicePlugin())
|
|
733
|
+
session = runtime.create_session(owner_user_id="alice", tab_id="service")
|
|
734
|
+
try:
|
|
735
|
+
job_state = await runtime.submit(
|
|
736
|
+
"raises",
|
|
737
|
+
{"label": "sample.raw"},
|
|
738
|
+
actor=PluginActor(user_id="alice"),
|
|
739
|
+
session_id=session.id,
|
|
740
|
+
client_request_id="service-raises",
|
|
741
|
+
)
|
|
742
|
+
completed = await runtime.wait(job_state.job_id, timeout=5.0)
|
|
743
|
+
finally:
|
|
744
|
+
await manager.shutdown()
|
|
745
|
+
|
|
746
|
+
assert completed.error == f"ValueError: service broke on sample.raw (job {job_state.job_id})"
|
|
747
|
+
|
|
748
|
+
|
|
721
749
|
@pytest.mark.asyncio
|
|
722
750
|
async def test_service_cancel_is_bounded_when_handler_swallows_cancellation(
|
|
723
751
|
monkeypatch: pytest.MonkeyPatch,
|
|
@@ -1600,6 +1628,51 @@ async def test_invalid_progress_fails_job_instead_of_leaving_it_running() -> Non
|
|
|
1600
1628
|
assert completed.status.value == "failed"
|
|
1601
1629
|
|
|
1602
1630
|
|
|
1631
|
+
@pytest.mark.asyncio
|
|
1632
|
+
async def test_worker_exception_message_is_reported_as_job_error() -> None:
|
|
1633
|
+
manager = JobManager(JobManagerLimits(cpu_slots=1))
|
|
1634
|
+
runtime = manager.register(_Plugin())
|
|
1635
|
+
session = runtime.create_session(owner_user_id="alice", tab_id="a")
|
|
1636
|
+
try:
|
|
1637
|
+
job_state = await runtime.submit(
|
|
1638
|
+
"raises",
|
|
1639
|
+
{"label": "sample.raw"},
|
|
1640
|
+
actor=PluginActor(user_id="alice"),
|
|
1641
|
+
session_id=session.id,
|
|
1642
|
+
client_request_id="raises",
|
|
1643
|
+
)
|
|
1644
|
+
completed = await runtime.wait(job_state.job_id, timeout=5.0)
|
|
1645
|
+
finally:
|
|
1646
|
+
await manager.shutdown()
|
|
1647
|
+
|
|
1648
|
+
assert completed.error == f"ValueError: worker broke on sample.raw (job {job_state.job_id})"
|
|
1649
|
+
|
|
1650
|
+
|
|
1651
|
+
@pytest.mark.asyncio
|
|
1652
|
+
async def test_host_logs_worker_traceback(caplog: pytest.LogCaptureFixture) -> None:
|
|
1653
|
+
manager = JobManager(JobManagerLimits(cpu_slots=1))
|
|
1654
|
+
runtime = manager.register(_Plugin())
|
|
1655
|
+
session = runtime.create_session(owner_user_id="alice", tab_id="a")
|
|
1656
|
+
try:
|
|
1657
|
+
job_state = await runtime.submit(
|
|
1658
|
+
"raises",
|
|
1659
|
+
{"label": "logged.raw"},
|
|
1660
|
+
actor=PluginActor(user_id="alice"),
|
|
1661
|
+
session_id=session.id,
|
|
1662
|
+
client_request_id="raises-logged",
|
|
1663
|
+
)
|
|
1664
|
+
await runtime.wait(job_state.job_id, timeout=5.0)
|
|
1665
|
+
finally:
|
|
1666
|
+
await manager.shutdown()
|
|
1667
|
+
|
|
1668
|
+
assert any(
|
|
1669
|
+
record.name == job_manager_module.__name__
|
|
1670
|
+
and "Traceback" in record.getMessage()
|
|
1671
|
+
and "worker broke on logged.raw" in record.getMessage()
|
|
1672
|
+
for record in caplog.records
|
|
1673
|
+
)
|
|
1674
|
+
|
|
1675
|
+
|
|
1603
1676
|
@pytest.mark.asyncio
|
|
1604
1677
|
async def test_structured_progress_and_warnings_cross_the_worker_boundary() -> None:
|
|
1605
1678
|
manager = JobManager(JobManagerLimits(cpu_slots=1))
|
|
@@ -1845,9 +1918,8 @@ def test_worker_rejects_oversized_result_before_sending_payload(
|
|
|
1845
1918
|
assert sent_messages == ["ready", "result_too_large"]
|
|
1846
1919
|
|
|
1847
1920
|
|
|
1848
|
-
def
|
|
1921
|
+
def test_worker_handler_exception_sends_traceback_to_host(
|
|
1849
1922
|
monkeypatch: pytest.MonkeyPatch,
|
|
1850
|
-
caplog: pytest.LogCaptureFixture,
|
|
1851
1923
|
) -> None:
|
|
1852
1924
|
connection = Mock()
|
|
1853
1925
|
definition = Mock(id="failing-job")
|
|
@@ -1870,9 +1942,11 @@ def test_worker_handler_exception_logs_traceback(
|
|
|
1870
1942
|
connection,
|
|
1871
1943
|
)
|
|
1872
1944
|
|
|
1873
|
-
|
|
1874
|
-
|
|
1875
|
-
|
|
1945
|
+
message, payload = connection.send.call_args_list[-1].args[0]
|
|
1946
|
+
assert (message, payload["message"], "Traceback" in payload["traceback"]) == (
|
|
1947
|
+
"error",
|
|
1948
|
+
"RuntimeError: instrument offline",
|
|
1949
|
+
True,
|
|
1876
1950
|
)
|
|
1877
1951
|
|
|
1878
1952
|
|
|
@@ -1908,6 +1982,32 @@ def test_force_cancel_terminates_the_worker_process_group(
|
|
|
1908
1982
|
)
|
|
1909
1983
|
|
|
1910
1984
|
|
|
1985
|
+
class _SlowDyingProcess:
|
|
1986
|
+
"""A killed worker whose kernel teardown outlasts one second."""
|
|
1987
|
+
|
|
1988
|
+
pid = 4321
|
|
1989
|
+
|
|
1990
|
+
def __init__(self, seconds_to_die: float) -> None:
|
|
1991
|
+
self.remaining = seconds_to_die
|
|
1992
|
+
|
|
1993
|
+
def join(self, timeout: float | None = None) -> None:
|
|
1994
|
+
self.remaining -= timeout or 0
|
|
1995
|
+
|
|
1996
|
+
def is_alive(self) -> bool:
|
|
1997
|
+
return self.remaining > 0
|
|
1998
|
+
|
|
1999
|
+
|
|
2000
|
+
def test_reap_waits_for_a_killed_worker_with_slow_teardown(
|
|
2001
|
+
monkeypatch: pytest.MonkeyPatch,
|
|
2002
|
+
) -> None:
|
|
2003
|
+
monkeypatch.setattr(job_manager_module, "_terminate_worker_process", Mock())
|
|
2004
|
+
running = Mock(reaped=False, process=_SlowDyingProcess(seconds_to_die=5.0))
|
|
2005
|
+
|
|
2006
|
+
reaped = asyncio.run(JobManager._reap_worker(Mock(), running))
|
|
2007
|
+
|
|
2008
|
+
assert reaped is True
|
|
2009
|
+
|
|
2010
|
+
|
|
1911
2011
|
def test_cancel_never_signals_the_host_process_group(
|
|
1912
2012
|
monkeypatch: pytest.MonkeyPatch,
|
|
1913
2013
|
) -> None:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_data_template_frontend_assay_templates.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_data_template_frontend_panel_templates.py
RENAMED
|
File without changes
|
|
File without changes
|
{mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_data_template_frontend_workflow_templates.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|