labqoat 0.2.2__tar.gz → 0.2.3__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.3}/PKG-INFO +1 -1
  2. {labqoat-0.2.2 → labqoat-0.2.3}/pyproject.toml +1 -1
  3. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/__init__.py +1 -1
  4. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/run_command_catalog.py +1 -0
  5. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/skills/bundled/labqoat-data/SKILL.md +7 -9
  6. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/skills/bundled/labqoat-runs/SKILL.md +18 -8
  7. labqoat-0.2.3/src/labqoat/compute/dataset_row_parts.py +70 -0
  8. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/run_datasets.py +23 -14
  9. {labqoat-0.2.2 → labqoat-0.2.3}/uv.lock +1 -1
  10. {labqoat-0.2.2 → labqoat-0.2.3}/.gitignore +0 -0
  11. {labqoat-0.2.2 → labqoat-0.2.3}/README.md +0 -0
  12. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/__main__.py +0 -0
  13. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/__init__.py +0 -0
  14. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/analytics_query.py +0 -0
  15. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/api_index.py +0 -0
  16. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/asset_batch.py +0 -0
  17. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/asset_batch_complete.py +0 -0
  18. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/asset_batch_page.py +0 -0
  19. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/asset_record.py +0 -0
  20. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/asset_record_page.py +0 -0
  21. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/attempt_page.py +0 -0
  22. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/automatic_recovery_policy.py +0 -0
  23. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/budget_adjustment.py +0 -0
  24. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/budget_adjustment_request.py +0 -0
  25. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/budget_reconciliation_request.py +0 -0
  26. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/build.py +0 -0
  27. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/build_log_page.py +0 -0
  28. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/build_page.py +0 -0
  29. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/build_stream_event.py +0 -0
  30. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/capabilities.py +0 -0
  31. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/checkpoint.py +0 -0
  32. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/checkpoint_page.py +0 -0
  33. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/child_outcome.py +0 -0
  34. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/compute_function.py +0 -0
  35. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/compute_host.py +0 -0
  36. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/compute_host_enrollment.py +0 -0
  37. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/compute_host_page.py +0 -0
  38. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/compute_host_share.py +0 -0
  39. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/compute_location_policy.py +0 -0
  40. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/compute_offering.py +0 -0
  41. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/compute_offering_page.py +0 -0
  42. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/compute_publication.py +0 -0
  43. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/compute_settings.py +0 -0
  44. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/compute_usage.py +0 -0
  45. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/compute_worker_pool.py +0 -0
  46. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/dashboard.py +0 -0
  47. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/dashboard_page.py +0 -0
  48. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/dashboard_version_page.py +0 -0
  49. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/dataset_import.py +0 -0
  50. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/dataset_import_event.py +0 -0
  51. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/dataset_publication.py +0 -0
  52. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/dataset_publication_event.py +0 -0
  53. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/dataset_repository.py +0 -0
  54. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/dataset_repository_page.py +0 -0
  55. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/dataset_revision.py +0 -0
  56. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/dataset_revision_files.py +0 -0
  57. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/dataset_revision_lineage.py +0 -0
  58. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/dataset_revision_page.py +0 -0
  59. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/dataset_revision_validation.py +0 -0
  60. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/dataset_tag.py +0 -0
  61. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/dataset_tag_page.py +0 -0
  62. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/deletion_receipt.py +0 -0
  63. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/distributed_group.py +0 -0
  64. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/distributed_group_page.py +0 -0
  65. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/distributed_rank.py +0 -0
  66. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/distributed_rank_acknowledgement.py +0 -0
  67. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/distributed_rank_failure.py +0 -0
  68. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/distributed_rank_receipt.py +0 -0
  69. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/emitter_helpers.py +0 -0
  70. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/fit_budget_history.py +0 -0
  71. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/fit_budget_interval.py +0 -0
  72. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/fit_budget_intervals.py +0 -0
  73. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/fork_lineage.py +0 -0
  74. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/fork_page.py +0 -0
  75. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/fork_request.py +0 -0
  76. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/hugging_face_preview.py +0 -0
  77. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/hugging_face_source.py +0 -0
  78. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/knowledge_brief.py +0 -0
  79. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/knowledge_file_page.py +0 -0
  80. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/knowledge_history.py +0 -0
  81. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/knowledge_node.py +0 -0
  82. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/knowledge_objective.py +0 -0
  83. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/knowledge_orientation.py +0 -0
  84. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/knowledge_publication.py +0 -0
  85. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/knowledge_receipt.py +0 -0
  86. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/knowledge_revision.py +0 -0
  87. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/knowledge_step_brief.py +0 -0
  88. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/knowledge_step_link.py +0 -0
  89. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/knowledge_step_status.py +0 -0
  90. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/knowledge_view.py +0 -0
  91. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/location_registry.py +0 -0
  92. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/log_page.py +0 -0
  93. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/materialized_dataset_file.py +0 -0
  94. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/metric_page.py +0 -0
  95. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/new_analytics_query.py +0 -0
  96. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/new_asset_record.py +0 -0
  97. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/new_build.py +0 -0
  98. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/new_child_run.py +0 -0
  99. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/new_compute_run.py +0 -0
  100. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/new_dashboard.py +0 -0
  101. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/new_dataset_import.py +0 -0
  102. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/new_dataset_repository.py +0 -0
  103. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/new_dataset_tag.py +0 -0
  104. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/new_knowledge_brief.py +0 -0
  105. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/new_knowledge_file.py +0 -0
  106. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/new_knowledge_link.py +0 -0
  107. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/new_knowledge_node.py +0 -0
  108. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/new_knowledge_objectives.py +0 -0
  109. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/new_knowledge_revision.py +0 -0
  110. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/new_knowledge_status.py +0 -0
  111. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/new_note.py +0 -0
  112. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/new_operation_event.py +0 -0
  113. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/node.py +0 -0
  114. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/node_log_page.py +0 -0
  115. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/node_page.py +0 -0
  116. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/note.py +0 -0
  117. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/note_page.py +0 -0
  118. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/note_patch.py +0 -0
  119. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/operation_event.py +0 -0
  120. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/operation_event_page.py +0 -0
  121. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/output_page.py +0 -0
  122. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/pool.py +0 -0
  123. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/pool_log_page.py +0 -0
  124. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/pool_page.py +0 -0
  125. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/problem.py +0 -0
  126. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/produced_asset_page.py +0 -0
  127. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/project.py +0 -0
  128. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/project_attributes.py +0 -0
  129. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/project_list.py +0 -0
  130. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/project_move.py +0 -0
  131. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/project_move_result.py +0 -0
  132. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/publication_input.py +0 -0
  133. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/recovery_checkpoint_page.py +0 -0
  134. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/recovery_discovery.py +0 -0
  135. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/recovery_operation.py +0 -0
  136. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/recovery_page.py +0 -0
  137. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/recovery_reason.py +0 -0
  138. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/recovery_request.py +0 -0
  139. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/response_registry.py +0 -0
  140. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/restore_acknowledgement.py +0 -0
  141. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/restore_receipt.py +0 -0
  142. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/run.py +0 -0
  143. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/run_page.py +0 -0
  144. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/run_placement.py +0 -0
  145. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/run_stream_event.py +0 -0
  146. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/secret.py +0 -0
  147. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/secret_list.py +0 -0
  148. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/shard_outcome.py +0 -0
  149. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/shard_page.py +0 -0
  150. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/shard_recovery_item.py +0 -0
  151. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/shard_recovery_plan.py +0 -0
  152. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/status.py +0 -0
  153. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/transport.py +0 -0
  154. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/worker.py +0 -0
  155. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/worker_ack.py +0 -0
  156. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/worker_asset_prepare.py +0 -0
  157. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/worker_checkpoint.py +0 -0
  158. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/worker_claim.py +0 -0
  159. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/worker_failure.py +0 -0
  160. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/worker_heartbeat.py +0 -0
  161. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/worker_inputs.py +0 -0
  162. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/worker_log_page.py +0 -0
  163. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/worker_logs.py +0 -0
  164. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/worker_metrics.py +0 -0
  165. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/worker_output.py +0 -0
  166. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/worker_page.py +0 -0
  167. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/worker_produced_asset.py +0 -0
  168. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/worker_shard_claim.py +0 -0
  169. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/worker_shard_finish.py +0 -0
  170. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/worker_shard_snapshot.py +0 -0
  171. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/worker_shard_state.py +0 -0
  172. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/workflow_decision_receipt.py +0 -0
  173. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/workflow_decision_request.py +0 -0
  174. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/workflow_node.py +0 -0
  175. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/workflow_plan_page.py +0 -0
  176. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/_generated/workflow_preview.py +0 -0
  177. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/analytics_client.py +0 -0
  178. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/argument_codec/__init__.py +0 -0
  179. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/argument_codec/argument_codec.py +0 -0
  180. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/argument_codec/value_decoder.py +0 -0
  181. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/argument_codec/value_encoder.py +0 -0
  182. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/assets_client.py +0 -0
  183. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/audio/__init__.py +0 -0
  184. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/audio/audio.py +0 -0
  185. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/audio/audio_batch.py +0 -0
  186. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/authoring/__init__.py +0 -0
  187. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/authoring/resources.py +0 -0
  188. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/base_client.py +0 -0
  189. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/builds_client.py +0 -0
  190. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/AGENTS.md +0 -0
  191. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/__init__.py +0 -0
  192. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/analytics_payload_command.py +0 -0
  193. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/analytics_waiter.py +0 -0
  194. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/auth/__init__.py +0 -0
  195. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/auth/credential_resolver.py +0 -0
  196. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/auth/credentials.py +0 -0
  197. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/auth/keyring_backend.py +0 -0
  198. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/auth/keyring_store.py +0 -0
  199. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/build_watch_command.py +0 -0
  200. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/cli_application.py +0 -0
  201. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/cli_context.py +0 -0
  202. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/command_runner.py +0 -0
  203. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/commands/__init__.py +0 -0
  204. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/commands/assets/download_command.py +0 -0
  205. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/commands/assets/upload_command.py +0 -0
  206. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/commands/auth/__init__.py +0 -0
  207. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/commands/auth/auth_status_command.py +0 -0
  208. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/commands/auth/login_command.py +0 -0
  209. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/commands/auth/logout_command.py +0 -0
  210. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/commands/authored/__init__.py +0 -0
  211. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/commands/authored/authored_target.py +0 -0
  212. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/commands/authored/launch_command.py +0 -0
  213. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/commands/authored/launch_output.py +0 -0
  214. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/commands/authored/launch_session.py +0 -0
  215. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/commands/authored/parameter_type.py +0 -0
  216. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/commands/authored/reference_parameter.py +0 -0
  217. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/commands/authored/run_group.py +0 -0
  218. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/commands/authored/run_observer.py +0 -0
  219. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/commands/authored/source_module.py +0 -0
  220. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/commands/authored/target_signature.py +0 -0
  221. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/commands/completion_command.py +0 -0
  222. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/commands/dataset_import_command.py +0 -0
  223. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/commands/dataset_import_read_command.py +0 -0
  224. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/commands/project/__init__.py +0 -0
  225. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/commands/project/project_current_command.py +0 -0
  226. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/commands/project/project_delete_command.py +0 -0
  227. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/commands/project/project_list_command.py +0 -0
  228. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/commands/project/project_move_command.py +0 -0
  229. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/commands/project/project_put_command.py +0 -0
  230. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/commands/project/project_show_command.py +0 -0
  231. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/commands/run_attempts_group.py +0 -0
  232. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/commands/run_budget_adjustment_command.py +0 -0
  233. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/commands/run_budget_history_command.py +0 -0
  234. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/commands/run_fork_command.py +0 -0
  235. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/commands/run_recovery_command.py +0 -0
  236. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/commands/run_workflow_command.py +0 -0
  237. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/commands/secret_command.py +0 -0
  238. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/commands/secret_input.py +0 -0
  239. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/commands/skills_command.py +0 -0
  240. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/completion_waiter.py +0 -0
  241. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/compute/__init__.py +0 -0
  242. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/compute/compute_read_command.py +0 -0
  243. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/compute/enrollment/__init__.py +0 -0
  244. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/compute/enrollment/agent_image.py +0 -0
  245. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/compute/enrollment/bootstrap_scripts.py +0 -0
  246. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/compute/enrollment/command_result.py +0 -0
  247. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/compute/enrollment/dry_run_plan.py +0 -0
  248. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/compute/enrollment/enrollment_error.py +0 -0
  249. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/compute/enrollment/host_enrollment.py +0 -0
  250. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/compute/enrollment/host_readiness_waiter.py +0 -0
  251. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/compute/enrollment/preflight_report.py +0 -0
  252. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/compute/enrollment/process_runner.py +0 -0
  253. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/compute/enrollment/ssh_target.py +0 -0
  254. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/compute/host_enroll_command.py +0 -0
  255. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/compute/host_remove_command.py +0 -0
  256. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/compute/host_share_command.py +0 -0
  257. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/compute/location_set_command.py +0 -0
  258. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/compute/settings_group.py +0 -0
  259. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/compute/settings_patch.py +0 -0
  260. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/compute/settings_set_command.py +0 -0
  261. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/compute/site_remove_command.py +0 -0
  262. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/compute_command_catalog.py +0 -0
  263. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/config/__init__.py +0 -0
  264. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/config/profile.py +0 -0
  265. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/config/profile_store.py +0 -0
  266. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/console/__init__.py +0 -0
  267. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/console/build_evidence.py +0 -0
  268. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/console/build_replay.py +0 -0
  269. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/console/build_window.py +0 -0
  270. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/console/capacity_message.py +0 -0
  271. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/console/child_digest.py +0 -0
  272. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/console/child_overview.py +0 -0
  273. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/console/console_entry.py +0 -0
  274. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/console/console_line.py +0 -0
  275. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/console/console_options.py +0 -0
  276. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/console/console_repeats.py +0 -0
  277. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/console/console_timestamp.py +0 -0
  278. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/console/failure_advice.py +0 -0
  279. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/console/final_outcome.py +0 -0
  280. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/console/lifecycle_message.py +0 -0
  281. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/console/log_selection.py +0 -0
  282. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/console/metric_cadence.py +0 -0
  283. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/console/metric_progress.py +0 -0
  284. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/console/metric_summary.py +0 -0
  285. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/console/outcome_block.py +0 -0
  286. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/console/run_banner.py +0 -0
  287. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/console/run_console.py +0 -0
  288. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/console/stage_board.py +0 -0
  289. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/console/stage_status.py +0 -0
  290. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/context_accessor.py +0 -0
  291. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/core_command_catalog.py +0 -0
  292. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/dashboard_command_catalog.py +0 -0
  293. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/dashboard_init_command.py +0 -0
  294. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/dashboard_publish_command.py +0 -0
  295. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/dashboard_scaffold.py +0 -0
  296. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/dataset_command_catalog.py +0 -0
  297. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/dataset_local_command.py +0 -0
  298. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/dataset_materialize_command.py +0 -0
  299. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/dataset_query_command.py +0 -0
  300. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/dataset_selection.py +0 -0
  301. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/dataset_tag_create_command.py +0 -0
  302. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/dataset_workspace.py +0 -0
  303. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/delete_endpoint_command.py +0 -0
  304. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/doctor_command.py +0 -0
  305. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/endpoint_command.py +0 -0
  306. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/exit_codes.py +0 -0
  307. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/group_help.py +0 -0
  308. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/log_feed_command.py +0 -0
  309. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/memory_attachments.py +0 -0
  310. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/memory_brief_reads.py +0 -0
  311. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/memory_command_catalog.py +0 -0
  312. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/memory_document_catalog.py +0 -0
  313. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/memory_files_command.py +0 -0
  314. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/memory_input.py +0 -0
  315. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/memory_mutation_command.py +0 -0
  316. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/memory_objectives.py +0 -0
  317. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/memory_orientation_catalog.py +0 -0
  318. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/memory_payload.py +0 -0
  319. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/memory_retrieval_catalog.py +0 -0
  320. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/memory_step_payload.py +0 -0
  321. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/mount_asset_source.py +0 -0
  322. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/mounted_asset_file.py +0 -0
  323. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/mutation_key.py +0 -0
  324. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/mutation_spec.py +0 -0
  325. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/observation_deadline.py +0 -0
  326. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/operational_command_catalog.py +0 -0
  327. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/output/__init__.py +0 -0
  328. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/output/auth_output.py +0 -0
  329. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/output/cli_failure.py +0 -0
  330. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/output/compact_writer.py +0 -0
  331. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/output/error_reporter.py +0 -0
  332. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/output/field_text.py +0 -0
  333. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/output/inferred_columns.py +0 -0
  334. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/output/json_writer.py +0 -0
  335. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/output/output_style.py +0 -0
  336. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/output/pretty_help.py +0 -0
  337. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/output/pretty_writer.py +0 -0
  338. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/output/record_facts.py +0 -0
  339. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/output/resource_view.py +0 -0
  340. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/output/result_value.py +0 -0
  341. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/output/result_writer.py +0 -0
  342. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/output/view_catalog.py +0 -0
  343. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/output/view_column.py +0 -0
  344. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/parameter_factory.py +0 -0
  345. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/payload_command.py +0 -0
  346. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/project_command_catalog.py +0 -0
  347. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/release_cache.py +0 -0
  348. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/root_group.py +0 -0
  349. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/run_logs_command.py +0 -0
  350. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/run_output_command.py +0 -0
  351. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/run_watch_command.py +0 -0
  352. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/secret_command_catalog.py +0 -0
  353. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/skills/__init__.py +0 -0
  354. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/skills/bundled/lab-update/SKILL.md +0 -0
  355. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/skills/bundled/labqoat-cli/SKILL.md +0 -0
  356. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/skills/bundled/labqoat-examples/SKILL.md +0 -0
  357. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/skills/bundled/labqoat-memory/SKILL.md +0 -0
  358. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/skills/skill_bundle.py +0 -0
  359. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/skills/skill_installer.py +0 -0
  360. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/strict_command.py +0 -0
  361. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/timezone_type.py +0 -0
  362. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/update_notifier.py +0 -0
  363. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/version_info.py +0 -0
  364. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/version_option.py +0 -0
  365. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/cli/workload_command_catalog.py +0 -0
  366. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/client.py +0 -0
  367. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/__init__.py +0 -0
  368. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/app.py +0 -0
  369. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/async_parallel_map.py +0 -0
  370. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/automatic_recovery.py +0 -0
  371. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/batch_handler.py +0 -0
  372. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/batching.py +0 -0
  373. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/checkpoint_codec.py +0 -0
  374. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/checkpoint_compatibility.py +0 -0
  375. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/checkpoint_group.py +0 -0
  376. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/checkpoint_identity.py +0 -0
  377. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/checkpoint_payload.py +0 -0
  378. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/checkpoint_progress.py +0 -0
  379. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/checkpoint_rank.py +0 -0
  380. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/checkpoint_recovery.py +0 -0
  381. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/checkpoint_recovery_types.py +0 -0
  382. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/child_admissions.py +0 -0
  383. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/child_observation_evidence.py +0 -0
  384. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/child_observations.py +0 -0
  385. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/child_publication.py +0 -0
  386. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/child_run_handle.py +0 -0
  387. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/class_decorator.py +0 -0
  388. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/class_metadata.py +0 -0
  389. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/class_options.py +0 -0
  390. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/class_signature.py +0 -0
  391. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/client_group.py +0 -0
  392. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/concurrency.py +0 -0
  393. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/context_files.py +0 -0
  394. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/context_ignore.py +0 -0
  395. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/context_output.py +0 -0
  396. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/dataset_codec.py +0 -0
  397. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/dataset_reference_schema.py +0 -0
  398. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/enter_decorator.py +0 -0
  399. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/fork_worker/__init__.py +0 -0
  400. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/fork_worker/__main__.py +0 -0
  401. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/fork_worker/fork_worker.py +0 -0
  402. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/function.py +0 -0
  403. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/function_calls.py +0 -0
  404. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/function_decorator.py +0 -0
  405. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/function_signature.py +0 -0
  406. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/image.py +0 -0
  407. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/images/__init__.py +0 -0
  408. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/images/app_images.py +0 -0
  409. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/images/app_source.py +0 -0
  410. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/images/apt_step.py +0 -0
  411. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/images/base_catalog.py +0 -0
  412. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/images/command_step.py +0 -0
  413. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/images/copy_destinations.py +0 -0
  414. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/images/copy_step.py +0 -0
  415. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/images/declared_image.py +0 -0
  416. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/images/dependency_capture.py +0 -0
  417. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/images/dependency_command_step.py +0 -0
  418. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/images/dependency_validation.py +0 -0
  419. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/images/env_step.py +0 -0
  420. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/images/fragment_steps.py +0 -0
  421. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/images/hugging_face_snapshot.py +0 -0
  422. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/images/image_capture.py +0 -0
  423. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/images/image_validation.py +0 -0
  424. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/images/input_tree.py +0 -0
  425. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/images/local_path.py +0 -0
  426. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/images/operation.py +0 -0
  427. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/images/pip_step.py +0 -0
  428. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/images/publication_capture.py +0 -0
  429. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/images/runtime_bundle.py +0 -0
  430. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/images/stage_step.py +0 -0
  431. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/images/sync_step.py +0 -0
  432. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/images/uv_project.py +0 -0
  433. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/images/workdir_step.py +0 -0
  434. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/initializer_metadata.py +0 -0
  435. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/literal_codec.py +0 -0
  436. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/local_entrypoint.py +0 -0
  437. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/local_entrypoint_decorator.py +0 -0
  438. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/logging_routing.py +0 -0
  439. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/mapped_calls.py +0 -0
  440. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/mapping_codec.py +0 -0
  441. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/method.py +0 -0
  442. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/method_decorator.py +0 -0
  443. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/optional_codec.py +0 -0
  444. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/output_buffer.py +0 -0
  445. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/output_routing.py +0 -0
  446. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/parallel_map.py +0 -0
  447. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/pool_worker/__init__.py +0 -0
  448. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/pool_worker/__main__.py +0 -0
  449. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/pool_worker/accepted_input.py +0 -0
  450. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/pool_worker/batch_queue.py +0 -0
  451. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/pool_worker/input_batch.py +0 -0
  452. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/pool_worker/input_execution.py +0 -0
  453. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/pool_worker/isolated_execution.py +0 -0
  454. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/pool_worker/pool_control.py +0 -0
  455. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/pool_worker/pool_delivery_stream.py +0 -0
  456. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/pool_worker/pool_executor.py +0 -0
  457. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/pool_worker/pool_worker.py +0 -0
  458. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/pool_worker/prepared_process.py +0 -0
  459. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/pool_worker/reusable_invocation.py +0 -0
  460. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/pool_worker/worker_initialization.py +0 -0
  461. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/prepared_submission.py +0 -0
  462. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/prepared_worker/__init__.py +0 -0
  463. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/prepared_worker/__main__.py +0 -0
  464. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/prepared_worker/prepared_worker.py +0 -0
  465. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/publication.py +0 -0
  466. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/published_dataset.py +0 -0
  467. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/record_codec.py +0 -0
  468. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/run_assets.py +0 -0
  469. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/run_checkpoints.py +0 -0
  470. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/run_fit_budget.py +0 -0
  471. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/run_group.py +0 -0
  472. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/run_log_filter.py +0 -0
  473. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/run_log_handler.py +0 -0
  474. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/run_memory.py +0 -0
  475. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/run_options.py +0 -0
  476. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/run_recovery.py +0 -0
  477. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/run_shards.py +0 -0
  478. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/run_submissions.py +0 -0
  479. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/run_telemetry.py +0 -0
  480. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/run_workflow.py +0 -0
  481. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/scalar_codec.py +0 -0
  482. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/scaling.py +0 -0
  483. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/secret.py +0 -0
  484. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/sequence_codec.py +0 -0
  485. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/source_archive.py +0 -0
  486. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/submission.py +0 -0
  487. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/upload_memo.py +0 -0
  488. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/value_codec.py +0 -0
  489. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/volume.py +0 -0
  490. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/volume_mounts.py +0 -0
  491. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/worker/__init__.py +0 -0
  492. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/worker/__main__.py +0 -0
  493. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/worker/compute_worker.py +0 -0
  494. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/worker/context_factory.py +0 -0
  495. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/worker/delivered_source.py +0 -0
  496. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/worker/failure_report.py +0 -0
  497. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/worker/input_completion.py +0 -0
  498. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/worker/invocation.py +0 -0
  499. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/worker/retained_inputs.py +0 -0
  500. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute/workers.py +0 -0
  501. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/compute_client.py +0 -0
  502. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/dashboards_client.py +0 -0
  503. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/data_layout/__init__.py +0 -0
  504. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/data_layout/asset_references.py +0 -0
  505. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/data_layout/data_validation_error.py +0 -0
  506. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/data_layout/dataset_layout.py +0 -0
  507. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/data_layout/dataset_rows.py +0 -0
  508. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/data_layout/layout_compiler.py +0 -0
  509. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/data_layout/layout_node.py +0 -0
  510. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/data_layout/layout_value_codec.py +0 -0
  511. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/dataset.py +0 -0
  512. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/dataset_access/__init__.py +0 -0
  513. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/dataset_access/dataset_asset_index.py +0 -0
  514. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/dataset_access/dataset_input.py +0 -0
  515. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/dataset_access/dataset_prefetch.py +0 -0
  516. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/dataset_access/dataset_provider.py +0 -0
  517. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/dataset_access/dataset_requester.py +0 -0
  518. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/dataset_access/dataset_view.py +0 -0
  519. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/dataset_access/local_dataset_provider.py +0 -0
  520. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/dataset_access/prefetched_batch.py +0 -0
  521. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/dataset_access/revision_data.py +0 -0
  522. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/dataset_access/revision_files.py +0 -0
  523. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/dataset_access/revision_records.py +0 -0
  524. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/dataset_access/schema_rows.py +0 -0
  525. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/dataset_access/unavailable_dataset_provider.py +0 -0
  526. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/dataset_access/worker_dataset_provider.py +0 -0
  527. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/dataset_access/worker_dataset_requester.py +0 -0
  528. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/dataset_files/__init__.py +0 -0
  529. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/dataset_files/dataset_file.py +0 -0
  530. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/dataset_files/dataset_file_manifest.py +0 -0
  531. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/datasets/__init__.py +0 -0
  532. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/datasets/import_waiter.py +0 -0
  533. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/datasets/publication_waiter.py +0 -0
  534. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/datasets_client.py +0 -0
  535. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/errors/__init__.py +0 -0
  536. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/errors/api_error.py +0 -0
  537. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/errors/authentication_error.py +0 -0
  538. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/errors/credential_store_error.py +0 -0
  539. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/errors/import_failed_error.py +0 -0
  540. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/errors/publication_failed_error.py +0 -0
  541. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/errors/recovery_failed_error.py +0 -0
  542. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/errors/revision_conflict_error.py +0 -0
  543. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/errors/run_failed_error.py +0 -0
  544. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/errors/transport_error.py +0 -0
  545. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/evaluation_case.py +0 -0
  546. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/evaluation_report.py +0 -0
  547. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/json_document.py +0 -0
  548. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/management_client.py +0 -0
  549. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/manifests/__init__.py +0 -0
  550. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/manifests/manifest.py +0 -0
  551. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/manifests/manifest_formats.py +0 -0
  552. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/manifests/manifest_schemas.py +0 -0
  553. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/memory_client.py +0 -0
  554. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/memory_file_transfer.py +0 -0
  555. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/memory_files_client.py +0 -0
  556. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/memory_query.py +0 -0
  557. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/memory_writes.py +0 -0
  558. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/operations_client.py +0 -0
  559. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/projects/__init__.py +0 -0
  560. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/projects/atomic_project_file.py +0 -0
  561. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/projects/pinned_schema.py +0 -0
  562. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/projects/project_declaration.py +0 -0
  563. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/projects/project_directory.py +0 -0
  564. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/projects/project_names.py +0 -0
  565. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/projects/project_pin.py +0 -0
  566. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/projects/project_schemas.py +0 -0
  567. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/projects/project_selection.py +0 -0
  568. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/projects/schema_requirement.py +0 -0
  569. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/projects_client.py +0 -0
  570. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/py.typed +0 -0
  571. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/references/__init__.py +0 -0
  572. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/references/asset_ref.py +0 -0
  573. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/references/checkpoint_ref.py +0 -0
  574. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/references/dataset_binding.py +0 -0
  575. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/references/dataset_ref.py +0 -0
  576. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/references/named_reference.py +0 -0
  577. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/references/resolved_dataset_ref.py +0 -0
  578. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/references/resource_id.py +0 -0
  579. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/references/sha256.py +0 -0
  580. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/run_context.py +0 -0
  581. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/run_contracts/__init__.py +0 -0
  582. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/run_contracts/run_execution.py +0 -0
  583. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/runs/__init__.py +0 -0
  584. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/runs/budget_adjustment_client.py +0 -0
  585. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/runs/budget_history_client.py +0 -0
  586. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/runs/fork_client.py +0 -0
  587. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/runs/recovery_client.py +0 -0
  588. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/runs/recovery_handle.py +0 -0
  589. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/runs/recovery_waiter.py +0 -0
  590. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/runs/run_event_cursor.py +0 -0
  591. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/runs/run_handle.py +0 -0
  592. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/runs/run_log_stream.py +0 -0
  593. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/runs/run_waiter.py +0 -0
  594. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/runs/workflow_recovery_client.py +0 -0
  595. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/runs_client.py +0 -0
  596. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/schema_codegen/__init__.py +0 -0
  597. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/schema_codegen/field_name.py +0 -0
  598. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/schema_codegen/field_type.py +0 -0
  599. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/schema_codegen/record_field.py +0 -0
  600. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/schema_codegen/record_fields.py +0 -0
  601. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/schema_codegen/record_graph.py +0 -0
  602. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/schema_codegen/record_source.py +0 -0
  603. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/schema_codegen/schema_expression.py +0 -0
  604. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/schema_codegen/schema_generator.py +0 -0
  605. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/schema_codegen/schema_projection.py +0 -0
  606. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/schema_codegen/schema_types.py +0 -0
  607. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/schemas/__init__.py +0 -0
  608. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/schemas/asset_schema.py +0 -0
  609. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/schemas/captured_resolver.py +0 -0
  610. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/schemas/formats.json +0 -0
  611. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/schemas/identity.py +0 -0
  612. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/schemas/missing.py +0 -0
  613. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/schemas/record_values.py +0 -0
  614. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/schemas/schema_document.py +0 -0
  615. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/schemas/schema_issue.py +0 -0
  616. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/schemas/schema_nodes.py +0 -0
  617. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/schemas/schema_policy.py +0 -0
  618. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/schemas/schema_record.py +0 -0
  619. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/schemas/schema_validation_error.py +0 -0
  620. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/schemas/schema_validator.py +0 -0
  621. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/schemas/value_decoder.py +0 -0
  622. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/schemas/value_shape.py +0 -0
  623. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/schemas/value_union.py +0 -0
  624. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/secrets_client.py +0 -0
  625. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/serializable_model.py +0 -0
  626. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/sse_client.py +0 -0
  627. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/sse_fields.py +0 -0
  628. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/stage_timer.py +0 -0
  629. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/storage/__init__.py +0 -0
  630. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/storage/asset_publisher.py +0 -0
  631. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/storage/asset_source.py +0 -0
  632. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/storage/cache_eviction.py +0 -0
  633. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/storage/cache_lock.py +0 -0
  634. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/storage/cache_receipt.py +0 -0
  635. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/storage/cache_settings.py +0 -0
  636. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/storage/client_asset_source.py +0 -0
  637. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/storage/direct_asset_download.py +0 -0
  638. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/storage/file_access.py +0 -0
  639. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/storage/local_asset_publisher.py +0 -0
  640. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/storage/shared_asset_cache.py +0 -0
  641. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/storage/temporary_asset_file.py +0 -0
  642. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/storage/unavailable_asset_publisher.py +0 -0
  643. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/storage/unavailable_file_access.py +0 -0
  644. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/storage/verified_file.py +0 -0
  645. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/storage/worker_asset_source.py +0 -0
  646. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/storage/worker_file_access.py +0 -0
  647. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/training/__init__.py +0 -0
  648. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/training/assets/__init__.py +0 -0
  649. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/training/assets/worker_asset_publisher.py +0 -0
  650. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/training/budgets/__init__.py +0 -0
  651. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/training/budgets/__main__.py +0 -0
  652. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/training/budgets/expiry_process.py +0 -0
  653. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/training/budgets/fit_allowance.py +0 -0
  654. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/training/budgets/fit_budget_client.py +0 -0
  655. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/training/budgets/fit_grant.py +0 -0
  656. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/training/budgets/fit_interval.py +0 -0
  657. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/training/budgets/fit_report.py +0 -0
  658. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/training/budgets/fit_session.py +0 -0
  659. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/training/budgets/fit_supervisor.py +0 -0
  660. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/training/distributed/__init__.py +0 -0
  661. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/training/distributed/checkpoint_archive.py +0 -0
  662. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/training/distributed/distributed_fit.py +0 -0
  663. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/training/distributed/group_restoration.py +0 -0
  664. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/training/distributed/rank_adapter.py +0 -0
  665. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/training/distributed/rank_event.py +0 -0
  666. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/training/distributed/rank_execution.py +0 -0
  667. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/training/distributed/rank_factory.py +0 -0
  668. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/training/distributed/rank_failure_error.py +0 -0
  669. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/training/distributed/rank_process.py +0 -0
  670. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/training/distributed/rank_processes.py +0 -0
  671. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/training/distributed/rank_snapshot.py +0 -0
  672. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/training/experiment_sink.py +0 -0
  673. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/training/labqoat_logger.py +0 -0
  674. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/training/lightning/__init__.py +0 -0
  675. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/training/lightning/labqoat_lightning_logger.py +0 -0
  676. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/training/lightning/lightning_callbacks.py +0 -0
  677. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/training/lightning/lightning_fit.py +0 -0
  678. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/training/lightning/lightning_fit_gate.py +0 -0
  679. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/training/lightning/lightning_restore_adapter.py +0 -0
  680. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/training/lightning_scalars.py +0 -0
  681. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/training/metric_batch.py +0 -0
  682. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/training/recovery/__init__.py +0 -0
  683. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/training/recovery/recovery_binding.py +0 -0
  684. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/training/recovery/recovery_capability.py +0 -0
  685. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/training/recovery/restore_adapter.py +0 -0
  686. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/training/recovery/restore_envelope.py +0 -0
  687. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/training/recovery/restore_snapshot.py +0 -0
  688. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/training/recovery/restore_state.py +0 -0
  689. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/training/run_log_record.py +0 -0
  690. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/training/telemetry_unavailable_error.py +0 -0
  691. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/training/training_metrics.py +0 -0
  692. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/training/worker_experiment_sink.py +0 -0
  693. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/worker/__init__.py +0 -0
  694. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/worker/async_http_lease.py +0 -0
  695. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/worker/async_scoped_api.py +0 -0
  696. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/worker/async_worker_event_stream.py +0 -0
  697. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/worker/child_result_frame.py +0 -0
  698. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/worker/http_connections.py +0 -0
  699. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/worker/replay_request.py +0 -0
  700. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/worker/scoped_api.py +0 -0
  701. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/worker/session/__init__.py +0 -0
  702. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/worker/session/local_frames.py +0 -0
  703. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/worker/session/local_session_client.py +0 -0
  704. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/worker/session/session_bridge.py +0 -0
  705. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/worker/session/session_connection.py +0 -0
  706. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/worker/session/session_credentials.py +0 -0
  707. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/worker/session/session_endpoint.py +0 -0
  708. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/worker/session/session_frames.py +0 -0
  709. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/worker/session/session_outbox.py +0 -0
  710. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/worker/session/session_pending.py +0 -0
  711. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/worker/session/session_routes.py +0 -0
  712. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/worker/session/session_telemetry.py +0 -0
  713. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/worker/session/worker_session.py +0 -0
  714. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/worker/telemetry_frames.py +0 -0
  715. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/worker/worker_api.py +0 -0
  716. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/worker/worker_api_error.py +0 -0
  717. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/worker/worker_event_stream.py +0 -0
  718. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/worker/worker_lease.py +0 -0
  719. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/worker/worker_telemetry_buffer.py +0 -0
  720. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/worker/worker_telemetry_stream.py +0 -0
  721. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/worker_pools_client.py +0 -0
  722. {labqoat-0.2.2 → labqoat-0.2.3}/src/labqoat/workflows/__init__.py +0 -0
  723. {labqoat-0.2.2 → labqoat-0.2.3}/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.3
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.3"
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.3"
25
25
 
