mostlyright-data 0.18.2__tar.gz → 0.18.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (565) hide show
  1. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/PKG-INFO +1 -1
  2. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/pyproject.toml +1 -1
  3. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/skills/mr-data-build/SKILL.md +6 -0
  4. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/hosted_run_worker.py +171 -8
  5. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/run_execution_v4.py +17 -1
  6. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/studio_boundary.py +1 -1
  7. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/thin/v4_tables.py +6 -0
  8. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/ux/remediation.py +1 -1
  9. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/v4_recipe.py +203 -22
  10. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/v4_window.py +472 -13
  11. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/.gitignore +0 -0
  12. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/README.md +0 -0
  13. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/scripts/hatch_build.py +0 -0
  14. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/skills/mr-data-build/agents/openai.yaml +0 -0
  15. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/skills/mr-data-build/scripts/write_research_notebook.py +0 -0
  16. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/skills/mr-data-build/scripts/write_visual_run.py +0 -0
  17. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/_vendor/__init__.py +0 -0
  18. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/_vendor/rapidocr/LICENSE +0 -0
  19. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/_vendor/rapidocr/PROVENANCE.json +0 -0
  20. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/_vendor/rapidocr/__init__.py +0 -0
  21. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/_vendor/rapidocr/__init__.pyi +0 -0
  22. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/_vendor/rapidocr/_version.py +0 -0
  23. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/_vendor/rapidocr/cal_rec_boxes/__init__.py +0 -0
  24. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/_vendor/rapidocr/cal_rec_boxes/main.py +0 -0
  25. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/_vendor/rapidocr/ch_ppocr_cls/__init__.py +0 -0
  26. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/_vendor/rapidocr/ch_ppocr_cls/main.py +0 -0
  27. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/_vendor/rapidocr/ch_ppocr_cls/utils.py +0 -0
  28. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/_vendor/rapidocr/ch_ppocr_det/__init__.py +0 -0
  29. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/_vendor/rapidocr/ch_ppocr_det/main.py +0 -0
  30. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/_vendor/rapidocr/ch_ppocr_det/utils.py +0 -0
  31. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/_vendor/rapidocr/ch_ppocr_rec/__init__.py +0 -0
  32. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/_vendor/rapidocr/ch_ppocr_rec/main.py +0 -0
  33. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/_vendor/rapidocr/ch_ppocr_rec/typings.py +0 -0
  34. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/_vendor/rapidocr/ch_ppocr_rec/utils.py +0 -0
  35. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/_vendor/rapidocr/config.yaml +0 -0
  36. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/_vendor/rapidocr/inference_engine/__init__.py +0 -0
  37. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/_vendor/rapidocr/inference_engine/base.py +0 -0
  38. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/_vendor/rapidocr/inference_engine/onnxruntime/__init__.py +0 -0
  39. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/_vendor/rapidocr/inference_engine/onnxruntime/main.py +0 -0
  40. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/_vendor/rapidocr/inference_engine/onnxruntime/provider_config.py +0 -0
  41. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/_vendor/rapidocr/main.py +0 -0
  42. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/_vendor/rapidocr/models/PP-OCRv6_det_small.onnx +0 -0
  43. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/_vendor/rapidocr/models/PP-OCRv6_rec_small.onnx +0 -0
  44. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/_vendor/rapidocr/models/ch_ppocr_mobile_v2.0_cls_mobile.onnx +0 -0
  45. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/_vendor/rapidocr/py.typed +0 -0
  46. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/_vendor/rapidocr/utils/__init__.py +0 -0
  47. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/_vendor/rapidocr/utils/load_image.py +0 -0
  48. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/_vendor/rapidocr/utils/log.py +0 -0
  49. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/_vendor/rapidocr/utils/model_resolver.py +0 -0
  50. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/_vendor/rapidocr/utils/output.py +0 -0
  51. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/_vendor/rapidocr/utils/parse_parameters.py +0 -0
  52. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/_vendor/rapidocr/utils/process_img.py +0 -0
  53. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/_vendor/rapidocr/utils/typings.py +0 -0
  54. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/_vendor/rapidocr/utils/utils.py +0 -0
  55. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/__init__.py +0 -0
  56. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/acquisition/__init__.py +0 -0
  57. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/acquisition/derived_credentials.py +0 -0
  58. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/acquisition/http.py +0 -0
  59. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/acquisition/parsing.py +0 -0
  60. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/acquisition/ranges.py +0 -0
  61. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/acquisition/result_download.py +0 -0
  62. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/acquisition/retention_admission.py +0 -0
  63. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/acquisition/sandbox.py +0 -0
  64. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/acquisition/sandbox_bootstrap.py +0 -0
  65. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/acquisition/url_policy.py +0 -0
  66. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/agent_runtime.py +0 -0
  67. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/assets/logo-ink.svg +0 -0
  68. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/backends/__init__.py +0 -0
  69. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/backends/pandas_backend.py +0 -0
  70. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/backends/polars_backend.py +0 -0
  71. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/backends/protocol.py +0 -0
  72. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/backends/reference.py +0 -0
  73. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/backends/registry.py +0 -0
  74. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/backends/restrictions.py +0 -0
  75. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/bounded_query.py +0 -0
  76. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/bounded_scratch_sink.py +0 -0
  77. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/canonical.py +0 -0
  78. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/catalog_job.py +0 -0
  79. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/cli.py +0 -0
  80. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/compact_worker.py +0 -0
  81. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/contracts.py +0 -0
  82. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/coordinator.py +0 -0
  83. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/crosswalks.py +0 -0
  84. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/declared_checks.py +0 -0
  85. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/delta.py +0 -0
  86. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/delta_checks.py +0 -0
  87. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/delta_classifier.py +0 -0
  88. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/delta_persist.py +0 -0
  89. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/delta_recompute.py +0 -0
  90. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/delta_rows.py +0 -0
  91. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/deploy.py +0 -0
  92. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/deploy_target.py +0 -0
  93. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/deployment_evidence.py +0 -0
  94. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/documents/__init__.py +0 -0
  95. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/documents/_worker_capability.py +0 -0
  96. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/documents/capture.py +0 -0
  97. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/documents/contracts.py +0 -0
  98. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/documents/lane.py +0 -0
  99. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/documents/ocr.py +0 -0
  100. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/documents/pdf.py +0 -0
  101. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/documents/registry.py +0 -0
  102. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/documents/sandbox.py +0 -0
  103. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/documents/selections.py +0 -0
  104. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/documents/tables.py +0 -0
  105. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/documents/vendor_rapidocr.py +0 -0
  106. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/events.py +0 -0
  107. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/fast_delimited.py +0 -0
  108. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/fetch_egress_smoke.py +0 -0
  109. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/formats.py +0 -0
  110. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/governors.py +0 -0
  111. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/hosted_bootstrap.py +0 -0
  112. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/hosted_crawler.py +0 -0
  113. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/hosted_crawler_container_smoke.py +0 -0
  114. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/hosted_crawler_fetch.py +0 -0
  115. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/hosted_crawler_job.py +0 -0
  116. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/hosted_crawler_protocol.py +0 -0
  117. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/hosted_deploy.py +0 -0
  118. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/hosted_ingestion_contract.py +0 -0
  119. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/hosted_ingestion_job.py +0 -0
  120. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/hosted_ingestion_job_smoke.py +0 -0
  121. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/hosted_ingestion_worker.py +0 -0
  122. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/hosted_rlimit_as_container_smoke.py +0 -0
  123. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/hosted_session_container_smoke.py +0 -0
  124. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/hosted_session_worker.py +0 -0
  125. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/hosted_session_worker_job_smoke.py +0 -0
  126. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/hosted_stream_recorder_container_smoke.py +0 -0
  127. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/hosted_stream_recorder_job.py +0 -0
  128. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/hosted_stream_subscription_container_smoke.py +0 -0
  129. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/hosted_stream_subscription_worker.py +0 -0
  130. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/hosted_worker.py +0 -0
  131. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/incremental_slice_executor.py +0 -0
  132. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/incremental_worker.py +0 -0
  133. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/ingestion/__init__.py +0 -0
  134. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/ingestion/contracts.py +0 -0
  135. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/ingestion/faults.py +0 -0
  136. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/ingestion/gcs_store.py +0 -0
  137. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/ingestion/spool.py +0 -0
  138. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/ingestion/store.py +0 -0
  139. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/inprocess_acquisition.py +0 -0
  140. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/key_seam.py +0 -0
  141. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/legacy_table_recovery.py +0 -0
  142. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/legacy_table_recovery_contract.py +0 -0
  143. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/linux_process_boundary.py +0 -0
  144. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/local_contracts.py +0 -0
  145. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/nbrender/CONTRACT.md +0 -0
  146. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/nbrender/__init__.py +0 -0
  147. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/nbrender/chrome.py +0 -0
  148. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/nbrender/code_body.py +0 -0
  149. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/nbrender/document.py +0 -0
  150. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/nbrender/frame.py +0 -0
  151. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/nbrender/interactive.py +0 -0
  152. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/nbrender/markdown_body.py +0 -0
  153. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/nbrender/mr_components.py +0 -0
  154. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/nbrender/outputs_data.py +0 -0
  155. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/nbrender/outputs_rich.py +0 -0
  156. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/nbrender/outputs_source.py +0 -0
  157. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/nbrender/outputs_stage.py +0 -0
  158. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/nbrender/outputs_text.py +0 -0
  159. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/nbrender/parse.py +0 -0
  160. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/nbrender/status.py +0 -0
  161. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/nbrender/tokens.py +0 -0
  162. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/notebook.py +0 -0
  163. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/offline.py +0 -0
  164. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/operation_registry.py +0 -0
  165. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/operator_setup.py +0 -0
  166. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/page_coverage.py +0 -0
  167. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/part_check_evidence.py +0 -0
  168. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/pipeline.py +0 -0
  169. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/plan_graph.py +0 -0
  170. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/preparation/__init__.py +0 -0
  171. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/preparation/contracts.py +0 -0
  172. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/preparation/engine.py +0 -0
  173. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/preparation/errors.py +0 -0
  174. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/preparation/gates.py +0 -0
  175. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/preparation/joins.py +0 -0
  176. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/preparation/profile.py +0 -0
  177. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/preparation/table.py +0 -0
  178. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/preparation/transforms.py +0 -0
  179. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/progress_events.py +0 -0
  180. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/__init__.py +0 -0
  181. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/_openpyxl.py +0 -0
  182. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/budgets.py +0 -0
  183. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/configurable_delimited.py +0 -0
  184. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/containers.py +0 -0
  185. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/contracts.py +0 -0
  186. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/delimited.py +0 -0
  187. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/geojson_vector.py +0 -0
  188. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/geopackage.py +0 -0
  189. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/geoparquet.py +0 -0
  190. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/grib2/__init__.py +0 -0
  191. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/grib2/admission.py +0 -0
  192. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/grib2/collection.py +0 -0
  193. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/grib2/collection_reader.py +0 -0
  194. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/grib2/decode.py +0 -0
  195. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/grib2/geometry.py +0 -0
  196. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/grib2/portable_math.py +0 -0
  197. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/grib_eccodes.py +0 -0
  198. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/html_tabular.py +0 -0
  199. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/html_web_extract.py +0 -0
  200. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/json_tabular.py +0 -0
  201. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/parquet_tabular.py +0 -0
  202. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/pcaxis_px.py +0 -0
  203. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/protobuf_tabular.py +0 -0
  204. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/raster/__init__.py +0 -0
  205. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/raster/_bytes.py +0 -0
  206. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/raster/decode.py +0 -0
  207. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/raster/family.py +0 -0
  208. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/raster/jpeg2000.py +0 -0
  209. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/raster/profiles.py +0 -0
  210. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/raster/rendered.py +0 -0
  211. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/raster/safe.py +0 -0
  212. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/raster/sentinel_safe.py +0 -0
  213. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/raster/tiff.py +0 -0
  214. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/registry.py +0 -0
  215. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/README.md +0 -0
  216. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/archive.gzip/1.0.0/cities_one_stream/cities.csv.gz +0 -0
  217. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/archive.gzip/1.0.0/cities_one_stream/expected.json +0 -0
  218. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/archive.gzip/1.1.0/cities_one_stream/cities.csv.gz +0 -0
  219. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/archive.gzip/1.1.0/cities_one_stream/expected.json +0 -0
  220. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/archive.tar/1.0.0/cities_beside_a_directory_entry/cities.tar +0 -0
  221. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/archive.tar/1.0.0/cities_beside_a_directory_entry/expected.json +0 -0
  222. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/archive.tar/1.1.0/cities_beside_a_directory_entry/cities.tar +0 -0
  223. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/archive.tar/1.1.0/cities_beside_a_directory_entry/expected.json +0 -0
  224. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/archive.zip/1.0.0/cities_beside_a_second_member/cities.zip +0 -0
  225. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/archive.zip/1.0.0/cities_beside_a_second_member/expected.json +0 -0
  226. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/archive.zip/1.1.0/dwd_semicolon_station_member/dwd-station.zip +0 -0
  227. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/archive.zip/1.1.0/dwd_semicolon_station_member/expected.json +0 -0
  228. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/archive.zip/1.2.0/dwd_semicolon_station_member/dwd-station.zip +0 -0
  229. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/archive.zip/1.2.0/dwd_semicolon_station_member/expected.json +0 -0
  230. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/delimited_text/1.0.0/an_ordinary_comma_separated_table/cities.csv +0 -0
  231. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/delimited_text/1.0.0/an_ordinary_comma_separated_table/expected.json +0 -0
  232. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/delimited_text/1.0.0/quoted_fields_holding_the_delimiter/cities.tsv +0 -0
  233. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/delimited_text/1.0.0/quoted_fields_holding_the_delimiter/expected.json +0 -0
  234. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/delimited_text/1.1.0/an_hourly_observation_table_served_as_plain_text/expected.json +0 -0
  235. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/delimited_text/1.1.0/an_hourly_observation_table_served_as_plain_text/observations.csv +0 -0
  236. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/delimited_text/2.0.0/publisher_preamble/expected.json +0 -0
  237. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/delimited_text/2.0.0/publisher_preamble/indices.csv +0 -0
  238. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/geojson.vector/1.0.0/czech_capital/expected.json +0 -0
  239. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/geojson.vector/1.0.0/czech_capital/places.geojson +0 -0
  240. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/geopackage.vector/1.0.0/epsg_4326_feature/expected.json +0 -0
  241. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/geopackage.vector/1.0.0/epsg_4326_feature/places.gpkg +0 -0
  242. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/geoparquet.vector/1.0.0/primary_wkb_point/expected.json +0 -0
  243. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/geoparquet.vector/1.0.0/primary_wkb_point/places.parquet +0 -0
  244. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/html.tabular/1.0.0/sanitized_table/expected.json +0 -0
  245. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/html.tabular/1.0.0/sanitized_table/table.html +0 -0
  246. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/html.web_extract/1.0.0/json_ld_scorecards/expected.json +0 -0
  247. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/html.web_extract/1.0.0/json_ld_scorecards/scorecards.html +0 -0
  248. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/html.web_extract/1.1.0/article_text_order/article.html +0 -0
  249. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/html.web_extract/1.1.0/article_text_order/expected.json +0 -0
  250. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/image.rendered/1.0.0/tiny_png/expected.json +0 -0
  251. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/image.rendered/1.0.0/tiny_png/tiny-rendered.png +0 -0
  252. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/json.tabular/1.0.0/nested_hourly_observations/expected.json +0 -0
  253. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/json.tabular/1.0.0/nested_hourly_observations/stations.json +0 -0
  254. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/json.tabular/1.1.0/an_observation_stream_served_as_plain_text/expected.json +0 -0
  255. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/json.tabular/1.1.0/an_observation_stream_served_as_plain_text/observations.ndjson +0 -0
  256. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/meteorology.bufr/1.0.0/eccodes_bufr4_subset/eccodes-bufr4.bufr +0 -0
  257. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/meteorology.bufr/1.0.0/eccodes_bufr4_subset/expected.json +0 -0
  258. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/meteorology.grib/1.0.0/eccodes_grib1_origin/expected.json +0 -0
  259. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/meteorology.grib/1.0.0/eccodes_grib1_origin/regular-ll-surface.grib1 +0 -0
  260. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/microdata.sas_xpt/1.0.0/two_raw_columns/expected.json +0 -0
  261. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/microdata.sas_xpt/1.0.0/two_raw_columns/survey.xpt +0 -0
  262. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/microdata.spss_sav/1.0.0/two_raw_columns/expected.json +0 -0
  263. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/microdata.spss_sav/1.0.0/two_raw_columns/survey.sav +0 -0
  264. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/microdata.stata_dta/1.0.0/two_raw_columns/expected.json +0 -0
  265. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/microdata.stata_dta/1.0.0/two_raw_columns/stata.dta +0 -0
  266. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/official.pcaxis_px/1.0.0/population_by_region_and_year/expected.json +0 -0
  267. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/official.pcaxis_px/1.0.0/population_by_region_and_year/population.px +0 -0
  268. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/official.sdmx_json/1.0.0/compact_population_series/expected.json +0 -0
  269. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/official.sdmx_json/1.0.0/compact_population_series/population.json +0 -0
  270. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/parquet.tabular/1.0.0/two_columns/expected.json +0 -0
  271. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/parquet.tabular/1.0.0/two_columns/prices.parquet +0 -0
  272. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/protobuf.tabular/1.0.0/gtfs_realtime_trip_updates/expected.json +0 -0
  273. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/protobuf.tabular/1.0.0/gtfs_realtime_trip_updates/gtfs-realtime.desc +0 -0
  274. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/protobuf.tabular/1.0.0/gtfs_realtime_trip_updates/trip-updates.pb +0 -0
  275. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/raster.geospatial/1.0.0/tiny_geotiff/expected.json +0 -0
  276. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/raster.geospatial/1.0.0/tiny_geotiff/tiny-geospatial.tif +0 -0
  277. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/satellite.goes_abi_l2/1.0.0/authored_cmi_window/expected.json +0 -0
  278. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/satellite.goes_abi_l2/1.0.0/authored_cmi_window/goes-abi-l2-cmi-window.nc +0 -0
  279. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/satellite.himawari_hsd/1.0.0/authored_b13_single_bzip2/expected.json +0 -0
  280. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/satellite.himawari_hsd/1.0.0/authored_b13_single_bzip2/himawari-b13-0101-bzip2.dat +0 -0
  281. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/satellite.himawari_hsd_complete/1.0.0/authored_b13_three_segment_scan/expected.json +0 -0
  282. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/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
  283. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/satellite.msg_seviri_l15/1.0.0/authored_calibrated_complete_visir/expected.json +0 -0
  284. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/satellite.msg_seviri_l15/1.0.0/authored_calibrated_complete_visir/msg-seviri-l15.zip +0 -0
  285. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/satellite.sentinel_safe/1.0.0/authored_b02_scl_window/expected.json +0 -0
  286. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/satellite.sentinel_safe/1.0.0/authored_b02_scl_window/sentinel-safe-b02-scl.zip +0 -0
  287. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/satellite.xrit_image/1.0.0/authored_complete_raw_counts/expected.json +0 -0
  288. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/satellite.xrit_image/1.0.0/authored_complete_raw_counts/xrit-complete-image.zip +0 -0
  289. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/scientific.fits/1.0.0/tiny_primary_window/expected.json +0 -0
  290. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/scientific.fits/1.0.0/tiny_primary_window/tiny-primary.fits +0 -0
  291. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/scientific.hdf4/1.0.0/authored_temperature_window/expected.json +0 -0
  292. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/scientific.hdf4/1.0.0/authored_temperature_window/temperature.hdf +0 -0
  293. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/scientific.hdf5/1.0.0/authored_temperature_window/expected.json +0 -0
  294. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/scientific.hdf5/1.0.0/authored_temperature_window/temperature.h5 +0 -0
  295. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/scientific.hdf_eos2/1.0.0/authored_grid_temperature_window/expected.json +0 -0
  296. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/scientific.hdf_eos2/1.0.0/authored_grid_temperature_window/nasa-hdfeos2-grid.hdf +0 -0
  297. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/scientific.hdf_eos2/1.0.0/authored_swath_temperature_window/expected.json +0 -0
  298. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/scientific.hdf_eos2/1.0.0/authored_swath_temperature_window/nasa-hdfeos2-swath.hdf +0 -0
  299. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/scientific.netcdf/1.0.0/authored_classic_temperature_window/expected.json +0 -0
  300. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/scientific.netcdf/1.0.0/authored_classic_temperature_window/temperature-classic.nc +0 -0
  301. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/scientific.zarr/1.0.0/authored_v3_temperature_window/expected.json +0 -0
  302. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/scientific.zarr/1.0.0/authored_v3_temperature_window/temperature-zarr-v3.zip +0 -0
  303. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/spreadsheet.xlsx/1.0.0/an_ordinary_table_beside_a_second_sheet/cities.xlsx +0 -0
  304. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/spreadsheet.xlsx/1.0.0/an_ordinary_table_beside_a_second_sheet/expected.json +0 -0
  305. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/spreadsheet.xlsx/1.0.0/shares_the_workbook_had_already_computed/expected.json +0 -0
  306. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/spreadsheet.xlsx/1.0.0/shares_the_workbook_had_already_computed/shares.xlsx +0 -0
  307. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/spreadsheet.xlsx/1.1.0/shares_the_workbook_had_already_computed/expected.json +0 -0
  308. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/spreadsheet.xlsx/1.1.0/shares_the_workbook_had_already_computed/shares.xlsx +0 -0
  309. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/README.md +0 -0
  310. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/gfs_2m_temperature/expected.json +0 -0
  311. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/gfs_2m_temperature/gfs-2m-temperature.grib2 +0 -0
  312. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/hrrr_2m_temperature/expected.json +0 -0
  313. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/hrrr_2m_temperature/hrrr-2m-temperature.grib2 +0 -0
  314. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/hrrr_categorical_rain/expected.json +0 -0
  315. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/hrrr_categorical_rain/hrrr-categorical-rain.grib2 +0 -0
  316. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/weather.grib2/2.0.0/hrrr_2m_temperature/expected.json +0 -0
  317. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/weather.grib2/2.0.0/hrrr_2m_temperature/hrrr-2m-temperature.grib2 +0 -0
  318. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/weather.grib2/3.0.0/gfs_and_hrrr_categorical_rain/expected.json +0 -0
  319. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/weather.grib2/3.0.0/gfs_and_hrrr_categorical_rain/gfs-and-hrrr-categorical-rain.grib2 +0 -0
  320. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/xbrl.facts/1.0.0/plain_filing_fact/expected.json +0 -0
  321. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/xbrl.facts/1.0.0/plain_filing_fact/filing.xml +0 -0
  322. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/xbrl.facts/1.0.0/xml_inline_fact/expected.json +0 -0
  323. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/xbrl.facts/1.0.0/xml_inline_fact/filing.xhtml +0 -0
  324. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/xml.tabular/1.0.0/pacer_rss_feed/expected.json +0 -0
  325. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/xml.tabular/1.0.0/pacer_rss_feed/feed.xml +0 -0
  326. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/xml.tabular/1.0.0/sec_form_d_filing/expected.json +0 -0
  327. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/xml.tabular/1.0.0/sec_form_d_filing/filing.xml +0 -0
  328. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/xml.tabular/1.0.0/unified_agenda_extract/agenda.xml +0 -0
  329. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples/xml.tabular/1.0.0/unified_agenda_extract/expected.json +0 -0
  330. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/samples.py +0 -0
  331. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/scientific.py +0 -0
  332. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/scientific_arrays/__init__.py +0 -0
  333. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/scientific_arrays/container.py +0 -0
  334. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/scientific_arrays/goes.py +0 -0
  335. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/scientific_arrays/hdf4.py +0 -0
  336. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/scientific_arrays/hdf4_bridge.py +0 -0
  337. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/scientific_arrays/hdf5.py +0 -0
  338. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/scientific_arrays/native.py +0 -0
  339. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/scientific_arrays/netcdf.py +0 -0
  340. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/scientific_arrays/profiles.py +0 -0
  341. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/scientific_arrays/raw.py +0 -0
  342. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/scientific_arrays/zarr.py +0 -0
  343. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/scientific_catalog.py +0 -0
  344. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/scientific_segmented/__init__.py +0 -0
  345. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/scientific_segmented/asset_sets.py +0 -0
  346. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/scientific_segmented/formats.py +0 -0
  347. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/scientific_segmented/hsd.py +0 -0
  348. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/scientific_segmented/native.py +0 -0
  349. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/scientific_segmented/profiles.py +0 -0
  350. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/scientific_segmented/reader.py +0 -0
  351. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/scientific_segmented/xrit.py +0 -0
  352. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/sdmx_json.py +0 -0
  353. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/spreadsheet.py +0 -0
  354. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/statistical_microdata.py +0 -0
  355. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/tabular.py +0 -0
  356. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/vector.py +0 -0
  357. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/vector_wkb.py +0 -0
  358. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/xbrl_facts.py +0 -0
  359. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/readers/xml_tabular.py +0 -0
  360. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/recipe.py +0 -0
  361. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/review.py +0 -0
  362. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/rowset.py +0 -0
  363. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/run_phase_timing.py +0 -0
  364. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/session_probes.py +0 -0
  365. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/signing.py +0 -0
  366. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/skill_assets.py +0 -0
  367. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/source_bootstrap.py +0 -0
  368. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/source_bundle_writer.py +0 -0
  369. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/source_discovery.py +0 -0
  370. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/source_history_candidate_child.py +0 -0
  371. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/source_history_transform_child.py +0 -0
  372. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/source_inventory.py +0 -0
  373. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/source_partition.py +0 -0
  374. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/source_raw_inventory.py +0 -0
  375. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/source_state_index.py +0 -0
  376. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/__init__.py +0 -0
  377. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/_adapter_steps.py +0 -0
  378. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/adapters.py +0 -0
  379. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/authenticated_https.py +0 -0
  380. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/authenticated_https_v2.py +0 -0
  381. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/authenticated_https_v3.py +0 -0
  382. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/cadence.py +0 -0
  383. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/cadence_emission.py +0 -0
  384. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/cadence_history.py +0 -0
  385. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/catalog/__init__.py +0 -0
  386. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/catalog/admission.py +0 -0
  387. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/catalog/authoring.py +0 -0
  388. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/catalog/authoring_policy.py +0 -0
  389. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/catalog/authoring_shards.py +0 -0
  390. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/catalog/bounded_io.py +0 -0
  391. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/catalog/channel.py +0 -0
  392. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/catalog/channel_client.py +0 -0
  393. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/catalog/contracts.py +0 -0
  394. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/catalog/coverage.py +0 -0
  395. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/catalog/embedding.py +0 -0
  396. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/catalog/entry_v2.py +0 -0
  397. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/catalog/fill.py +0 -0
  398. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/catalog/fill_partitions.py +0 -0
  399. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/catalog/fill_staging.py +0 -0
  400. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/catalog/gating.py +0 -0
  401. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/catalog/generation_receipt.py +0 -0
  402. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/catalog/harvest/__init__.py +0 -0
  403. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/catalog/harvest/ckan.py +0 -0
  404. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/catalog/harvest/datagov_v4.py +0 -0
  405. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/catalog/harvest/protocol.py +0 -0
  406. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/catalog/harvest/sdmx.py +0 -0
  407. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/catalog/harvest/stac.py +0 -0
  408. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/catalog/hosted_catalog.py +0 -0
  409. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/catalog/identity_history.py +0 -0
  410. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/catalog/neural.py +0 -0
  411. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/catalog/packed_catalog.py +0 -0
  412. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/catalog/packed_retrieval.py +0 -0
  413. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/catalog/packed_writer.py +0 -0
  414. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/catalog/query_trace.py +0 -0
  415. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/catalog/recommend.py +0 -0
  416. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/catalog/retrieval.py +0 -0
  417. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/catalog/retrieval_manifest.py +0 -0
  418. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/catalog/sealed.py +0 -0
  419. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/catalog/search.py +0 -0
  420. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/catalog/streaming_delta.py +0 -0
  421. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/catalog/update.py +0 -0
  422. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/collections.py +0 -0
  423. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/contracts.py +0 -0
  424. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/dataset.py +0 -0
  425. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/deletion.py +0 -0
  426. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/document_projection.py +0 -0
  427. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/fitness.py +0 -0
  428. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/governance.py +0 -0
  429. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/hosted.py +0 -0
  430. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/integration.py +0 -0
  431. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/page_collections.py +0 -0
  432. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/range_reader.py +0 -0
  433. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/registry.py +0 -0
  434. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/rights_rule.py +0 -0
  435. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/source_cadence_vectors.v1.json +0 -0
  436. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/sports.py +0 -0
  437. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/stream.py +0 -0
  438. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/stream_capture_session.py +0 -0
  439. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/stream_connector.py +0 -0
  440. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/stream_connectors/fixture.array-frames.v4.json +0 -0
  441. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/stream_connectors/fixture.cursor-resume.v3.json +0 -0
  442. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/stream_connectors/fixture.json-keepalive.v4.json +0 -0
  443. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-frame-ed25519.v2.json +0 -0
  444. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-frame-hmac.v2.json +0 -0
  445. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-frame-hmac384.v2.json +0 -0
  446. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-frame-hmac512.v2.json +0 -0
  447. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-frame.v2.json +0 -0
  448. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-header-rsa.v2.json +0 -0
  449. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-header.v2.json +0 -0
  450. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-permessage-jwt.v2.json +0 -0
  451. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-permessage.v2.json +0 -0
  452. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-prelude.v2.json +0 -0
  453. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-query.v2.json +0 -0
  454. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-subprotocol.v2.json +0 -0
  455. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-subscribe.v2.json +0 -0
  456. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-urlpath.v2.json +0 -0
  457. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/stream_connectors/fixture.loose-frames.v4.json +0 -0
  458. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/stream_connectors/fixture.text-keepalive.v4.json +0 -0
  459. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/stream_connectors/polymarket.clob-market.v1.json +0 -0
  460. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/stream_credential.py +0 -0
  461. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/stream_numbers.py +0 -0
  462. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/stream_prelude.py +0 -0
  463. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/stream_recorder.py +0 -0
  464. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/stream_registry.py +0 -0
  465. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/stream_rotation.py +0 -0
  466. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/stream_segment_recorder.py +0 -0
  467. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/stream_series.py +0 -0
  468. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/stream_signing.py +0 -0
  469. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sources/stream_transport.py +0 -0
  470. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/sql_transform_engine.py +0 -0
  471. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/stream_order_vector.py +0 -0
  472. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/stream_recovery_objects.py +0 -0
  473. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/stream_segment_spill.py +0 -0
  474. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/stream_subscription_feed.py +0 -0
  475. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/stream_subscription_sealer.py +0 -0
  476. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/stream_subscription_worker.py +0 -0
  477. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/stream_venue.py +0 -0
  478. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/stream_venue_staging.py +0 -0
  479. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/studio_subscription_control.py +0 -0
  480. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/table_manifest.py +0 -0
  481. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/table_parts.py +0 -0
  482. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/table_profile.py +0 -0
  483. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/thin/__init__.py +0 -0
  484. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/thin/acquire.py +0 -0
  485. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/thin/acquire_cancel.py +0 -0
  486. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/thin/activity.py +0 -0
  487. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/thin/approvals.py +0 -0
  488. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/thin/categories.py +0 -0
  489. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/thin/collection_plan.py +0 -0
  490. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/thin/commands.py +0 -0
  491. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/thin/dataset-categories-v1.json +0 -0
  492. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/thin/download.py +0 -0
  493. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/thin/narrative.py +0 -0
  494. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/thin/parity.py +0 -0
  495. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/thin/probe.py +0 -0
  496. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/thin/propose.py +0 -0
  497. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/thin/recipe.py +0 -0
  498. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/thin/research.py +0 -0
  499. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/thin/router.py +0 -0
  500. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/thin/runs.py +0 -0
  501. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/thin/session.py +0 -0
  502. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/thin/stream.py +0 -0
  503. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/thin/stream_venue.py +0 -0
  504. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/thin/transport.py +0 -0
  505. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/thin/user_agent.py +0 -0
  506. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/thin/v4.py +0 -0
  507. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/thin/v4_artifacts.py +0 -0
  508. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/thin/v4_catalog.py +0 -0
  509. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/thin/v4_connections.py +0 -0
  510. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/thin/v4_dataset_covers.py +0 -0
  511. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/thin/v4_datasets.py +0 -0
  512. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/thin/v4_handoff.py +0 -0
  513. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/thin/v4_narrative.py +0 -0
  514. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/thin/v4_query.py +0 -0
  515. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/thin/v4_runs.py +0 -0
  516. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/thin/v4_secrets.py +0 -0
  517. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/thin/v4_stream.py +0 -0
  518. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/thin/vocabulary.py +0 -0
  519. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/thin/workers.py +0 -0
  520. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/ucum/TABLE-PIN.json +0 -0
  521. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/ucum/ucum-subset.v1.json +0 -0
  522. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/unit_flow.py +0 -0
  523. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/units.py +0 -0
  524. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/ux/__init__.py +0 -0
  525. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/ux/attendance.py +0 -0
  526. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/ux/clarification.py +0 -0
  527. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/ux/cloud_auth.py +0 -0
  528. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/ux/commands/__init__.py +0 -0
  529. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/ux/commands/auth.py +0 -0
  530. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/ux/commands/catalog_author.py +0 -0
  531. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/ux/commands/catalog_harvest.py +0 -0
  532. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/ux/commands/catalog_publish.py +0 -0
  533. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/ux/commands/clarify.py +0 -0
  534. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/ux/commands/login.py +0 -0
  535. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/ux/commands/record.py +0 -0
  536. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/ux/commands/whoami.py +0 -0
  537. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/ux/credential_native.py +0 -0
  538. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/ux/credential_store.py +0 -0
  539. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/ux/credentials.py +0 -0
  540. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/ux/headline.py +0 -0
  541. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/ux/hosted_acquisition.py +0 -0
  542. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/ux/local_review.py +0 -0
  543. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/ux/login.py +0 -0
  544. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/ux/path_kind.py +0 -0
  545. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/ux/plain_file.py +0 -0
  546. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/ux/readers.py +0 -0
  547. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/ux/render.py +0 -0
  548. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/v4_acquisition.py +0 -0
  549. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/v4_check_dialect.py +0 -0
  550. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/v4_closed_source.py +0 -0
  551. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/v4_document_pin.py +0 -0
  552. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/v4_reader_pin.py +0 -0
  553. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/v4_required_controls.py +0 -0
  554. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/v4_snapshot_artifact.py +0 -0
  555. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/v4_stream_recording.py +0 -0
  556. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/v4_transform.py +0 -0
  557. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/visual_run/__init__.py +0 -0
  558. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/visual_run/authoring.py +0 -0
  559. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/visual_run/contracts.py +0 -0
  560. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/visual_run/materialize.py +0 -0
  561. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/visual_run/observations.py +0 -0
  562. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/visual_run/reducer.py +0 -0
  563. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/visual_run/sdk.py +0 -0
  564. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/src/mostlyright/data_harness/visual_run/store.py +0 -0
  565. {mostlyright_data-0.18.2 → mostlyright_data-0.18.3}/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.18.2
