mostlyright-data 0.15.0__tar.gz → 0.15.2__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 (584) hide show
  1. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/PKG-INFO +1 -1
  2. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/pyproject.toml +1 -1
  3. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/skills/mr-data-build/SKILL.md +32 -4
  4. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/acquisition/http.py +360 -0
  5. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/acquisition/parsing.py +606 -4
  6. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/acquisition/sandbox.py +908 -65
  7. mostlyright_data-0.15.2/src/mostlyright/data_harness/bounded_scratch_sink.py +223 -0
  8. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/cli.py +3 -0
  9. mostlyright_data-0.15.2/src/mostlyright/data_harness/compact_worker.py +371 -0
  10. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/declared_checks.py +166 -54
  11. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/formats.py +2 -0
  12. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/hosted_bootstrap.py +4 -0
  13. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/hosted_crawler.py +27 -2
  14. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/hosted_crawler_fetch.py +42 -0
  15. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/hosted_run_worker.py +3314 -136
  16. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/hosted_stream_subscription_worker.py +24 -0
  17. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/hosted_worker.py +13 -2
  18. mostlyright_data-0.15.2/src/mostlyright/data_harness/incremental_slice_executor.py +815 -0
  19. mostlyright_data-0.15.2/src/mostlyright/data_harness/incremental_worker.py +524 -0
  20. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/inprocess_acquisition.py +347 -1
  21. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/linux_process_boundary.py +168 -3
  22. mostlyright_data-0.15.2/src/mostlyright/data_harness/part_check_evidence.py +348 -0
  23. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/pipeline.py +40 -14
  24. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/plan_graph.py +53 -12
  25. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/run_execution_v4.py +807 -18
  26. mostlyright_data-0.15.2/src/mostlyright/data_harness/source_bootstrap.py +238 -0
  27. mostlyright_data-0.15.2/src/mostlyright/data_harness/source_bundle_writer.py +602 -0
  28. mostlyright_data-0.15.2/src/mostlyright/data_harness/source_history_candidate_child.py +188 -0
  29. mostlyright_data-0.15.2/src/mostlyright/data_harness/source_history_transform_child.py +151 -0
  30. mostlyright_data-0.15.2/src/mostlyright/data_harness/source_inventory.py +162 -0
  31. mostlyright_data-0.15.2/src/mostlyright/data_harness/source_raw_inventory.py +243 -0
  32. mostlyright_data-0.15.2/src/mostlyright/data_harness/source_state_index.py +543 -0
  33. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/_adapter_steps.py +19 -3
  34. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/catalog/streaming_delta.py +5 -4
  35. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/contracts.py +3 -1
  36. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/registry.py +183 -11
  37. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/stream.py +13 -1
  38. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/stream_capture_session.py +67 -8
  39. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/stream_connector.py +119 -23
  40. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/stream_transport.py +14 -1
  41. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sql_transform_engine.py +523 -15
  42. mostlyright_data-0.15.2/src/mostlyright/data_harness/stream_order_vector.py +136 -0
  43. mostlyright_data-0.15.2/src/mostlyright/data_harness/stream_recovery_objects.py +256 -0
  44. mostlyright_data-0.15.2/src/mostlyright/data_harness/stream_segment_spill.py +275 -0
  45. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/stream_subscription_feed.py +82 -6
  46. mostlyright_data-0.15.2/src/mostlyright/data_harness/stream_subscription_sealer.py +1440 -0
  47. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/stream_subscription_worker.py +975 -94
  48. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/stream_venue_staging.py +310 -59
  49. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/studio_boundary.py +2 -2
  50. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/studio_subscription_control.py +331 -9
  51. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/table_manifest.py +203 -10
  52. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/table_parts.py +236 -26
  53. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/thin/recipe.py +81 -0
  54. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/thin/router.py +5 -0
  55. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/thin/v4.py +47 -16
  56. mostlyright_data-0.15.2/src/mostlyright/data_harness/thin/v4_connections.py +45 -0
  57. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/thin/v4_datasets.py +174 -1
  58. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/thin/v4_runs.py +8 -3
  59. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/thin/v4_tables.py +1 -1
  60. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/thin/vocabulary.py +4 -0
  61. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/ux/commands/__init__.py +0 -92
  62. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/ux/headline.py +0 -3
  63. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/ux/readers.py +4 -2
  64. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/ux/remediation.py +54 -243
  65. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/ux/render.py +1 -22
  66. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/v4_acquisition.py +88 -4
  67. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/v4_recipe.py +331 -3
  68. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/v4_window.py +126 -0
  69. mostlyright_data-0.15.0/src/mostlyright/data_harness/documents/agent_request.py +0 -224
  70. mostlyright_data-0.15.0/src/mostlyright/data_harness/hosted_dataset.py +0 -1500
  71. mostlyright_data-0.15.0/src/mostlyright/data_harness/hosted_handoff.py +0 -62
  72. mostlyright_data-0.15.0/src/mostlyright/data_harness/local_search/__init__.py +0 -5
  73. mostlyright_data-0.15.0/src/mostlyright/data_harness/local_search/build_index.py +0 -1087
  74. mostlyright_data-0.15.0/src/mostlyright/data_harness/local_search/contracts.py +0 -920
  75. mostlyright_data-0.15.0/src/mostlyright/data_harness/local_search/query_trace.py +0 -266
  76. mostlyright_data-0.15.0/src/mostlyright/data_harness/local_search/retrieval.py +0 -700
  77. mostlyright_data-0.15.0/src/mostlyright/data_harness/local_search/sealed.py +0 -474
  78. mostlyright_data-0.15.0/src/mostlyright/data_harness/local_search/service.py +0 -784
  79. mostlyright_data-0.15.0/src/mostlyright/data_harness/repair/__init__.py +0 -78
  80. mostlyright_data-0.15.0/src/mostlyright/data_harness/repair/adapters.py +0 -274
  81. mostlyright_data-0.15.0/src/mostlyright/data_harness/repair/contracts.py +0 -872
  82. mostlyright_data-0.15.0/src/mostlyright/data_harness/repair/coordinator.py +0 -1099
  83. mostlyright_data-0.15.0/src/mostlyright/data_harness/repair/errors.py +0 -16
  84. mostlyright_data-0.15.0/src/mostlyright/data_harness/sources/catalog/delta.py +0 -1307
  85. mostlyright_data-0.15.0/src/mostlyright/data_harness/sources/catalog/health.py +0 -447
  86. mostlyright_data-0.15.0/src/mostlyright/data_harness/sources/catalog/rights_decisions.py +0 -255
  87. mostlyright_data-0.15.0/src/mostlyright/data_harness/stream_subscription_sealer.py +0 -689
  88. mostlyright_data-0.15.0/src/mostlyright/data_harness/ux/approve.py +0 -485
  89. mostlyright_data-0.15.0/src/mostlyright/data_harness/ux/author_yaml.py +0 -597
  90. mostlyright_data-0.15.0/src/mostlyright/data_harness/ux/commands/approve.py +0 -136
  91. mostlyright_data-0.15.0/src/mostlyright/data_harness/ux/commands/author.py +0 -79
  92. mostlyright_data-0.15.0/src/mostlyright/data_harness/ux/commands/catalog_fill.py +0 -523
  93. mostlyright_data-0.15.0/src/mostlyright/data_harness/ux/commands/catalog_search.py +0 -71
  94. mostlyright_data-0.15.0/src/mostlyright/data_harness/ux/commands/catalog_update.py +0 -445
  95. mostlyright_data-0.15.0/src/mostlyright/data_harness/ux/commands/deploy.py +0 -134
  96. mostlyright_data-0.15.0/src/mostlyright/data_harness/ux/commands/deploy_dataset.py +0 -98
  97. mostlyright_data-0.15.0/src/mostlyright/data_harness/ux/commands/deploy_plan.py +0 -105
  98. mostlyright_data-0.15.0/src/mostlyright/data_harness/ux/commands/deploy_status.py +0 -104
  99. mostlyright_data-0.15.0/src/mostlyright/data_harness/ux/commands/diff.py +0 -74
  100. mostlyright_data-0.15.0/src/mostlyright/data_harness/ux/commands/document.py +0 -366
  101. mostlyright_data-0.15.0/src/mostlyright/data_harness/ux/commands/index.py +0 -84
  102. mostlyright_data-0.15.0/src/mostlyright/data_harness/ux/commands/inventory.py +0 -47
  103. mostlyright_data-0.15.0/src/mostlyright/data_harness/ux/commands/list_builds.py +0 -143
  104. mostlyright_data-0.15.0/src/mostlyright/data_harness/ux/commands/peek.py +0 -236
  105. mostlyright_data-0.15.0/src/mostlyright/data_harness/ux/commands/plan_check.py +0 -90
  106. mostlyright_data-0.15.0/src/mostlyright/data_harness/ux/commands/preflight.py +0 -97
  107. mostlyright_data-0.15.0/src/mostlyright/data_harness/ux/commands/review_setup.py +0 -47
  108. mostlyright_data-0.15.0/src/mostlyright/data_harness/ux/commands/search.py +0 -440
  109. mostlyright_data-0.15.0/src/mostlyright/data_harness/ux/commands/show.py +0 -61
  110. mostlyright_data-0.15.0/src/mostlyright/data_harness/ux/diffing.py +0 -444
  111. mostlyright_data-0.15.0/src/mostlyright/data_harness/ux/hosted_run_status.py +0 -619
  112. mostlyright_data-0.15.0/src/mostlyright/data_harness/ux/inventory.py +0 -427
  113. mostlyright_data-0.15.0/src/mostlyright/data_harness/ux/peek.py +0 -992
  114. mostlyright_data-0.15.0/src/mostlyright/data_harness/ux/plan_check.py +0 -311
  115. mostlyright_data-0.15.0/src/mostlyright/data_harness/ux/preflight.py +0 -918
  116. mostlyright_data-0.15.0/src/mostlyright/data_harness/ux/workload.py +0 -1077
  117. mostlyright_data-0.15.0/src/mostlyright/data_harness/visual_run/query.py +0 -259
  118. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/.gitignore +0 -0
  119. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/README.md +0 -0
  120. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/scripts/hatch_build.py +0 -0
  121. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/skills/mr-data-build/agents/openai.yaml +0 -0
  122. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/skills/mr-data-build/scripts/write_research_notebook.py +0 -0
  123. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/skills/mr-data-build/scripts/write_visual_run.py +0 -0
  124. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/_vendor/__init__.py +0 -0
  125. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/_vendor/rapidocr/LICENSE +0 -0
  126. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/_vendor/rapidocr/PROVENANCE.json +0 -0
  127. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/_vendor/rapidocr/__init__.py +0 -0
  128. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/_vendor/rapidocr/__init__.pyi +0 -0
  129. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/_vendor/rapidocr/_version.py +0 -0
  130. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/_vendor/rapidocr/cal_rec_boxes/__init__.py +0 -0
  131. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/_vendor/rapidocr/cal_rec_boxes/main.py +0 -0
  132. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/_vendor/rapidocr/ch_ppocr_cls/__init__.py +0 -0
  133. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/_vendor/rapidocr/ch_ppocr_cls/main.py +0 -0
  134. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/_vendor/rapidocr/ch_ppocr_cls/utils.py +0 -0
  135. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/_vendor/rapidocr/ch_ppocr_det/__init__.py +0 -0
  136. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/_vendor/rapidocr/ch_ppocr_det/main.py +0 -0
  137. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/_vendor/rapidocr/ch_ppocr_det/utils.py +0 -0
  138. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/_vendor/rapidocr/ch_ppocr_rec/__init__.py +0 -0
  139. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/_vendor/rapidocr/ch_ppocr_rec/main.py +0 -0
  140. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/_vendor/rapidocr/ch_ppocr_rec/typings.py +0 -0
  141. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/_vendor/rapidocr/ch_ppocr_rec/utils.py +0 -0
  142. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/_vendor/rapidocr/config.yaml +0 -0
  143. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/_vendor/rapidocr/inference_engine/__init__.py +0 -0
  144. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/_vendor/rapidocr/inference_engine/base.py +0 -0
  145. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/_vendor/rapidocr/inference_engine/onnxruntime/__init__.py +0 -0
  146. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/_vendor/rapidocr/inference_engine/onnxruntime/main.py +0 -0
  147. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/_vendor/rapidocr/inference_engine/onnxruntime/provider_config.py +0 -0
  148. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/_vendor/rapidocr/main.py +0 -0
  149. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/_vendor/rapidocr/models/PP-OCRv6_det_small.onnx +0 -0
  150. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/_vendor/rapidocr/models/PP-OCRv6_rec_small.onnx +0 -0
  151. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/_vendor/rapidocr/models/ch_ppocr_mobile_v2.0_cls_mobile.onnx +0 -0
  152. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/_vendor/rapidocr/py.typed +0 -0
  153. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/_vendor/rapidocr/utils/__init__.py +0 -0
  154. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/_vendor/rapidocr/utils/load_image.py +0 -0
  155. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/_vendor/rapidocr/utils/log.py +0 -0
  156. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/_vendor/rapidocr/utils/model_resolver.py +0 -0
  157. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/_vendor/rapidocr/utils/output.py +0 -0
  158. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/_vendor/rapidocr/utils/parse_parameters.py +0 -0
  159. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/_vendor/rapidocr/utils/process_img.py +0 -0
  160. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/_vendor/rapidocr/utils/typings.py +0 -0
  161. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/_vendor/rapidocr/utils/utils.py +0 -0
  162. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/__init__.py +0 -0
  163. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/acquisition/__init__.py +0 -0
  164. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/acquisition/derived_credentials.py +0 -0
  165. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/acquisition/ranges.py +0 -0
  166. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/acquisition/result_download.py +0 -0
  167. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/acquisition/retention_admission.py +0 -0
  168. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/acquisition/url_policy.py +0 -0
  169. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/agent_runtime.py +0 -0
  170. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/assets/logo-ink.svg +0 -0
  171. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/backends/__init__.py +0 -0
  172. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/backends/pandas_backend.py +0 -0
  173. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/backends/polars_backend.py +0 -0
  174. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/backends/protocol.py +0 -0
  175. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/backends/reference.py +0 -0
  176. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/backends/registry.py +0 -0
  177. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/backends/restrictions.py +0 -0
  178. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/bounded_query.py +0 -0
  179. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/canonical.py +0 -0
  180. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/catalog_job.py +0 -0
  181. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/contracts.py +0 -0
  182. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/coordinator.py +0 -0
  183. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/crosswalks.py +0 -0
  184. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/deploy.py +0 -0
  185. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/deploy_target.py +0 -0
  186. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/deployment_evidence.py +0 -0
  187. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/documents/__init__.py +0 -0
  188. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/documents/_worker_capability.py +0 -0
  189. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/documents/capture.py +0 -0
  190. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/documents/contracts.py +0 -0
  191. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/documents/lane.py +0 -0
  192. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/documents/ocr.py +0 -0
  193. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/documents/pdf.py +0 -0
  194. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/documents/registry.py +0 -0
  195. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/documents/sandbox.py +0 -0
  196. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/documents/selections.py +0 -0
  197. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/documents/tables.py +0 -0
  198. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/documents/vendor_rapidocr.py +0 -0
  199. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/events.py +0 -0
  200. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/fast_delimited.py +0 -0
  201. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/governors.py +0 -0
  202. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/hosted_crawler_container_smoke.py +0 -0
  203. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/hosted_crawler_job.py +0 -0
  204. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/hosted_crawler_protocol.py +0 -0
  205. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/hosted_deploy.py +0 -0
  206. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/hosted_ingestion_contract.py +0 -0
  207. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/hosted_ingestion_job.py +0 -0
  208. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/hosted_ingestion_job_smoke.py +0 -0
  209. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/hosted_rlimit_as_container_smoke.py +0 -0
  210. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/hosted_session_container_smoke.py +0 -0
  211. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/hosted_session_worker.py +0 -0
  212. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/hosted_session_worker_job_smoke.py +0 -0
  213. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/hosted_stream_recorder_container_smoke.py +0 -0
  214. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/hosted_stream_recorder_job.py +0 -0
  215. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/hosted_stream_subscription_container_smoke.py +0 -0
  216. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/ingestion/__init__.py +0 -0
  217. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/ingestion/contracts.py +0 -0
  218. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/ingestion/faults.py +0 -0
  219. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/ingestion/gcs_store.py +0 -0
  220. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/ingestion/spool.py +0 -0
  221. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/ingestion/store.py +0 -0
  222. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/key_seam.py +0 -0
  223. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/local_contracts.py +0 -0
  224. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/nbrender/CONTRACT.md +0 -0
  225. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/nbrender/__init__.py +0 -0
  226. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/nbrender/chrome.py +0 -0
  227. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/nbrender/code_body.py +0 -0
  228. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/nbrender/document.py +0 -0
  229. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/nbrender/frame.py +0 -0
  230. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/nbrender/interactive.py +0 -0
  231. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/nbrender/markdown_body.py +0 -0
  232. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/nbrender/mr_components.py +0 -0
  233. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/nbrender/outputs_data.py +0 -0
  234. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/nbrender/outputs_rich.py +0 -0
  235. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/nbrender/outputs_source.py +0 -0
  236. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/nbrender/outputs_stage.py +0 -0
  237. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/nbrender/outputs_text.py +0 -0
  238. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/nbrender/parse.py +0 -0
  239. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/nbrender/status.py +0 -0
  240. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/nbrender/tokens.py +0 -0
  241. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/notebook.py +0 -0
  242. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/offline.py +0 -0
  243. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/operation_registry.py +0 -0
  244. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/operator_setup.py +0 -0
  245. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/preparation/__init__.py +0 -0
  246. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/preparation/contracts.py +0 -0
  247. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/preparation/engine.py +0 -0
  248. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/preparation/errors.py +0 -0
  249. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/preparation/gates.py +0 -0
  250. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/preparation/joins.py +0 -0
  251. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/preparation/profile.py +0 -0
  252. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/preparation/table.py +0 -0
  253. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/preparation/transforms.py +0 -0
  254. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/progress_events.py +0 -0
  255. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/__init__.py +0 -0
  256. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/_openpyxl.py +0 -0
  257. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/budgets.py +0 -0
  258. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/containers.py +0 -0
  259. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/contracts.py +0 -0
  260. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/delimited.py +0 -0
  261. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/geojson_vector.py +0 -0
  262. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/geopackage.py +0 -0
  263. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/geoparquet.py +0 -0
  264. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/grib2/__init__.py +0 -0
  265. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/grib2/admission.py +0 -0
  266. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/grib2/collection.py +0 -0
  267. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/grib2/collection_reader.py +0 -0
  268. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/grib2/decode.py +0 -0
  269. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/grib2/geometry.py +0 -0
  270. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/grib2/portable_math.py +0 -0
  271. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/grib_eccodes.py +0 -0
  272. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/html_tabular.py +0 -0
  273. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/html_web_extract.py +0 -0
  274. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/json_tabular.py +0 -0
  275. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/parquet_tabular.py +0 -0
  276. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/pcaxis_px.py +0 -0
  277. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/protobuf_tabular.py +0 -0
  278. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/raster/__init__.py +0 -0
  279. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/raster/_bytes.py +0 -0
  280. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/raster/decode.py +0 -0
  281. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/raster/family.py +0 -0
  282. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/raster/jpeg2000.py +0 -0
  283. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/raster/profiles.py +0 -0
  284. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/raster/rendered.py +0 -0
  285. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/raster/safe.py +0 -0
  286. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/raster/sentinel_safe.py +0 -0
  287. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/raster/tiff.py +0 -0
  288. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/registry.py +0 -0
  289. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/README.md +0 -0
  290. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/archive.gzip/1.0.0/cities_one_stream/cities.csv.gz +0 -0
  291. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/archive.gzip/1.0.0/cities_one_stream/expected.json +0 -0
  292. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/archive.gzip/1.1.0/cities_one_stream/cities.csv.gz +0 -0
  293. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/archive.gzip/1.1.0/cities_one_stream/expected.json +0 -0
  294. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/archive.tar/1.0.0/cities_beside_a_directory_entry/cities.tar +0 -0
  295. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/archive.tar/1.0.0/cities_beside_a_directory_entry/expected.json +0 -0
  296. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/archive.tar/1.1.0/cities_beside_a_directory_entry/cities.tar +0 -0
  297. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/archive.tar/1.1.0/cities_beside_a_directory_entry/expected.json +0 -0
  298. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/archive.zip/1.0.0/cities_beside_a_second_member/cities.zip +0 -0
  299. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/archive.zip/1.0.0/cities_beside_a_second_member/expected.json +0 -0
  300. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/archive.zip/1.1.0/dwd_semicolon_station_member/dwd-station.zip +0 -0
  301. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/archive.zip/1.1.0/dwd_semicolon_station_member/expected.json +0 -0
  302. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/archive.zip/1.2.0/dwd_semicolon_station_member/dwd-station.zip +0 -0
  303. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/archive.zip/1.2.0/dwd_semicolon_station_member/expected.json +0 -0
  304. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/delimited_text/1.0.0/an_ordinary_comma_separated_table/cities.csv +0 -0
  305. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/delimited_text/1.0.0/an_ordinary_comma_separated_table/expected.json +0 -0
  306. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/delimited_text/1.0.0/quoted_fields_holding_the_delimiter/cities.tsv +0 -0
  307. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/delimited_text/1.0.0/quoted_fields_holding_the_delimiter/expected.json +0 -0
  308. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/delimited_text/1.1.0/an_hourly_observation_table_served_as_plain_text/expected.json +0 -0
  309. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/delimited_text/1.1.0/an_hourly_observation_table_served_as_plain_text/observations.csv +0 -0
  310. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/geojson.vector/1.0.0/czech_capital/expected.json +0 -0
  311. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/geojson.vector/1.0.0/czech_capital/places.geojson +0 -0
  312. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/geopackage.vector/1.0.0/epsg_4326_feature/expected.json +0 -0
  313. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/geopackage.vector/1.0.0/epsg_4326_feature/places.gpkg +0 -0
  314. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/geoparquet.vector/1.0.0/primary_wkb_point/expected.json +0 -0
  315. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/geoparquet.vector/1.0.0/primary_wkb_point/places.parquet +0 -0
  316. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/html.tabular/1.0.0/sanitized_table/expected.json +0 -0
  317. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/html.tabular/1.0.0/sanitized_table/table.html +0 -0
  318. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/html.web_extract/1.0.0/json_ld_scorecards/expected.json +0 -0
  319. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/html.web_extract/1.0.0/json_ld_scorecards/scorecards.html +0 -0
  320. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/image.rendered/1.0.0/tiny_png/expected.json +0 -0
  321. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/image.rendered/1.0.0/tiny_png/tiny-rendered.png +0 -0
  322. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/json.tabular/1.0.0/nested_hourly_observations/expected.json +0 -0
  323. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/json.tabular/1.0.0/nested_hourly_observations/stations.json +0 -0
  324. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/json.tabular/1.1.0/an_observation_stream_served_as_plain_text/expected.json +0 -0
  325. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/json.tabular/1.1.0/an_observation_stream_served_as_plain_text/observations.ndjson +0 -0
  326. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/meteorology.bufr/1.0.0/eccodes_bufr4_subset/eccodes-bufr4.bufr +0 -0
  327. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/meteorology.bufr/1.0.0/eccodes_bufr4_subset/expected.json +0 -0
  328. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/meteorology.grib/1.0.0/eccodes_grib1_origin/expected.json +0 -0
  329. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/meteorology.grib/1.0.0/eccodes_grib1_origin/regular-ll-surface.grib1 +0 -0
  330. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/microdata.sas_xpt/1.0.0/two_raw_columns/expected.json +0 -0
  331. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/microdata.sas_xpt/1.0.0/two_raw_columns/survey.xpt +0 -0
  332. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/microdata.spss_sav/1.0.0/two_raw_columns/expected.json +0 -0
  333. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/microdata.spss_sav/1.0.0/two_raw_columns/survey.sav +0 -0
  334. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/microdata.stata_dta/1.0.0/two_raw_columns/expected.json +0 -0
  335. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/microdata.stata_dta/1.0.0/two_raw_columns/stata.dta +0 -0
  336. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/official.pcaxis_px/1.0.0/population_by_region_and_year/expected.json +0 -0
  337. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/official.pcaxis_px/1.0.0/population_by_region_and_year/population.px +0 -0
  338. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/official.sdmx_json/1.0.0/compact_population_series/expected.json +0 -0
  339. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/official.sdmx_json/1.0.0/compact_population_series/population.json +0 -0
  340. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/parquet.tabular/1.0.0/two_columns/expected.json +0 -0
  341. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/parquet.tabular/1.0.0/two_columns/prices.parquet +0 -0
  342. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/protobuf.tabular/1.0.0/gtfs_realtime_trip_updates/expected.json +0 -0
  343. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/protobuf.tabular/1.0.0/gtfs_realtime_trip_updates/gtfs-realtime.desc +0 -0
  344. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/protobuf.tabular/1.0.0/gtfs_realtime_trip_updates/trip-updates.pb +0 -0
  345. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/raster.geospatial/1.0.0/tiny_geotiff/expected.json +0 -0
  346. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/raster.geospatial/1.0.0/tiny_geotiff/tiny-geospatial.tif +0 -0
  347. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/satellite.goes_abi_l2/1.0.0/authored_cmi_window/expected.json +0 -0
  348. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/satellite.goes_abi_l2/1.0.0/authored_cmi_window/goes-abi-l2-cmi-window.nc +0 -0
  349. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/satellite.himawari_hsd/1.0.0/authored_b13_single_bzip2/expected.json +0 -0
  350. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/satellite.himawari_hsd/1.0.0/authored_b13_single_bzip2/himawari-b13-0101-bzip2.dat +0 -0
  351. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/satellite.himawari_hsd_complete/1.0.0/authored_b13_three_segment_scan/expected.json +0 -0
  352. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/satellite.himawari_hsd_complete/1.0.0/authored_b13_three_segment_scan/himawari-hsd-b13-complete.zip +0 -0
  353. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/satellite.msg_seviri_l15/1.0.0/authored_calibrated_complete_visir/expected.json +0 -0
  354. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/satellite.msg_seviri_l15/1.0.0/authored_calibrated_complete_visir/msg-seviri-l15.zip +0 -0
  355. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/satellite.sentinel_safe/1.0.0/authored_b02_scl_window/expected.json +0 -0
  356. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/satellite.sentinel_safe/1.0.0/authored_b02_scl_window/sentinel-safe-b02-scl.zip +0 -0
  357. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/satellite.xrit_image/1.0.0/authored_complete_raw_counts/expected.json +0 -0
  358. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/satellite.xrit_image/1.0.0/authored_complete_raw_counts/xrit-complete-image.zip +0 -0
  359. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/scientific.fits/1.0.0/tiny_primary_window/expected.json +0 -0
  360. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/scientific.fits/1.0.0/tiny_primary_window/tiny-primary.fits +0 -0
  361. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/scientific.hdf4/1.0.0/authored_temperature_window/expected.json +0 -0
  362. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/scientific.hdf4/1.0.0/authored_temperature_window/temperature.hdf +0 -0
  363. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/scientific.hdf5/1.0.0/authored_temperature_window/expected.json +0 -0
  364. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/scientific.hdf5/1.0.0/authored_temperature_window/temperature.h5 +0 -0
  365. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/scientific.hdf_eos2/1.0.0/authored_grid_temperature_window/expected.json +0 -0
  366. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/scientific.hdf_eos2/1.0.0/authored_grid_temperature_window/nasa-hdfeos2-grid.hdf +0 -0
  367. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/scientific.hdf_eos2/1.0.0/authored_swath_temperature_window/expected.json +0 -0
  368. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/scientific.hdf_eos2/1.0.0/authored_swath_temperature_window/nasa-hdfeos2-swath.hdf +0 -0
  369. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/scientific.netcdf/1.0.0/authored_classic_temperature_window/expected.json +0 -0
  370. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/scientific.netcdf/1.0.0/authored_classic_temperature_window/temperature-classic.nc +0 -0
  371. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/scientific.zarr/1.0.0/authored_v3_temperature_window/expected.json +0 -0
  372. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/scientific.zarr/1.0.0/authored_v3_temperature_window/temperature-zarr-v3.zip +0 -0
  373. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/spreadsheet.xlsx/1.0.0/an_ordinary_table_beside_a_second_sheet/cities.xlsx +0 -0
  374. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/spreadsheet.xlsx/1.0.0/an_ordinary_table_beside_a_second_sheet/expected.json +0 -0
  375. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/spreadsheet.xlsx/1.0.0/shares_the_workbook_had_already_computed/expected.json +0 -0
  376. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/spreadsheet.xlsx/1.0.0/shares_the_workbook_had_already_computed/shares.xlsx +0 -0
  377. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/spreadsheet.xlsx/1.1.0/shares_the_workbook_had_already_computed/expected.json +0 -0
  378. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/spreadsheet.xlsx/1.1.0/shares_the_workbook_had_already_computed/shares.xlsx +0 -0
  379. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/README.md +0 -0
  380. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/gfs_2m_temperature/expected.json +0 -0
  381. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/gfs_2m_temperature/gfs-2m-temperature.grib2 +0 -0
  382. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/hrrr_2m_temperature/expected.json +0 -0
  383. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/hrrr_2m_temperature/hrrr-2m-temperature.grib2 +0 -0
  384. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/hrrr_categorical_rain/expected.json +0 -0
  385. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/hrrr_categorical_rain/hrrr-categorical-rain.grib2 +0 -0
  386. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/weather.grib2/2.0.0/hrrr_2m_temperature/expected.json +0 -0
  387. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/weather.grib2/2.0.0/hrrr_2m_temperature/hrrr-2m-temperature.grib2 +0 -0
  388. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/weather.grib2/3.0.0/gfs_and_hrrr_categorical_rain/expected.json +0 -0
  389. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/weather.grib2/3.0.0/gfs_and_hrrr_categorical_rain/gfs-and-hrrr-categorical-rain.grib2 +0 -0
  390. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/xbrl.facts/1.0.0/plain_filing_fact/expected.json +0 -0
  391. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/xbrl.facts/1.0.0/plain_filing_fact/filing.xml +0 -0
  392. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/xbrl.facts/1.0.0/xml_inline_fact/expected.json +0 -0
  393. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/xbrl.facts/1.0.0/xml_inline_fact/filing.xhtml +0 -0
  394. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/xml.tabular/1.0.0/pacer_rss_feed/expected.json +0 -0
  395. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/xml.tabular/1.0.0/pacer_rss_feed/feed.xml +0 -0
  396. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/xml.tabular/1.0.0/sec_form_d_filing/expected.json +0 -0
  397. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/xml.tabular/1.0.0/sec_form_d_filing/filing.xml +0 -0
  398. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/xml.tabular/1.0.0/unified_agenda_extract/agenda.xml +0 -0
  399. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples/xml.tabular/1.0.0/unified_agenda_extract/expected.json +0 -0
  400. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/samples.py +0 -0
  401. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/scientific.py +0 -0
  402. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/scientific_arrays/__init__.py +0 -0
  403. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/scientific_arrays/container.py +0 -0
  404. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/scientific_arrays/goes.py +0 -0
  405. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/scientific_arrays/hdf4.py +0 -0
  406. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/scientific_arrays/hdf4_bridge.py +0 -0
  407. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/scientific_arrays/hdf5.py +0 -0
  408. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/scientific_arrays/native.py +0 -0
  409. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/scientific_arrays/netcdf.py +0 -0
  410. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/scientific_arrays/profiles.py +0 -0
  411. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/scientific_arrays/raw.py +0 -0
  412. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/scientific_arrays/zarr.py +0 -0
  413. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/scientific_catalog.py +0 -0
  414. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/scientific_segmented/__init__.py +0 -0
  415. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/scientific_segmented/asset_sets.py +0 -0
  416. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/scientific_segmented/formats.py +0 -0
  417. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/scientific_segmented/hsd.py +0 -0
  418. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/scientific_segmented/native.py +0 -0
  419. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/scientific_segmented/profiles.py +0 -0
  420. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/scientific_segmented/reader.py +0 -0
  421. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/scientific_segmented/xrit.py +0 -0
  422. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/sdmx_json.py +0 -0
  423. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/spreadsheet.py +0 -0
  424. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/statistical_microdata.py +0 -0
  425. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/tabular.py +0 -0
  426. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/vector.py +0 -0
  427. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/vector_wkb.py +0 -0
  428. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/xbrl_facts.py +0 -0
  429. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/readers/xml_tabular.py +0 -0
  430. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/recipe.py +0 -0
  431. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/review.py +0 -0
  432. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/rowset.py +0 -0
  433. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/session_probes.py +0 -0
  434. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/signing.py +0 -0
  435. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/skill_assets.py +0 -0
  436. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/source_discovery.py +0 -0
  437. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/__init__.py +0 -0
  438. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/adapters.py +0 -0
  439. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/authenticated_https.py +0 -0
  440. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/authenticated_https_v2.py +0 -0
  441. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/authenticated_https_v3.py +0 -0
  442. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/cadence.py +0 -0
  443. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/cadence_emission.py +0 -0
  444. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/cadence_history.py +0 -0
  445. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/catalog/__init__.py +0 -0
  446. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/catalog/admission.py +0 -0
  447. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/catalog/authoring.py +0 -0
  448. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/catalog/authoring_policy.py +0 -0
  449. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/catalog/authoring_shards.py +0 -0
  450. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/catalog/bounded_io.py +0 -0
  451. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/catalog/channel.py +0 -0
  452. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/catalog/channel_client.py +0 -0
  453. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/catalog/contracts.py +0 -0
  454. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/catalog/coverage.py +0 -0
  455. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/catalog/embedding.py +0 -0
  456. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/catalog/entry_v2.py +0 -0
  457. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/catalog/fill.py +0 -0
  458. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/catalog/fill_partitions.py +0 -0
  459. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/catalog/fill_staging.py +0 -0
  460. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/catalog/gating.py +0 -0
  461. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/catalog/generation_receipt.py +0 -0
  462. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/catalog/harvest/__init__.py +0 -0
  463. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/catalog/harvest/ckan.py +0 -0
  464. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/catalog/harvest/datagov_v4.py +0 -0
  465. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/catalog/harvest/protocol.py +0 -0
  466. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/catalog/harvest/sdmx.py +0 -0
  467. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/catalog/harvest/stac.py +0 -0
  468. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/catalog/hosted_catalog.py +0 -0
  469. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/catalog/identity_history.py +0 -0
  470. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/catalog/neural.py +0 -0
  471. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/catalog/packed_catalog.py +0 -0
  472. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/catalog/packed_retrieval.py +0 -0
  473. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/catalog/packed_writer.py +0 -0
  474. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/catalog/query_trace.py +0 -0
  475. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/catalog/recommend.py +0 -0
  476. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/catalog/retrieval.py +0 -0
  477. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/catalog/retrieval_manifest.py +0 -0
  478. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/catalog/sealed.py +0 -0
  479. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/catalog/search.py +0 -0
  480. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/catalog/update.py +0 -0
  481. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/collections.py +0 -0
  482. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/dataset.py +0 -0
  483. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/deletion.py +0 -0
  484. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/document_projection.py +0 -0
  485. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/fitness.py +0 -0
  486. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/governance.py +0 -0
  487. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/hosted.py +0 -0
  488. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/integration.py +0 -0
  489. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/range_reader.py +0 -0
  490. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/rights_rule.py +0 -0
  491. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/source_cadence_vectors.v1.json +0 -0
  492. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/sports.py +0 -0
  493. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/stream_connectors/fixture.cursor-resume.v3.json +0 -0
  494. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-frame-ed25519.v2.json +0 -0
  495. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-frame-hmac.v2.json +0 -0
  496. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-frame-hmac384.v2.json +0 -0
  497. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-frame-hmac512.v2.json +0 -0
  498. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-frame.v2.json +0 -0
  499. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-header-rsa.v2.json +0 -0
  500. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-header.v2.json +0 -0
  501. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-permessage-jwt.v2.json +0 -0
  502. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-permessage.v2.json +0 -0
  503. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-prelude.v2.json +0 -0
  504. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-query.v2.json +0 -0
  505. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-subprotocol.v2.json +0 -0
  506. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-subscribe.v2.json +0 -0
  507. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-urlpath.v2.json +0 -0
  508. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/stream_connectors/polymarket.clob-market.v1.json +0 -0
  509. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/stream_credential.py +0 -0
  510. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/stream_prelude.py +0 -0
  511. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/stream_recorder.py +0 -0
  512. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/stream_registry.py +0 -0
  513. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/stream_rotation.py +0 -0
  514. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/stream_segment_recorder.py +0 -0
  515. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/stream_series.py +0 -0
  516. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/sources/stream_signing.py +0 -0
  517. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/stream_venue.py +0 -0
  518. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/table_profile.py +0 -0
  519. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/thin/__init__.py +0 -0
  520. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/thin/acquire.py +0 -0
  521. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/thin/acquire_cancel.py +0 -0
  522. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/thin/activity.py +0 -0
  523. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/thin/approvals.py +0 -0
  524. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/thin/commands.py +0 -0
  525. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/thin/download.py +0 -0
  526. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/thin/narrative.py +0 -0
  527. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/thin/parity.py +0 -0
  528. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/thin/probe.py +0 -0
  529. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/thin/propose.py +0 -0
  530. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/thin/research.py +0 -0
  531. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/thin/runs.py +0 -0
  532. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/thin/session.py +0 -0
  533. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/thin/stream.py +0 -0
  534. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/thin/stream_venue.py +0 -0
  535. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/thin/transport.py +0 -0
  536. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/thin/v4_artifacts.py +0 -0
  537. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/thin/v4_dataset_covers.py +0 -0
  538. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/thin/v4_handoff.py +0 -0
  539. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/thin/v4_narrative.py +0 -0
  540. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/thin/v4_query.py +0 -0
  541. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/thin/v4_secrets.py +0 -0
  542. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/thin/v4_stream.py +0 -0
  543. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/thin/workers.py +0 -0
  544. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/ucum/TABLE-PIN.json +0 -0
  545. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/ucum/ucum-subset.v1.json +0 -0
  546. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/unit_flow.py +0 -0
  547. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/units.py +0 -0
  548. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/ux/__init__.py +0 -0
  549. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/ux/attendance.py +0 -0
  550. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/ux/clarification.py +0 -0
  551. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/ux/cloud_auth.py +0 -0
  552. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/ux/commands/auth.py +0 -0
  553. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/ux/commands/catalog_author.py +0 -0
  554. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/ux/commands/catalog_harvest.py +0 -0
  555. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/ux/commands/catalog_publish.py +0 -0
  556. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/ux/commands/clarify.py +0 -0
  557. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/ux/commands/login.py +0 -0
  558. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/ux/commands/record.py +0 -0
  559. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/ux/commands/whoami.py +0 -0
  560. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/ux/credential_native.py +0 -0
  561. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/ux/credential_store.py +0 -0
  562. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/ux/credentials.py +0 -0
  563. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/ux/hosted_acquisition.py +0 -0
  564. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/ux/local_review.py +0 -0
  565. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/ux/login.py +0 -0
  566. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/ux/path_kind.py +0 -0
  567. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/ux/plain_file.py +0 -0
  568. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/v4_check_dialect.py +0 -0
  569. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/v4_closed_source.py +0 -0
  570. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/v4_document_pin.py +0 -0
  571. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/v4_reader_pin.py +0 -0
  572. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/v4_required_controls.py +0 -0
  573. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/v4_snapshot_artifact.py +0 -0
  574. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/v4_stream_recording.py +0 -0
  575. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/v4_transform.py +0 -0
  576. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/visual_run/__init__.py +0 -0
  577. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/visual_run/authoring.py +0 -0
  578. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/visual_run/contracts.py +0 -0
  579. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/visual_run/materialize.py +0 -0
  580. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/visual_run/observations.py +0 -0
  581. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/visual_run/reducer.py +0 -0
  582. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/visual_run/sdk.py +0 -0
  583. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/visual_run/store.py +0 -0
  584. {mostlyright_data-0.15.0 → mostlyright_data-0.15.2}/src/mostlyright/data_harness/visual_run/transport.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mostlyright-data
