labqoat 0.2.2__tar.gz → 0.2.4__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 (723) hide show
  1. {labqoat-0.2.2 → labqoat-0.2.4}/PKG-INFO +1 -1
  2. {labqoat-0.2.2 → labqoat-0.2.4}/pyproject.toml +1 -1
  3. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/__init__.py +1 -1
  4. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/base_client.py +3 -1
  5. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/run_command_catalog.py +1 -0
  6. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/skills/bundled/labqoat-cli/SKILL.md +3 -1
  7. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/skills/bundled/labqoat-data/SKILL.md +10 -9
  8. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/skills/bundled/labqoat-runs/SKILL.md +18 -8
  9. labqoat-0.2.4/src/labqoat/compute/dataset_row_parts.py +70 -0
  10. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/run_datasets.py +23 -14
  11. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/worker/async_scoped_api.py +1 -1
  12. {labqoat-0.2.2 → labqoat-0.2.4}/uv.lock +1 -1
  13. {labqoat-0.2.2 → labqoat-0.2.4}/.gitignore +0 -0
  14. {labqoat-0.2.2 → labqoat-0.2.4}/README.md +0 -0
  15. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/__main__.py +0 -0
  16. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/__init__.py +0 -0
  17. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/analytics_query.py +0 -0
  18. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/api_index.py +0 -0
  19. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/asset_batch.py +0 -0
  20. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/asset_batch_complete.py +0 -0
  21. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/asset_batch_page.py +0 -0
  22. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/asset_record.py +0 -0
  23. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/asset_record_page.py +0 -0
  24. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/attempt_page.py +0 -0
  25. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/automatic_recovery_policy.py +0 -0
  26. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/budget_adjustment.py +0 -0
  27. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/budget_adjustment_request.py +0 -0
  28. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/budget_reconciliation_request.py +0 -0
  29. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/build.py +0 -0
  30. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/build_log_page.py +0 -0
  31. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/build_page.py +0 -0
  32. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/build_stream_event.py +0 -0
  33. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/capabilities.py +0 -0
  34. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/checkpoint.py +0 -0
  35. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/checkpoint_page.py +0 -0
  36. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/child_outcome.py +0 -0
  37. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/compute_function.py +0 -0
  38. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/compute_host.py +0 -0
  39. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/compute_host_enrollment.py +0 -0
  40. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/compute_host_page.py +0 -0
  41. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/compute_host_share.py +0 -0
  42. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/compute_location_policy.py +0 -0
  43. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/compute_offering.py +0 -0
  44. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/compute_offering_page.py +0 -0
  45. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/compute_publication.py +0 -0
  46. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/compute_settings.py +0 -0
  47. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/compute_usage.py +0 -0
  48. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/compute_worker_pool.py +0 -0
  49. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/dashboard.py +0 -0
  50. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/dashboard_page.py +0 -0
  51. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/dashboard_version_page.py +0 -0
  52. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/dataset_import.py +0 -0
  53. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/dataset_import_event.py +0 -0
  54. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/dataset_publication.py +0 -0
  55. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/dataset_publication_event.py +0 -0
  56. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/dataset_repository.py +0 -0
  57. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/dataset_repository_page.py +0 -0
  58. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/dataset_revision.py +0 -0
  59. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/dataset_revision_files.py +0 -0
  60. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/dataset_revision_lineage.py +0 -0
  61. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/dataset_revision_page.py +0 -0
  62. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/dataset_revision_validation.py +0 -0
  63. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/dataset_tag.py +0 -0
  64. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/dataset_tag_page.py +0 -0
  65. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/deletion_receipt.py +0 -0
  66. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/distributed_group.py +0 -0
  67. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/distributed_group_page.py +0 -0
  68. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/distributed_rank.py +0 -0
  69. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/distributed_rank_acknowledgement.py +0 -0
  70. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/distributed_rank_failure.py +0 -0
  71. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/distributed_rank_receipt.py +0 -0
  72. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/emitter_helpers.py +0 -0
  73. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/fit_budget_history.py +0 -0
  74. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/fit_budget_interval.py +0 -0
  75. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/fit_budget_intervals.py +0 -0
  76. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/fork_lineage.py +0 -0
  77. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/fork_page.py +0 -0
  78. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/fork_request.py +0 -0
  79. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/hugging_face_preview.py +0 -0
  80. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/hugging_face_source.py +0 -0
  81. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/knowledge_brief.py +0 -0
  82. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/knowledge_file_page.py +0 -0
  83. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/knowledge_history.py +0 -0
  84. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/knowledge_node.py +0 -0
  85. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/knowledge_objective.py +0 -0
  86. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/knowledge_orientation.py +0 -0
  87. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/knowledge_publication.py +0 -0
  88. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/knowledge_receipt.py +0 -0
  89. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/knowledge_revision.py +0 -0
  90. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/knowledge_step_brief.py +0 -0
  91. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/knowledge_step_link.py +0 -0
  92. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/knowledge_step_status.py +0 -0
  93. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/knowledge_view.py +0 -0
  94. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/location_registry.py +0 -0
  95. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/log_page.py +0 -0
  96. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/materialized_dataset_file.py +0 -0
  97. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/metric_page.py +0 -0
  98. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/new_analytics_query.py +0 -0
  99. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/new_asset_record.py +0 -0
  100. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/new_build.py +0 -0
  101. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/new_child_run.py +0 -0
  102. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/new_compute_run.py +0 -0
  103. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/new_dashboard.py +0 -0
  104. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/new_dataset_import.py +0 -0
  105. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/new_dataset_repository.py +0 -0
  106. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/new_dataset_tag.py +0 -0
  107. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/new_knowledge_brief.py +0 -0
  108. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/new_knowledge_file.py +0 -0
  109. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/new_knowledge_link.py +0 -0
  110. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/new_knowledge_node.py +0 -0
  111. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/new_knowledge_objectives.py +0 -0
  112. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/new_knowledge_revision.py +0 -0
  113. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/new_knowledge_status.py +0 -0
  114. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/new_note.py +0 -0
  115. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/new_operation_event.py +0 -0
  116. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/node.py +0 -0
  117. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/node_log_page.py +0 -0
  118. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/node_page.py +0 -0
  119. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/note.py +0 -0
  120. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/note_page.py +0 -0
  121. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/note_patch.py +0 -0
  122. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/operation_event.py +0 -0
  123. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/operation_event_page.py +0 -0
  124. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/output_page.py +0 -0
  125. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/pool.py +0 -0
  126. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/pool_log_page.py +0 -0
  127. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/pool_page.py +0 -0
  128. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/problem.py +0 -0
  129. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/produced_asset_page.py +0 -0
  130. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/project.py +0 -0
  131. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/project_attributes.py +0 -0
  132. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/project_list.py +0 -0
  133. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/project_move.py +0 -0
  134. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/project_move_result.py +0 -0
  135. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/publication_input.py +0 -0
  136. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/recovery_checkpoint_page.py +0 -0
  137. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/recovery_discovery.py +0 -0
  138. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/recovery_operation.py +0 -0
  139. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/recovery_page.py +0 -0
  140. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/recovery_reason.py +0 -0
  141. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/recovery_request.py +0 -0
  142. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/response_registry.py +0 -0
  143. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/restore_acknowledgement.py +0 -0
  144. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/restore_receipt.py +0 -0
  145. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/run.py +0 -0
  146. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/run_page.py +0 -0
  147. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/run_placement.py +0 -0
  148. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/run_stream_event.py +0 -0
  149. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/secret.py +0 -0
  150. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/secret_list.py +0 -0
  151. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/shard_outcome.py +0 -0
  152. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/shard_page.py +0 -0
  153. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/shard_recovery_item.py +0 -0
  154. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/shard_recovery_plan.py +0 -0
  155. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/status.py +0 -0
  156. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/transport.py +0 -0
  157. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/worker.py +0 -0
  158. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/worker_ack.py +0 -0
  159. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/worker_asset_prepare.py +0 -0
  160. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/worker_checkpoint.py +0 -0
  161. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/worker_claim.py +0 -0
  162. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/worker_failure.py +0 -0
  163. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/worker_heartbeat.py +0 -0
  164. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/worker_inputs.py +0 -0
  165. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/worker_log_page.py +0 -0
  166. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/worker_logs.py +0 -0
  167. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/worker_metrics.py +0 -0
  168. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/worker_output.py +0 -0
  169. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/worker_page.py +0 -0
  170. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/worker_produced_asset.py +0 -0
  171. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/worker_shard_claim.py +0 -0
  172. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/worker_shard_finish.py +0 -0
  173. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/worker_shard_snapshot.py +0 -0
  174. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/worker_shard_state.py +0 -0
  175. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/workflow_decision_receipt.py +0 -0
  176. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/workflow_decision_request.py +0 -0
  177. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/workflow_node.py +0 -0
  178. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/workflow_plan_page.py +0 -0
  179. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/_generated/workflow_preview.py +0 -0
  180. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/analytics_client.py +0 -0
  181. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/argument_codec/__init__.py +0 -0
  182. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/argument_codec/argument_codec.py +0 -0
  183. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/argument_codec/value_decoder.py +0 -0
  184. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/argument_codec/value_encoder.py +0 -0
  185. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/assets_client.py +0 -0
  186. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/audio/__init__.py +0 -0
  187. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/audio/audio.py +0 -0
  188. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/audio/audio_batch.py +0 -0
  189. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/authoring/__init__.py +0 -0
  190. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/authoring/resources.py +0 -0
  191. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/builds_client.py +0 -0
  192. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/AGENTS.md +0 -0
  193. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/__init__.py +0 -0
  194. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/analytics_payload_command.py +0 -0
  195. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/analytics_waiter.py +0 -0
  196. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/auth/__init__.py +0 -0
  197. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/auth/credential_resolver.py +0 -0
  198. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/auth/credentials.py +0 -0
  199. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/auth/keyring_backend.py +0 -0
  200. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/auth/keyring_store.py +0 -0
  201. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/build_watch_command.py +0 -0
  202. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/cli_application.py +0 -0
  203. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/cli_context.py +0 -0
  204. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/command_runner.py +0 -0
  205. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/commands/__init__.py +0 -0
  206. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/commands/assets/download_command.py +0 -0
  207. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/commands/assets/upload_command.py +0 -0
  208. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/commands/auth/__init__.py +0 -0
  209. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/commands/auth/auth_status_command.py +0 -0
  210. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/commands/auth/login_command.py +0 -0
  211. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/commands/auth/logout_command.py +0 -0
  212. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/commands/authored/__init__.py +0 -0
  213. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/commands/authored/authored_target.py +0 -0
  214. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/commands/authored/launch_command.py +0 -0
  215. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/commands/authored/launch_output.py +0 -0
  216. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/commands/authored/launch_session.py +0 -0
  217. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/commands/authored/parameter_type.py +0 -0
  218. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/commands/authored/reference_parameter.py +0 -0
  219. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/commands/authored/run_group.py +0 -0
  220. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/commands/authored/run_observer.py +0 -0
  221. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/commands/authored/source_module.py +0 -0
  222. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/commands/authored/target_signature.py +0 -0
  223. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/commands/completion_command.py +0 -0
  224. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/commands/dataset_import_command.py +0 -0
  225. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/commands/dataset_import_read_command.py +0 -0
  226. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/commands/project/__init__.py +0 -0
  227. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/commands/project/project_current_command.py +0 -0
  228. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/commands/project/project_delete_command.py +0 -0
  229. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/commands/project/project_list_command.py +0 -0
  230. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/commands/project/project_move_command.py +0 -0
  231. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/commands/project/project_put_command.py +0 -0
  232. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/commands/project/project_show_command.py +0 -0
  233. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/commands/run_attempts_group.py +0 -0
  234. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/commands/run_budget_adjustment_command.py +0 -0
  235. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/commands/run_budget_history_command.py +0 -0
  236. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/commands/run_fork_command.py +0 -0
  237. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/commands/run_recovery_command.py +0 -0
  238. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/commands/run_workflow_command.py +0 -0
  239. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/commands/secret_command.py +0 -0
  240. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/commands/secret_input.py +0 -0
  241. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/commands/skills_command.py +0 -0
  242. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/completion_waiter.py +0 -0
  243. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/compute/__init__.py +0 -0
  244. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/compute/compute_read_command.py +0 -0
  245. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/compute/enrollment/__init__.py +0 -0
  246. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/compute/enrollment/agent_image.py +0 -0
  247. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/compute/enrollment/bootstrap_scripts.py +0 -0
  248. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/compute/enrollment/command_result.py +0 -0
  249. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/compute/enrollment/dry_run_plan.py +0 -0
  250. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/compute/enrollment/enrollment_error.py +0 -0
  251. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/compute/enrollment/host_enrollment.py +0 -0
  252. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/compute/enrollment/host_readiness_waiter.py +0 -0
  253. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/compute/enrollment/preflight_report.py +0 -0
  254. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/compute/enrollment/process_runner.py +0 -0
  255. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/compute/enrollment/ssh_target.py +0 -0
  256. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/compute/host_enroll_command.py +0 -0
  257. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/compute/host_remove_command.py +0 -0
  258. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/compute/host_share_command.py +0 -0
  259. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/compute/location_set_command.py +0 -0
  260. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/compute/settings_group.py +0 -0
  261. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/compute/settings_patch.py +0 -0
  262. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/compute/settings_set_command.py +0 -0
  263. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/compute/site_remove_command.py +0 -0
  264. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/compute_command_catalog.py +0 -0
  265. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/config/__init__.py +0 -0
  266. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/config/profile.py +0 -0
  267. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/config/profile_store.py +0 -0
  268. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/console/__init__.py +0 -0
  269. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/console/build_evidence.py +0 -0
  270. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/console/build_replay.py +0 -0
  271. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/console/build_window.py +0 -0
  272. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/console/capacity_message.py +0 -0
  273. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/console/child_digest.py +0 -0
  274. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/console/child_overview.py +0 -0
  275. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/console/console_entry.py +0 -0
  276. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/console/console_line.py +0 -0
  277. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/console/console_options.py +0 -0
  278. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/console/console_repeats.py +0 -0
  279. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/console/console_timestamp.py +0 -0
  280. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/console/failure_advice.py +0 -0
  281. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/console/final_outcome.py +0 -0
  282. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/console/lifecycle_message.py +0 -0
  283. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/console/log_selection.py +0 -0
  284. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/console/metric_cadence.py +0 -0
  285. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/console/metric_progress.py +0 -0
  286. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/console/metric_summary.py +0 -0
  287. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/console/outcome_block.py +0 -0
  288. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/console/run_banner.py +0 -0
  289. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/console/run_console.py +0 -0
  290. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/console/stage_board.py +0 -0
  291. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/console/stage_status.py +0 -0
  292. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/context_accessor.py +0 -0
  293. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/core_command_catalog.py +0 -0
  294. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/dashboard_command_catalog.py +0 -0
  295. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/dashboard_init_command.py +0 -0
  296. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/dashboard_publish_command.py +0 -0
  297. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/dashboard_scaffold.py +0 -0
  298. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/dataset_command_catalog.py +0 -0
  299. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/dataset_local_command.py +0 -0
  300. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/dataset_materialize_command.py +0 -0
  301. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/dataset_query_command.py +0 -0
  302. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/dataset_selection.py +0 -0
  303. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/dataset_tag_create_command.py +0 -0
  304. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/dataset_workspace.py +0 -0
  305. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/delete_endpoint_command.py +0 -0
  306. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/doctor_command.py +0 -0
  307. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/endpoint_command.py +0 -0
  308. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/exit_codes.py +0 -0
  309. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/group_help.py +0 -0
  310. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/log_feed_command.py +0 -0
  311. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/memory_attachments.py +0 -0
  312. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/memory_brief_reads.py +0 -0
  313. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/memory_command_catalog.py +0 -0
  314. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/memory_document_catalog.py +0 -0
  315. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/memory_files_command.py +0 -0
  316. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/memory_input.py +0 -0
  317. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/memory_mutation_command.py +0 -0
  318. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/memory_objectives.py +0 -0
  319. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/memory_orientation_catalog.py +0 -0
  320. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/memory_payload.py +0 -0
  321. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/memory_retrieval_catalog.py +0 -0
  322. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/memory_step_payload.py +0 -0
  323. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/mount_asset_source.py +0 -0
  324. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/mounted_asset_file.py +0 -0
  325. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/mutation_key.py +0 -0
  326. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/mutation_spec.py +0 -0
  327. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/observation_deadline.py +0 -0
  328. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/operational_command_catalog.py +0 -0
  329. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/output/__init__.py +0 -0
  330. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/output/auth_output.py +0 -0
  331. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/output/cli_failure.py +0 -0
  332. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/output/compact_writer.py +0 -0
  333. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/output/error_reporter.py +0 -0
  334. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/output/field_text.py +0 -0
  335. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/output/inferred_columns.py +0 -0
  336. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/output/json_writer.py +0 -0
  337. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/output/output_style.py +0 -0
  338. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/output/pretty_help.py +0 -0
  339. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/output/pretty_writer.py +0 -0
  340. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/output/record_facts.py +0 -0
  341. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/output/resource_view.py +0 -0
  342. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/output/result_value.py +0 -0
  343. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/output/result_writer.py +0 -0
  344. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/output/view_catalog.py +0 -0
  345. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/output/view_column.py +0 -0
  346. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/parameter_factory.py +0 -0
  347. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/payload_command.py +0 -0
  348. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/project_command_catalog.py +0 -0
  349. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/release_cache.py +0 -0
  350. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/root_group.py +0 -0
  351. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/run_logs_command.py +0 -0
  352. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/run_output_command.py +0 -0
  353. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/run_watch_command.py +0 -0
  354. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/secret_command_catalog.py +0 -0
  355. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/skills/__init__.py +0 -0
  356. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/skills/bundled/lab-update/SKILL.md +0 -0
  357. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/skills/bundled/labqoat-examples/SKILL.md +0 -0
  358. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/skills/bundled/labqoat-memory/SKILL.md +0 -0
  359. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/skills/skill_bundle.py +0 -0
  360. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/skills/skill_installer.py +0 -0
  361. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/strict_command.py +0 -0
  362. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/timezone_type.py +0 -0
  363. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/update_notifier.py +0 -0
  364. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/version_info.py +0 -0
  365. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/version_option.py +0 -0
  366. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/cli/workload_command_catalog.py +0 -0
  367. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/client.py +0 -0
  368. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/__init__.py +0 -0
  369. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/app.py +0 -0
  370. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/async_parallel_map.py +0 -0
  371. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/automatic_recovery.py +0 -0
  372. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/batch_handler.py +0 -0
  373. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/batching.py +0 -0
  374. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/checkpoint_codec.py +0 -0
  375. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/checkpoint_compatibility.py +0 -0
  376. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/checkpoint_group.py +0 -0
  377. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/checkpoint_identity.py +0 -0
  378. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/checkpoint_payload.py +0 -0
  379. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/checkpoint_progress.py +0 -0
  380. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/checkpoint_rank.py +0 -0
  381. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/checkpoint_recovery.py +0 -0
  382. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/checkpoint_recovery_types.py +0 -0
  383. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/child_admissions.py +0 -0
  384. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/child_observation_evidence.py +0 -0
  385. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/child_observations.py +0 -0
  386. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/child_publication.py +0 -0
  387. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/child_run_handle.py +0 -0
  388. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/class_decorator.py +0 -0
  389. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/class_metadata.py +0 -0
  390. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/class_options.py +0 -0
  391. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/class_signature.py +0 -0
  392. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/client_group.py +0 -0
  393. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/concurrency.py +0 -0
  394. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/context_files.py +0 -0
  395. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/context_ignore.py +0 -0
  396. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/context_output.py +0 -0
  397. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/dataset_codec.py +0 -0
  398. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/dataset_reference_schema.py +0 -0
  399. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/enter_decorator.py +0 -0
  400. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/fork_worker/__init__.py +0 -0
  401. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/fork_worker/__main__.py +0 -0
  402. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/fork_worker/fork_worker.py +0 -0
  403. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/function.py +0 -0
  404. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/function_calls.py +0 -0
  405. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/function_decorator.py +0 -0
  406. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/function_signature.py +0 -0
  407. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/image.py +0 -0
  408. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/images/__init__.py +0 -0
  409. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/images/app_images.py +0 -0
  410. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/images/app_source.py +0 -0
  411. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/images/apt_step.py +0 -0
  412. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/images/base_catalog.py +0 -0
  413. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/images/command_step.py +0 -0
  414. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/images/copy_destinations.py +0 -0
  415. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/images/copy_step.py +0 -0
  416. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/images/declared_image.py +0 -0
  417. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/images/dependency_capture.py +0 -0
  418. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/images/dependency_command_step.py +0 -0
  419. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/images/dependency_validation.py +0 -0
  420. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/images/env_step.py +0 -0
  421. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/images/fragment_steps.py +0 -0
  422. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/images/hugging_face_snapshot.py +0 -0
  423. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/images/image_capture.py +0 -0
  424. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/images/image_validation.py +0 -0
  425. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/images/input_tree.py +0 -0
  426. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/images/local_path.py +0 -0
  427. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/images/operation.py +0 -0
  428. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/images/pip_step.py +0 -0
  429. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/images/publication_capture.py +0 -0
  430. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/images/runtime_bundle.py +0 -0
  431. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/images/stage_step.py +0 -0
  432. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/images/sync_step.py +0 -0
  433. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/images/uv_project.py +0 -0
  434. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/images/workdir_step.py +0 -0
  435. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/initializer_metadata.py +0 -0
  436. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/literal_codec.py +0 -0
  437. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/local_entrypoint.py +0 -0
  438. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/local_entrypoint_decorator.py +0 -0
  439. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/logging_routing.py +0 -0
  440. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/mapped_calls.py +0 -0
  441. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/mapping_codec.py +0 -0
  442. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/method.py +0 -0
  443. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/method_decorator.py +0 -0
  444. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/optional_codec.py +0 -0
  445. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/output_buffer.py +0 -0
  446. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/output_routing.py +0 -0
  447. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/parallel_map.py +0 -0
  448. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/pool_worker/__init__.py +0 -0
  449. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/pool_worker/__main__.py +0 -0
  450. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/pool_worker/accepted_input.py +0 -0
  451. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/pool_worker/batch_queue.py +0 -0
  452. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/pool_worker/input_batch.py +0 -0
  453. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/pool_worker/input_execution.py +0 -0
  454. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/pool_worker/isolated_execution.py +0 -0
  455. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/pool_worker/pool_control.py +0 -0
  456. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/pool_worker/pool_delivery_stream.py +0 -0
  457. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/pool_worker/pool_executor.py +0 -0
  458. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/pool_worker/pool_worker.py +0 -0
  459. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/pool_worker/prepared_process.py +0 -0
  460. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/pool_worker/reusable_invocation.py +0 -0
  461. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/pool_worker/worker_initialization.py +0 -0
  462. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/prepared_submission.py +0 -0
  463. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/prepared_worker/__init__.py +0 -0
  464. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/prepared_worker/__main__.py +0 -0
  465. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/prepared_worker/prepared_worker.py +0 -0
  466. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/publication.py +0 -0
  467. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/published_dataset.py +0 -0
  468. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/record_codec.py +0 -0
  469. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/run_assets.py +0 -0
  470. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/run_checkpoints.py +0 -0
  471. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/run_fit_budget.py +0 -0
  472. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/run_group.py +0 -0
  473. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/run_log_filter.py +0 -0
  474. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/run_log_handler.py +0 -0
  475. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/run_memory.py +0 -0
  476. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/run_options.py +0 -0
  477. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/run_recovery.py +0 -0
  478. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/run_shards.py +0 -0
  479. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/run_submissions.py +0 -0
  480. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/run_telemetry.py +0 -0
  481. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/run_workflow.py +0 -0
  482. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/scalar_codec.py +0 -0
  483. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/scaling.py +0 -0
  484. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/secret.py +0 -0
  485. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/sequence_codec.py +0 -0
  486. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/source_archive.py +0 -0
  487. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/submission.py +0 -0
  488. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/upload_memo.py +0 -0
  489. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/value_codec.py +0 -0
  490. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/volume.py +0 -0
  491. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/volume_mounts.py +0 -0
  492. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/worker/__init__.py +0 -0
  493. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/worker/__main__.py +0 -0
  494. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/worker/compute_worker.py +0 -0
  495. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/worker/context_factory.py +0 -0
  496. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/worker/delivered_source.py +0 -0
  497. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/worker/failure_report.py +0 -0
  498. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/worker/input_completion.py +0 -0
  499. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/worker/invocation.py +0 -0
  500. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/worker/retained_inputs.py +0 -0
  501. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute/workers.py +0 -0
  502. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/compute_client.py +0 -0
  503. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/dashboards_client.py +0 -0
  504. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/data_layout/__init__.py +0 -0
  505. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/data_layout/asset_references.py +0 -0
  506. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/data_layout/data_validation_error.py +0 -0
  507. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/data_layout/dataset_layout.py +0 -0
  508. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/data_layout/dataset_rows.py +0 -0
  509. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/data_layout/layout_compiler.py +0 -0
  510. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/data_layout/layout_node.py +0 -0
  511. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/data_layout/layout_value_codec.py +0 -0
  512. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/dataset.py +0 -0
  513. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/dataset_access/__init__.py +0 -0
  514. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/dataset_access/dataset_asset_index.py +0 -0
  515. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/dataset_access/dataset_input.py +0 -0
  516. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/dataset_access/dataset_prefetch.py +0 -0
  517. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/dataset_access/dataset_provider.py +0 -0
  518. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/dataset_access/dataset_requester.py +0 -0
  519. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/dataset_access/dataset_view.py +0 -0
  520. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/dataset_access/local_dataset_provider.py +0 -0
  521. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/dataset_access/prefetched_batch.py +0 -0
  522. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/dataset_access/revision_data.py +0 -0
  523. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/dataset_access/revision_files.py +0 -0
  524. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/dataset_access/revision_records.py +0 -0
  525. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/dataset_access/schema_rows.py +0 -0
  526. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/dataset_access/unavailable_dataset_provider.py +0 -0
  527. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/dataset_access/worker_dataset_provider.py +0 -0
  528. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/dataset_access/worker_dataset_requester.py +0 -0
  529. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/dataset_files/__init__.py +0 -0
  530. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/dataset_files/dataset_file.py +0 -0
  531. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/dataset_files/dataset_file_manifest.py +0 -0
  532. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/datasets/__init__.py +0 -0
  533. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/datasets/import_waiter.py +0 -0
  534. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/datasets/publication_waiter.py +0 -0
  535. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/datasets_client.py +0 -0
  536. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/errors/__init__.py +0 -0
  537. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/errors/api_error.py +0 -0
  538. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/errors/authentication_error.py +0 -0
  539. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/errors/credential_store_error.py +0 -0
  540. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/errors/import_failed_error.py +0 -0
  541. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/errors/publication_failed_error.py +0 -0
  542. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/errors/recovery_failed_error.py +0 -0
  543. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/errors/revision_conflict_error.py +0 -0
  544. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/errors/run_failed_error.py +0 -0
  545. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/errors/transport_error.py +0 -0
  546. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/evaluation_case.py +0 -0
  547. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/evaluation_report.py +0 -0
  548. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/json_document.py +0 -0
  549. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/management_client.py +0 -0
  550. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/manifests/__init__.py +0 -0
  551. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/manifests/manifest.py +0 -0
  552. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/manifests/manifest_formats.py +0 -0
  553. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/manifests/manifest_schemas.py +0 -0
  554. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/memory_client.py +0 -0
  555. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/memory_file_transfer.py +0 -0
  556. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/memory_files_client.py +0 -0
  557. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/memory_query.py +0 -0
  558. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/memory_writes.py +0 -0
  559. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/operations_client.py +0 -0
  560. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/projects/__init__.py +0 -0
  561. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/projects/atomic_project_file.py +0 -0
  562. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/projects/pinned_schema.py +0 -0
  563. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/projects/project_declaration.py +0 -0
  564. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/projects/project_directory.py +0 -0
  565. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/projects/project_names.py +0 -0
  566. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/projects/project_pin.py +0 -0
  567. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/projects/project_schemas.py +0 -0
  568. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/projects/project_selection.py +0 -0
  569. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/projects/schema_requirement.py +0 -0
  570. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/projects_client.py +0 -0
  571. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/py.typed +0 -0
  572. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/references/__init__.py +0 -0
  573. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/references/asset_ref.py +0 -0
  574. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/references/checkpoint_ref.py +0 -0
  575. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/references/dataset_binding.py +0 -0
  576. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/references/dataset_ref.py +0 -0
  577. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/references/named_reference.py +0 -0
  578. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/references/resolved_dataset_ref.py +0 -0
  579. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/references/resource_id.py +0 -0
  580. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/references/sha256.py +0 -0
  581. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/run_context.py +0 -0
  582. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/run_contracts/__init__.py +0 -0
  583. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/run_contracts/run_execution.py +0 -0
  584. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/runs/__init__.py +0 -0
  585. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/runs/budget_adjustment_client.py +0 -0
  586. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/runs/budget_history_client.py +0 -0
  587. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/runs/fork_client.py +0 -0
  588. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/runs/recovery_client.py +0 -0
  589. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/runs/recovery_handle.py +0 -0
  590. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/runs/recovery_waiter.py +0 -0
  591. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/runs/run_event_cursor.py +0 -0
  592. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/runs/run_handle.py +0 -0
  593. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/runs/run_log_stream.py +0 -0
  594. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/runs/run_waiter.py +0 -0
  595. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/runs/workflow_recovery_client.py +0 -0
  596. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/runs_client.py +0 -0
  597. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/schema_codegen/__init__.py +0 -0
  598. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/schema_codegen/field_name.py +0 -0
  599. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/schema_codegen/field_type.py +0 -0
  600. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/schema_codegen/record_field.py +0 -0
  601. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/schema_codegen/record_fields.py +0 -0
  602. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/schema_codegen/record_graph.py +0 -0
  603. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/schema_codegen/record_source.py +0 -0
  604. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/schema_codegen/schema_expression.py +0 -0
  605. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/schema_codegen/schema_generator.py +0 -0
  606. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/schema_codegen/schema_projection.py +0 -0
  607. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/schema_codegen/schema_types.py +0 -0
  608. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/schemas/__init__.py +0 -0
  609. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/schemas/asset_schema.py +0 -0
  610. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/schemas/captured_resolver.py +0 -0
  611. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/schemas/formats.json +0 -0
  612. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/schemas/identity.py +0 -0
  613. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/schemas/missing.py +0 -0
  614. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/schemas/record_values.py +0 -0
  615. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/schemas/schema_document.py +0 -0
  616. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/schemas/schema_issue.py +0 -0
  617. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/schemas/schema_nodes.py +0 -0
  618. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/schemas/schema_policy.py +0 -0
  619. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/schemas/schema_record.py +0 -0
  620. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/schemas/schema_validation_error.py +0 -0
  621. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/schemas/schema_validator.py +0 -0
  622. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/schemas/value_decoder.py +0 -0
  623. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/schemas/value_shape.py +0 -0
  624. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/schemas/value_union.py +0 -0
  625. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/secrets_client.py +0 -0
  626. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/serializable_model.py +0 -0
  627. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/sse_client.py +0 -0
  628. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/sse_fields.py +0 -0
  629. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/stage_timer.py +0 -0
  630. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/storage/__init__.py +0 -0
  631. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/storage/asset_publisher.py +0 -0
  632. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/storage/asset_source.py +0 -0
  633. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/storage/cache_eviction.py +0 -0
  634. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/storage/cache_lock.py +0 -0
  635. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/storage/cache_receipt.py +0 -0
  636. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/storage/cache_settings.py +0 -0
  637. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/storage/client_asset_source.py +0 -0
  638. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/storage/direct_asset_download.py +0 -0
  639. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/storage/file_access.py +0 -0
  640. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/storage/local_asset_publisher.py +0 -0
  641. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/storage/shared_asset_cache.py +0 -0
  642. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/storage/temporary_asset_file.py +0 -0
  643. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/storage/unavailable_asset_publisher.py +0 -0
  644. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/storage/unavailable_file_access.py +0 -0
  645. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/storage/verified_file.py +0 -0
  646. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/storage/worker_asset_source.py +0 -0
  647. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/storage/worker_file_access.py +0 -0
  648. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/training/__init__.py +0 -0
  649. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/training/assets/__init__.py +0 -0
  650. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/training/assets/worker_asset_publisher.py +0 -0
  651. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/training/budgets/__init__.py +0 -0
  652. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/training/budgets/__main__.py +0 -0
  653. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/training/budgets/expiry_process.py +0 -0
  654. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/training/budgets/fit_allowance.py +0 -0
  655. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/training/budgets/fit_budget_client.py +0 -0
  656. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/training/budgets/fit_grant.py +0 -0
  657. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/training/budgets/fit_interval.py +0 -0
  658. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/training/budgets/fit_report.py +0 -0
  659. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/training/budgets/fit_session.py +0 -0
  660. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/training/budgets/fit_supervisor.py +0 -0
  661. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/training/distributed/__init__.py +0 -0
  662. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/training/distributed/checkpoint_archive.py +0 -0
  663. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/training/distributed/distributed_fit.py +0 -0
  664. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/training/distributed/group_restoration.py +0 -0
  665. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/training/distributed/rank_adapter.py +0 -0
  666. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/training/distributed/rank_event.py +0 -0
  667. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/training/distributed/rank_execution.py +0 -0
  668. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/training/distributed/rank_factory.py +0 -0
  669. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/training/distributed/rank_failure_error.py +0 -0
  670. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/training/distributed/rank_process.py +0 -0
  671. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/training/distributed/rank_processes.py +0 -0
  672. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/training/distributed/rank_snapshot.py +0 -0
  673. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/training/experiment_sink.py +0 -0
  674. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/training/labqoat_logger.py +0 -0
  675. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/training/lightning/__init__.py +0 -0
  676. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/training/lightning/labqoat_lightning_logger.py +0 -0
  677. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/training/lightning/lightning_callbacks.py +0 -0
  678. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/training/lightning/lightning_fit.py +0 -0
  679. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/training/lightning/lightning_fit_gate.py +0 -0
  680. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/training/lightning/lightning_restore_adapter.py +0 -0
  681. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/training/lightning_scalars.py +0 -0
  682. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/training/metric_batch.py +0 -0
  683. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/training/recovery/__init__.py +0 -0
  684. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/training/recovery/recovery_binding.py +0 -0
  685. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/training/recovery/recovery_capability.py +0 -0
  686. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/training/recovery/restore_adapter.py +0 -0
  687. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/training/recovery/restore_envelope.py +0 -0
  688. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/training/recovery/restore_snapshot.py +0 -0
  689. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/training/recovery/restore_state.py +0 -0
  690. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/training/run_log_record.py +0 -0
  691. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/training/telemetry_unavailable_error.py +0 -0
  692. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/training/training_metrics.py +0 -0
  693. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/training/worker_experiment_sink.py +0 -0
  694. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/worker/__init__.py +0 -0
  695. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/worker/async_http_lease.py +0 -0
  696. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/worker/async_worker_event_stream.py +0 -0
  697. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/worker/child_result_frame.py +0 -0
  698. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/worker/http_connections.py +0 -0
  699. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/worker/replay_request.py +0 -0
  700. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/worker/scoped_api.py +0 -0
  701. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/worker/session/__init__.py +0 -0
  702. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/worker/session/local_frames.py +0 -0
  703. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/worker/session/local_session_client.py +0 -0
  704. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/worker/session/session_bridge.py +0 -0
  705. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/worker/session/session_connection.py +0 -0
  706. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/worker/session/session_credentials.py +0 -0
  707. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/worker/session/session_endpoint.py +0 -0
  708. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/worker/session/session_frames.py +0 -0
  709. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/worker/session/session_outbox.py +0 -0
  710. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/worker/session/session_pending.py +0 -0
  711. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/worker/session/session_routes.py +0 -0
  712. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/worker/session/session_telemetry.py +0 -0
  713. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/worker/session/worker_session.py +0 -0
  714. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/worker/telemetry_frames.py +0 -0
  715. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/worker/worker_api.py +0 -0
  716. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/worker/worker_api_error.py +0 -0
  717. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/worker/worker_event_stream.py +0 -0
  718. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/worker/worker_lease.py +0 -0
  719. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/worker/worker_telemetry_buffer.py +0 -0
  720. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/worker/worker_telemetry_stream.py +0 -0
  721. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/worker_pools_client.py +0 -0
  722. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/workflows/__init__.py +0 -0
  723. {labqoat-0.2.2 → labqoat-0.2.4}/src/labqoat/workflows/dataset_resolver.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: labqoat
