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.
Files changed (424) hide show
  1. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/PKG-INFO +1 -1
  2. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/_version.py +2 -2
  3. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/bundled/frontend.json +1 -1
  4. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/job_manager.py +39 -8
  5. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_job_manager.py +105 -5
  6. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/.gitignore +0 -0
  7. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/README.md +0 -0
  8. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/pyproject.toml +0 -0
  9. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/__init__.py +0 -0
  10. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/_discover.py +0 -0
  11. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/_envelope.py +0 -0
  12. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/_files.py +0 -0
  13. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/_optional.py +0 -0
  14. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/_prompt.py +0 -0
  15. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/_staging_base.py +0 -0
  16. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/_transport.py +0 -0
  17. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/actors.py +0 -0
  18. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_backend_artifact.py +0 -0
  19. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_backend_commands.py +0 -0
  20. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_backend_endpoint.py +0 -0
  21. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_backend_hook.py +0 -0
  22. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_backend_migration.py +0 -0
  23. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_backend_router.py +0 -0
  24. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_backend_schema.py +0 -0
  25. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_backend_service.py +0 -0
  26. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_backend_setting.py +0 -0
  27. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_backend_wiring.py +0 -0
  28. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_command.py +0 -0
  29. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_data_template_backend_templates.py +0 -0
  30. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_data_template_commands.py +0 -0
  31. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_data_template_frontend_assay_templates.py +0 -0
  32. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_data_template_frontend_core_templates.py +0 -0
  33. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_data_template_frontend_helpers.py +0 -0
  34. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_data_template_frontend_lab_templates.py +0 -0
  35. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_data_template_frontend_pack_templates.py +0 -0
  36. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_data_template_frontend_panel_templates.py +0 -0
  37. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_data_template_frontend_templates.py +0 -0
  38. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_data_template_frontend_workflow_templates.py +0 -0
  39. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_data_template_router_templates.py +0 -0
  40. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_field_specs.py +0 -0
  41. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_frontend_commands.py +0 -0
  42. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_frontend_routes.py +0 -0
  43. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_naming.py +0 -0
  44. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_project.py +0 -0
  45. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_r_analysis_command.py +0 -0
  46. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_r_templates.py +0 -0
  47. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_source_edits.py +0 -0
  48. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/add_template_catalog.py +0 -0
  49. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/ai_generated_instructions.md.template +0 -0
  50. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/ai_instructions.md.template +0 -0
  51. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/analysis.py +0 -0
  52. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/api_errors.py +0 -0
  53. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/app.py +0 -0
  54. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/cli.py +0 -0
  55. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/cli_build.py +0 -0
  56. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/cli_build_cmd.py +0 -0
  57. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/cli_commands/__init__.py +0 -0
  58. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/cli_commands/_utils.py +0 -0
  59. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/cli_commands/add_scaffold_cmd.py +0 -0
  60. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/cli_commands/add_templates_cmd.py +0 -0
  61. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/cli_commands/admin_cmd.py +0 -0
  62. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/cli_commands/auth_cmd.py +0 -0
  63. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/cli_commands/debug_cmd.py +0 -0
  64. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/cli_commands/experiment_cmd.py +0 -0
  65. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/cli_commands/init_cmd.py +0 -0
  66. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/cli_commands/plugin_cmd.py +0 -0
  67. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/cli_commands/project_cmd.py +0 -0
  68. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/cli_commands/status_cmd.py +0 -0
  69. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/cli_commands/status_formatting.py +0 -0
  70. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/cli_commands/update_cmd.py +0 -0
  71. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/cli_data_templates.py +0 -0
  72. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/cli_entry.py +0 -0
  73. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/client/__init__.py +0 -0
  74. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/client/_config.py +0 -0
  75. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/client/_exceptions.py +0 -0
  76. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/client/_http.py +0 -0
  77. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/client/_types.py +0 -0
  78. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/client/client.py +0 -0
  79. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/client/resources/__init__.py +0 -0
  80. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/client/resources/admin.py +0 -0
  81. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/client/resources/auth.py +0 -0
  82. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/client/resources/experiments.py +0 -0
  83. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/client/resources/objects.py +0 -0
  84. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/client/resources/plugins.py +0 -0
  85. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/client/resources/projects.py +0 -0
  86. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/client/resources/updates.py +0 -0
  87. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/compat.py +0 -0
  88. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/config.py +0 -0
  89. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/context.py +0 -0
  90. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/contract.py +0 -0
  91. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/contract_ts_types.py +0 -0
  92. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/contract_typescript.py +0 -0
  93. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/data_store.py +0 -0
  94. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/db_commands.py +0 -0
  95. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/dependency_locks.py +0 -0
  96. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/dependency_policy.py +0 -0
  97. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/deploy_command.py +0 -0
  98. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/deprecated_api_catalog.py +0 -0
  99. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/deprecated_apis.py +0 -0
  100. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/deprecated_frontend_destructure_patterns.py +0 -0
  101. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/deprecated_frontend_doc_text_patterns.py +0 -0
  102. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/deprecated_frontend_expression_patterns.py +0 -0
  103. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/deprecated_frontend_import_patterns.py +0 -0
  104. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/deprecated_frontend_patterns.py +0 -0
  105. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/deprecated_frontend_tag_patterns.py +0 -0
  106. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/deps_command.py +0 -0
  107. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/design_validation.py +0 -0
  108. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/dev_command.py +0 -0
  109. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/dev_proxy_config.py +0 -0
  110. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/__init__.py +0 -0
  111. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/cache.py +0 -0
  112. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/cli_docs.py +0 -0
  113. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/contract_docs.py +0 -0
  114. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/formatter.py +0 -0
  115. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/frontend_component_catalog.py +0 -0
  116. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/frontend_component_chooser.py +0 -0
  117. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/frontend_css_formatters.py +0 -0
  118. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/frontend_detail_formatters.py +0 -0
  119. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/frontend_extractor.py +0 -0
  120. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/manifest_lookup.py +0 -0
  121. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/python_detail_formatters.py +0 -0
  122. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/python_extractor.py +0 -0
  123. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/python_introspection.py +0 -0
  124. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/reference_docs.py +0 -0
  125. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/reference_guides.py +0 -0
  126. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/reference_search.py +0 -0
  127. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/search.py +0 -0
  128. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/suggestions.py +0 -0
  129. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/template_data.py +0 -0
  130. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/template_docs.py +0 -0
  131. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/template_search.py +0 -0
  132. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/template_usage.py +0 -0
  133. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/terminal_style.py +0 -0
  134. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs/topic_routes.py +0 -0
  135. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/docs_command.py +0 -0
  136. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_boot.py +0 -0
  137. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_command.py +0 -0
  138. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_database_checks.py +0 -0
  139. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_decorator_checks.py +0 -0
  140. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_deprecated_api_usage.py +0 -0
  141. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_deprecated_frontend.py +0 -0
  142. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_deprecated_python.py +0 -0
  143. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_fixes.py +0 -0
  144. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_frontend_checks.py +0 -0
  145. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_frontend_component_guidance.py +0 -0
  146. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_frontend_component_patterns.py +0 -0
  147. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_frontend_guidance.py +0 -0
  148. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_frontend_import_guidance.py +0 -0
  149. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_frontend_sdk_catalog.py +0 -0
  150. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_frontend_sdk_patterns.py +0 -0
  151. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_frontend_sidebar_guidance.py +0 -0
  152. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_frontend_source_utils.py +0 -0
  153. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_guidance.py +0 -0
  154. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_import_rules.py +0 -0
  155. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_models.py +0 -0
  156. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_output.py +0 -0
  157. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_platform_constraints.py +0 -0
  158. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_plugin_metadata.py +0 -0
  159. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_r_command.py +0 -0
  160. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_scan_config.py +0 -0
  161. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_sdk_checks.py +0 -0
  162. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_source_files.py +0 -0
  163. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/doctor_workspace.py +0 -0
  164. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/endpoint.py +0 -0
  165. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/ephemeral_results.py +0 -0
  166. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/events_router.py +0 -0
  167. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/exceptions.py +0 -0
  168. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/export.py +0 -0
  169. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/export_common.py +0 -0
  170. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/export_tree.py +0 -0
  171. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/filesystem.py +0 -0
  172. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/frontend_assets.py +0 -0
  173. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/generated_router.py +0 -0
  174. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/info_command.py +0 -0
  175. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/init_ai.py +0 -0
  176. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/init_backend_templates.py +0 -0
  177. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/init_command.py +0 -0
  178. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/init_files.py +0 -0
  179. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/init_frontend_templates.py +0 -0
  180. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/init_mode_templates.py +0 -0
  181. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/init_naming.py +0 -0
  182. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/init_post_scaffold.py +0 -0
  183. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/init_script_templates.py +0 -0
  184. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/init_templates.py +0 -0
  185. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/init_versions.py +0 -0
  186. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/init_workflow_templates.py +0 -0
  187. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/instrument.py +0 -0
  188. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/integrations.py +0 -0
  189. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/job_notifications.py +0 -0
  190. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/job_profiles.py +0 -0
  191. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/job_sessions.py +0 -0
  192. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/job_staging.py +0 -0
  193. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/job_stream.py +0 -0
  194. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/jobs.py +0 -0
  195. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/lcms.py +0 -0
  196. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/link_command.py +0 -0
  197. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/local_database.py +0 -0
  198. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/logging.py +0 -0
  199. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/logs_command.py +0 -0
  200. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/migrations/__init__.py +0 -0
  201. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/migrations/_alembic/env.py +0 -0
  202. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/migrations/_alembic/script.py.mako +0 -0
  203. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/migrations/_alembic_runtime.py +0 -0
  204. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/migrations/base.py +0 -0
  205. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/migrations/conformance.py +0 -0
  206. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/migrations/errors.py +0 -0
  207. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/migrations/locking.py +0 -0
  208. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/migrations/ops.py +0 -0
  209. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/migrations/runner.py +0 -0
  210. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/migrations/runtime.py +0 -0
  211. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/models.py +0 -0
  212. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/package_metadata.py +0 -0
  213. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/path_staging.py +0 -0
  214. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/payloads.py +0 -0
  215. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/permissions.py +0 -0
  216. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/platform_daemon.py +0 -0
  217. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/platform_daemon_supervisor.py +0 -0
  218. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/plugin.py +0 -0
  219. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/plugin_database.py +0 -0
  220. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/plugin_decorators.py +0 -0
  221. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/plugin_exports.py +0 -0
  222. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/plugin_frontend.py +0 -0
  223. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/plugin_lifecycle.py +0 -0
  224. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/plugin_persistence.py +0 -0
  225. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/plugin_settings.py +0 -0
  226. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/project_layout.py +0 -0
  227. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/project_python.py +0 -0
  228. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/py.typed +0 -0
  229. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/pyproject_edit.py +0 -0
  230. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/r.py +0 -0
  231. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/remote_context.py +0 -0
  232. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/repositories.py +0 -0
  233. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/result_schema.py +0 -0
  234. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/runtime.py +0 -0
  235. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/runtime_dependencies.py +0 -0
  236. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/s3.py +0 -0
  237. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/schema.py +0 -0
  238. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/sdk_generate_command.py +0 -0
  239. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/settings_router.py +0 -0
  240. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/static/generated-ui/assets/BaseModal-CJrCXCfY.js +0 -0
  241. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/static/generated-ui/assets/ExperimentPopover-IJzKM7P3.js +0 -0
  242. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/static/generated-ui/assets/ExperimentSelectorModal-N0ANhxH5.js +0 -0
  243. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/static/generated-ui/assets/SettingsModal-Bg6ixjmN.js +0 -0
  244. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/static/generated-ui/assets/Skeleton-BdmBYpaw.js +0 -0
  245. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/static/generated-ui/assets/chunk-5LNFb4hk.js +0 -0
  246. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/static/generated-ui/assets/plotly.min-DHWXmmi3.js +0 -0
  247. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/static/generated-ui/generated-ui.css +0 -0
  248. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/static/generated-ui/generated-ui.js +0 -0
  249. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/static/generated-ui/index.html +0 -0
  250. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/temp_byte_quota.py +0 -0
  251. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/templates/__init__.py +0 -0
  252. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/templates/assay_matrix.py +0 -0
  253. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/templates/base.py +0 -0
  254. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/templates/calibration_curve.py +0 -0
  255. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/templates/catalog.py +0 -0
  256. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/templates/dose_response.py +0 -0
  257. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/templates/flow_cytometry_panel.py +0 -0
  258. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/templates/instrument_run.py +0 -0
  259. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/templates/packs.py +0 -0
  260. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/templates/plate_map.py +0 -0
  261. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/templates/preset_catalog.py +0 -0
  262. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/templates/preset_helpers.py +0 -0
  263. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/templates/presets.py +0 -0
  264. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/templates/protocol_steps.py +0 -0
  265. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/templates/qpcr_plate.py +0 -0
  266. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/templates/reagent_list.py +0 -0
  267. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/templates/sample_prep.py +0 -0
  268. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/templates/sample_sheet.py +0 -0
  269. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/templates/time_course.py +0 -0
  270. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/testing/__init__.py +0 -0
  271. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/testing/harness.py +0 -0
  272. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/testing/plugins.py +0 -0
  273. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/testing/recording_context.py +0 -0
  274. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/testing/subprocess.py +0 -0
  275. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/token_auth.py +0 -0
  276. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/update_command.py +0 -0
  277. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/verify_command.py +0 -0
  278. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/src/mint_sdk/wire.py +0 -0
  279. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/__init__.py +0 -0
  280. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/conftest.py +0 -0
  281. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/scaffold_helpers.py +0 -0
  282. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_add_backend_artifact.py +0 -0
  283. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_add_backend_endpoint.py +0 -0
  284. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_add_backend_hook.py +0 -0
  285. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_add_backend_migration.py +0 -0
  286. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_add_backend_router.py +0 -0
  287. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_add_backend_schema.py +0 -0
  288. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_add_backend_service.py +0 -0
  289. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_add_backend_setting.py +0 -0
  290. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_add_command.py +0 -0
  291. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_add_r_templates.py +0 -0
  292. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_alembic_metadata.py +0 -0
  293. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_alembic_runtime.py +0 -0
  294. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_alembic_runtime_concurrency.py +0 -0
  295. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_alembic_runtime_safety.py +0 -0
  296. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_api_errors.py +0 -0
  297. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_app.py +0 -0
  298. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_calendar_contract.py +0 -0
  299. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_cli.py +0 -0
  300. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_cli_command_utils.py +0 -0
  301. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_cli_extras.py +0 -0
  302. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_cli_status_formatting.py +0 -0
  303. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_cli_typer.py +0 -0
  304. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_cli_utils.py +0 -0
  305. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_client/__init__.py +0 -0
  306. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_client/test_admin_plugin_update_api.py +0 -0
  307. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_client/test_analysis_artifacts_api.py +0 -0
  308. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_client/test_auth_api.py +0 -0
  309. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_client/test_client.py +0 -0
  310. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_client/test_config.py +0 -0
  311. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_client/test_exceptions.py +0 -0
  312. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_client/test_experiments_api.py +0 -0
  313. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_client/test_http.py +0 -0
  314. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_client/test_objects_api.py +0 -0
  315. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_compat.py +0 -0
  316. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_config_runtime.py +0 -0
  317. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_contract.py +0 -0
  318. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_data_store.py +0 -0
  319. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_db_commands.py +0 -0
  320. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_dependency_locks.py +0 -0
  321. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_dependency_policy.py +0 -0
  322. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_deploy_command.py +0 -0
  323. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_deprecated_frontend_patterns.py +0 -0
  324. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_design_validation.py +0 -0
  325. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_dev_command.py +0 -0
  326. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_discover.py +0 -0
  327. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_docs_command.py +0 -0
  328. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_docs_manifest_lookup.py +0 -0
  329. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_docs_python_detail_formatters.py +0 -0
  330. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_docs_python_extractor.py +0 -0
  331. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_docs_python_introspection.py +0 -0
  332. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_docs_template_search.py +0 -0
  333. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_doctor_command.py +0 -0
  334. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_doctor_decorator_checks.py +0 -0
  335. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_doctor_fixes_versions.py +0 -0
  336. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_doctor_import_rules.py +0 -0
  337. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_doctor_output.py +0 -0
  338. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_doctor_platform_constraints.py +0 -0
  339. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_doctor_r_command.py +0 -0
  340. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_doctor_sdk_checks.py +0 -0
  341. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_doctor_workspace.py +0 -0
  342. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_endpoint_host_integration.py +0 -0
  343. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_endpoint_routing.py +0 -0
  344. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_ephemeral_results.py +0 -0
  345. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_error_envelope.py +0 -0
  346. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_events_router.py +0 -0
  347. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_exceptions.py +0 -0
  348. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_experiment_endpoint_scope.py +0 -0
  349. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_export.py +0 -0
  350. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_filesystem.py +0 -0
  351. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_foreground_daemon.py +0 -0
  352. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_frontend_assets.py +0 -0
  353. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_generated_ui_example.py +0 -0
  354. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_generated_ui_router.py +0 -0
  355. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_info_command.py +0 -0
  356. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_init_command.py +0 -0
  357. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_init_modes.py +0 -0
  358. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_init_versions.py +0 -0
  359. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_instrument.py +0 -0
  360. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_job_definition.py +0 -0
  361. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_job_manager_activity.py +0 -0
  362. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_job_notification_bridge.py +0 -0
  363. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_job_results.py +0 -0
  364. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_job_router.py +0 -0
  365. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_job_staging.py +0 -0
  366. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_job_stream.py +0 -0
  367. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_jobs.py +0 -0
  368. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_lazy_exports.py +0 -0
  369. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_lcms.py +0 -0
  370. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_link_command.py +0 -0
  371. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_local_database.py +0 -0
  372. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_logs_command.py +0 -0
  373. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_migration_base.py +0 -0
  374. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_migration_conformance.py +0 -0
  375. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_migration_errors.py +0 -0
  376. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_migration_locking.py +0 -0
  377. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_migration_ops.py +0 -0
  378. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_migration_runner.py +0 -0
  379. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_migrations_lazy_import.py +0 -0
  380. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_models.py +0 -0
  381. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_models_color.py +0 -0
  382. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_notification_contract.py +0 -0
  383. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_path_staging.py +0 -0
  384. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_permission_decorators.py +0 -0
  385. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_permissions.py +0 -0
  386. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_platform_cli_commands.py +0 -0
  387. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_platform_daemon.py +0 -0
  388. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_platform_daemon_supervisor.py +0 -0
  389. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_plugin.py +0 -0
  390. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_plugin_actor.py +0 -0
  391. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_plugin_database.py +0 -0
  392. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_plugin_decorators.py +0 -0
  393. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_plugin_save_load.py +0 -0
  394. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_plugin_settings_model.py +0 -0
  395. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_plugin_test_harness.py +0 -0
  396. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_project_layout.py +0 -0
  397. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_project_layout_integration.py +0 -0
  398. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_prompt.py +0 -0
  399. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_r_bridge.py +0 -0
  400. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_recording_context.py +0 -0
  401. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_remote_calendar_dispatch.py +0 -0
  402. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_remote_context.py +0 -0
  403. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_remote_notification_dispatch.py +0 -0
  404. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_remote_transport.py +0 -0
  405. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_repository_contract.py +0 -0
  406. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_runtime.py +0 -0
  407. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_runtime_dependencies.py +0 -0
  408. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_schema.py +0 -0
  409. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_sdk_dependency_ownership.py +0 -0
  410. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_sdk_documentation.py +0 -0
  411. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_sdk_generate_command.py +0 -0
  412. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_security_boundaries.py +0 -0
  413. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_settings_atomic_patch.py +0 -0
  414. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_settings_router.py +0 -0
  415. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_staged_job_runtime.py +0 -0
  416. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_temp_byte_quota.py +0 -0
  417. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_templates.py +0 -0
  418. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_testing.py +0 -0
  419. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_token_auth.py +0 -0
  420. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_typed_actor_contract.py +0 -0
  421. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_update_command.py +0 -0
  422. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_verify_command.py +0 -0
  423. {mint_sdk-1.2.4 → mint_sdk-1.2.6}/tests/test_wire.py +0 -0
  424. {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.4
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.4'
22
- __version_tuple__ = version_tuple = (1, 2, 4)
21
+ __version__ = version = '1.2.6'
22
+ __version_tuple__ = version_tuple = (1, 2, 6)
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "sdk": "frontend",
3
- "version": "1.2.4",
3
+ "version": "1.2.6",
4
4
  "categories": {
5
5
  "components": [
6
6
  {
@@ -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
- runtime.jobs.fail(item.job_id, f"Service job failed (job {item.job_id})")
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
- runtime.jobs.fail(item.job_id, f"Job failed (job {item.job_id})")
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, 1.0)
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
- logger.exception("Job worker failed (job %s)", job_id)
2090
- with suppress(BrokenPipeError, EOFError, OSError):
2091
- connection.send(("error", None))
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 test_worker_handler_exception_logs_traceback(
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
- assert (
1874
- "Job worker failed (job job-id)" in caplog.text
1875
- and "RuntimeError: instrument offline" in caplog.text
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