3
- Version: 0.15.0
3
+ Version: 0.15.2
4
4
  Summary: Mostly Right CLI for reproducible, reviewed Parquet datasets
5
5
  Project-URL: Homepage, https://mostlyright.md/
6
6
  Project-URL: Documentation, https://mostlyright.md/docs/guides/cli/
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "mostlyright-data"
3
- version = "0.15.0"
3
+ version = "0.15.2"
4
4
  description = "Mostly Right CLI for reproducible, reviewed Parquet datasets"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.13,<3.14"
@@ -102,7 +102,7 @@ absence as a defect.
102
102
 
103
103
  ## Commands
104
104
 
105
- These thirty are the whole surface, alongside `acquire-slices`, which names a capability
105
+ These thirty-one are the whole surface, alongside `acquire-slices`, which names a capability
106
106
  gap rather than doing anything, and `export-hosted-candidate`, which is a backend operator step.
107
107
 
108
108
  | Command | What it does |
@@ -128,6 +128,7 @@ gap rather than doing anything, and `export-hosted-candidate`, which is a backen
128
128
  | `mr-data verify` | Hold one run's sealed table manifest against the parts it names, and report every disagreement. Without `--deep` it fetches the manifest alone; with `--deep` it fetches every part the run sealed and re-hashes it against the digest the manifest states. Exits non-zero when anything disagrees. |
