mostlyright-data 0.15.3__tar.gz → 0.16.1__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.
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/PKG-INFO +29 -15
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/README.md +28 -14
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/pyproject.toml +1 -1
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/skills/mr-data-build/SKILL.md +19 -16
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/acquisition/http.py +19 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/acquisition/parsing.py +217 -4
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/acquisition/sandbox.py +611 -129
- mostlyright_data-0.16.1/src/mostlyright/data_harness/acquisition/sandbox_bootstrap.py +20 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/formats.py +36 -10
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/hosted_ingestion_worker.py +43 -14
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/hosted_run_worker.py +698 -92
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/inprocess_acquisition.py +72 -12
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/local_contracts.py +4 -1
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/run_execution_v4.py +20 -7
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/source_bundle_writer.py +2 -7
- mostlyright_data-0.16.1/src/mostlyright/data_harness/source_partition.py +50 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/source_raw_inventory.py +5 -8
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/source_state_index.py +2 -1
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/catalog/bounded_io.py +15 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/registry.py +32 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/stream_registry.py +18 -1
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/stream_series.py +18 -1
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/studio_boundary.py +1 -1
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/v4_closed_source.py +8 -63
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/v4_recipe.py +23 -16
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/v4_stream_recording.py +249 -37
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/v4_window.py +92 -12
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/.gitignore +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/scripts/hatch_build.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/skills/mr-data-build/agents/openai.yaml +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/skills/mr-data-build/scripts/write_research_notebook.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/skills/mr-data-build/scripts/write_visual_run.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/_vendor/__init__.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/_vendor/rapidocr/LICENSE +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/_vendor/rapidocr/PROVENANCE.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/_vendor/rapidocr/__init__.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/_vendor/rapidocr/__init__.pyi +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/_vendor/rapidocr/_version.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/_vendor/rapidocr/cal_rec_boxes/__init__.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/_vendor/rapidocr/cal_rec_boxes/main.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/_vendor/rapidocr/ch_ppocr_cls/__init__.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/_vendor/rapidocr/ch_ppocr_cls/main.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/_vendor/rapidocr/ch_ppocr_cls/utils.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/_vendor/rapidocr/ch_ppocr_det/__init__.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/_vendor/rapidocr/ch_ppocr_det/main.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/_vendor/rapidocr/ch_ppocr_det/utils.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/_vendor/rapidocr/ch_ppocr_rec/__init__.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/_vendor/rapidocr/ch_ppocr_rec/main.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/_vendor/rapidocr/ch_ppocr_rec/typings.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/_vendor/rapidocr/ch_ppocr_rec/utils.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/_vendor/rapidocr/config.yaml +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/_vendor/rapidocr/inference_engine/__init__.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/_vendor/rapidocr/inference_engine/base.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/_vendor/rapidocr/inference_engine/onnxruntime/__init__.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/_vendor/rapidocr/inference_engine/onnxruntime/main.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/_vendor/rapidocr/inference_engine/onnxruntime/provider_config.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/_vendor/rapidocr/main.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/_vendor/rapidocr/models/PP-OCRv6_det_small.onnx +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/_vendor/rapidocr/models/PP-OCRv6_rec_small.onnx +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/_vendor/rapidocr/models/ch_ppocr_mobile_v2.0_cls_mobile.onnx +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/_vendor/rapidocr/py.typed +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/_vendor/rapidocr/utils/__init__.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/_vendor/rapidocr/utils/load_image.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/_vendor/rapidocr/utils/log.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/_vendor/rapidocr/utils/model_resolver.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/_vendor/rapidocr/utils/output.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/_vendor/rapidocr/utils/parse_parameters.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/_vendor/rapidocr/utils/process_img.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/_vendor/rapidocr/utils/typings.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/_vendor/rapidocr/utils/utils.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/__init__.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/acquisition/__init__.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/acquisition/derived_credentials.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/acquisition/ranges.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/acquisition/result_download.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/acquisition/retention_admission.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/acquisition/url_policy.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/agent_runtime.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/assets/logo-ink.svg +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/backends/__init__.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/backends/pandas_backend.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/backends/polars_backend.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/backends/protocol.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/backends/reference.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/backends/registry.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/backends/restrictions.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/bounded_query.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/bounded_scratch_sink.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/canonical.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/catalog_job.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/cli.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/compact_worker.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/contracts.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/coordinator.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/crosswalks.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/declared_checks.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/deploy.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/deploy_target.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/deployment_evidence.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/documents/__init__.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/documents/_worker_capability.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/documents/capture.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/documents/contracts.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/documents/lane.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/documents/ocr.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/documents/pdf.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/documents/registry.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/documents/sandbox.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/documents/selections.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/documents/tables.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/documents/vendor_rapidocr.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/events.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/fast_delimited.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/governors.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/hosted_bootstrap.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/hosted_crawler.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/hosted_crawler_container_smoke.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/hosted_crawler_fetch.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/hosted_crawler_job.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/hosted_crawler_protocol.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/hosted_deploy.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/hosted_ingestion_contract.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/hosted_ingestion_job.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/hosted_ingestion_job_smoke.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/hosted_rlimit_as_container_smoke.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/hosted_session_container_smoke.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/hosted_session_worker.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/hosted_session_worker_job_smoke.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/hosted_stream_recorder_container_smoke.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/hosted_stream_recorder_job.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/hosted_stream_subscription_container_smoke.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/hosted_stream_subscription_worker.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/hosted_worker.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/incremental_slice_executor.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/incremental_worker.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/ingestion/__init__.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/ingestion/contracts.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/ingestion/faults.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/ingestion/gcs_store.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/ingestion/spool.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/ingestion/store.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/key_seam.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/linux_process_boundary.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/nbrender/CONTRACT.md +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/nbrender/__init__.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/nbrender/chrome.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/nbrender/code_body.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/nbrender/document.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/nbrender/frame.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/nbrender/interactive.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/nbrender/markdown_body.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/nbrender/mr_components.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/nbrender/outputs_data.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/nbrender/outputs_rich.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/nbrender/outputs_source.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/nbrender/outputs_stage.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/nbrender/outputs_text.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/nbrender/parse.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/nbrender/status.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/nbrender/tokens.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/notebook.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/offline.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/operation_registry.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/operator_setup.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/part_check_evidence.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/pipeline.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/plan_graph.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/preparation/__init__.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/preparation/contracts.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/preparation/engine.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/preparation/errors.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/preparation/gates.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/preparation/joins.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/preparation/profile.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/preparation/table.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/preparation/transforms.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/progress_events.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/__init__.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/_openpyxl.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/budgets.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/containers.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/contracts.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/delimited.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/geojson_vector.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/geopackage.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/geoparquet.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/grib2/__init__.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/grib2/admission.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/grib2/collection.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/grib2/collection_reader.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/grib2/decode.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/grib2/geometry.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/grib2/portable_math.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/grib_eccodes.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/html_tabular.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/html_web_extract.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/json_tabular.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/parquet_tabular.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/pcaxis_px.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/protobuf_tabular.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/raster/__init__.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/raster/_bytes.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/raster/decode.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/raster/family.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/raster/jpeg2000.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/raster/profiles.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/raster/rendered.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/raster/safe.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/raster/sentinel_safe.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/raster/tiff.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/registry.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/README.md +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/archive.gzip/1.0.0/cities_one_stream/cities.csv.gz +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/archive.gzip/1.0.0/cities_one_stream/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/archive.gzip/1.1.0/cities_one_stream/cities.csv.gz +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/archive.gzip/1.1.0/cities_one_stream/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/archive.tar/1.0.0/cities_beside_a_directory_entry/cities.tar +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/archive.tar/1.0.0/cities_beside_a_directory_entry/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/archive.tar/1.1.0/cities_beside_a_directory_entry/cities.tar +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/archive.tar/1.1.0/cities_beside_a_directory_entry/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/archive.zip/1.0.0/cities_beside_a_second_member/cities.zip +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/archive.zip/1.0.0/cities_beside_a_second_member/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/archive.zip/1.1.0/dwd_semicolon_station_member/dwd-station.zip +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/archive.zip/1.1.0/dwd_semicolon_station_member/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/archive.zip/1.2.0/dwd_semicolon_station_member/dwd-station.zip +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/archive.zip/1.2.0/dwd_semicolon_station_member/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/delimited_text/1.0.0/an_ordinary_comma_separated_table/cities.csv +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/delimited_text/1.0.0/an_ordinary_comma_separated_table/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/delimited_text/1.0.0/quoted_fields_holding_the_delimiter/cities.tsv +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/delimited_text/1.0.0/quoted_fields_holding_the_delimiter/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/delimited_text/1.1.0/an_hourly_observation_table_served_as_plain_text/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/delimited_text/1.1.0/an_hourly_observation_table_served_as_plain_text/observations.csv +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/geojson.vector/1.0.0/czech_capital/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/geojson.vector/1.0.0/czech_capital/places.geojson +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/geopackage.vector/1.0.0/epsg_4326_feature/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/geopackage.vector/1.0.0/epsg_4326_feature/places.gpkg +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/geoparquet.vector/1.0.0/primary_wkb_point/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/geoparquet.vector/1.0.0/primary_wkb_point/places.parquet +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/html.tabular/1.0.0/sanitized_table/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/html.tabular/1.0.0/sanitized_table/table.html +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/html.web_extract/1.0.0/json_ld_scorecards/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/html.web_extract/1.0.0/json_ld_scorecards/scorecards.html +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/image.rendered/1.0.0/tiny_png/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/image.rendered/1.0.0/tiny_png/tiny-rendered.png +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/json.tabular/1.0.0/nested_hourly_observations/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/json.tabular/1.0.0/nested_hourly_observations/stations.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/json.tabular/1.1.0/an_observation_stream_served_as_plain_text/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/json.tabular/1.1.0/an_observation_stream_served_as_plain_text/observations.ndjson +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/meteorology.bufr/1.0.0/eccodes_bufr4_subset/eccodes-bufr4.bufr +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/meteorology.bufr/1.0.0/eccodes_bufr4_subset/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/meteorology.grib/1.0.0/eccodes_grib1_origin/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/meteorology.grib/1.0.0/eccodes_grib1_origin/regular-ll-surface.grib1 +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/microdata.sas_xpt/1.0.0/two_raw_columns/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/microdata.sas_xpt/1.0.0/two_raw_columns/survey.xpt +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/microdata.spss_sav/1.0.0/two_raw_columns/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/microdata.spss_sav/1.0.0/two_raw_columns/survey.sav +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/microdata.stata_dta/1.0.0/two_raw_columns/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/microdata.stata_dta/1.0.0/two_raw_columns/stata.dta +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/official.pcaxis_px/1.0.0/population_by_region_and_year/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/official.pcaxis_px/1.0.0/population_by_region_and_year/population.px +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/official.sdmx_json/1.0.0/compact_population_series/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/official.sdmx_json/1.0.0/compact_population_series/population.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/parquet.tabular/1.0.0/two_columns/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/parquet.tabular/1.0.0/two_columns/prices.parquet +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/protobuf.tabular/1.0.0/gtfs_realtime_trip_updates/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/protobuf.tabular/1.0.0/gtfs_realtime_trip_updates/gtfs-realtime.desc +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/protobuf.tabular/1.0.0/gtfs_realtime_trip_updates/trip-updates.pb +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/raster.geospatial/1.0.0/tiny_geotiff/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/raster.geospatial/1.0.0/tiny_geotiff/tiny-geospatial.tif +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/satellite.goes_abi_l2/1.0.0/authored_cmi_window/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/satellite.goes_abi_l2/1.0.0/authored_cmi_window/goes-abi-l2-cmi-window.nc +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/satellite.himawari_hsd/1.0.0/authored_b13_single_bzip2/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/satellite.himawari_hsd/1.0.0/authored_b13_single_bzip2/himawari-b13-0101-bzip2.dat +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/satellite.himawari_hsd_complete/1.0.0/authored_b13_three_segment_scan/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/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
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/satellite.msg_seviri_l15/1.0.0/authored_calibrated_complete_visir/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/satellite.msg_seviri_l15/1.0.0/authored_calibrated_complete_visir/msg-seviri-l15.zip +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/satellite.sentinel_safe/1.0.0/authored_b02_scl_window/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/satellite.sentinel_safe/1.0.0/authored_b02_scl_window/sentinel-safe-b02-scl.zip +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/satellite.xrit_image/1.0.0/authored_complete_raw_counts/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/satellite.xrit_image/1.0.0/authored_complete_raw_counts/xrit-complete-image.zip +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/scientific.fits/1.0.0/tiny_primary_window/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/scientific.fits/1.0.0/tiny_primary_window/tiny-primary.fits +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/scientific.hdf4/1.0.0/authored_temperature_window/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/scientific.hdf4/1.0.0/authored_temperature_window/temperature.hdf +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/scientific.hdf5/1.0.0/authored_temperature_window/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/scientific.hdf5/1.0.0/authored_temperature_window/temperature.h5 +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/scientific.hdf_eos2/1.0.0/authored_grid_temperature_window/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/scientific.hdf_eos2/1.0.0/authored_grid_temperature_window/nasa-hdfeos2-grid.hdf +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/scientific.hdf_eos2/1.0.0/authored_swath_temperature_window/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/scientific.hdf_eos2/1.0.0/authored_swath_temperature_window/nasa-hdfeos2-swath.hdf +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/scientific.netcdf/1.0.0/authored_classic_temperature_window/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/scientific.netcdf/1.0.0/authored_classic_temperature_window/temperature-classic.nc +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/scientific.zarr/1.0.0/authored_v3_temperature_window/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/scientific.zarr/1.0.0/authored_v3_temperature_window/temperature-zarr-v3.zip +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/spreadsheet.xlsx/1.0.0/an_ordinary_table_beside_a_second_sheet/cities.xlsx +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/spreadsheet.xlsx/1.0.0/an_ordinary_table_beside_a_second_sheet/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/spreadsheet.xlsx/1.0.0/shares_the_workbook_had_already_computed/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/spreadsheet.xlsx/1.0.0/shares_the_workbook_had_already_computed/shares.xlsx +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/spreadsheet.xlsx/1.1.0/shares_the_workbook_had_already_computed/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/spreadsheet.xlsx/1.1.0/shares_the_workbook_had_already_computed/shares.xlsx +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/README.md +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/gfs_2m_temperature/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/gfs_2m_temperature/gfs-2m-temperature.grib2 +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/hrrr_2m_temperature/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/hrrr_2m_temperature/hrrr-2m-temperature.grib2 +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/hrrr_categorical_rain/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/hrrr_categorical_rain/hrrr-categorical-rain.grib2 +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/weather.grib2/2.0.0/hrrr_2m_temperature/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/weather.grib2/2.0.0/hrrr_2m_temperature/hrrr-2m-temperature.grib2 +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/weather.grib2/3.0.0/gfs_and_hrrr_categorical_rain/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/weather.grib2/3.0.0/gfs_and_hrrr_categorical_rain/gfs-and-hrrr-categorical-rain.grib2 +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/xbrl.facts/1.0.0/plain_filing_fact/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/xbrl.facts/1.0.0/plain_filing_fact/filing.xml +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/xbrl.facts/1.0.0/xml_inline_fact/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/xbrl.facts/1.0.0/xml_inline_fact/filing.xhtml +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/xml.tabular/1.0.0/pacer_rss_feed/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/xml.tabular/1.0.0/pacer_rss_feed/feed.xml +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/xml.tabular/1.0.0/sec_form_d_filing/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/xml.tabular/1.0.0/sec_form_d_filing/filing.xml +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/xml.tabular/1.0.0/unified_agenda_extract/agenda.xml +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples/xml.tabular/1.0.0/unified_agenda_extract/expected.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/samples.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/scientific.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/scientific_arrays/__init__.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/scientific_arrays/container.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/scientific_arrays/goes.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/scientific_arrays/hdf4.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/scientific_arrays/hdf4_bridge.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/scientific_arrays/hdf5.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/scientific_arrays/native.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/scientific_arrays/netcdf.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/scientific_arrays/profiles.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/scientific_arrays/raw.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/scientific_arrays/zarr.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/scientific_catalog.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/scientific_segmented/__init__.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/scientific_segmented/asset_sets.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/scientific_segmented/formats.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/scientific_segmented/hsd.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/scientific_segmented/native.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/scientific_segmented/profiles.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/scientific_segmented/reader.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/scientific_segmented/xrit.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/sdmx_json.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/spreadsheet.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/statistical_microdata.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/tabular.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/vector.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/vector_wkb.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/xbrl_facts.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/readers/xml_tabular.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/recipe.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/review.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/rowset.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/session_probes.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/signing.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/skill_assets.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/source_bootstrap.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/source_discovery.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/source_history_candidate_child.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/source_history_transform_child.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/source_inventory.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/__init__.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/_adapter_steps.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/adapters.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/authenticated_https.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/authenticated_https_v2.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/authenticated_https_v3.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/cadence.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/cadence_emission.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/cadence_history.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/catalog/__init__.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/catalog/admission.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/catalog/authoring.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/catalog/authoring_policy.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/catalog/authoring_shards.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/catalog/channel.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/catalog/channel_client.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/catalog/contracts.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/catalog/coverage.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/catalog/embedding.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/catalog/entry_v2.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/catalog/fill.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/catalog/fill_partitions.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/catalog/fill_staging.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/catalog/gating.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/catalog/generation_receipt.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/catalog/harvest/__init__.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/catalog/harvest/ckan.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/catalog/harvest/datagov_v4.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/catalog/harvest/protocol.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/catalog/harvest/sdmx.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/catalog/harvest/stac.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/catalog/hosted_catalog.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/catalog/identity_history.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/catalog/neural.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/catalog/packed_catalog.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/catalog/packed_retrieval.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/catalog/packed_writer.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/catalog/query_trace.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/catalog/recommend.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/catalog/retrieval.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/catalog/retrieval_manifest.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/catalog/sealed.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/catalog/search.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/catalog/streaming_delta.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/catalog/update.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/collections.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/contracts.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/dataset.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/deletion.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/document_projection.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/fitness.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/governance.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/hosted.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/integration.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/range_reader.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/rights_rule.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/source_cadence_vectors.v1.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/sports.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/stream.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/stream_capture_session.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/stream_connector.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/stream_connectors/fixture.cursor-resume.v3.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-frame-ed25519.v2.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-frame-hmac.v2.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-frame-hmac384.v2.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-frame-hmac512.v2.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-frame.v2.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-header-rsa.v2.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-header.v2.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-permessage-jwt.v2.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-permessage.v2.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-prelude.v2.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-query.v2.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-subprotocol.v2.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-subscribe.v2.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-urlpath.v2.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/stream_connectors/polymarket.clob-market.v1.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/stream_credential.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/stream_prelude.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/stream_recorder.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/stream_rotation.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/stream_segment_recorder.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/stream_signing.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sources/stream_transport.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/sql_transform_engine.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/stream_order_vector.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/stream_recovery_objects.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/stream_segment_spill.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/stream_subscription_feed.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/stream_subscription_sealer.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/stream_subscription_worker.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/stream_venue.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/stream_venue_staging.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/studio_subscription_control.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/table_manifest.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/table_parts.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/table_profile.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/thin/__init__.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/thin/acquire.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/thin/acquire_cancel.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/thin/activity.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/thin/approvals.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/thin/commands.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/thin/download.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/thin/narrative.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/thin/parity.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/thin/probe.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/thin/propose.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/thin/recipe.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/thin/research.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/thin/router.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/thin/runs.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/thin/session.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/thin/stream.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/thin/stream_venue.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/thin/transport.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/thin/v4.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/thin/v4_artifacts.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/thin/v4_connections.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/thin/v4_dataset_covers.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/thin/v4_datasets.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/thin/v4_handoff.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/thin/v4_narrative.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/thin/v4_query.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/thin/v4_runs.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/thin/v4_secrets.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/thin/v4_stream.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/thin/v4_tables.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/thin/vocabulary.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/thin/workers.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/ucum/TABLE-PIN.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/ucum/ucum-subset.v1.json +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/unit_flow.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/units.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/ux/__init__.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/ux/attendance.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/ux/clarification.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/ux/cloud_auth.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/ux/commands/__init__.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/ux/commands/auth.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/ux/commands/catalog_author.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/ux/commands/catalog_harvest.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/ux/commands/catalog_publish.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/ux/commands/clarify.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/ux/commands/login.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/ux/commands/record.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/ux/commands/whoami.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/ux/credential_native.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/ux/credential_store.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/ux/credentials.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/ux/headline.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/ux/hosted_acquisition.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/ux/local_review.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/ux/login.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/ux/path_kind.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/ux/plain_file.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/ux/readers.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/ux/remediation.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/ux/render.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/v4_acquisition.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/v4_check_dialect.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/v4_document_pin.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/v4_reader_pin.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/v4_required_controls.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/v4_snapshot_artifact.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/v4_transform.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/visual_run/__init__.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/visual_run/authoring.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/visual_run/contracts.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/visual_run/materialize.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/visual_run/observations.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/visual_run/reducer.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/visual_run/sdk.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/visual_run/store.py +0 -0
- {mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/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.
|
|
3
|
+
Version: 0.16.1
|
|
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/
|
|
@@ -208,21 +208,33 @@ mr-data --help
|
|
|
208
208
|
|
|
209
209
|
## Build a dataset
|
|
210
210
|
|
|
211
|
+
Register a recipe document with the sources, table schema, transformations and checks:
|
|
212
|
+
|
|
211
213
|
```bash
|
|
212
|
-
mr-data
|
|
213
|
-
mr-data recipe
|
|
214
|
-
mr-data
|
|
215
|
-
mr-data checks
|
|
216
|
-
mr-data download
|
|
214
|
+
mr-data recipe recipe.json --json
|
|
215
|
+
mr-data run --recipe RECIPE_ID --digest RECIPE_DIGEST --full
|
|
216
|
+
mr-data status RUN_ID
|
|
217
|
+
mr-data checks RUN_ID
|
|
218
|
+
mr-data download RUN_ID --output ./out
|
|
217
219
|
```
|
|
218
220
|
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
The
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
221
|
+
Use the identifiers returned by registration and run submission. `mr-data dataset create`
|
|
222
|
+
creates a dataset page before a recipe is ready. `mr-data watch RUN_ID` follows a submitted run.
|
|
223
|
+
|
|
224
|
+
The hosted engine executes sample, full and refresh runs. A refresh uses each source's declared
|
|
225
|
+
update behavior: bounded source windows merge with retained history; snapshot sources are
|
|
226
|
+
revalidated or acquired again. The table's transformations and checks run over the resulting
|
|
227
|
+
source relations. URL windows may use declared query parameters or path placeholders; a fixed
|
|
228
|
+
date URL does not advance automatically. Configure a correction lookback where the publisher
|
|
229
|
+
can revise earlier observations.
|
|
230
|
+
|
|
231
|
+
A source exposing only its current snapshot cannot supply a historical delta. It remains a
|
|
232
|
+
supported source, with snapshot comparison and recomputation rather than a claim that only new
|
|
233
|
+
rows were fetched. Recorded streams use their registered capture and continuation semantics.
|
|
234
|
+
|
|
235
|
+
See [Recipe documents](docs/RECIPE-DOCUMENT.md) for source-window and bootstrap contracts.
|
|
236
|
+
`mr-data promote TABLE_ID` requests publication; claim a table is live and current only when
|
|
237
|
+
Studio returns that evidence.
|
|
226
238
|
|
|
227
239
|
## There is no local execution
|
|
228
240
|
|
|
@@ -252,7 +264,9 @@ Use `mr-data --help` for the full command list and options. Commands that suppor
|
|
|
252
264
|
|
|
253
265
|
- Weather Reader versions 1 and 2 accept one extracted GRIB2 record and refuse a multi-record GFS
|
|
254
266
|
or HRRR file. Version 3 reads a bounded collection and selects exactly one sealed record.
|
|
255
|
-
-
|
|
267
|
+
- A single-address credential-free public HTTPS source uses the reviewed hosted route. Bounded
|
|
268
|
+
collections have no route at all; the retired local lane was their only route.
|
|
269
|
+
- A recipe supports up to 256 declared sources. Source count is separate from bounded request concurrency and resource limits. Existing source adapters and Readers retain their own format, pagination, byte, row and credential contracts; a URL collection is not an implicit permission to crawl arbitrary links.
|
|
256
270
|
- A keyed stream venue is named by a credential reference the backend holds, never by a value. No command flag takes a secret as an argument. Venues reached over an actual WebSocket are covered; a venue whose credential comes from an interactive human login, or that is not WebSocket at all, is not.
|
|
257
271
|
|
|
258
272
|
## Verification
|
|
@@ -267,7 +281,7 @@ before review or merge.
|
|
|
267
281
|
## Development
|
|
268
282
|
|
|
269
283
|
```bash
|
|
270
|
-
uv sync --locked --extra dev
|
|
284
|
+
uv sync --locked --extra dev --extra local-search-neural
|
|
271
285
|
```
|
|
272
286
|
|
|
273
287
|
The test suite drives the execution engine in-process, and requires Linux for the worker-boundary
|
|
@@ -45,21 +45,33 @@ mr-data --help
|
|
|
45
45
|
|
|
46
46
|
## Build a dataset
|
|
47
47
|
|
|
48
|
+
Register a recipe document with the sources, table schema, transformations and checks:
|
|
49
|
+
|
|
48
50
|
```bash
|
|
49
|
-
mr-data
|
|
50
|
-
mr-data recipe
|
|
51
|
-
mr-data
|
|
52
|
-
mr-data checks
|
|
53
|
-
mr-data download
|
|
51
|
+
mr-data recipe recipe.json --json
|
|
52
|
+
mr-data run --recipe RECIPE_ID --digest RECIPE_DIGEST --full
|
|
53
|
+
mr-data status RUN_ID
|
|
54
|
+
mr-data checks RUN_ID
|
|
55
|
+
mr-data download RUN_ID --output ./out
|
|
54
56
|
```
|
|
55
57
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
The
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
58
|
+
Use the identifiers returned by registration and run submission. `mr-data dataset create`
|
|
59
|
+
creates a dataset page before a recipe is ready. `mr-data watch RUN_ID` follows a submitted run.
|
|
60
|
+
|
|
61
|
+
The hosted engine executes sample, full and refresh runs. A refresh uses each source's declared
|
|
62
|
+
update behavior: bounded source windows merge with retained history; snapshot sources are
|
|
63
|
+
revalidated or acquired again. The table's transformations and checks run over the resulting
|
|
64
|
+
source relations. URL windows may use declared query parameters or path placeholders; a fixed
|
|
65
|
+
date URL does not advance automatically. Configure a correction lookback where the publisher
|
|
66
|
+
can revise earlier observations.
|
|
67
|
+
|
|
68
|
+
A source exposing only its current snapshot cannot supply a historical delta. It remains a
|
|
69
|
+
supported source, with snapshot comparison and recomputation rather than a claim that only new
|
|
70
|
+
rows were fetched. Recorded streams use their registered capture and continuation semantics.
|
|
71
|
+
|
|
72
|
+
See [Recipe documents](docs/RECIPE-DOCUMENT.md) for source-window and bootstrap contracts.
|
|
73
|
+
`mr-data promote TABLE_ID` requests publication; claim a table is live and current only when
|
|
74
|
+
Studio returns that evidence.
|
|
63
75
|
|
|
64
76
|
## There is no local execution
|
|
65
77
|
|
|
@@ -89,7 +101,9 @@ Use `mr-data --help` for the full command list and options. Commands that suppor
|
|
|
89
101
|
|
|
90
102
|
- Weather Reader versions 1 and 2 accept one extracted GRIB2 record and refuse a multi-record GFS
|
|
91
103
|
or HRRR file. Version 3 reads a bounded collection and selects exactly one sealed record.
|
|
92
|
-
-
|
|
104
|
+
- A single-address credential-free public HTTPS source uses the reviewed hosted route. Bounded
|
|
105
|
+
collections have no route at all; the retired local lane was their only route.
|
|
106
|
+
- A recipe supports up to 256 declared sources. Source count is separate from bounded request concurrency and resource limits. Existing source adapters and Readers retain their own format, pagination, byte, row and credential contracts; a URL collection is not an implicit permission to crawl arbitrary links.
|
|
93
107
|
- A keyed stream venue is named by a credential reference the backend holds, never by a value. No command flag takes a secret as an argument. Venues reached over an actual WebSocket are covered; a venue whose credential comes from an interactive human login, or that is not WebSocket at all, is not.
|
|
94
108
|
|
|
95
109
|
## Verification
|
|
@@ -104,7 +118,7 @@ before review or merge.
|
|
|
104
118
|
## Development
|
|
105
119
|
|
|
106
120
|
```bash
|
|
107
|
-
uv sync --locked --extra dev
|
|
121
|
+
uv sync --locked --extra dev --extra local-search-neural
|
|
108
122
|
```
|
|
109
123
|
|
|
110
124
|
The test suite drives the execution engine in-process, and requires Linux for the worker-boundary
|
|
@@ -115,7 +115,7 @@ gap rather than doing anything, and `export-hosted-candidate`, which is a backen
|
|
|
115
115
|
| `mr-data dataset` | Bring the dataset page into existence before there is anything on it, then fill it in while somebody watches. `dataset create --name TEXT` mints it and prints the `dataset_id`; `dataset show ID` reads it back; `dataset set ID --name TEXT --description-file F` writes the title and the description under the version it was read at, retrying once if somebody else wrote first; `dataset note ID --heading H --blocks-file B` writes one cell of the decision record that OUTLIVES every run, and `--list` reads it back; `dataset watch ID` follows the page's own event stream; `dataset activity ID --phase P --message TEXT` says what is happening right now, silently, and is never a chat message and never a cell; `dataset archive ID --confirm-name TITLE` retires the page and frees its title, deleting nothing. |
|
|
116
116
|
| `mr-data recipe` | Register one recipe document — dataset, question, table plan, sources, transform, checks and units — in one call, and print the identifiers the server derived. `mr-data recipe show ID` reads one back. |
|
|
117
117
|
| `mr-data cover` | Generate and attach one branded 1200×630 dataset cover. Give it the dataset ID and what the image should depict; Studio fixes the model, single-color style, curated random palette, dimensions and storage. |
|
|
118
|
-
| `mr-data run` | Start one run against a registered recipe, named as `--recipe RECIPE_ID --digest RECIPE_DIGEST` — both required, neither positional, and the digest is the bare hex the registration receipt printed. The command accepts `--sample`, `--full`, `--refresh`, `--backfill` and `--window`, and the worker executes `--sample`, `--full` and `--refresh
|
|
118
|
+
| `mr-data run` | Start one run against a registered recipe, named as `--recipe RECIPE_ID --digest RECIPE_DIGEST` — both required, neither positional, and the digest is the bare hex the registration receipt printed. The command accepts `--sample`, `--full`, `--refresh`, `--backfill` and `--window`, and the worker executes `--sample`, `--full` and `--refresh`. A refresh narrows each source that declares a supported address window and merges its returned relation into retained source state; unwindowed sources are conditionally revalidated or re-acquired whole, then the full declared transform runs. `--backfill` and a `--window` on a sample or full are refused before acquisition. `--max-rows` and `--max-source-bytes` remain supported, and each bounds ONE SOURCE rather than the finished table. A large run is held for a spend confirmation, which `--confirm` settles; a sample-first held full requires Studio's interactive human approval instead. `--cancel RUN` stops one. |
|
|
119
119
|
| `mr-data status` | Report which of the seven states one run is in, what it delivered and whether a ceiling cut it short, and — on a failure — what failed and where. Exits non-zero on a failed run. |
|
|
120
120
|
| `mr-data runs` | Report this workspace's own runs: identifier, mode, state and creation time, plus the failure triple of any that failed. `--status` and `--mode` narrow it and are refused for a word outside the seven or the four; `--limit` says how many, and pages are followed to reach it. |
|
|
121
121
|
| `mr-data watch` | Stream one run's live progress under the durable event type of each stage, resuming across stream cuts. Exits non-zero when the run failed. |
|
|
@@ -745,10 +745,10 @@ which is the other reason the search belongs there.
|
|
|
745
745
|
protocol, on `--sample`, `max_rows` and `window` truncate: the run succeeds at the clamp boundary
|
|
746
746
|
and reports the coverage it actually delivered. `max_source_bytes` refuses in every mode, sample
|
|
747
747
|
included, and on `full`, `refresh` and `backfill`, hitting any clamp is a refusal with
|
|
748
|
-
`CLAMP_EXCEEDED`. The current worker admits `sample`, `full` and `refresh`
|
|
749
|
-
those dispositions.
|
|
750
|
-
|
|
751
|
-
a byte
|
|
748
|
+
`CLAMP_EXCEEDED`. The current worker admits `sample`, `full` and `refresh` and refuses `backfill` before applying
|
|
749
|
+
those dispositions. A declared supported source window narrows that source's refresh request; it
|
|
750
|
+
does not make every source or connector incremental. Therefore an executable sample may truncate
|
|
751
|
+
on `max_rows`, and an executable full or refresh refuses a crossed row or byte ceiling.
|
|
752
752
|
|
|
753
753
|
**A succeeded run carries `coverage`, and `truncated` is required on every entry.** That is how a
|
|
754
754
|
complete acquired response is told from one cut at fifty thousand rows without opening the
|
|
@@ -760,11 +760,14 @@ the record — `mr-data run --recipe RECIPE_ID --digest RECIPE_DIGEST --full --c
|
|
|
760
760
|
held answer prints back as `confirm_command`. Any authenticated surface of the paying workspace may
|
|
761
761
|
settle it. `mr-data run --cancel RUN_ID` stops a run that is queued or running.
|
|
762
762
|
|
|
763
|
-
Do not treat the accepted command vocabulary as execution evidence.
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
763
|
+
Do not treat the accepted command vocabulary as execution evidence. Author a source window only
|
|
764
|
+
when the publisher has a truthful bounded date endpoint: use query names by default or exact
|
|
765
|
+
`{parameter}` markers in its path, retain a correction lookback, and keep historical sources
|
|
766
|
+
revalidatable unless an explicit closure contract says they cannot change. A refresh merges each
|
|
767
|
+
windowed source slice into retained source state and recomputes the complete transform; unrelated
|
|
768
|
+
snapshot sources are conditionally revalidated or re-acquired as needed. Cursor, pagination and
|
|
769
|
+
new-file discovery need their own supported source contract and must not be represented as a date
|
|
770
|
+
window. A `backfill` remains refused before acquisition.
|
|
768
771
|
|
|
769
772
|
### 6. Interrogate — ask the run what it actually delivered
|
|
770
773
|
|
|
@@ -1276,12 +1279,12 @@ the source again. Do not lock a schedule on your own judgement — it is the sam
|
|
|
1276
1279
|
promotion, and it belongs to the user.
|
|
1277
1280
|
|
|
1278
1281
|
This call is a publication request, not proof of data continuation. The current Harness worker
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
schedule. Another deployed Studio or warehouse component may do that work, but only its
|
|
1282
|
-
state and durable run evidence support a claim that the table is live, caught up, or
|
|
1283
|
-
If that evidence is absent, report that publication was requested and that ongoing
|
|
1284
|
-
unavailable; do not imply that promotion filled the gap.
|
|
1282
|
+
can execute a supported refresh, including declared source windows, but it does not make a frozen
|
|
1283
|
+
date, a generic cursor or a file listing advance by inference. It also does not attach or execute a
|
|
1284
|
+
warehouse schedule. Another deployed Studio or warehouse component may do that work, but only its
|
|
1285
|
+
returned state and durable run evidence support a claim that the table is live, caught up, or
|
|
1286
|
+
refreshing. If that evidence is absent, report that publication was requested and that ongoing
|
|
1287
|
+
freshness is unavailable; do not imply that promotion filled the gap.
|
|
1285
1288
|
|
|
1286
1289
|
`mr-data pin TABLE_ID --version VERSION_ID` freezes the pointer on an exact version for a rollback
|
|
1287
1290
|
or a hold, `mr-data unpin TABLE_ID` resumes tracking, and `mr-data demote TABLE_ID` detaches the
|
{mostlyright_data-0.15.3 → mostlyright_data-0.16.1}/src/mostlyright/data_harness/acquisition/http.py
RENAMED
|
@@ -3834,3 +3834,22 @@ def _require_snapshot_fd_bytes(
|
|
|
3834
3834
|
"SNAPSHOT_COLLISION",
|
|
3835
3835
|
"existing content-addressed snapshot bytes differ",
|
|
3836
3836
|
)
|
|
3837
|
+
# A write can land in an earlier chunk after that chunk was hashed. Metadata alone cannot
|
|
3838
|
+
# close that interval: some filesystems expose timestamps too coarsely for a same-size write.
|
|
3839
|
+
# Re-read positionally and compare against the caller-owned expected bytes, preserving the
|
|
3840
|
+
# first pass's bounded memory use and never advancing this descriptor's stream position.
|
|
3841
|
+
offset = 0
|
|
3842
|
+
while offset < expected_length:
|
|
3843
|
+
try:
|
|
3844
|
+
repeated = os.pread(file_descriptor, min(65_536, expected_length - offset), offset)
|
|
3845
|
+
except OSError as error:
|
|
3846
|
+
raise AcquisitionSecurityError(
|
|
3847
|
+
"SNAPSHOT_COLLISION",
|
|
3848
|
+
"existing content-addressed snapshot could not be re-read",
|
|
3849
|
+
) from error
|
|
3850
|
+
if not repeated or repeated != expected[offset : offset + len(repeated)]:
|
|
3851
|
+
raise AcquisitionSecurityError(
|
|
3852
|
+
"SNAPSHOT_COLLISION",
|
|
3853
|
+
"existing content-addressed snapshot bytes changed during validation",
|
|
3854
|
+
)
|
|
3855
|
+
offset += len(repeated)
|
|
@@ -28,6 +28,7 @@ from mostlyright.data_harness.formats import (
|
|
|
28
28
|
FORMAT_MEDIA_TYPES,
|
|
29
29
|
FORMAT_SUFFIXES,
|
|
30
30
|
)
|
|
31
|
+
from mostlyright.data_harness.source_partition import PARTITION_KEYS, source_partition_day
|
|
31
32
|
|
|
32
33
|
# Read from the single closed table in ``mostlyright.data_harness.formats``; this module
|
|
33
34
|
# keeps the private names it has always used so its call sites are unchanged.
|
|
@@ -441,6 +442,215 @@ def parse_csv_evidence(
|
|
|
441
442
|
)
|
|
442
443
|
|
|
443
444
|
|
|
445
|
+
def parse_ndjson_evidence(
|
|
446
|
+
content: bytes,
|
|
447
|
+
*,
|
|
448
|
+
media_type: str,
|
|
449
|
+
filename: str,
|
|
450
|
+
limits: ParseLimits,
|
|
451
|
+
) -> ParsedTabularEvidence:
|
|
452
|
+
"""Stream one NDJSON verification pass: the admissions of the drained parse, record by record.
|
|
453
|
+
|
|
454
|
+
The second streaming pass, and the reason :data:`STREAMED_EVIDENCE_FORMATS` is a table rather
|
|
455
|
+
than the word ``csv``. It serves NDJSON acquired over public or authenticated HTTPS, which is
|
|
456
|
+
the lane that reaches ``InProcessPublicHttpsAdapter._confined_read``, and a replayed WebSocket
|
|
457
|
+
capture, which reaches it through ``v4_stream_recording.RecordedStreamAdapter``. That second
|
|
458
|
+
caller still needs rows, but only one per sealed batch, so it drains each batch on its own
|
|
459
|
+
and reads the concatenation through this pass alone.
|
|
460
|
+
|
|
461
|
+
WHAT IT ACTUALLY BUYS, MEASURED INSIDE THIS FUNCTION WITH ``tracemalloc``, WHICH IS NOT THE
|
|
462
|
+
SAME QUANTITY THE BENCHMARK REPORTS. Every figure in this paragraph is the peak of the Python
|
|
463
|
+
objects THIS PASS allocates. It is deliberately not the number
|
|
464
|
+
``evidence/acquisition-ceiling-benchmark.macos-arm64.json`` carries: that file records the
|
|
465
|
+
CHILD'S peak resident set (``ru_maxrss``), which also holds the interpreter, the PyArrow
|
|
466
|
+
import and the allocator's own slack. The two registers are reconciled at the end of this
|
|
467
|
+
paragraph, because reading one as the other is how a later change came to claim a memory win
|
|
468
|
+
twice the size of the real one.
|
|
469
|
+
|
|
470
|
+
No list of decoded records and no tuple of rows is ever built, where the drained
|
|
471
|
+
``_parse_json`` holds BOTH at once. On a four-column order-book shape that is 2.87x the
|
|
472
|
+
source against 10.95x at 320k records, and the ratio is what moves rather than the growth:
|
|
473
|
+
this pass is NOT constant in the number of records and saying so would be false.
|
|
474
|
+
``text.splitlines()`` materialises every line of the document, so the peak grows linearly with
|
|
475
|
+
the row count exactly as the drained parse's does -- 2.89x at 50k records and 2.87x at 320k,
|
|
476
|
+
against 11.12x and 10.95x drained. It is flat from 50k up rather than at every size: at 5k
|
|
477
|
+
records the pass's own constant costs are still visible and it reads 3.46x. The shape moves
|
|
478
|
+
it too -- the benchmark's seven-column frame reads 2.38x against 9.04x at 320k -- so the pair
|
|
479
|
+
is quoted together or neither number means anything.
|
|
480
|
+
|
|
481
|
+
RECONCILING THE TWO REGISTERS, ONCE, HERE. Function-level 2.87x and the child's 7.33x for the
|
|
482
|
+
same read are both honest: the child's reading adds a large fixed cost that no source byte
|
|
483
|
+
pays for. That cost is common to BOTH operations, so it raises both multipliers and
|
|
484
|
+
COMPRESSES the ratio between them -- this pass is worth 3.8x at the function level and 2.0x
|
|
485
|
+
measured as the child's peak on the order-book shape. A caller sizing a confined read wants
|
|
486
|
+
the child's number; a reader asking what this function holds wants this one.
|
|
487
|
+
|
|
488
|
+
THE LINE LIST IS REQUIRED, NOT AN OVERSIGHT. ``_parse_json`` numbers its records by
|
|
489
|
+
``str.splitlines()``, which breaks on U+2028, U+0085 and the vertical tab as well as on the
|
|
490
|
+
newline. A reader that split the bytes on ``\n`` would find a different number of records in
|
|
491
|
+
the same document and refuse at different record numbers, which is the parity this pass exists
|
|
492
|
+
to hold. So the trade is deliberate: the same line list, and just over a quarter of what this
|
|
493
|
+
function allocates, at a fetch ceiling 2.25 times higher. Both halves of that trade are in
|
|
494
|
+
the ``tracemalloc`` register named above; the child-level statement of the same trade is the
|
|
495
|
+
one in ``sandbox.py`` beside ``STREAMING_OPERATIONS``, and it is the one to quote when the
|
|
496
|
+
question is what a confined read costs.
|
|
497
|
+
|
|
498
|
+
THE REFUSALS ARE ``_parse_json``'s OWN, AT THE SAME RECORDS, IN THE SAME ORDER, and preserving
|
|
499
|
+
that order is most of this function. The drained parse reads every line into a list before it
|
|
500
|
+
asks a single question about shape, so its refusals fall in four groups that do not interleave:
|
|
501
|
+
the per-line group (the row budget, then a line that is not JSON), then the whole-document
|
|
502
|
+
group (an empty document, then a member that is not an object), then the per-record group (the
|
|
503
|
+
nesting budget, the first-record schema, the field budget), then the table group (the cell
|
|
504
|
+
budget). A pass that raised each fault where it found it would report the SECOND group's
|
|
505
|
+
fault only when no later line carried a FIRST group's, and would report a third-group fault
|
|
506
|
+
that the drained parse never reaches at all.
|
|
507
|
+
|
|
508
|
+
So only the per-line group raises where it is found -- it is the group the drained parse also
|
|
509
|
+
resolves before anything else -- and every later group is recorded and raised after the last
|
|
510
|
+
line has been read, in the drained parse's own order. That is the same deferral
|
|
511
|
+
:func:`parse_csv_evidence` applies to the total-cell budget, applied to three more groups
|
|
512
|
+
because NDJSON has three more questions that are asked about the document rather than the row.
|
|
513
|
+
|
|
514
|
+
The row digest is fed to the hash incrementally, by the framing
|
|
515
|
+
:func:`row_digest_for` uses, for the reason stated there.
|
|
516
|
+
"""
|
|
517
|
+
|
|
518
|
+
_admit_tabular_input(content, data_format="ndjson", media_type=media_type, filename=filename)
|
|
519
|
+
if not content or len(content) > limits.max_input_bytes:
|
|
520
|
+
raise AcquisitionSecurityError(
|
|
521
|
+
"PARSE_INPUT_LIMIT",
|
|
522
|
+
"source bytes are empty or exceed the parser input budget",
|
|
523
|
+
)
|
|
524
|
+
if any(content.startswith(magic) for magic in _ARCHIVE_OR_EXECUTABLE_MAGICS):
|
|
525
|
+
raise AcquisitionSecurityError(
|
|
526
|
+
"PARSE_FORBIDDEN_CONTAINER",
|
|
527
|
+
"archives, executables, documents, and nested containers are forbidden",
|
|
528
|
+
)
|
|
529
|
+
# No NUL check, deliberately. ``_parse_csv`` makes one and ``_parse_json`` does not, so a
|
|
530
|
+
# NUL inside an NDJSON string reaches the decoder in the drained parse and must reach it
|
|
531
|
+
# here; adding the CSV check would refuse a document the drained read admits.
|
|
532
|
+
text = _strict_utf8(content)
|
|
533
|
+
decoder = json.JSONDecoder(
|
|
534
|
+
object_pairs_hook=_unique_object,
|
|
535
|
+
parse_constant=lambda value: _invalid_json_number(value),
|
|
536
|
+
)
|
|
537
|
+
|
|
538
|
+
columns: tuple[str, ...] = ()
|
|
539
|
+
expected: set[str] = set()
|
|
540
|
+
observed_types: list[set[str]] = []
|
|
541
|
+
row_hash = hashlib.sha256()
|
|
542
|
+
row_count = 0
|
|
543
|
+
hashed_rows = 0
|
|
544
|
+
# The deferred groups, in the order the drained parse resolves them. ``not_an_object`` and
|
|
545
|
+
# an exhausted loop with ``row_count`` still zero are the whole-document group; the two
|
|
546
|
+
# ``AcquisitionSecurityError`` slots hold a refusal that is RE-RAISED rather than rebuilt, so
|
|
547
|
+
# the sentence a person is told is the drained parse's own down to the record number in it.
|
|
548
|
+
not_an_object = False
|
|
549
|
+
no_columns: AcquisitionSecurityError | None = None
|
|
550
|
+
record_refusal: AcquisitionSecurityError | None = None
|
|
551
|
+
over_cell_budget = False
|
|
552
|
+
canonical_error: CanonicalJSONError | None = None
|
|
553
|
+
|
|
554
|
+
for line_number, line in enumerate(text.splitlines(), start=1):
|
|
555
|
+
if not line.strip():
|
|
556
|
+
continue
|
|
557
|
+
if row_count >= limits.max_rows:
|
|
558
|
+
raise AcquisitionSecurityError("PARSE_ROW_LIMIT", "NDJSON exceeds the row budget")
|
|
559
|
+
try:
|
|
560
|
+
record = decoder.decode(line)
|
|
561
|
+
except json.JSONDecodeError:
|
|
562
|
+
raise AcquisitionSecurityError(
|
|
563
|
+
"PARSE_JSON",
|
|
564
|
+
f"NDJSON line {line_number} is malformed",
|
|
565
|
+
) from None
|
|
566
|
+
row_count += 1
|
|
567
|
+
if not isinstance(record, dict):
|
|
568
|
+
not_an_object = True
|
|
569
|
+
# Nothing below this line can win against a fault already recorded above it, so the work
|
|
570
|
+
# is skipped rather than done and discarded. That is what keeps the deferral from costing
|
|
571
|
+
# a full validation pass over a document whose first question already has an answer.
|
|
572
|
+
if not_an_object or no_columns is not None or record_refusal is not None:
|
|
573
|
+
continue
|
|
574
|
+
if not columns:
|
|
575
|
+
try:
|
|
576
|
+
columns = _columns(list(record), limits)
|
|
577
|
+
except AcquisitionSecurityError as error:
|
|
578
|
+
no_columns = error
|
|
579
|
+
continue
|
|
580
|
+
expected = set(columns)
|
|
581
|
+
observed_types = [set() for _ in columns]
|
|
582
|
+
row_hash.update(b'{"columns":' + canonical_json_bytes(list(columns)) + b',"rows":[')
|
|
583
|
+
try:
|
|
584
|
+
_validate_json_value(record, depth=1, limits=limits)
|
|
585
|
+
if set(record) != expected:
|
|
586
|
+
raise AcquisitionSecurityError(
|
|
587
|
+
"PARSE_ROW_SCHEMA",
|
|
588
|
+
f"JSON row {row_count} does not match the first-row schema",
|
|
589
|
+
)
|
|
590
|
+
row = tuple(record[column] for column in columns)
|
|
591
|
+
_validate_row(row, limits)
|
|
592
|
+
except AcquisitionSecurityError as error:
|
|
593
|
+
record_refusal = error
|
|
594
|
+
continue
|
|
595
|
+
if row_count * len(columns) > limits.max_total_cells:
|
|
596
|
+
over_cell_budget = True
|
|
597
|
+
# A value the canonical encoder refuses keeps the position the one-shot digest gave it:
|
|
598
|
+
# after every parse refusal and the cell budget, never mid-loop. The hash is dead on that
|
|
599
|
+
# path, so it stops accumulating with the first error.
|
|
600
|
+
if canonical_error is None:
|
|
601
|
+
try:
|
|
602
|
+
encoded_row = canonical_json_bytes(list(row))
|
|
603
|
+
except CanonicalJSONError as error:
|
|
604
|
+
canonical_error = error
|
|
605
|
+
else:
|
|
606
|
+
if hashed_rows:
|
|
607
|
+
row_hash.update(b",")
|
|
608
|
+
row_hash.update(encoded_row)
|
|
609
|
+
hashed_rows += 1
|
|
610
|
+
for index, value in enumerate(row):
|
|
611
|
+
observed_types[index].add("null" if value is None else type(value).__name__)
|
|
612
|
+
|
|
613
|
+
if not_an_object:
|
|
614
|
+
raise AcquisitionSecurityError("PARSE_JSON_SHAPE", "every JSON row must be an object")
|
|
615
|
+
if not row_count:
|
|
616
|
+
raise AcquisitionSecurityError(
|
|
617
|
+
"PARSE_JSON_SHAPE",
|
|
618
|
+
"JSON tabular input must be a non-empty array of objects",
|
|
619
|
+
)
|
|
620
|
+
if no_columns is not None:
|
|
621
|
+
raise no_columns
|
|
622
|
+
if record_refusal is not None:
|
|
623
|
+
raise record_refusal
|
|
624
|
+
if over_cell_budget:
|
|
625
|
+
raise AcquisitionSecurityError("PARSE_CELL_LIMIT", "table exceeds the cell budget")
|
|
626
|
+
if canonical_error is not None:
|
|
627
|
+
# TYPED, LIKE EVERY OTHER PARSE REFUSAL HERE, and for the reason ``parse_csv_evidence``
|
|
628
|
+
# states at its own copy of this branch: raised bare it leaves this boundary as an
|
|
629
|
+
# exception nothing above can name.
|
|
630
|
+
raise AcquisitionSecurityError(
|
|
631
|
+
"PARSE_VALUE", "parsed field contains a non-canonical value"
|
|
632
|
+
) from canonical_error
|
|
633
|
+
row_hash.update(b"]}")
|
|
634
|
+
|
|
635
|
+
return ParsedTabularEvidence(
|
|
636
|
+
data_format="ndjson",
|
|
637
|
+
input_sha256=sha256_bytes(content),
|
|
638
|
+
columns=columns,
|
|
639
|
+
row_count=row_count,
|
|
640
|
+
schema_digest=canonical_sha256(
|
|
641
|
+
{
|
|
642
|
+
"data_format": "ndjson",
|
|
643
|
+
"columns": list(columns),
|
|
644
|
+
"types": [
|
|
645
|
+
"|".join(sorted(observed)) if observed else "empty"
|
|
646
|
+
for observed in observed_types
|
|
647
|
+
],
|
|
648
|
+
}
|
|
649
|
+
),
|
|
650
|
+
row_digest=row_hash.hexdigest(),
|
|
651
|
+
)
|
|
652
|
+
|
|
653
|
+
|
|
444
654
|
def parse_csv_evidence_to_file(
|
|
445
655
|
source: BinaryIO,
|
|
446
656
|
destination: BinaryIO,
|
|
@@ -594,7 +804,7 @@ def parse_streaming_csv_window(
|
|
|
594
804
|
or not 1 <= max_output_bytes <= MAX_FILE_BACKED_WINDOW_BYTES
|
|
595
805
|
):
|
|
596
806
|
raise AcquisitionSecurityError("WINDOW_STREAM_LIMIT", "window byte ceiling is invalid")
|
|
597
|
-
if partition_key not in
|
|
807
|
+
if partition_key not in PARTITION_KEYS:
|
|
598
808
|
raise AcquisitionSecurityError(
|
|
599
809
|
"WINDOW_STREAM_PARTITION", "partition key encoding is invalid"
|
|
600
810
|
)
|
|
@@ -858,9 +1068,12 @@ def _window_instant(value: object) -> datetime.datetime:
|
|
|
858
1068
|
|
|
859
1069
|
|
|
860
1070
|
def _partition_key_and_date(value: str, *, encoding: str) -> tuple[str, datetime.date]:
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
1071
|
+
try:
|
|
1072
|
+
key = source_partition_day(value, encoding)
|
|
1073
|
+
except ValueError:
|
|
1074
|
+
raise AcquisitionSecurityError(
|
|
1075
|
+
"WINDOW_STREAM_PARTITION", "partition key is not canonical"
|
|
1076
|
+
) from None
|
|
864
1077
|
try:
|
|
865
1078
|
parsed_date = datetime.date.fromisoformat(key)
|
|
866
1079
|
except ValueError:
|