mostlyright-data 0.17.5__tar.gz → 0.17.7__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.17.5 → mostlyright_data-0.17.7}/PKG-INFO +5 -2
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/README.md +4 -1
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/pyproject.toml +1 -1
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/skills/mr-data-build/SKILL.md +172 -82
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/hosted_crawler_fetch.py +35 -12
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/hosted_run_worker.py +254 -26
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/inprocess_acquisition.py +136 -13
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/page_coverage.py +15 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/run_execution_v4.py +27 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/page_collections.py +97 -1
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/studio_boundary.py +1 -1
- mostlyright_data-0.17.7/src/mostlyright/data_harness/thin/categories.py +9 -0
- mostlyright_data-0.17.7/src/mostlyright/data_harness/thin/dataset-categories-v1.json +132 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/thin/recipe.py +4 -7
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/thin/v4.py +5 -1
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/thin/v4_datasets.py +45 -6
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/.gitignore +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/scripts/hatch_build.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/skills/mr-data-build/agents/openai.yaml +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/skills/mr-data-build/scripts/write_research_notebook.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/skills/mr-data-build/scripts/write_visual_run.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/_vendor/__init__.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/_vendor/rapidocr/LICENSE +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/_vendor/rapidocr/PROVENANCE.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/_vendor/rapidocr/__init__.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/_vendor/rapidocr/__init__.pyi +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/_vendor/rapidocr/_version.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/_vendor/rapidocr/cal_rec_boxes/__init__.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/_vendor/rapidocr/cal_rec_boxes/main.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/_vendor/rapidocr/ch_ppocr_cls/__init__.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/_vendor/rapidocr/ch_ppocr_cls/main.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/_vendor/rapidocr/ch_ppocr_cls/utils.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/_vendor/rapidocr/ch_ppocr_det/__init__.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/_vendor/rapidocr/ch_ppocr_det/main.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/_vendor/rapidocr/ch_ppocr_det/utils.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/_vendor/rapidocr/ch_ppocr_rec/__init__.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/_vendor/rapidocr/ch_ppocr_rec/main.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/_vendor/rapidocr/ch_ppocr_rec/typings.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/_vendor/rapidocr/ch_ppocr_rec/utils.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/_vendor/rapidocr/config.yaml +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/_vendor/rapidocr/inference_engine/__init__.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/_vendor/rapidocr/inference_engine/base.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/_vendor/rapidocr/inference_engine/onnxruntime/__init__.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/_vendor/rapidocr/inference_engine/onnxruntime/main.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/_vendor/rapidocr/inference_engine/onnxruntime/provider_config.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/_vendor/rapidocr/main.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/_vendor/rapidocr/models/PP-OCRv6_det_small.onnx +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/_vendor/rapidocr/models/PP-OCRv6_rec_small.onnx +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/_vendor/rapidocr/models/ch_ppocr_mobile_v2.0_cls_mobile.onnx +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/_vendor/rapidocr/py.typed +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/_vendor/rapidocr/utils/__init__.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/_vendor/rapidocr/utils/load_image.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/_vendor/rapidocr/utils/log.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/_vendor/rapidocr/utils/model_resolver.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/_vendor/rapidocr/utils/output.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/_vendor/rapidocr/utils/parse_parameters.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/_vendor/rapidocr/utils/process_img.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/_vendor/rapidocr/utils/typings.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/_vendor/rapidocr/utils/utils.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/__init__.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/acquisition/__init__.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/acquisition/derived_credentials.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/acquisition/http.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/acquisition/parsing.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/acquisition/ranges.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/acquisition/result_download.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/acquisition/retention_admission.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/acquisition/sandbox.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/acquisition/sandbox_bootstrap.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/acquisition/url_policy.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/agent_runtime.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/assets/logo-ink.svg +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/backends/__init__.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/backends/pandas_backend.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/backends/polars_backend.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/backends/protocol.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/backends/reference.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/backends/registry.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/backends/restrictions.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/bounded_query.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/bounded_scratch_sink.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/canonical.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/catalog_job.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/cli.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/compact_worker.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/contracts.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/coordinator.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/crosswalks.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/declared_checks.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/delta.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/delta_checks.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/delta_classifier.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/delta_persist.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/delta_recompute.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/delta_rows.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/deploy.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/deploy_target.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/deployment_evidence.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/documents/__init__.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/documents/_worker_capability.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/documents/capture.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/documents/contracts.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/documents/lane.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/documents/ocr.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/documents/pdf.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/documents/registry.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/documents/sandbox.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/documents/selections.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/documents/tables.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/documents/vendor_rapidocr.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/events.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/fast_delimited.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/fetch_egress_smoke.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/formats.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/governors.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/hosted_bootstrap.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/hosted_crawler.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/hosted_crawler_container_smoke.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/hosted_crawler_job.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/hosted_crawler_protocol.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/hosted_deploy.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/hosted_ingestion_contract.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/hosted_ingestion_job.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/hosted_ingestion_job_smoke.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/hosted_ingestion_worker.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/hosted_rlimit_as_container_smoke.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/hosted_session_container_smoke.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/hosted_session_worker.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/hosted_session_worker_job_smoke.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/hosted_stream_recorder_container_smoke.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/hosted_stream_recorder_job.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/hosted_stream_subscription_container_smoke.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/hosted_stream_subscription_worker.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/hosted_worker.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/incremental_slice_executor.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/incremental_worker.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/ingestion/__init__.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/ingestion/contracts.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/ingestion/faults.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/ingestion/gcs_store.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/ingestion/spool.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/ingestion/store.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/key_seam.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/legacy_table_recovery.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/legacy_table_recovery_contract.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/linux_process_boundary.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/local_contracts.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/nbrender/CONTRACT.md +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/nbrender/__init__.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/nbrender/chrome.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/nbrender/code_body.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/nbrender/document.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/nbrender/frame.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/nbrender/interactive.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/nbrender/markdown_body.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/nbrender/mr_components.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/nbrender/outputs_data.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/nbrender/outputs_rich.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/nbrender/outputs_source.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/nbrender/outputs_stage.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/nbrender/outputs_text.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/nbrender/parse.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/nbrender/status.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/nbrender/tokens.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/notebook.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/offline.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/operation_registry.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/operator_setup.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/part_check_evidence.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/pipeline.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/plan_graph.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/preparation/__init__.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/preparation/contracts.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/preparation/engine.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/preparation/errors.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/preparation/gates.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/preparation/joins.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/preparation/profile.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/preparation/table.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/preparation/transforms.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/progress_events.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/__init__.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/_openpyxl.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/budgets.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/configurable_delimited.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/containers.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/contracts.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/delimited.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/geojson_vector.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/geopackage.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/geoparquet.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/grib2/__init__.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/grib2/admission.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/grib2/collection.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/grib2/collection_reader.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/grib2/decode.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/grib2/geometry.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/grib2/portable_math.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/grib_eccodes.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/html_tabular.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/html_web_extract.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/json_tabular.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/parquet_tabular.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/pcaxis_px.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/protobuf_tabular.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/raster/__init__.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/raster/_bytes.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/raster/decode.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/raster/family.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/raster/jpeg2000.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/raster/profiles.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/raster/rendered.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/raster/safe.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/raster/sentinel_safe.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/raster/tiff.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/registry.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/README.md +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/archive.gzip/1.0.0/cities_one_stream/cities.csv.gz +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/archive.gzip/1.0.0/cities_one_stream/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/archive.gzip/1.1.0/cities_one_stream/cities.csv.gz +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/archive.gzip/1.1.0/cities_one_stream/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/archive.tar/1.0.0/cities_beside_a_directory_entry/cities.tar +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/archive.tar/1.0.0/cities_beside_a_directory_entry/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/archive.tar/1.1.0/cities_beside_a_directory_entry/cities.tar +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/archive.tar/1.1.0/cities_beside_a_directory_entry/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/archive.zip/1.0.0/cities_beside_a_second_member/cities.zip +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/archive.zip/1.0.0/cities_beside_a_second_member/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/archive.zip/1.1.0/dwd_semicolon_station_member/dwd-station.zip +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/archive.zip/1.1.0/dwd_semicolon_station_member/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/archive.zip/1.2.0/dwd_semicolon_station_member/dwd-station.zip +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/archive.zip/1.2.0/dwd_semicolon_station_member/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/delimited_text/1.0.0/an_ordinary_comma_separated_table/cities.csv +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/delimited_text/1.0.0/an_ordinary_comma_separated_table/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/delimited_text/1.0.0/quoted_fields_holding_the_delimiter/cities.tsv +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/delimited_text/1.0.0/quoted_fields_holding_the_delimiter/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/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.17.5 → mostlyright_data-0.17.7}/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.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/delimited_text/2.0.0/publisher_preamble/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/delimited_text/2.0.0/publisher_preamble/indices.csv +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/geojson.vector/1.0.0/czech_capital/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/geojson.vector/1.0.0/czech_capital/places.geojson +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/geopackage.vector/1.0.0/epsg_4326_feature/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/geopackage.vector/1.0.0/epsg_4326_feature/places.gpkg +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/geoparquet.vector/1.0.0/primary_wkb_point/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/geoparquet.vector/1.0.0/primary_wkb_point/places.parquet +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/html.tabular/1.0.0/sanitized_table/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/html.tabular/1.0.0/sanitized_table/table.html +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/html.web_extract/1.0.0/json_ld_scorecards/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/html.web_extract/1.0.0/json_ld_scorecards/scorecards.html +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/html.web_extract/1.1.0/article_text_order/article.html +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/html.web_extract/1.1.0/article_text_order/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/image.rendered/1.0.0/tiny_png/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/image.rendered/1.0.0/tiny_png/tiny-rendered.png +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/json.tabular/1.0.0/nested_hourly_observations/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/json.tabular/1.0.0/nested_hourly_observations/stations.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/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.17.5 → mostlyright_data-0.17.7}/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.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/meteorology.bufr/1.0.0/eccodes_bufr4_subset/eccodes-bufr4.bufr +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/meteorology.bufr/1.0.0/eccodes_bufr4_subset/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/meteorology.grib/1.0.0/eccodes_grib1_origin/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/meteorology.grib/1.0.0/eccodes_grib1_origin/regular-ll-surface.grib1 +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/microdata.sas_xpt/1.0.0/two_raw_columns/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/microdata.sas_xpt/1.0.0/two_raw_columns/survey.xpt +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/microdata.spss_sav/1.0.0/two_raw_columns/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/microdata.spss_sav/1.0.0/two_raw_columns/survey.sav +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/microdata.stata_dta/1.0.0/two_raw_columns/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/microdata.stata_dta/1.0.0/two_raw_columns/stata.dta +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/official.pcaxis_px/1.0.0/population_by_region_and_year/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/official.pcaxis_px/1.0.0/population_by_region_and_year/population.px +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/official.sdmx_json/1.0.0/compact_population_series/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/official.sdmx_json/1.0.0/compact_population_series/population.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/parquet.tabular/1.0.0/two_columns/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/parquet.tabular/1.0.0/two_columns/prices.parquet +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/protobuf.tabular/1.0.0/gtfs_realtime_trip_updates/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/protobuf.tabular/1.0.0/gtfs_realtime_trip_updates/gtfs-realtime.desc +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/protobuf.tabular/1.0.0/gtfs_realtime_trip_updates/trip-updates.pb +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/raster.geospatial/1.0.0/tiny_geotiff/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/raster.geospatial/1.0.0/tiny_geotiff/tiny-geospatial.tif +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/satellite.goes_abi_l2/1.0.0/authored_cmi_window/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/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.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/satellite.himawari_hsd/1.0.0/authored_b13_single_bzip2/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/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.17.5 → mostlyright_data-0.17.7}/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.17.5 → mostlyright_data-0.17.7}/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.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/satellite.msg_seviri_l15/1.0.0/authored_calibrated_complete_visir/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/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.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/satellite.sentinel_safe/1.0.0/authored_b02_scl_window/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/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.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/satellite.xrit_image/1.0.0/authored_complete_raw_counts/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/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.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/scientific.fits/1.0.0/tiny_primary_window/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/scientific.fits/1.0.0/tiny_primary_window/tiny-primary.fits +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/scientific.hdf4/1.0.0/authored_temperature_window/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/scientific.hdf4/1.0.0/authored_temperature_window/temperature.hdf +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/scientific.hdf5/1.0.0/authored_temperature_window/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/scientific.hdf5/1.0.0/authored_temperature_window/temperature.h5 +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/scientific.hdf_eos2/1.0.0/authored_grid_temperature_window/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/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.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/scientific.hdf_eos2/1.0.0/authored_swath_temperature_window/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/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.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/scientific.netcdf/1.0.0/authored_classic_temperature_window/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/scientific.netcdf/1.0.0/authored_classic_temperature_window/temperature-classic.nc +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/scientific.zarr/1.0.0/authored_v3_temperature_window/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/scientific.zarr/1.0.0/authored_v3_temperature_window/temperature-zarr-v3.zip +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/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.17.5 → mostlyright_data-0.17.7}/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.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/spreadsheet.xlsx/1.0.0/shares_the_workbook_had_already_computed/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/spreadsheet.xlsx/1.0.0/shares_the_workbook_had_already_computed/shares.xlsx +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/spreadsheet.xlsx/1.1.0/shares_the_workbook_had_already_computed/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/spreadsheet.xlsx/1.1.0/shares_the_workbook_had_already_computed/shares.xlsx +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/README.md +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/gfs_2m_temperature/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/gfs_2m_temperature/gfs-2m-temperature.grib2 +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/hrrr_2m_temperature/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/hrrr_2m_temperature/hrrr-2m-temperature.grib2 +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/hrrr_categorical_rain/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/hrrr_categorical_rain/hrrr-categorical-rain.grib2 +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/weather.grib2/2.0.0/hrrr_2m_temperature/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/weather.grib2/2.0.0/hrrr_2m_temperature/hrrr-2m-temperature.grib2 +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/weather.grib2/3.0.0/gfs_and_hrrr_categorical_rain/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/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.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/xbrl.facts/1.0.0/plain_filing_fact/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/xbrl.facts/1.0.0/plain_filing_fact/filing.xml +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/xbrl.facts/1.0.0/xml_inline_fact/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/xbrl.facts/1.0.0/xml_inline_fact/filing.xhtml +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/xml.tabular/1.0.0/pacer_rss_feed/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/xml.tabular/1.0.0/pacer_rss_feed/feed.xml +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/xml.tabular/1.0.0/sec_form_d_filing/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/xml.tabular/1.0.0/sec_form_d_filing/filing.xml +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/xml.tabular/1.0.0/unified_agenda_extract/agenda.xml +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples/xml.tabular/1.0.0/unified_agenda_extract/expected.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/samples.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/scientific.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/scientific_arrays/__init__.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/scientific_arrays/container.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/scientific_arrays/goes.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/scientific_arrays/hdf4.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/scientific_arrays/hdf4_bridge.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/scientific_arrays/hdf5.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/scientific_arrays/native.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/scientific_arrays/netcdf.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/scientific_arrays/profiles.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/scientific_arrays/raw.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/scientific_arrays/zarr.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/scientific_catalog.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/scientific_segmented/__init__.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/scientific_segmented/asset_sets.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/scientific_segmented/formats.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/scientific_segmented/hsd.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/scientific_segmented/native.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/scientific_segmented/profiles.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/scientific_segmented/reader.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/scientific_segmented/xrit.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/sdmx_json.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/spreadsheet.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/statistical_microdata.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/tabular.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/vector.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/vector_wkb.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/xbrl_facts.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/readers/xml_tabular.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/recipe.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/review.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/rowset.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/run_phase_timing.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/session_probes.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/signing.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/skill_assets.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/source_bootstrap.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/source_bundle_writer.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/source_discovery.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/source_history_candidate_child.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/source_history_transform_child.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/source_inventory.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/source_partition.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/source_raw_inventory.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/source_state_index.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/__init__.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/_adapter_steps.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/adapters.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/authenticated_https.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/authenticated_https_v2.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/authenticated_https_v3.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/cadence.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/cadence_emission.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/cadence_history.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/catalog/__init__.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/catalog/admission.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/catalog/authoring.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/catalog/authoring_policy.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/catalog/authoring_shards.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/catalog/bounded_io.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/catalog/channel.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/catalog/channel_client.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/catalog/contracts.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/catalog/coverage.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/catalog/embedding.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/catalog/entry_v2.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/catalog/fill.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/catalog/fill_partitions.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/catalog/fill_staging.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/catalog/gating.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/catalog/generation_receipt.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/catalog/harvest/__init__.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/catalog/harvest/ckan.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/catalog/harvest/datagov_v4.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/catalog/harvest/protocol.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/catalog/harvest/sdmx.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/catalog/harvest/stac.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/catalog/hosted_catalog.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/catalog/identity_history.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/catalog/neural.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/catalog/packed_catalog.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/catalog/packed_retrieval.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/catalog/packed_writer.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/catalog/query_trace.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/catalog/recommend.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/catalog/retrieval.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/catalog/retrieval_manifest.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/catalog/sealed.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/catalog/search.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/catalog/streaming_delta.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/catalog/update.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/collections.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/contracts.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/dataset.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/deletion.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/document_projection.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/fitness.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/governance.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/hosted.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/integration.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/range_reader.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/registry.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/rights_rule.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/source_cadence_vectors.v1.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/sports.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/stream.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/stream_capture_session.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/stream_connector.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/stream_connectors/fixture.cursor-resume.v3.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-frame-ed25519.v2.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-frame-hmac.v2.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-frame-hmac384.v2.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-frame-hmac512.v2.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-frame.v2.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-header-rsa.v2.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-header.v2.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-permessage-jwt.v2.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-permessage.v2.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-prelude.v2.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-query.v2.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-subprotocol.v2.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-subscribe.v2.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-urlpath.v2.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/stream_connectors/polymarket.clob-market.v1.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/stream_credential.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/stream_prelude.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/stream_recorder.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/stream_registry.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/stream_rotation.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/stream_segment_recorder.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/stream_series.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/stream_signing.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sources/stream_transport.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/sql_transform_engine.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/stream_order_vector.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/stream_recovery_objects.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/stream_segment_spill.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/stream_subscription_feed.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/stream_subscription_sealer.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/stream_subscription_worker.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/stream_venue.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/stream_venue_staging.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/studio_subscription_control.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/table_manifest.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/table_parts.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/table_profile.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/thin/__init__.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/thin/acquire.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/thin/acquire_cancel.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/thin/activity.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/thin/approvals.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/thin/collection_plan.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/thin/commands.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/thin/download.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/thin/narrative.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/thin/parity.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/thin/probe.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/thin/propose.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/thin/research.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/thin/router.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/thin/runs.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/thin/session.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/thin/stream.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/thin/stream_venue.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/thin/transport.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/thin/user_agent.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/thin/v4_artifacts.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/thin/v4_connections.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/thin/v4_dataset_covers.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/thin/v4_handoff.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/thin/v4_narrative.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/thin/v4_query.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/thin/v4_runs.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/thin/v4_secrets.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/thin/v4_stream.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/thin/v4_tables.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/thin/vocabulary.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/thin/workers.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/ucum/TABLE-PIN.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/ucum/ucum-subset.v1.json +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/unit_flow.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/units.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/ux/__init__.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/ux/attendance.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/ux/clarification.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/ux/cloud_auth.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/ux/commands/__init__.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/ux/commands/auth.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/ux/commands/catalog_author.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/ux/commands/catalog_harvest.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/ux/commands/catalog_publish.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/ux/commands/clarify.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/ux/commands/login.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/ux/commands/record.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/ux/commands/whoami.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/ux/credential_native.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/ux/credential_store.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/ux/credentials.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/ux/headline.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/ux/hosted_acquisition.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/ux/local_review.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/ux/login.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/ux/path_kind.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/ux/plain_file.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/ux/readers.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/ux/remediation.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/ux/render.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/v4_acquisition.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/v4_check_dialect.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/v4_closed_source.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/v4_document_pin.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/v4_reader_pin.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/v4_recipe.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/v4_required_controls.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/v4_snapshot_artifact.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/v4_stream_recording.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/v4_transform.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/v4_window.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/visual_run/__init__.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/visual_run/authoring.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/visual_run/contracts.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/visual_run/materialize.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/visual_run/observations.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/visual_run/reducer.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/visual_run/sdk.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/src/mostlyright/data_harness/visual_run/store.py +0 -0
- {mostlyright_data-0.17.5 → mostlyright_data-0.17.7}/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.17.
|
|
3
|
+
Version: 0.17.7
|
|
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,9 +208,12 @@ mr-data --help
|
|
|
208
208
|
|
|
209
209
|
## Build a dataset
|
|
210
210
|
|
|
211
|
-
|
|
211
|
+
Create the dataset, choose its primary category from the fixed vocabulary, then register a recipe document with the sources, table schema, transformations and checks. Use the created dataset ID in the recipe:
|
|
212
212
|
|
|
213
213
|
```bash
|
|
214
|
+
mr-data dataset create --name "Dataset title" --json
|
|
215
|
+
mr-data dataset categories --json
|
|
216
|
+
mr-data dataset set DATASET_ID --category climate-environment
|
|
214
217
|
mr-data recipe recipe.json --json
|
|
215
218
|
mr-data run --recipe RECIPE_ID --digest RECIPE_DIGEST --full
|
|
216
219
|
mr-data status RUN_ID
|
|
@@ -45,9 +45,12 @@ mr-data --help
|
|
|
45
45
|
|
|
46
46
|
## Build a dataset
|
|
47
47
|
|
|
48
|
-
|
|
48
|
+
Create the dataset, choose its primary category from the fixed vocabulary, then register a recipe document with the sources, table schema, transformations and checks. Use the created dataset ID in the recipe:
|
|
49
49
|
|
|
50
50
|
```bash
|
|
51
|
+
mr-data dataset create --name "Dataset title" --json
|
|
52
|
+
mr-data dataset categories --json
|
|
53
|
+
mr-data dataset set DATASET_ID --category climate-environment
|
|
51
54
|
mr-data recipe recipe.json --json
|
|
52
55
|
mr-data run --recipe RECIPE_ID --digest RECIPE_DIGEST --full
|
|
53
56
|
mr-data status RUN_ID
|
|
@@ -37,6 +37,7 @@ service behavior, retry mechanics, or these instructions.
|
|
|
37
37
|
Outside a required host cadence, speak only when one of these boundaries gives the user useful new
|
|
38
38
|
information:
|
|
39
39
|
|
|
40
|
+
- A dataset-shaping choice needs the user's input; ask before committing to it.
|
|
40
41
|
- A material source, schema, coverage, rights, or quality decision is supported by observed facts.
|
|
41
42
|
- An exact contract or recipe needs the user's approval. State what will be built, the material
|
|
42
43
|
limitation, and the decision required; do not explain the approval mechanism.
|
|
@@ -117,7 +118,7 @@ gap rather than doing anything, and `export-hosted-candidate`, which is a backen
|
|
|
117
118
|
| `mr-data whoami` | Use the compatibility alias for the remotely validated `auth status` answer. |
|
|
118
119
|
| `mr-data clarify` | Say whether one clarifying question may be put to the user right now, and compose the record of their answer. It reaches nothing, asks nobody and waits for nothing. Exits non-zero when no person can answer or when a recipe is already registered. |
|
|
119
120
|
| `mr-data probe` | Ask one registered source one question and print the answer. **Currently unusable:** it reaches `/v3/sessions`, which Studio refuses, and it takes a question identifier that no v4 receipt returns. Do not plan a source inspection around it. |
|
|
120
|
-
| `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 --topics "a,b,c" --license ID --description-file F` writes the title, the
|
|
121
|
+
| `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 --topics "a,b,c" --license ID --description-file F` writes the title, the descriptive tags, the SPDX licence and the description under the version it was read at, retrying once if somebody else wrote first, and an empty `--topics` or `--license` takes that value off the page; `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 publish ID [--mode public|link|private]` says who can read the dataset — `public` lists it in the public directory and serves it at an address anybody can read, `link` serves it at an unlisted address, `private` takes it back to the workspace — and `dataset publish ID --show` reads that back without changing it; `dataset archive ID --confirm-name TITLE` retires the page and frees its title, deleting nothing. |
|
|
121
122
|
| `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. |
|
|
122
123
|
| `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. |
|
|
123
124
|
| `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. |
|
|
@@ -236,15 +237,13 @@ live data key is refused with `THIN_AUTHENTICATION_FAILED` rather than failing t
|
|
|
236
237
|
|
|
237
238
|
## Required protocol
|
|
238
239
|
|
|
239
|
-
There is one loop
|
|
240
|
-
sources,
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
so there is no approval to seek, no separate body of evidence to read back, and no state to wait
|
|
247
|
-
for. A table's first succeeded run goes live on its own, whatever mode it was, and what is left
|
|
240
|
+
There is one loop: open the page, clarify the intended dataset with the user, probe the
|
|
241
|
+
sources, resolve the tradeoffs that research reveals, summarize the agreed shape, draft one recipe
|
|
242
|
+
document, build a sample, and inspect it against the agreed requirements. Repair discrepancies;
|
|
243
|
+
return to the user before changing agreed semantics. A complete sample that meets those requirements
|
|
244
|
+
is already the table a full run would seal, so do not rebuild it merely to change the run mode.
|
|
245
|
+
A TRUNCATED sample requires the full-run decision below. Reading a finished run requires no separate
|
|
246
|
+
approval or waiting state. A table's first succeeded run goes live on its own, whatever mode it was, and what is left
|
|
248
247
|
for a person is [Promote](#promote) — the cadence it refreshes on and the reasoning behind it.
|
|
249
248
|
|
|
250
249
|
**The page is the work, and it exists first.** A dataset used to come into being as a side effect
|
|
@@ -279,11 +278,10 @@ again, and the failure triples on recent runs tell you what the backend is refus
|
|
|
279
278
|
`SANDBOX_MEMORY_BOUNDARY` on somebody else's recipe an hour ago means the room is unwell and your
|
|
280
279
|
first failure will not be your document's fault. Keep this check silent.
|
|
281
280
|
|
|
282
|
-
**Then
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
yours to decide.
|
|
281
|
+
**Then clarify the intended dataset before probing.** Follow [Dataset discovery](#dataset-discovery):
|
|
282
|
+
use the request and conversation to identify consequential missing choices, ask the highest-impact
|
|
283
|
+
questions, and wait for answers before work that depends on them. Independent source research may
|
|
284
|
+
continue while waiting. Revisit the remaining choices when research provides concrete alternatives.
|
|
287
285
|
|
|
288
286
|
Pass `--json` to automated commands. A command receipt is the only record that a Harness action
|
|
289
287
|
succeeded.
|
|
@@ -402,10 +400,8 @@ blocks file; stage 3 is what puts them on the page.
|
|
|
402
400
|
### 3. Decide — say what you chose, what you refused, and what unblocks it
|
|
403
401
|
|
|
404
402
|
**Post one Sources and decisions message before you register anything.** It goes to two places, in
|
|
405
|
-
the same words: the dataset's own decision record, and the chat.
|
|
406
|
-
|
|
407
|
-
person mostly needs — what they need is to see the search, while there is still time to disagree
|
|
408
|
-
with it.
|
|
403
|
+
the same words: the dataset's own decision record, and the chat. Summarize the user's answers, the source evidence, and any remaining
|
|
404
|
+
assumptions so the user can see what the first dataset will contain.
|
|
409
405
|
|
|
410
406
|
```sh
|
|
411
407
|
mr-data dataset note DATASET_ID --heading "Sources and decisions" \
|
|
@@ -417,8 +413,9 @@ EOF
|
|
|
417
413
|
The cell carries a `source` block for every feed evaluated — the ones being used, the ones
|
|
418
414
|
considered, and the ones rejected with the clause that ruled each out — and a `decision` block for
|
|
419
415
|
every grain, key, join and cutoff settled. Post the same content in the chat as one short message.
|
|
420
|
-
|
|
421
|
-
|
|
416
|
+
If a material choice is still unresolved, ask and wait before registering the recipe. If the
|
|
417
|
+
user has already settled the choices or delegated them, proceed without a redundant confirmation.
|
|
418
|
+
Silence after a proposal is not an answer to a pending question.
|
|
422
419
|
|
|
423
420
|
**Blocked sources: always say what unlocks it and how to enrol the credential.** A source you could
|
|
424
421
|
not reach because it needs an API key, an account or an approval is not a dead end and must never
|
|
@@ -428,23 +425,21 @@ who issues the credential, where to apply for it, and the exact command that enr
|
|
|
428
425
|
source with no route back is a decision the user cannot revisit; one with a route back is a
|
|
429
426
|
decision they can.
|
|
430
427
|
|
|
431
|
-
**
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
`
|
|
435
|
-
|
|
436
|
-
still early enough. When the answer comes back, write it as the answer on that block:
|
|
428
|
+
**Resolve research tradeoffs with the user.** Apply [Dataset discovery](#dataset-discovery) when
|
|
429
|
+
sources cannot deliver the requested grain, coverage, fields, or join. Explain the supported options
|
|
430
|
+
and their consequences before changing the intended dataset. Record each pending question as a
|
|
431
|
+
`clarification` block carrying `question` and no `answer`, and ask it in chat in the same words.
|
|
432
|
+
When answered, revise that same cell using its actual identifier (not a new unrelated note):
|
|
437
433
|
|
|
438
434
|
```sh
|
|
439
435
|
mr-data dataset note DATASET_ID --heading "The stage grain is settled" \
|
|
440
|
-
--revise
|
|
436
|
+
--revise PENDING_CELL_ID --blocks-file ANSWERED.json --json <<'EOF'
|
|
441
437
|
Daily maxima, on the user's answer.
|
|
442
438
|
EOF
|
|
443
439
|
```
|
|
444
440
|
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
is never a fork. If nothing is genuinely forked, ask nothing and carry on.
|
|
441
|
+
Carry the answers into the recipe's question, table and column descriptions, source selection,
|
|
442
|
+
transform, and checks as appropriate. Record assumptions separately from user decisions.
|
|
448
443
|
|
|
449
444
|
### 4. Draft — one recipe document, one call
|
|
450
445
|
|
|
@@ -476,16 +471,16 @@ and is settled once, at stage 4.
|
|
|
476
471
|
Every grain, key, join and cutoff settled after stage 3 is a further `decision` block on the
|
|
477
472
|
DATASET's record — `mr-data dataset note DATASET_ID` — because the fact outlives every run.
|
|
478
473
|
|
|
479
|
-
**Write the title,
|
|
474
|
+
**Write the title, primary category, tags, licence and description before recipe registration.** The page has
|
|
480
475
|
been open since stage 1 under a working title. This is where it settles. One call carries the title,
|
|
481
|
-
the
|
|
476
|
+
the primary category, tags and licence, so the title and category land together; the description arrives after
|
|
482
477
|
it, through the draft snapshots and the final commit. (The worked example below is a different
|
|
483
478
|
dataset from the Kathmandu one the earlier stages follow, chosen because its numbers are easy to
|
|
484
479
|
count.)
|
|
485
480
|
|
|
486
481
|
```sh
|
|
487
482
|
mr-data dataset set DATASET_ID --name "Hourly weather at Prague Airport (LKPR), 2000-2026" \
|
|
488
|
-
--topics "weather,prague,czech republic,metar,iowa environmental mesonet" \
|
|
483
|
+
--category climate-environment --topics "weather,prague,czech republic,metar,iowa environmental mesonet" \
|
|
489
484
|
--license "CC-BY-4.0" --json
|
|
490
485
|
```
|
|
491
486
|
|
|
@@ -509,7 +504,8 @@ interpret them.
|
|
|
509
504
|
| --- | --- | --- |
|
|
510
505
|
| `--name` | browser tab title (`{name} \| Mostly Right`), the page heading, the JSON-LD `name` | at most 60 characters, or search results cut it |
|
|
511
506
|
| the opening paragraph of DESCRIPTION.md | the meta description, the social card, the JSON-LD `description`, the `Summary:` line answer engines fetch | search engines cut at 300 characters; answer engines cut at 240 |
|
|
512
|
-
| `--
|
|
507
|
+
| `--category` | the primary category and category filter on Community | exactly one fixed category ID |
|
|
508
|
+
| `--topics` | JSON-LD `keywords`, the `Topics:` line answer engines fetch, the `topic` filter in the public API and MCP | 3 to 8 topics, each at most 40 characters |
|
|
513
509
|
|
|
514
510
|
**Title rules**
|
|
515
511
|
1. Shape: subject, place, period. `Hourly weather at Prague Airport (LKPR), 2000-2026`.
|
|
@@ -520,19 +516,51 @@ interpret them.
|
|
|
520
516
|
number, a run date.
|
|
521
517
|
5. Sentence case. No trailing full stop.
|
|
522
518
|
|
|
519
|
+
**Primary category — required before recipe registration**
|
|
520
|
+
Run `mr-data dataset categories --json` to read the fixed vocabulary and its definitions,
|
|
521
|
+
exclusions and examples. Choose exactly one primary category by interpreting the dataset purpose,
|
|
522
|
+
tables and measured entities. Save it with `mr-data dataset set DATASET_ID --category CATEGORY_ID`
|
|
523
|
+
and verify `category_id` in `dataset show`. Put this dataset’s stable ID in
|
|
524
|
+
`dataset.id` in the recipe file (the HTTP command wraps it under `document`) when registering; enforced builds cannot bind by name alone. The updated recipe client requests server enforcement
|
|
525
|
+
of this saved category; it never guesses from tags. Draft pages may remain unassigned during research.
|
|
526
|
+
|
|
527
|
+
The allowed IDs and labels are:
|
|
528
|
+
|
|
529
|
+
| ID | Category |
|
|
530
|
+
| --- | --- |
|
|
531
|
+
| `climate-environment` | Climate & Environment |
|
|
532
|
+
| `crypto` | Crypto |
|
|
533
|
+
| `finance` | Finance |
|
|
534
|
+
| `economics-business` | Economics & Business |
|
|
535
|
+
| `government-politics` | Government & Politics |
|
|
536
|
+
| `people-society` | People & Society |
|
|
537
|
+
| `health-medicine` | Health & Medicine |
|
|
538
|
+
| `science-research` | Science & Research |
|
|
539
|
+
| `technology` | Technology |
|
|
540
|
+
| `energy` | Energy |
|
|
541
|
+
| `agriculture-food` | Agriculture & Food |
|
|
542
|
+
| `transport-mobility` | Transport & Mobility |
|
|
543
|
+
| `places-infrastructure` | Places & Infrastructure |
|
|
544
|
+
| `education` | Education |
|
|
545
|
+
| `sports` | Sports |
|
|
546
|
+
| `arts-media-entertainment` | Arts, Media & Entertainment |
|
|
547
|
+
| `law-public-safety` | Law & Public Safety |
|
|
548
|
+
| `other` | Other |
|
|
549
|
+
|
|
550
|
+
Classify the main subject, not the source, cadence, file format or secondary variables. Bitcoin
|
|
551
|
+
price markets are Crypto; airport weather observations are Climate & Environment; crop yields
|
|
552
|
+
with weather covariates are Agriculture & Food; Steam player counts are Arts, Media & Entertainment.
|
|
553
|
+
For mixed datasets, use their principal analytical purpose. If none fits, choose Other and record
|
|
554
|
+
why the listed definitions exclude the subject. Uncertainty alone is not a reason to use Other.
|
|
555
|
+
Preserve the saved category on routine refreshes and recipe revisions. Reconsider it only when
|
|
556
|
+
the dataset's principal subject changes. Never invent, combine or subdivide category IDs.
|
|
557
|
+
|
|
523
558
|
**Topic rules**
|
|
524
|
-
1. 3 to 8
|
|
525
|
-
2.
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
3. Then, in this order, one each where it applies: the city or region, the country, the
|
|
530
|
-
phenomenon or instrument, the publisher or programme. After those, up to three more, each a
|
|
531
|
-
distinct thing a person would type that none of the earlier topics already names.
|
|
532
|
-
4. Form: lowercase; ASCII letters, digits, spaces and hyphens only; one to three words; at most
|
|
533
|
-
40 characters.
|
|
534
|
-
5. Never: a column name, a unit, a bare year, a second word from the category list, a market or
|
|
535
|
-
venue name unless the dataset is about that market.
|
|
559
|
+
1. Write 3 to 8 useful descriptive tags, comma-separated, without duplicates.
|
|
560
|
+
2. Tags are search keywords, not categories. No tag position determines the primary category.
|
|
561
|
+
3. Use relevant subject, place, phenomenon, instrument or programme names.
|
|
562
|
+
4. Use lowercase ASCII letters, digits, spaces and hyphens; at most 40 characters per tag.
|
|
563
|
+
5. Omit column names, units, bare years and redundant terms.
|
|
536
564
|
|
|
537
565
|
**The dataset description is the documentation, and it is read by people and by search engines.**
|
|
538
566
|
`dataset.description` is Markdown, rendered on the dataset page with headings and lists, and it
|
|
@@ -597,9 +625,8 @@ choice. Give `table.description` the grain and the window.
|
|
|
597
625
|
- title: at most 60 characters, contains the place, contains no colon, pipe or exclamation mark,
|
|
598
626
|
no brand, no "dataset" or "data", no version number, no run date
|
|
599
627
|
- opening paragraph: 150 to 240 characters, first full stop before character 200, no Markdown
|
|
600
|
-
-
|
|
601
|
-
|
|
602
|
-
a market or venue name unless the dataset is about that market
|
|
628
|
+
- category: exactly one fixed ID saved and verified before recipe registration
|
|
629
|
+
- topics: 3 to 8 descriptive tags, no duplicates, lowercase, at most 40 characters each
|
|
603
630
|
- licence: an SPDX identifier the sources actually grant, or `--license` left off
|
|
604
631
|
- every `##` heading in DESCRIPTION.md is one of the five, in that relative order, none repeated
|
|
605
632
|
|
|
@@ -1191,14 +1218,16 @@ changelog entry, and the run's own log is already that.
|
|
|
1191
1218
|
|
|
1192
1219
|
**A `clarification` block with a `question` and no `answer` is a PENDING question**, and it is the
|
|
1193
1220
|
one shape here that is a way to ask: the Dataset page shows it, and the chat asks it in the same
|
|
1194
|
-
words. Write one
|
|
1221
|
+
words. Write one for each question [Dataset discovery](#dataset-discovery) has you ask — a
|
|
1222
|
+
dataset-shaping choice the evidence cannot settle. The answer is a REVISION of that
|
|
1195
1223
|
cell — `--revise CELL_ID`, the same blocks again with `answer` and `answered_at` filled in — so the
|
|
1196
1224
|
page shows the question settled rather than a second cell nothing ties to the first. `answered_at`
|
|
1197
1225
|
is admitted only beside `answer`, because a time with no answer records that the question was
|
|
1198
1226
|
settled by nobody, and is a UTC timestamp ending in `Z`, as `2026-09-01T10:00:00Z`. Everything
|
|
1199
|
-
under [Autonomous delivery](#autonomous-delivery) still holds — do not put a
|
|
1200
|
-
|
|
1201
|
-
anywhere else.
|
|
1227
|
+
under [Autonomous delivery](#autonomous-delivery) still holds — do not put a Reader, engine,
|
|
1228
|
+
parsing format, workspace, retry tactic or semantics-preserving repair to the user, in a block or
|
|
1229
|
+
anywhere else. Source preferences and cleaning choices that change the meaning are the user's,
|
|
1230
|
+
and go in a block.
|
|
1202
1231
|
|
|
1203
1232
|
`--phase` binds the cell to one build stage — `acquire`, `parse`, `transform`, `check`, `persist` —
|
|
1204
1233
|
so a reader can group a run's record by stage. `--checkpoint` places the cell beside the event it
|
|
@@ -1444,41 +1473,79 @@ each table rather than what the exit code said about the set. A table that is li
|
|
|
1444
1473
|
`archive` until it is withdrawn, and a table a run is still writing to is refused by both until the
|
|
1445
1474
|
run has finished; neither refusal deletes anything, and neither ends the command.
|
|
1446
1475
|
|
|
1476
|
+
## Dataset discovery
|
|
1477
|
+
|
|
1478
|
+
Make the user a participant in shaping the first dataset. Before registering a recipe, review the
|
|
1479
|
+
request and prior answers for choices whose alternatives would materially change the result. Lead
|
|
1480
|
+
with the unresolved choices most likely to make the first dataset wrong. The agent chooses the
|
|
1481
|
+
questions and follow-ups; this is a decision guide, not a form to recite:
|
|
1482
|
+
|
|
1483
|
+
- **Purpose:** What analysis, decision, or downstream use should the dataset support? Ask when it
|
|
1484
|
+
helps choose between plausible definitions or shapes, not for background already supplied.
|
|
1485
|
+
- **Table structure and joins:** One joined table, separate related tables, or both? If joining,
|
|
1486
|
+
what should match, and should unmatched records remain? Explain when a join could duplicate rows
|
|
1487
|
+
or lose records; do not require the user to write SQL or select a join algorithm.
|
|
1488
|
+
- **Granularity:** What does one row represent — an event, a company, a station-hour, a country-year?
|
|
1489
|
+
Resolve raw observations versus aggregates, time frequency, and geographic detail where relevant.
|
|
1490
|
+
- **Sources:** Are particular publishers, uploaded files, or sources required or excluded, or should
|
|
1491
|
+
the agent recommend them? Research concrete source options yourself. Ask about consequential choices
|
|
1492
|
+
such as official but delayed data versus broader recent coverage, or a source requiring access.
|
|
1493
|
+
- **Coverage:** Which entities, geography, date range, and inclusion/exclusion rules matter? For
|
|
1494
|
+
changing data, distinguish a fixed historical snapshot from continuing updates.
|
|
1495
|
+
- **Fields and definitions:** Which measures and identifiers are essential? Resolve ambiguous
|
|
1496
|
+
metrics, units, currencies, time zones, or adjusted versus raw values when they affect the use.
|
|
1497
|
+
- **Quality and tradeoffs:** Is incomplete coverage acceptable? Ask before dropping unmatched rows,
|
|
1498
|
+
filling missing values, estimating data, or substituting a proxy when that changes the meaning.
|
|
1499
|
+
- **Delivery constraints:** Ask about freshness, destination, format, or scale/budget only when
|
|
1500
|
+
relevant and not already specified. Existing spend and cadence decisions still apply.
|
|
1501
|
+
|
|
1502
|
+
For every discovery question, including the initial questions before probing, check attendance with
|
|
1503
|
+
`mr-data clarify --attended --question TEXT` when a person is in chat. Record a pending
|
|
1504
|
+
`clarification` block on the dataset and ask the same wording in chat. Record the answer by revising
|
|
1505
|
+
that same cell, as in stage 3; a plain narrative note alone does not mark a question as pending.
|
|
1506
|
+
The command checks whether asking is allowed; the host conversation asks and waits for the answer.
|
|
1507
|
+
|
|
1508
|
+
Usually ask one to three related questions per turn, with short bold labels such as **Table shape**,
|
|
1509
|
+
**Sources**, and **Granularity**. Use plain language and domain-specific examples. Offer a recommended
|
|
1510
|
+
option and explain its consequence when evidence supports it; allow a free-text answer or "you
|
|
1511
|
+
choose." Do not overwhelm the user with the entire list, repeatedly ask answered questions, or ask
|
|
1512
|
+
about facts you can determine from source inspection. There is no total question quota: follow up
|
|
1513
|
+
when an answer or source finding exposes another consequential decision.
|
|
1514
|
+
|
|
1515
|
+
Wait for answers to the questions you ask before committing dependent work. Continue independent
|
|
1516
|
+
research where useful, but do not register or run the first recipe with unanswered material
|
|
1517
|
+
questions. An elapsed wait is not permission to assume an answer. If the request is already specific
|
|
1518
|
+
enough, summarize its shape and proceed. If the user explicitly delegates choices or asks for no
|
|
1519
|
+
questions, use evidence-backed defaults and state them without forcing another confirmation.
|
|
1520
|
+
|
|
1521
|
+
Before the first build, give a compact recap of purpose, table shape, row grain, sources, coverage,
|
|
1522
|
+
and important fields or limitations. Highlight unresolved decisions as questions; otherwise proceed
|
|
1523
|
+
on the answers already given. During verification compare the sample with this agreed shape, not
|
|
1524
|
+
just whether the run succeeded. If research or the sample requires a material semantic change,
|
|
1525
|
+
return to the user with concrete alternatives before building a revised recipe; use the existing
|
|
1526
|
+
contract revision/approval path once a recipe has been registered.
|
|
1527
|
+
|
|
1447
1528
|
## Autonomous delivery
|
|
1448
1529
|
|
|
1449
1530
|
Own the run until the requested outcome is delivered: a run that succeeded, its declared checks
|
|
1450
|
-
read, its coverage inspected, and its refresh cadence recorded
|
|
1451
|
-
be. What is live is what Studio returns as live; catch-up and
|
|
1452
|
-
durable evidence from the deployed component that owns them.
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
**The decision point replaces the one-question rule.** There used to be a budget of exactly one
|
|
1460
|
-
clarifying question, and it was the wrong instrument: it made the agent hoard its one question
|
|
1461
|
-
against a fork that might arrive later, and it left the user with no view of the search at all
|
|
1462
|
-
until the page was finished. What stage 3 asks for instead is a STATEMENT — sources chosen, sources
|
|
1463
|
-
rejected or blocked with the concrete unblock step, the assumption taken about window and grain —
|
|
1464
|
-
posted to the dataset's record and to the chat, after which the build continues without waiting.
|
|
1465
|
-
A person who disagrees with it says so; a person who does not is not made to answer anything.
|
|
1466
|
-
|
|
1467
|
-
A question is still asked, and it is asked at a genuine FORK: two answers that produce two
|
|
1468
|
-
different tables, and no evidence that can settle it. `Throughput: movements or passengers?` is
|
|
1469
|
-
such a fork. Which Reader parses the feed is not, and neither is anything else named above; those
|
|
1470
|
-
stay banned because the evidence settles them. There is no budget of one — a build with two real
|
|
1471
|
-
forks asks about both — but a fork is rare, and a question that the evidence could have answered is
|
|
1472
|
-
still the failure this section is about. Ask before registering, while nothing is running and
|
|
1473
|
-
nothing has been spent, write it as a pending `clarification` block on the dataset, and carry the
|
|
1474
|
-
answer back as a revision of that cell.
|
|
1531
|
+
read, its coverage inspected against the agreed dataset shape, and its refresh cadence recorded
|
|
1532
|
+
when the user has said what it should be. What is live is what Studio returns as live; catch-up and
|
|
1533
|
+
continuing freshness require separate durable evidence from the deployed component that owns them.
|
|
1534
|
+
Dataset discovery questions, material semantic revisions, cadence decisions, full runs after a
|
|
1535
|
+
TRUNCATED sample, and spend confirmations are valid user pauses. Own the operational choices:
|
|
1536
|
+
Readers, engines, parsing formats, workspace plumbing, retry tactics, and repairs that preserve the
|
|
1537
|
+
agreed semantics. Source preferences and cleaning choices that change the meaning belong in the
|
|
1538
|
+
user conversation, even when the agent could technically choose for them.
|
|
1475
1539
|
|
|
1476
1540
|
`mr-data clarify --question TEXT` says whether to ask at all. It exits non-zero when no person can
|
|
1477
1541
|
answer, which is what a scheduled or headless session reports, and when `--recipe RECIPE_ID` names
|
|
1478
1542
|
a registered recipe, because the answer to a question asked after the contract is a revision and
|
|
1479
|
-
goes through the contract approval instead.
|
|
1480
|
-
evidence
|
|
1481
|
-
report.
|
|
1543
|
+
goes through the contract approval instead. When no person can answer, do not wait: use the
|
|
1544
|
+
existing brief and evidence to make choices within the requested scope, record assumptions, and
|
|
1545
|
+
report limitations. Do not silently replace explicit requirements. When the recipe is already
|
|
1546
|
+
registered, use the revision/approval path for material changes rather than treating the refusal
|
|
1547
|
+
as permission to choose new semantics. Other command failures are not evidence that the user is
|
|
1548
|
+
unavailable. `mr-data clarify --question TEXT --answer TEXT` composes the exchange as one `clarification`
|
|
1482
1549
|
block. Carry its wording into the recipe document the answer settles — the question text, the table
|
|
1483
1550
|
description, the column description — so the assumption the table rests on reads the same in the
|
|
1484
1551
|
document, in the Dataset, and in the report.
|
|
@@ -1596,11 +1663,34 @@ Write it as a source whose connector is that coordinate plus a `collection` memb
|
|
|
1596
1663
|
merged relation.
|
|
1597
1664
|
- The Reader pin is required, must be `html.web_extract`, and is the SAME settings for every page.
|
|
1598
1665
|
|
|
1666
|
+
**`limits.max_requests` is charged per HTTP request, redirect hops and retries included** — a page
|
|
1667
|
+
that redirects once costs two. Registration only checks that
|
|
1668
|
+
`discovery.max_requests + pages.max_fetches_per_run` fits inside it, which is necessary and NOT
|
|
1669
|
+
sufficient: a budget written to exactly that sum runs out early on any publisher that redirects,
|
|
1670
|
+
and the run stops with `budget_exhausted: "max_requests"` short of the pages it was allowed. Where
|
|
1671
|
+
redirects are likely — trailing slashes, `http`→`https`, `www`, which is most publishers — write
|
|
1672
|
+
`limits.max_requests >= discovery.max_requests + 2 * max_fetches_per_run`. A budget larger than the
|
|
1673
|
+
corpus can absorb costs nothing.
|
|
1674
|
+
|
|
1599
1675
|
The relation the transform reads is the reader's columns plus `page_id`, `page_url`,
|
|
1600
1676
|
`page_fetched_at`, `page_content_sha256`, `page_revision`, `page_discovered_at` and `page_ordinal`.
|
|
1601
1677
|
Those names are reserved: a reader that declares one is a registration refusal. Select them in the
|
|
1602
1678
|
transform so every row on the table says which page and which revision produced it.
|
|
1603
1679
|
|
|
1680
|
+
**All seven arrive as text and must be CAST.** The merged relation is sealed as CSV, so every
|
|
1681
|
+
column reaches the transform as `VARCHAR`; selecting `page_ordinal` bare while declaring the column
|
|
1682
|
+
`integer` fails the build with `TRANSFORM_COLUMN_TYPE_MISMATCH`. Write
|
|
1683
|
+
`cast(page_ordinal as integer)`, `cast(page_revision as integer)` and
|
|
1684
|
+
`cast(page_fetched_at as timestamp with time zone)` — a declared `timestamp` column admits
|
|
1685
|
+
`TIMESTAMP WITH TIME ZONE` and nothing else.
|
|
1686
|
+
|
|
1687
|
+
**A listing that could not be read says so.** The coverage block carries `discovery_failure`:
|
|
1688
|
+
`null`, or the code and one sentence for the first listing request the run was refused. A refresh
|
|
1689
|
+
that already holds pages keeps every row and succeeds; a FIRST run whose listing is refused has
|
|
1690
|
+
nothing to continue from and fails with `COLLECTION_DISCOVERY_FAILED` rather than sealing an empty
|
|
1691
|
+
corpus. If a run reports zero discovered, read that member before concluding the publisher's index
|
|
1692
|
+
is empty.
|
|
1693
|
+
|
|
1604
1694
|
**Expect the first run not to finish, and say so.** A run that spends its fetch budget still
|
|
1605
1695
|
SUCCEEDS; its coverage block reports `complete: false` and names the budget that ended it. The
|
|
1606
1696
|
next refresh continues from the ledger — new pages first, then failures oldest first, then
|
|
@@ -10,7 +10,7 @@ from collections.abc import Callable, Iterator
|
|
|
10
10
|
from concurrent.futures import ThreadPoolExecutor
|
|
11
11
|
from contextlib import contextmanager
|
|
12
12
|
from contextvars import ContextVar
|
|
13
|
-
from dataclasses import dataclass
|
|
13
|
+
from dataclasses import dataclass, replace
|
|
14
14
|
from urllib.parse import urlsplit
|
|
15
15
|
|
|
16
16
|
from mostlyright.data_harness.acquisition.http import (
|
|
@@ -271,6 +271,7 @@ def _public_https_retriever(
|
|
|
271
271
|
transport: StdlibPinnedTransport | None = None,
|
|
272
272
|
connect_proxy: ConnectProxyMember | None = None,
|
|
273
273
|
connect_proxy_config_digest: str | None = None,
|
|
274
|
+
allowed_media_types: tuple[str, ...] | None = None,
|
|
274
275
|
) -> PinnedHttpsRetriever:
|
|
275
276
|
"""The one reviewed public-HTTPS retriever construction.
|
|
276
277
|
|
|
@@ -279,6 +280,13 @@ def _public_https_retriever(
|
|
|
279
280
|
limiter -- and differ only in the three explicit caps a caller names: the byte ceiling
|
|
280
281
|
and the two stall timeouts. Stated once so the ranged path cannot drift into a second,
|
|
281
282
|
subtly different transport policy.
|
|
283
|
+
|
|
284
|
+
``allowed_media_types`` NARROWS THAT ONE TERM AND NOTHING ELSE, for a caller whose response
|
|
285
|
+
is not the one the query's own pin describes. A page collection's LISTING request is the
|
|
286
|
+
case: the source is pinned to an HTML Reader because its detail pages are HTML, and the index
|
|
287
|
+
that names those pages is JSON or a sitemap, read inertly by the driver and handed to no
|
|
288
|
+
Reader at all. Every other term above is the reviewed one, so what the narrowing changes is
|
|
289
|
+
which representations the origin may answer with and not how the request is made.
|
|
282
290
|
"""
|
|
283
291
|
|
|
284
292
|
return PinnedHttpsRetriever(
|
|
@@ -288,17 +296,24 @@ def _public_https_retriever(
|
|
|
288
296
|
allowed_ports=frozenset({443}),
|
|
289
297
|
),
|
|
290
298
|
transport=transport or StdlibPinnedTransport(),
|
|
291
|
-
limits=
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
299
|
+
limits=replace(
|
|
300
|
+
RetrievalLimits(
|
|
301
|
+
max_response_bytes=max_response_bytes,
|
|
302
|
+
max_redirects=3,
|
|
303
|
+
max_requests=4,
|
|
304
|
+
connect_timeout_seconds=5.0,
|
|
305
|
+
read_timeout_seconds=read_timeout_seconds,
|
|
306
|
+
total_timeout_seconds=total_timeout_seconds,
|
|
307
|
+
max_concurrency=PUBLIC_HTTPS_MAX_CONCURRENCY,
|
|
308
|
+
min_interval_seconds=1.0,
|
|
309
|
+
allowed_media_types=_public_expected_media_types(request.query),
|
|
310
|
+
user_agent=PUBLIC_HTTPS_USER_AGENT,
|
|
311
|
+
),
|
|
312
|
+
**(
|
|
313
|
+
{}
|
|
314
|
+
if allowed_media_types is None
|
|
315
|
+
else {"allowed_media_types": tuple(allowed_media_types)}
|
|
316
|
+
),
|
|
302
317
|
),
|
|
303
318
|
limiter=_PUBLIC_HTTPS_LIMITER,
|
|
304
319
|
connect_proxy=connect_proxy,
|
|
@@ -407,12 +422,16 @@ def fetch_crawler_source(
|
|
|
407
422
|
*,
|
|
408
423
|
expected_egress_policy_attestation: str,
|
|
409
424
|
retriever: PinnedHttpsRetriever | None = None,
|
|
425
|
+
allowed_media_types: tuple[str, ...] | None = None,
|
|
410
426
|
) -> RetrievedBytes:
|
|
411
427
|
"""Fetch one exact reviewed URL for the crawler child to normalize.
|
|
412
428
|
|
|
413
429
|
The retrieved bytes are framed by encode_normalization_input and handed to the
|
|
414
430
|
mr-data-crawler child, which hosted_crawler_job spawns under a seccomp filter that
|
|
415
431
|
denies socket and connect. That child is not acquisition.sandbox.CrawlerSandbox.
|
|
432
|
+
|
|
433
|
+
``allowed_media_types`` is the caller's own narrowing of the one term
|
|
434
|
+
:func:`_public_https_retriever` documents it for, and reaches only the public HTTPS route.
|
|
416
435
|
"""
|
|
417
436
|
|
|
418
437
|
coordinate = validate_crawler_request(
|
|
@@ -427,6 +446,7 @@ def fetch_crawler_source(
|
|
|
427
446
|
requested_url=requested_url,
|
|
428
447
|
hostname=hostname,
|
|
429
448
|
injected_retriever=retriever,
|
|
449
|
+
allowed_media_types=allowed_media_types,
|
|
430
450
|
)
|
|
431
451
|
if (
|
|
432
452
|
retrieved.source_url != requested_url
|
|
@@ -502,6 +522,7 @@ def _retrieve_public_https(
|
|
|
502
522
|
requested_url: str,
|
|
503
523
|
hostname: str,
|
|
504
524
|
injected_retriever: PinnedHttpsRetriever | None,
|
|
525
|
+
allowed_media_types: tuple[str, ...] | None = None,
|
|
505
526
|
) -> RetrievedBytes:
|
|
506
527
|
"""Retrieve one public HTTPS source, ranged when the origin supports it and size warrants.
|
|
507
528
|
|
|
@@ -536,6 +557,7 @@ def _retrieve_public_https(
|
|
|
536
557
|
transport=transport,
|
|
537
558
|
connect_proxy=proxy_member,
|
|
538
559
|
connect_proxy_config_digest=proxy_digest,
|
|
560
|
+
allowed_media_types=allowed_media_types,
|
|
539
561
|
)
|
|
540
562
|
|
|
541
563
|
def single_shot(probe_hops: tuple[RetrievalHop, ...]) -> RetrievedBytes:
|
|
@@ -548,6 +570,7 @@ def _retrieve_public_https(
|
|
|
548
570
|
transport=transport,
|
|
549
571
|
connect_proxy=proxy_member,
|
|
550
572
|
connect_proxy_config_digest=proxy_digest,
|
|
573
|
+
allowed_media_types=allowed_media_types,
|
|
551
574
|
)
|
|
552
575
|
return _seal_probe_evidence(probe_hops, retriever.retrieve(requested_url))
|
|
553
576
|
|