129
129
  | `mr-data parts` | List one table version's parts — the identifier, the row count, the byte size and the recorded bounds of each — so a training loader can shard them across workers and read a table no single file should hold. `--version` names a version rather than the live one, and `--from`/`--to` keep only the parts a value range cannot rule out. Nothing is downloaded by listing them; see [training loaders](../../docs/TRAINING-LOADERS.md) for the pattern. |
130
130
  | `mr-data diff` | Compare two runs and say what changed. |
131
+ | `mr-data connections` | List saved workspace connections and their current recipe coordinates; `--dataset ID` filters to connections granted to that dataset. No credential values are returned. |
131
132
  | `mr-data keys` | Enrol a source credential by name, list the names with their created and rotated times, and delete one. `keys set` reads the value from a file or from standard input and never from the command line; no command prints a value back. |
132
133
  | `mr-data stream` | Record a public `wss://` venue so a build can read it. `stream document register --file F` admits the connector document, `stream registry create --digest D` admits a set of them, `stream probe` listens briefly and seals nothing, `stream capture --seconds N` records a bounded window, `stream subscribe` keeps recording, `stream subscription {show|pause|resume|stop} ID` moves one, `stream status ID` reads a capture or a probe, and `stream recordings --document-digest D` names what a build could read and until when. `--seconds` is at most 600. `mr-data run` takes no duration: a build reads sealed batches and is bounded by them. |