3
+ Version: 0.18.3
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.18.2"
3
+ version = "0.18.3"
4
4
  description = "Mostly Right CLI for reproducible, reviewed Parquet datasets"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.13"
@@ -1665,6 +1665,12 @@ What it costs the protocol, and what to do instead:
1665
1665
  revision behavior, entity and geographic coverage, cost, and refresh fit. Reject prohibited use.
1666
1666
  - Preserve event time, available time, acquisition time, source revision, and timezone. Do not use
1667
1667
  post-cutoff information in targets, labels, features, joins, or validation decisions.
1668
+ - When the question is **what changed over time**, or the table needs point-in-time features, and
1669
+ the source answers only with the present, declare a `snapshot` window on that source: it stamps
1670
+ every row with the UTC day it was acquired on and keeps one partition per day. Compute a
1671
+ transition with `lag(column) over (partition by <identity> order by <snapshot column>)` and keep
1672
+ the rows where the two are `is distinct from` each other. Never diff two sealed versions by hand;
1673
+ a version is not a date, and nothing outside the seal can be replayed.
1668
1674
 
1669
1675
  ### Authoring a collection source
1670
1676
 
@@ -307,10 +307,15 @@ from mostlyright.data_harness.v4_window import (
307
307
  align_down,
308
308
  applied_window,
309
309
  assert_mergeable_format,
310
+ assert_snapshot_has_begun,
311
+ assert_snapshot_slice_is_whole,
312
+ assert_snapshot_within_bounds,
310
313
  instant,
311
314
  merge_slice,
312
315
  partition_keys,
313
316
  resolve_physical_scope,
317
+ snapshot_day,
318
+ stamp_snapshot,
314
319
  )