3
- Version: 0.2.2
3
+ Version: 0.2.4
4
4
  Summary: Typed Python SDK and lab command-line client for the Labqoat platform
5
5
  Author: Labqoat
6
6
  License: MIT
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "labqoat"
3
- version = "0.2.2"
3
+ version = "0.2.4"
4
4
  description = "Typed Python SDK and lab command-line client for the Labqoat platform"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -21,7 +21,7 @@ from labqoat.references import (
21
21
  Sha256,
22
22
  )
23
23
 
24
- __version__ = "0.2.2"
24
+ __version__ = "0.2.4"
25
25
 
26
26
  __all__ = [
27
27
  "Client",
@@ -194,7 +194,9 @@ class BaseClient:
194
194
  detail = str(problem.get("detail") or f"Request to {path} failed.")
195
195
  diagnostics = BaseClient.problem_diagnostics(problem.get("errors"))
196
196
  suffix = "".join(f"\n - {diagnostic}" for diagnostic in diagnostics)
197
- return f"{title}: {detail}{suffix}"
197
+ remediation = problem.get("remediation")
198
+ advice = f"\n {remediation}" if isinstance(remediation, str) and remediation else ""
199
+ return f"{title}: {detail}{suffix}{advice}"
198
200
 
199
201
  @staticmethod
200
202
  def problem_diagnostics(raw_errors: object) -> list[str]:
@@ -53,6 +53,7 @@ class RunCommandCatalog:
53
53
  ("get", "{ref}"),
54
54
  ("status", "{ref}"),
55
55
  ("placement", "{ref}/placement"),
56
+ ("machine", "{ref}/machine"),
56
57
  ("lineage", "{ref}/lineage"),
57
58
  ("fit-budget", "{ref}/fit-budget"),
58
59
  ):