133
134
  | `mr-data open` | Mint a single-use, short-lived address that continues this session in a browser at one dashboard path, and print it. `--open` hands it to the platform opener. The credential decides who mints: a device credential — what `mr-data login` stores — mints at Cloud, and a personal access token mints at Studio. |
@@ -515,8 +516,7 @@ the ones above. Spell out the names a reader would search for -- the place, the
515
516
  every common form, the programme and the publisher -- once each, in the opening sentences and
516
517
  never as a keyword list. The opening sentences double as the summary cards and search engines
517
518
  show, so they must stand alone. A one-line description is a defect to fix in the revision, not a
518
- style choice. Give `table.description` the grain and the window, and give every column a
519
- description a reader can act on.
519
+ style choice. Give `table.description` the grain and the window.
520
520
 
521
521
  **Every dataset gets a cover before its first run is presented.** Once the description is
522
522
  written, generate one with
@@ -544,7 +544,17 @@ years are already in their names.
544
544
  Leaving it out is a defect in the same way a one-line dataset description is: the source is then
545
545
  drawn with its endpoint alone, and a reader is left to guess from a query string.
546
546
 
547
- ### Say what each column shows
547
+ ### Say what each column is, and what it shows
548
+
549
+ **Every column carries a `description`, and every column that measures a physical quantity carries
550
+ a `units` entry.** The description is one sentence saying what the column means, written for
551
+ somebody who has never seen the source — `The highest air temperature recorded that day.` — and it
552
+ is what the dataset page, the schema and everybody reading the table downstream go on. The
553
+ units entry names the code that column's numbers are in, and a temperature, a distance, a duration
554
+ or a rate that arrives without one is a number nobody can convert or compare. Neither member is
555
+ work to leave for later: a recipe that leaves a column undescribed or a measurement unitless is not
556
+ one to start a run on, and a run already built from one is not finished, however well its checks
557
+ reported.
548
558
 