315
320
 
316
321
  # ------------------------------------------------------------------------------------------------
@@ -5511,6 +5516,13 @@ def _source_history_refresh_enabled(job: RunExecution) -> bool:
5511
5516
  Keeping this deliberately narrow is important: a source-history predecessor is authority for
5512
5517
  one direct CSV projection, not a hint that an arbitrary multi-source SQL graph may reuse raw
5513
5518
  bytes. The old path remains responsible for every other document.
5519
+
5520
+ A SNAPSHOT SOURCE IS NOT THIS SHAPE, THOUGH IT IS SINGLE AND IT IS WINDOWED. This route
5521
+ acquires with ``merge_windowed=False``, and :func:`_windowed_relation` -- the only place the
5522
+ observed day is written onto a snapshot's rows and the only place its merge runs -- is
5523
+ reachable only when that is true. A snapshot admitted here would hand the build a relation
5524
+ with no day on it at all, so the run either dies in the transform on a missing column or seals
5525
+ a table that records no days, which is the whole member absent under a green run.
5514
5526
  """
5515
5527
 
5516
5528
  return bool(
@@ -5521,11 +5533,17 @@ def _source_history_refresh_enabled(job: RunExecution) -> bool:
5521
5533
  and job.predecessor.source_history is not None
5522
5534
  and len(job.recipe.sources) == 1
5523
5535
  and job.recipe.sources[0].window is not None
5536
+ and job.recipe.sources[0].window.snapshot is None
5524
5537
  )
5525
5538
 
5526
5539
 
5527
5540
  def _source_history_initial_enabled(job: RunExecution) -> bool:
5528
- """Return whether a full run emits the first bounded source-history version."""
5541
+ """Return whether a full run emits the first bounded source-history version.
5542
+
5543
+ A snapshot source is excluded for the reason :func:`_source_history_refresh_enabled` records,
5544
+ and excluded HERE rather than only there: an initial run that took this route seals a
5545
+ predecessor carrying ``source_history``, and every refresh after it takes the route again.
5546
+ """
5529
5547
 
5530
5548
  return bool(
5531
5549
  (job.mode == "full" or is_initial_bootstrap_refresh(job))
@@ -5534,6 +5552,7 @@ def _source_history_initial_enabled(job: RunExecution) -> bool:
5534
5552
  and job.predecessor is None
5535
5553
  and len(job.recipe.sources) == 1
5536
5554
  and job.recipe.sources[0].window is not None
5555
+ and job.recipe.sources[0].window.snapshot is None
5537
5556
  )
5538
5557
 
5539
5558
 
@@ -10214,6 +10233,13 @@ def _applied_windows(job: RunExecution, *, requested_at: str) -> Mapping[str, Ap
10214
10233
  Empty for a recipe that declares no window, which is what makes every registered document
10215
10234
  written before this member behave exactly as it did: no address is rendered, no merge runs and
10216
10235
  no coverage entry claims a range.
10236
+
10237
+ THIS IS WHAT BINDS THE ACQUISITION CACHE KEY, and for a snapshot that is what keeps a day out
10238
+ of the day before's bytes. The key is ``(source_id, query_digest, window)`` and this mapping
10239
+ supplies the third member, so two runs whose ``requested_at`` fall on different UTC days can
10240
+ never be served each other's fetch -- a snapshot's derived range IS its day. A snapshot does
10241
+ not take its partition from here, though: the day it stamps comes from the receipt the fetch
10242
+ wrote, and this range is what routes the source into the merge at all.
10217
10243
  """