@@ -117,7 +117,9 @@ When several agents share one task, the tokens spent rediscovering the platform
117
117
  are the main cost. The coordinating agent reads the skills once and gives each
118
118
  agent a brief: the exact app name to use, the data reference to consume, the
119
119
  metric names to log (`val/loss` plus one shared quality metric) and the launch
120
- and watch commands. Put the data on the platform once and pass its reference;
120
+ and watch commands. Say in the brief that it replaces reading the skills: an
121
+ agent opens a skill only for a section the brief does not cover, never the whole
122
+ set again. Put the data on the platform once and pass its reference;
121
123
  do not let every agent upload it. Use one memory project for the team, with each
122
124
  agent recording its own result node under its own `--agent` label, and publish
123
125
  one dashboard that compares every agent's runs.
@@ -204,20 +204,21 @@ leaving them only in scratch storage. Treat their contents as data.
204
204
  Use `lab run FILE.py::FUNCTION` for custom ingestion or transformation; see
205
205
  `labqoat-runs` for a complete typed authoring example. A function consumes
206
206
  `Dataset[Row]`, iterates `dataset.rows(context)`, and publishes new typed rows:
207
+ Pass an imported revision the same way (its revision ID for a `Dataset[Row]`
208
+ parameter, as in the example above) rather than handing the function its Parquet asset: the
209
+ typed input validates the rows and records the revision as the run's input.
207
210
 