549
559
  Decide, per column, what a reader should see, and write it on the column as `presentation`. This is
550
560
  your judgement about the data and nobody else can make it: the Builder can see the values but not
@@ -807,6 +817,14 @@ required check that fails ends the run with `failure_code: CHECK_FAILED`.
807
817
  `mr-data diff RUN_A RUN_B` compares two runs — columns added, removed and retyped, row counts, the
808
818
  coverage window and the data fingerprint. `--columns-only` narrows what is compared to the schema.
809
819
 
820
+ **Then read the columns against the document, because an undescribed column is a revision rather
821
+ than a caveat.** `peek` names the columns the run sealed; the recipe is where their descriptions
822
+ and units are, so this is a reading of the document rather than a judgement about the data: every
823
+ column has a `description`, and every column that measures a physical quantity has a `units`
824
+ entry. A run whose recipe leaves either out is not finished — the table arrives with nothing
825
+ beside it to say what its numbers mean or what they are measured in — so it is a revision, which
826
+ is stage 7, and it is registered again before anything is presented.
827
+
810
828
  ### 7. Fix — revise the document and register it again
811
829
 
812
830
  Change the document and send it again. Same dataset, same table, new digest:
@@ -1131,6 +1149,16 @@ Two things are currently broken here and are not worth diagnosing again:
1131
1149
 