26
26
  __all__ = [
27
27
  "Client",
@@ -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
  ):
@@ -209,15 +209,13 @@ Use `lab run FILE.py::FUNCTION` for custom ingestion or transformation; see
209
209
  return context.datasets.publish(output_name, row_type=OutputRow, rows=transformed_rows, key="derived-data")
210
210
  ```
211
211
 
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.
212
+ The worker publication returns a typed immutable dataset and takes any number of
213
+ rows: small publications travel in one request, larger ones are streamed to ordered
214
+ JSONL parts and retained for you (up to 100 parts of 64 MiB). Pass a generator
215
+ rather than a list for a large table, publish each split as one dataset, and never
216
+ truncate, sample or shard rows across numbered datasets to make them fit. An
217
+ unmodified upstream split comes in with `dataset import-hf`; `import-hf --preview`
218
+ can fail with `worker_failed` while the real import with `--name` still works.
221
219
  Keep input revision references, transformation configuration, producing run,
222
220
  and validation evidence with the resulting revision. Uploaded file assets and
223
221
  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,)
@@ -920,7 +920,7 @@ wheels = [
920
920
 
921
921
  [[package]]
922
922
  name = "labqoat"
923
- version = "0.2.2"
923
+ version = "0.2.3"
924
924
  source = { editable = "." }
925
925
  dependencies = [
926
926
  { name = "click" },
File without changes
File without changes
File without changes