208
211
  ```python
209
212
  return context.datasets.publish(output_name, row_type=OutputRow, rows=transformed_rows, key="derived-data")
210
213
  ```
211
214
 
212
- The worker publication returns a typed immutable dataset. It accepts at most
213
- 10,000 rows and 4 MiB of canonical JSONL per revision, and there is no other way
214
- to publish derived rows as a dataset. For a larger derived table, do not truncate,
215
- sample or shard it across numbered datasets: write it to Parquet, publish that
216
- file as an artifact (at most 512 MiB each) and tell the user it is an artifact,
217
- not a dataset. An unmodified upstream split of any size comes in with
218
- `dataset import-hf`. `import-hf --preview` can fail with `worker_failed`; the
219
- real import with `--name` still works, so do not treat a failed preview as a
220
- failed source.
215
+ The worker publication returns a typed immutable dataset and takes any number of
216
+ rows: small publications travel in one request, larger ones are streamed to ordered
217
+ JSONL parts and retained for you (up to 100 parts of 64 MiB). Pass a generator
218
+ rather than a list for a large table, publish each split as one dataset, and never
219
+ truncate, sample or shard rows across numbered datasets to make them fit. An
220
+ unmodified upstream split comes in with `dataset import-hf`; `import-hf --preview`
221
+ can fail with `worker_failed` while the real import with `--name` still works.
221
222
  Keep input revision references, transformation configuration, producing run,