1132
1150
  ## Source credentials
1133
1151
 
1152
+ **Check saved connections first when the user names a warehouse or API connection.** Run
1153
+ `mr-data connections --dataset DATASET_ID --json`. Use the matching active connection's ID and
1154
+ version digest in `source.connection`, with the query in `parameter_values` and a valid response
1155
+ reader; set `dataset.id` to the granted dataset. Do not ask the user to re-enter an already saved
1156
+ credential under Keys. If it is not granted, explain that an owner or administrator must allow
1157
+ the dataset in Settings → Connections & secrets. See [Saved connections](../../docs/RECIPE-CONNECTIONS.md)
1158
+ for the proposal shape. Studio resolves it into the canonical recipe and enforces access during
1159
+ execution. Named secrets below remain available for sources without saved connections.
1160
+
1161
+
1134
1162
  A source that needs a credential names it, and only the name ever appears in a recipe document, a
1135
1163
  receipt, an event or a log. Enrol the value once and reference the name:
1136
1164
 
@@ -1088,6 +1088,34 @@ class TransportResponse:
1088
1088
  return values[0] if values else None
1089
1089
 
1090
1090
 
1091
+ @dataclass(frozen=True)
1092
+ class StreamedTransportResponse:
1093
+ """A transport response whose body was copied to a coordinator-owned sink.
1094
+
1095
+ The body deliberately has no representation here. Callers get the facts needed for the
1096
+ same pinned-peer receipt as ``TransportResponse`` without an opportunity to re-materialise
1097
+ a large source in coordinator memory.
1098
+ """
1099
+
1100
+ status: int
1101
+ headers: tuple[tuple[str, str], ...]
1102
+ body_size_bytes: int
1103
+ body_sha256: str
1104
+ connected_peer: str
1105
+ tls_verified: bool
1106
+ hostname_verified: bool
1107
+
1108
+ def header(self, name: str) -> str | None:
1109
+ return TransportResponse(
1110
+ self.status,
1111
+ self.headers,
1112
+ b"",
1113
+ self.connected_peer,
1114
+ self.tls_verified,
1115
+ self.hostname_verified,
1116
+ ).header(name)
1117
+
1118
+
1091
1119
  class PinnedTransport(Protocol):