10218
10244
 
10219
10245
  moment = instant(requested_at, "the run's requested_at")
@@ -10236,6 +10262,82 @@ def _applied_windows(job: RunExecution, *, requested_at: str) -> Mapping[str, Ap
10236
10262
  )
10237
10263
 
10238
10264
 
10265
+ def _stamped_snapshot(
10266
+ job: RunExecution,
10267
+ source: V4Source,
10268
+ *,
10269
+ relation: RelationInput,
10270
+ coverage: V4AcquisitionCoverage,
10271
+ destination: Path,
10272
+ ) -> tuple[AppliedWindow, RelationInput, V4AcquisitionCoverage]:
10273
+ """Write this source's own acquisition day onto every decoded row, and say so.
10274
+
10275
+ ⚠ THE DAY COMES FROM THE RECEIPT AND NEVER FROM A CLOCK. ``coverage.fetched_at`` is the instant
10276
+ this acquisition already recorded and the instant the sealed receipt states for this source, so
10277
+ a rerun of the same sealed run stamps the day it sealed rather than the day it is re-run on.
10278
+ Reading a clock here would make a replay a different relation from the one it is replaying.
10279
+
10280
+ ONE INSTANT ANSWERS EVERY QUESTION ABOUT THE DAY. The stamp on each row, the range this run
10281
+ reports as ``coverage.window``, the receipt's ``observed_date`` and the partition the merge
10282
+ replaces are all derived from ``coverage.fetched_at`` and from nothing else, so the four can
10283
+ never be four renderings. The ``applied`` window this function is handed is the run's own,
10284
+ derived before the first fetch over the clock the dispatch carried; it is what routed this
10285
+ source into the merge and what bound its acquisition cache key, and a snapshot derives its
10286
+ partition from the receipt rather than from it so that a replay of a sealed run answers with
10287
+ the day it sealed.
10288
+
10289
+ THE CACHE CANNOT PUT A DAY IN ANOTHER DAY'S BYTES. That derived range is the third member of
10290
+ the acquisition cache key (``inprocess_acquisition.AcquisitionCacheKey``), and for a snapshot
10291
+ the range IS the day, so a cached read is never served across a UTC midnight and
10292
+ ``coverage.fetched_at`` always falls on the day the run asked for.
10293
+
10294
+ The stamped column is appended to ``relation.columns`` because that tuple is what binds the
10295
+ transform's source columns; a relation whose bytes carry a column its header does not name is a
10296
+ column no statement can select.
10297
+ """
10298
+
10299
+ window = source.window
10300
+ assert window is not None and window.snapshot is not None
10301
+ observed = instant(coverage.fetched_at, f"the acquisition receipt for {source.name}")
10302
+ applied = applied_window(job.mode, window, clamps_window=None, now=observed)
10303
+ # THE DECLARED FIRST DAY IS HELD OVER THE RECEIPT'S OWN WINDOW, which is the window every
10304
+ # other fact about this day is derived from. Holding it over the run's pre-fetch derivation
10305
+ # instead would be a second authority on one question, and two authorities on one question are
10306
+ # two answers waiting to disagree.
10307
+ assert_snapshot_has_begun(window, applied)
10308
+ assert_mergeable_format(source.name, relation.data_format)
10309
+ stamped = stamp_snapshot(
10310
+ window, source_id=source.name, acquired=relation.content, applied=applied
10311
+ )
10312
+ # ONLY THE BYTE CEILING IS MEANINGFUL BEFORE THE MERGE. This slice is one day by construction
10313
+ # and `max_partitions` is at least one, so the partition arm cannot answer here; what it can
10314
+ # answer on is the merged relation below.
10315
+ assert_snapshot_within_bounds(
10316
+ window.snapshot,
10317
+ source_id=source.name,
10318
+ partitions=1,
10319
+ byte_count=len(stamped.content),
10320
+ )
10321
+ digest = hashlib.sha256(stamped.content).hexdigest()
10322
+ return (
10323
+ applied,
10324
+ replace(
10325
+ relation,
10326
+ path=destination,
10327
+ content=stamped.content,
10328
+ columns=stamped.columns,
10329
+ row_count=stamped.rows,
10330
+ content_sha256=digest,
10331
+ ),
10332
+ replace(
10333
+ coverage,
10334
+ snapshot_sha256=digest,
10335
+ snapshot_bytes=len(stamped.content),
10336
+ rows_kept=stamped.rows,
10337
+ ),
10338
+ )
10339
+
10340
+
10239
10341
  def _windowed_relation(
10240
10342
  job: RunExecution,
10241
10343
  source: V4Source,
@@ -10260,19 +10362,50 @@ def _windowed_relation(
10260
10362
  A first, full or sample run of a windowed source MERGES NOTHING. Its slice IS the relation: it
10261
10363
  fetched the whole range it claims to cover, and there is no earlier version to continue.
10262
10364
 
10263
- ``truncated`` says whether the sealed relation is less than the whole table. A refresh's is
10264
- never truncated, a clipped one included -- after the merge the relation covers everything from
10265
- the corpus's start, and nothing was cut. A sample that narrowed its window IS truncated, and it
10266
- has to be: a latest build whose coverage is untruncated on every source is read as the full
10267
- build whatever mode produced it, so a windowed sample claiming otherwise would present one
10268
- day's rows as the finished table.
10365
+ ``truncated`` says whether the sealed relation is less than the whole table. A REQUEST window's
10366
+ refresh is never truncated, a clipped one included -- after the merge the relation covers
10367
+ everything from the corpus's start, and nothing was cut. A sample that narrowed its window IS
10368
+ truncated, and it has to be: a latest build whose coverage is untruncated on every source is
10369
+ read as the full build whatever mode produced it, so a windowed sample claiming otherwise
10370
+ would present one day's rows as the finished table.
10371
+
10372
+ A SNAPSHOT'S REFRESH REFUSES A CLAMPED SLICE RATHER THAN MERGING IT, AND THAT IS THE
10373
+ DIFFERENCE BETWEEN THE TWO GRAMMARS. A clipped request window will be re-requested: the
10374
+ partitions it did not reach are the predecessor's and the next tick fetches them. A snapshot
10375
+ cannot re-request anything -- the publisher answers with now and cannot be asked for a day that
10376
+ has passed -- so a day whose rows a row clamp cut short is a hole nothing later repairs, and
10377
+ the run refuses with ``SNAPSHOT_RELATION_TRUNCATED`` before the merge rather than sealing a day
10378
+ it cannot complete. A full or a sample carries the clamp through instead: neither merges, so
10379
+ neither has a predecessor's days to lose, and an incomplete first build is what a later full
10380
+ replaces.
10381
+
10382
+ A SNAPSHOT IS NEVER NARROWED, AND THAT IS NOT THE SAME SENTENCE. A request window's applied
10383
+ range is a cut of a corpus the publisher already holds, so a range that starts after
10384
+ ``start_at`` really is less of it. A snapshot's range is an OBSERVATION: the publisher serves
10385
+ one document saying what is true now, this run read the whole of it, and the one partition it
10386
+ seals is everything a run of any mode could have produced today. Deriving `truncated` from the
10387
+ start here would mark every snapshot run from the second day of the table's life onward as an
10388
+ incomplete build -- and `truncated` is what Studio's one definition of a finished build reads
10389
+ (`build_profile.build_is_complete`), so the button that starts a full would never say the table
10390
+ already has one, and a complete sample would never release the full it is holding. A row clamp
10391
+ that really did cut the fetched relation short arrives on ``relation.truncated``, and what
10392
+ becomes of it is the mode's: carried through by a run that merges nothing, refused above by
10393
+ one that merges.
10394
+
10395
+ A SNAPSHOT SOURCE IS STAMPED BEFORE ANY OF THAT, and the stamp is what makes the rest of this
10396
+ function true of it: its rows arrive carrying no time at all, and the column the merge reads
10397
+ its partition off is written here.
10269
10398
  """
10270
10399
 
10271
10400
  window = source.window
10272
10401
  assert window is not None
10402
+ if window.snapshot is not None:
10403
+ applied, relation, coverage = _stamped_snapshot(
10404
+ job, source, relation=relation, coverage=coverage, destination=destination
10405
+ )
10273
10406
  fetched_window = applied.wire
10274
10407
  if job.mode not in WINDOW_MERGE_MODES:
10275
- narrowed = applied.start_inclusive > align_down(window.start_at)
10408
+ narrowed = window.snapshot is None and applied.start_inclusive > align_down(window.start_at)
10276
10409
  return (
10277
10410
  replace(relation, truncated=relation.truncated or narrowed),
10278
10411
  replace(
@@ -10281,6 +10414,8 @@ def _windowed_relation(
10281
10414
  truncated=coverage.truncated or narrowed,
10282
10415
  ),
10283
10416
  )
10417
+ if window.snapshot is not None:
10418
+ assert_snapshot_slice_is_whole(source_id=source.name, truncated=relation.truncated)
10284
10419
  if predecessor is None or predecessor_sources is None:
10285
10420
  raise _predecessor_refusal(
10286
10421
  f"source {source.name} is windowed and this run holds none of the bytes its "
@@ -10306,7 +10441,21 @@ def _windowed_relation(
10306
10441
  acquired=relation.content,
10307
10442
  keys=partition_keys(window, applied),
10308
10443
  )
10444
+ # BEFORE THE RELATION IS WRITTEN INTO THE BUILD'S INPUT TREE, which is before anything this
10445
+ # run produces is uploaded. A snapshot grows by one partition a day forever, so the two
10446
+ # ceilings its registrant declared are met on an ordinary day by an ordinary run; what that run
10447
+ # must not do is seal a version whose successor cannot be built.
10448
+ if window.snapshot is not None:
10449
+ assert_snapshot_within_bounds(
10450
+ window.snapshot,
10451
+ source_id=source.name,
10452
+ partitions=merged.partitions,
10453
+ byte_count=len(merged.content),
10454
+ )
10309
10455
  digest = hashlib.sha256(merged.content).hexdigest()
10456
+ # NOTHING THAT REACHES HERE IS SHORT. A request window's merge leaves the relation covering
10457
+ # the corpus from its own start, so a clip it recorded on the way in is no longer a shortfall
10458
+ # of the sealed bytes; a snapshot's clipped slice never reaches the merge at all.
10310
10459
  return (
10311
10460
  replace(
10312
10461
  relation,
@@ -10343,6 +10492,20 @@ def _windowed_relation(
10343
10492
  "predecessor_digest": committed,
10344
10493
  "predecessor_rows": merged.predecessor_rows,
10345
10494
  "slice_rows": merged.slice_rows,
10495
+ # WHICH DAY THIS RUN WROTE, AND HOW MANY THE RELATION NOW HOLDS. For a
10496
+ # request window both are already legible from the range; for a snapshot the
10497
+ # range IS the observed day, and a reader of the receipt should not have to
10498
+ # recover the table's depth by counting partitions in the sealed bytes. The
10499
+ # day is spelled by the one function that spells it, so the receipt and the
10500
+ # cell the merge reads its partition off can never be two renderings.
10501
+ **(
10502
+ {}
10503
+ if window.snapshot is None
10504
+ else {
10505
+ "observed_date": snapshot_day(applied),
10506
+ "partitions": merged.partitions,
10507
+ }
10508
+ ),
10346
10509
  }
10347
10510
  ),
10348
10511
  ),
@@ -279,6 +279,17 @@ V4_FAILURE_CODES: tuple[str, ...] = (
279
279
  "RUN_RECORDING_INVALID",
280
280
  "RUN_WATERMARK_INVALID",
281
281
  "RUN_WINDOW_REQUIRED",
282
+ "SNAPSHOT_BEFORE_START_AT",
283
+ "SNAPSHOT_COLUMN_RESERVED",
284
+ "SNAPSHOT_IDENTITY_INCOMPLETE",
285
+ "SNAPSHOT_PARTITIONS_EXHAUSTED",
286
+ "SNAPSHOT_PARTITION_MISMATCH",
287
+ "SNAPSHOT_RELATION_EMPTY",
288
+ "SNAPSHOT_RELATION_TOO_LARGE",
289
+ "SNAPSHOT_RELATION_TRUNCATED",
290
+ "SNAPSHOT_REQUEST_EXCLUSIVE",
291
+ "SNAPSHOT_SCOPES_UNSUPPORTED",
292
+ "SNAPSHOT_SPAN_FIXED",
282
293
  "SOURCE_HTTP_5XX",
283
294
  "SOURCE_PHYSICAL_SCOPE_UNKNOWN",
284
295
  "SOURCE_PROXY_BUSY",
@@ -2585,6 +2596,10 @@ def _applied_execution_window(job: RunExecution, *, now: str) -> RunWindow | Non
2585
2596
  A refresh of a recipe with a windowed source and no ``clamps.window`` is refused here. An
2586
2597
  absent range on a continuing run is not a neutral default: it would re-request the whole corpus
2587
2598
  from the publisher, which is the cost this member exists to remove.
2599
+
2600
+ A SNAPSHOT SOURCE IS NOT ONE OF THOSE. It re-requests nothing: its address is fetched literally
2601
+ and its range is the day the fetch happened in, so a dispatch that states no range costs a
2602
+ snapshot-only recipe nothing and there is no resumption point for one to continue from.
2588
2603
  """
2589
2604
 
2590
2605
  from mostlyright.data_harness.v4_window import applied_window, instant, intersect
@@ -2592,7 +2607,8 @@ def _applied_execution_window(job: RunExecution, *, now: str) -> RunWindow | Non
2592
2607
  windows = [source.window for source in job.recipe.sources if source.window is not None]
2593
2608
  if not windows:
2594
2609
  return None
2595
- if job.mode == "refresh" and job.clamps.window is None:
2610
+ requested = [window for window in windows if window.snapshot is None]
2611
+ if job.mode == "refresh" and requested and job.clamps.window is None:
2596
2612
  raise _refuse(
2597
2613
  "RUN_WINDOW_REQUIRED",
2598
2614
  "a refresh of a recipe with a windowed source must state the clamps.window it "
@@ -85,7 +85,7 @@ PINNED_OPENAPI_SOURCE_SHA256 = "2dfdef306229bf211333211354a948742e9759dd5399f66b
85
85
  #: One line, and it stays one line: ``_replace_exactly`` in the repin matches the whole assignment
86
86
  #: as a literal and refuses on any count but one, so a wrapped constant is a constant the repin can
87
87
  #: no longer rewrite.
88
- PINNED_V4_OPENAPI_SOURCE_SHA256 = "450d913fcf4af526fb9e7d9d415771364ee4c1916ae78fc1c534a46ad0138fab"
88
+ PINNED_V4_OPENAPI_SOURCE_SHA256 = "244d4953c4d650da1ef448cb6846582c0d139b3e16b2798d743ec02f129e55ea"
89
89
 
90
90
  _DIGEST = re.compile(r"^sha256:[0-9a-f]{64}$")
91
91
  _IMAGE_DIGEST = re.compile(r"^[a-z0-9][a-z0-9._/-]{0,254}@sha256:[0-9a-f]{64}$")
@@ -942,6 +942,8 @@ def cadence_state(record: Mapping[str, Any]) -> dict[str, Any] | None:
942
942
  applied = applied if isinstance(applied, Mapping) else {}
943
943
  basis = applied.get("basis")
944
944
  basis = basis if isinstance(basis, Mapping) else {}
945
+ floor = cadence.get("floor")
946
+ floor = floor if isinstance(floor, Mapping) else {}
945
947
  return {
946
948
  # ⚠ THE WIRE OBJECT TRAVELS WHOLE, BESIDE THE PROSE RATHER THAN INSTEAD OF IT. The members
947
949
  # below are a rendering for somebody reading a terminal, and a rendering necessarily drops
@@ -959,6 +961,10 @@ def cadence_state(record: Mapping[str, Any]) -> dict[str, Any] | None:
959
961
  "updates_seen": basis.get("evidence_count"),
960
962
  "measured_gap": _interval_phrase(basis.get("interval_seconds")),
961
963
  "quickest_source": basis.get("fastest_source"),
964
+ # A source with a snapshot window records the day it was read, so the loop never lets the
965
+ # table refresh slower than that day; the bound is shown as the gap it never exceeds.
966
+ "no_slower_than": _interval_phrase(floor.get("max_interval_seconds")),
967
+ "bounded_by_source": floor.get("source"),
962
968
  }
963
969
 
964
970
 
@@ -5,7 +5,7 @@ for the commonest failure of all -- pointing a command at a folder that is not t
5
5
  engineering wording reads like a security incident. This module turns a code into the two or three
6
6
  plain sentences that say what happened and what to do next.
7
7
 
8
- There are two layers, because 1859 typed codes across 217 prefixes can reach a person at a
8
+ There are two layers, because 1861 typed codes across 217 prefixes can reach a person at a
9
9
  workbench, and a hand-written sentence for each one would be neither affordable nor honest:
10
10
 
11
11
  * **Families.** Every code prefix is assigned to a family. A family is one paragraph: what this