222
223
  and validation evidence with the resulting revision. Uploaded file assets and
223
224
  dataset revisions are different resources: uploading alone does not define a
@@ -62,8 +62,12 @@ outcome, so use it only for a single short run. For a workflow with children, or
62
62
  any training longer than a minute, watch without `--silent` and bound it with
63
63
  `--wait-timeout`: a failed child prints its own `done` line at once, and metric
64
64
  lines show a loss that is rising or stuck. Act on those while the rest runs:
65
- cancel a diverging child with `lab run cancel CHILD_ID`, fix and relaunch only
66
- what broke, and do not wait for the parent to end to learn a child failed. Failed or cancelled runs
65
+ fix and relaunch only what broke, and do not wait for the parent to end to learn
66
+ a child failed. Check every child's `val/loss` at least once a minute
67
+ (`lab run watch "$RUN" --wait-timeout 60 --metrics 'val/*'`, or `lab run metrics
68
+ CHILD_ID`): a loss that keeps rising, or is several times the best sibling's, will
69
+ not recover, so cancel that child with `lab run cancel CHILD_ID` instead of paying
70
+ for it to finish. Failed or cancelled runs
67
71
  exit 1; an observation timeout exits 3 and leaves remote work running.
68
72
 
69
73
  ```sh
@@ -232,7 +236,12 @@ and pinned public Hugging Face model snapshots. Do not bake credentials into ima
232
236
  use `gpu` (a supported model or `"any"`), `gpu_count`, and per-device `gpu_memory`
233
237
  in MiB. `gpu="any"` requires a per-device memory floor. A request without `gpu`
234
238
  needs both a positive `gpu_count` and `gpu_memory`.
235
- Discover hardware with `lab compute offerings`. Request resources the workload
239
+ Size requests from measurement, not guesses: `lab run machine RUN` reports, per
240
+ container, CPU use and throttling against the CPU limit, peak memory against the
241
+ memory limit, and GPU utilization and memory. Sustained throttling or a CPU peak
242
+ at 100% of the limit means too few cores for the processes started; a memory peak
243
+ near the limit precedes an out-of-memory kill (`SIGKILL`); peaks far below the
244
+ limits mean the request can shrink. Discover hardware with `lab compute offerings`. Request resources the workload
236
245
  actually needs, and account for retries and concurrency in the budget. When the
237
246
  user gives a spending limit, set `timeout` so that `timeout` times the offering's
238
247
  hourly price stays under it.
@@ -278,11 +287,11 @@ or logs. Download once and reuse: import a dataset with `lab dataset import-hf`,
278
287
  or cache a model snapshot in the image or a `compute.Volume`, instead of fetching
279
288
  it again in every run of a sweep.
280
289
 
281
- Size limits apply to what a run retains, and hitting one at the end loses the run:
282
- one artifact or checkpoint file holds at most 512 MiB, and `context.datasets.publish`
283
- accepts at most 10,000 rows and 4 MiB. Check sizes before spending compute. Publish
284
- large models as weights only (no optimizer state), in half precision, or as several
285
- files; see `labqoat-data` for datasets above the row limit.
290
+ One artifact or checkpoint file holds at most 512 MiB, and hitting that at the end
291
+ loses the run: check sizes before spending compute, and publish large models as
292
+ weights only (no optimizer state), in half precision, or as several files.
293
+ `context.datasets.publish` takes rows of any count; pass a generator so a large
294
+ table is streamed rather than held in memory.
286
295
 
287
296
  Workers run as the non-root user `labqoat` (UID 10001) with `HOME=/home/labqoat`.
288
297
  Writable locations are `$HOME`, `/workspace`, `/tmp`, and mounted volumes; image
@@ -532,6 +541,7 @@ lab --json run list --all-projects --state running --limit 20
532
541
  lab --json run get "$RUN_REF"
533
542
  lab --json run status "$RUN_REF"
534
543
  lab --json run placement "$RUN_REF"
544
+ lab --json run machine "$RUN_REF"
535
545
  lab --json run logs "$RUN_REF" --limit 100
536
546
  lab --json run metrics "$RUN_REF" --limit 100
537
547
  lab --json run assets "$RUN_REF" --limit 100
@@ -0,0 +1,70 @@
1
+ """Bounded staging of typed rows for publication: inline when small, canonical JSONL part files otherwise."""
2
+
3
+ from dataclasses import dataclass, field
4
+ from pathlib import Path
5
+ from typing import BinaryIO
6
+
7
+ from labqoat.json_document import JsonValue
8
+ from labqoat.schemas.identity import Identity
9
+
10
+
11
+ @dataclass
12
+ class DatasetRowParts:
13
+ """Keep small publications in memory and stream larger ones to ordered part files of bounded size."""
14
+
15
+ directory: Path
16
+ inline_rows: int = 10_000
17
+ inline_bytes: int = 4_194_304
18
+ part_bytes: int = 64 * 1024 * 1024
19
+ maximum_parts: int = 100
20
+ rows: list[JsonValue] = field(default_factory=list)
21
+ paths: list[Path] = field(default_factory=list)
22
+ _lines: list[bytes] = field(default_factory=list)
23
+ _inline_size: int = 0
24
+ _part_size: int = 0
25
+ _stream: BinaryIO | None = None
26
+
27
+ def add(self, value: JsonValue) -> None:
28
+ """Stage one encoded row, moving everything to part files once the inline budget is exceeded."""
29
+ line = Identity.bytes(value) + b"\n"
30
+ fits = len(self.rows) < self.inline_rows and self._inline_size + len(line) <= self.inline_bytes
31
+ if not self.paths and fits:
32
+ self.rows.append(value)
33
+ self._lines.append(line)
34
+ self._inline_size += len(line)
35
+ return
36
+ for staged in self._lines:
37
+ self._write(staged)
38
+ self.rows, self._lines = [], []
39
+ self._write(line)
40
+
41
+ def close(self) -> None:
42
+ """Flush the open part so its bytes can be hashed and uploaded."""
43
+ if self._stream is not None:
44
+ self._stream.close()
45
+ self._stream = None
46
+
47
+ def discard(self) -> None:
48
+ """Remove staged part files once they are retained elsewhere or the publication failed."""
49
+ self.close()
50
+ for path in self.paths:
51
+ path.unlink(missing_ok=True)
52
+
53
+ def _write(self, line: bytes) -> None:
54
+ """Append to the current part, opening the next one when the size bound would be passed."""
55
+ if self._stream is None or (self._part_size and self._part_size + len(line) > self.part_bytes):
56
+ self._open()
57
+ assert self._stream is not None
58
+ self._stream.write(line)
59
+ self._part_size += len(line)
60
+
61
+ def _open(self) -> None:
62
+ """Start the next ordered part file."""
63
+ self.close()
64
+ if len(self.paths) == self.maximum_parts:
65
+ raise ValueError(f"Typed publication accepts at most {self.maximum_parts} parts of {self.part_bytes} bytes")
66
+ self.directory.mkdir(parents=True, exist_ok=True)
67
+ path = self.directory / f"part-{len(self.paths):05d}.jsonl"
68
+ self.paths.append(path)
69
+ self._stream = path.open("wb")
70
+ self._part_size = 0
@@ -4,15 +4,17 @@ from collections.abc import Iterable, Iterator
4
4
  from dataclasses import dataclass
5
5
  from pathlib import Path
6
6
  from typing import TypeVar
7
+ from uuid import uuid4
7
8
 
8
9
  from labqoat._generated.dataset_publication import DatasetPublication
10
+ from labqoat.argument_codec import encode_result
11
+ from labqoat.compute.dataset_row_parts import DatasetRowParts
9
12
  from labqoat.compute.published_dataset import PublishedDataset
10
13
  from labqoat.compute.value_codec import ValueCodec
11
14
  from labqoat.dataset import Dataset
12
15
  from labqoat.dataset_access.worker_dataset_provider import WorkerDatasetProvider
13
16
  from labqoat.dataset_access.worker_dataset_requester import WorkerDatasetRequester
14
17
  from labqoat.json_document import JsonDocument, JsonValue
15
- from labqoat.schemas.identity import Identity
16
18
  from labqoat.storage.cache_settings import CacheSettings
17
19
  from labqoat.worker.worker_api import WorkerApi
18
20
 
@@ -27,29 +29,36 @@ class RunDatasets:
27
29
  root: Path
28
30
 
29
31
  def publish(self, name: str, *, row_type: type[T], rows: Iterable[T], key: str) -> Dataset[T]:
30
- """Durably accept bounded typed rows and follow committed terminal publication evidence."""
32
+ """Durably accept typed rows of any count and follow committed terminal publication evidence."""
31
33
  from labqoat.data_layout.dataset_layout import DatasetLayout
32
34
 
33
35
  codec = ValueCodec(row_type)
34
36
  schema = codec.schema()
35
37
  DatasetLayout.capture(schema)
36
- encoded: list[JsonValue] = []
37
- byte_size = 0
38
- for row in rows:
39
- if len(encoded) == 10_000:
40
- raise ValueError("Typed publication accepts at most 10000 rows")
41
- value = codec.encode(row)
42
- byte_size += len(Identity.bytes(value)) + 1
43
- if byte_size > 4_194_304:
44
- raise ValueError("Typed publication accepts at most 4194304 canonical JSONL bytes")
45
- encoded.append(value)
46
- request: dict[str, JsonValue] = {"dataset": name, "schema": schema, "rows": encoded, "key": key}
47
- publication = DatasetPublication.from_dict(self.api.json("POST", "/api/v1/worker/datasets", request))
38
+ parts = DatasetRowParts(self.root / "publications" / uuid4().hex)
39
+ try:
40
+ for row in rows:
41
+ parts.add(codec.encode(row))
42
+ request: dict[str, JsonValue] = {"dataset": name, "schema": schema, "key": key, **self._source(parts)}
43
+ publication = DatasetPublication.from_dict(self.api.json("POST", "/api/v1/worker/datasets", request))
44
+ finally:
45
+ parts.discard()
48
46
  if publication.status == "publishing":
49
47
  completed = self.api.completion(f"/api/v1/worker/datasets/{publication.id}/completion", "revision")
50
48
  publication = DatasetPublication.from_dict(completed)
51
49
  return PublishedDataset.capture(publication, row_type)
52
50
 
51
+ def _source(self, parts: DatasetRowParts) -> dict[str, JsonValue]:
52
+ """Send small publications inline; retain larger ones as ordered JSONL artifacts and name those."""
53
+ if not parts.paths:
54
+ return {"rows": parts.rows}
55
+ from labqoat.training.assets.worker_asset_publisher import WorkerAssetPublisher
56
+
57
+ parts.close()
58
+ publisher = WorkerAssetPublisher(self.api, purpose="dataset")
59
+ retained = [publisher.publish(path, media_type="application/x-ndjson", name=path.name) for path in parts.paths]
60
+ return {"files": [encode_result(asset) for asset in retained]}
61
+
53
62
  def rows(self, dataset: Dataset[T]) -> Iterator[T]:
54
63
  """Decode verified Parquet records into ordinary authored dataclasses under a scoped lease."""
55
64
  inputs = (dataset.reference,)
@@ -79,7 +79,7 @@ class AsyncScopedApi:
79
79
  method, url, content=body, headers=dict(self.headers) | {"Content-Type": "application/json"}
80
80
  )
81
81
  if not 200 <= response.status_code < 300:
82
- raise WorkerApiError(f"Worker API returned HTTP {response.status_code}", response.status_code)
82
+ raise WorkerApiError.from_response(response.status_code, response.content)
83
83
  return JsonDocument.expect_dict(response.json())
84
84
  except httpx.HTTPError as error:
85
85
  raise WorkerApiError("Worker API transport failed") from error
@@ -920,7 +920,7 @@ wheels = [
920
920
 
921
921
  [[package]]
922
922
  name = "labqoat"
923
- version = "0.2.2"
923
+ version = "0.2.4"
924
924
  source = { editable = "." }
925
925
  dependencies = [
926
926
  { name = "click" },
File without changes
File without changes
File without changes