1092
1120
  def request(
1093
1121
  self,
@@ -1109,6 +1137,17 @@ class PinnedTransport(Protocol):
1109
1137
  can influence character by character.
1110
1138
  """
1111
1139
 
1140
+ def request_to_sink(
1141
+ self,
1142
+ target: ValidatedTarget,
1143
+ *,
1144
+ approved_ip: str,
1145
+ headers: Mapping[str, str],
1146
+ limits: RetrievalLimits,
1147
+ sink: Callable[[bytes], None],
1148
+ ) -> StreamedTransportResponse:
1149
+ """Stream one response into ``sink`` while retaining only bounded receipt facts."""
1150
+
1112
1151
 
1113
1152
  class TransportFailureError(AcquisitionSecurityError):
1114
1153
  """Retryable transport failure with exact response-body bytes already consumed."""
@@ -1391,6 +1430,33 @@ class RetrievedBytes:
1391
1430
  )
1392
1431
 
1393
1432
 
1433
+ @dataclass(frozen=True)
1434
+ class RetrievedSink:
1435
+ """Receipt facts for a retrieval copied directly into a caller-owned file descriptor."""
1436
+
1437
+ source_url: str
1438
+ final_url: str
1439
+ media_type: str
1440
+ content_sha256: str
1441
+ content_size_bytes: int
1442
+ hops: tuple[RetrievalHop, ...]
1443
+ transport_evidence_digest: str
1444
+
1445
+ @property
1446
+ def total_response_body_size_bytes(self) -> int:
1447
+ """Every response byte consumed, including failed peer attempts."""
1448
+
1449
+ return sum(
1450
+ hop.response_body_size_bytes
1451
+ + sum(
1452
+ attempt.response_body_size_bytes
1453
+ for attempt in hop.peer_attempts[:-1]
1454
+ if attempt.outcome == "transport_failure"
1455
+ )
1456
+ for hop in self.hops
1457
+ )
1458
+
1459
+
1394
1460
  def probe_transport_for(retrieved: RetrievedBytes) -> ProbeTransport:
1395
1461
  """Seal what the terminal response of one retrieval stated.
1396
1462
 
@@ -1653,6 +1719,209 @@ class PinnedHttpsRetriever:
1653
1719
  validators=validators,
1654
1720
  )
1655
1721
 
1722
+ def retrieve_to_sink(
1723
+ self,
1724
+ url: str,
1725
+ *,
1726
+ sink: Callable[[bytes], None],
1727
+ reset_sink: Callable[[], None] | None = None,
1728
+ ) -> RetrievedSink:
1729
+ """Fetch a public whole CSV while streaming its terminal body to ``sink``.
1730
+
1731
+ Redirect bodies are discarded after their digest is measured. A peer retry starts a
1732
+ fresh request only after the failed attempt records its consumed bytes; the caller must
1733
+ therefore use a fresh staging file per acquisition and discard it on any exception.
1734
+ """
1735
+ if not callable(sink):
1736
+ raise AcquisitionSecurityError("STREAM_SINK", "stream sink must be callable")
1737
+ started = float(self._clock())
1738
+ current_url = url
1739
+ hops: list[RetrievalHop] = []
1740
+ aggregate = 0
1741
+ requests = 0
1742
+ for redirect_count in range(self._limits.max_redirects + 1):
1743
+ self._check_total_timeout(started)
1744
+ target = validate_public_https_url(
1745
+ current_url, resolver=self._resolver, egress_policy=self._egress_policy
1746
+ )
1747
+ headers = {
1748
+ "Accept": _accept_header(self._limits),
1749
+ "Accept-Encoding": "identity",
1750
+ "Connection": "close",
1751
+ "Host": urlsplit(target.normalized_url).netloc,
1752
+ "User-Agent": self._limits.user_agent,
1753
+ }
1754
+ response: StreamedTransportResponse | None = None
1755
+ attempts: list[PeerAttempt] = []
1756
+ for ip in target.approved_ips:
1757
+ if requests >= self._limits.max_requests:
1758
+ raise PeerAttemptError(
1759
+ "REQUEST_LIMIT",
1760
+ "retrieval exceeded its request budget",
1761
+ tuple(attempts),
1762
+ hops=tuple(hops),
1763
+ )
1764
+ requests += 1
1765
+ remaining = self._limits.max_aggregate_response_bytes - aggregate
1766
+ try:
1767
+ limits = self._remaining_attempt_limits(
1768
+ started + self._limits.total_timeout_seconds,
1769
+ remaining_aggregate_bytes=remaining,
1770
+ )
1771
+ # Only the terminal body reaches the supplied fd. Redirect bytes are still
1772
+ # fully consumed and evidenced, but are never retained.
1773
+ with self._limiter.acquire(
1774
+ target.hostname, deadline=started + self._limits.total_timeout_seconds
1775
+ ):
1776
+ response = self._transport.request_to_sink(
1777
+ target, approved_ip=ip, headers=headers, limits=limits, sink=sink
1778
+ )
1779
+ except AcquisitionSecurityError as exc:
1780
+ consumed = (
1781
+ exc.response_body_size_bytes
1782
+ if isinstance(exc, TransportFailureError)
1783
+ else 0
1784
+ )
1785
+ aggregate += consumed
1786
+ attempts.append(
1787
+ PeerAttempt(
1788
+ approved_ip=ip,
1789
+ outcome="transport_failure",
1790
+ failure_code=exc.code,
1791
+ response_body_size_bytes=consumed,
1792
+ )
1793
+ )
1794
+ if (
1795
+ exc.code == "TRANSPORT_FAILURE"
1796
+ and ip != target.approved_ips[-1]
1797
+ and aggregate < self._limits.max_aggregate_response_bytes
1798
+ ):
1799
+ # A failed peer may already have copied an unauthenticated prefix to
1800
+ # the caller-owned staging file. A second peer answers a fresh whole
1801
+ # representation, so it can proceed only after that prefix is removed.
1802
+ if reset_sink is None:
1803
+ raise PeerAttemptError(
1804
+ "STREAM_SINK",
1805
+ "retrying a streamed retrieval requires a resettable sink",
1806
+ tuple(attempts),
1807
+ hops=tuple(hops),
1808
+ ) from None
1809
+ reset_sink()
1810
+ continue
1811
+ raise PeerAttemptError(
1812
+ exc.code, exc.detail, tuple(attempts), hops=tuple(hops)
1813
+ ) from None
1814
+ attempts.append(
1815
+ PeerAttempt(
1816
+ approved_ip=ip,
1817
+ outcome="response",
1818
+ failure_code=None,
1819
+ response_body_size_bytes=response.body_size_bytes,
1820
+ )
1821
+ )
1822
+ break
1823
+ if response is None:
1824
+ raise PeerAttemptError(
1825
+ "TRANSPORT_FAILURE",
1826
+ "all resolver-approved peers failed",
1827
+ tuple(attempts),
1828
+ hops=tuple(hops),
1829
+ )
1830
+ aggregate += response.body_size_bytes
1831
+ if aggregate > self._limits.max_aggregate_response_bytes:
1832
+ raise PeerAttemptError(
1833
+ "AGGREGATE_RESPONSE_LIMIT",
1834
+ "response bodies exceeded aggregate budget",
1835
+ tuple(attempts),
1836
+ hops=tuple(hops),
1837
+ )
1838
+ if not response.tls_verified or not response.hostname_verified:
1839
+ raise PeerAttemptError(
1840
+ "TLS_VERIFICATION",
1841
+ "transport did not prove TLS verification",
1842
+ tuple(attempts),
1843
+ hops=tuple(hops),
1844
+ )
1845
+ peer = require_approved_peer(target, response.connected_peer)
1846
+ normalized = _validate_response_headers(response.headers)
1847
+ content_length = response.header("content-length")
1848
+ if content_length is not None and (
1849
+ not _DECIMAL_ONLY.fullmatch(content_length)
1850
+ or int(content_length) != response.body_size_bytes
1851
+ ):
1852
+ raise PeerAttemptError(
1853
+ "CONTENT_LENGTH",
1854
+ "response bytes do not match declared content length",
1855
+ tuple(attempts),
1856
+ hops=tuple(hops),
1857
+ )
1858
+ encoding = (response.header("content-encoding") or "").lower().strip()
1859
+ if encoding not in _ALLOWED_RESPONSE_ENCODINGS:
1860
+ raise PeerAttemptError(
1861
+ "CONTENT_ENCODING",
1862
+ "compressed network responses are disabled",
1863
+ tuple(attempts),
1864
+ hops=tuple(hops),
1865
+ )
1866
+ hop = RetrievalHop(
1867
+ url=target.normalized_url,
1868
+ resolution_digest=target.resolution_digest,
1869
+ connected_peer=peer,
1870
+ status=response.status,
1871
+ response_headers_digest=canonical_sha256(normalized),
1872
+ response_body_size_bytes=response.body_size_bytes,
1873
+ response_body_sha256=response.body_sha256,
1874
+ etag=response.header("etag"),
1875
+ last_modified=response.header("last-modified"),
1876
+ peer_attempts=tuple(attempts),
1877
+ approved_ips=target.approved_ips,
1878
+ )
1879
+ hops.append(hop)
1880
+ if response.status in REDIRECT_STATUSES:
1881
+ location = response.header(_REDIRECT_HEADER)
1882
+ if not location or redirect_count >= self._limits.max_redirects:
1883
+ raise PeerAttemptError(
1884
+ "REDIRECT_LIMIT",
1885
+ "response redirect is outside the admitted limit",
1886
+ tuple(attempts),
1887
+ hops=tuple(hops),
1888
+ )
1889
+ current_url = urljoin(target.normalized_url, location)
1890
+ # The redirect entity is evidence, never source content. A file-backed caller
1891
+ # truncates its coordinator staging descriptor here before the next hop.
1892
+ if reset_sink is None:
1893
+ raise AcquisitionSecurityError(
1894
+ "STREAM_SINK", "redirecting streamed retrieval requires a resettable sink"
1895
+ )
1896
+ reset_sink()
1897
+ continue
1898
+ if response.status == NOT_FOUND_STATUS or not 200 <= response.status <= 299:
1899
+ raise PeerAttemptError(
1900
+ "HTTP_STATUS",
1901
+ f"source returned HTTP status {response.status}",
1902
+ tuple(attempts),
1903
+ hops=tuple(hops),
1904
+ http_status=response.status,
1905
+ )
1906
+ media_type = _media_type(response.header("content-type"))
1907
+ if media_type not in self._limits.allowed_media_types:
1908
+ raise PeerAttemptError(
1909
+ "MEDIA_TYPE",
1910
+ "response media type is not allowlisted",
1911
+ tuple(attempts),
1912
+ hops=tuple(hops),
1913
+ )
1914
+ return RetrievedSink(
1915
+ source_url=url,
1916
+ final_url=target.normalized_url,
1917
+ media_type=media_type,
1918
+ content_sha256=response.body_sha256,
1919
+ content_size_bytes=response.body_size_bytes,
1920
+ hops=tuple(hops),
1921
+ transport_evidence_digest=canonical_sha256([hop.to_dict() for hop in hops]),
1922
+ )
1923
+ raise AcquisitionSecurityError("REDIRECT_LIMIT", "redirect loop did not terminate")
1924
+
1656
1925
  def retrieve_datagov_v4(
1657
1926
  self,
1658
1927
  url: str,
@@ -2613,6 +2882,97 @@ class StdlibPinnedTransport:
2613
2882
  finally:
2614
2883
  connection.close()
2615
2884
 
2885
+ def request_to_sink(
2886
+ self,
2887
+ target: ValidatedTarget,
2888
+ *,
2889
+ approved_ip: str,
2890
+ headers: Mapping[str, str],
2891
+ limits: RetrievalLimits,
2892
+ sink: Callable[[bytes], None],
2893
+ ) -> StreamedTransportResponse:
2894
+ """The production no-buffer variant of :meth:`request`.
2895
+
2896
+ The size check happens before every write. A rejected response can therefore leave a
2897
+ partial staging file, but never an admitted result; its exact consumed byte count is
2898
+ carried by ``TransportFailureError`` for retry accounting.
2899
+ """
2900
+ deadline = time.monotonic() + limits.total_timeout_seconds
2901
+ connection = _PinnedHTTPSConnection(
2902
+ hostname=target.hostname,
2903
+ approved_ip=approved_ip,
2904
+ port=target.port,
2905
+ timeout=min(limits.connect_timeout_seconds, limits.total_timeout_seconds),
2906
+ context=self._context,
2907
+ )
2908
+ total = 0
2909
+ digest = hashlib.sha256()
2910
+ try:
2911
+ connection.request("GET", target.request_target, headers=dict(headers))
2912
+ if connection.sock is not None:
2913
+ connection.sock.settimeout(
2914
+ _remaining_socket_timeout(deadline, configured=limits.read_timeout_seconds)
2915
+ )
2916
+ response = connection.getresponse()
2917
+ raw_headers = tuple(
2918
+ (key.lower(), value.strip()) for key, value in response.getheaders()
2919
+ )
2920
+ _validate_response_headers(raw_headers)
2921
+ content_length = next(
2922
+ (value for key, value in raw_headers if key == "content-length"), None
2923
+ )
2924
+ if content_length is not None:
2925
+ try:
2926
+ if int(content_length) > limits.max_response_bytes:
2927
+ raise AcquisitionSecurityError(
2928
+ "RESPONSE_LIMIT",
2929
+ "declared response length exceeds the configured limit",
2930
+ )
2931
+ except ValueError:
2932
+ raise AcquisitionSecurityError(
2933
+ "CONTENT_LENGTH", "response content length is invalid"
2934
+ ) from None
2935
+ while True:
2936
+ if connection.sock is not None:
2937
+ connection.sock.settimeout(
2938
+ _remaining_socket_timeout(deadline, configured=limits.read_timeout_seconds)
2939
+ )
2940
+ chunk = response.read(min(65_536, limits.max_response_bytes + 1 - total))
2941
+ if not chunk:
2942
+ break
2943
+ total += len(chunk)
2944
+ if total > limits.max_response_bytes:
2945
+ raise AcquisitionSecurityError(
2946
+ "RESPONSE_LIMIT", "response exceeded the configured byte limit"
2947
+ )
2948
+ digest.update(chunk)
2949
+ sink(chunk)
2950
+ peer = connection.connected_peer
2951
+ if peer is None:
2952
+ raise AcquisitionSecurityError(
2953
+ "PEER_ADDRESS", "transport did not record its connected peer"
2954
+ )
2955
+ return StreamedTransportResponse(
2956
+ response.status, raw_headers, total, digest.hexdigest(), peer, True, True
2957
+ )
2958
+ except http.client.IncompleteRead as exc:
2959
+ partial = exc.partial if isinstance(exc.partial, bytes) else bytes(exc.partial)
2960
+ raise TransportFailureError(
2961
+ f"HTTPS peer disconnected during a response: {type(exc).__name__}",
2962
+ response_body_size_bytes=total + len(partial),
2963
+ ) from None
2964
+ except http.client.RemoteDisconnected as exc:
2965
+ raise TransportFailureError(
2966
+ f"HTTPS peer disconnected before a response: {type(exc).__name__}",
2967
+ response_body_size_bytes=total,
2968
+ ) from None
2969
+ except OSError as exc:
2970
+ raise TransportFailureError(
2971
+ f"HTTPS transport failed: {type(exc).__name__}", response_body_size_bytes=total
2972
+ ) from None
2973
+ finally:
2974
+ connection.close()
2975
+
2616
2976
 
2617
2977
  def _remaining_socket_timeout(deadline: float, *, configured: float) -> float:
2618
2978
  remaining = deadline - time.monotonic()