mostlyright-data 0.10.3__tar.gz → 0.10.5__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.10.3 → mostlyright_data-0.10.5}/PKG-INFO +1 -1
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/pyproject.toml +1 -1
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/skills/mr-data-build/SKILL.md +142 -11
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/cli.py +6 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/hosted_run_worker.py +149 -27
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/run_execution_v4.py +415 -28
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/stream.py +15 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/stream_capture_session.py +28 -6
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/stream_connector.py +312 -36
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/stream_recorder.py +91 -21
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/stream_segment_recorder.py +5 -2
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/stream_subscription_feed.py +6 -3
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/studio_boundary.py +1 -1
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/thin/router.py +20 -1
- mostlyright_data-0.10.5/src/mostlyright/data_harness/thin/stream_venue.py +978 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/thin/v4.py +88 -9
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/thin/v4_secrets.py +200 -9
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/thin/vocabulary.py +12 -0
- mostlyright_data-0.10.5/src/mostlyright/data_harness/ux/attendance.py +206 -0
- mostlyright_data-0.10.5/src/mostlyright/data_harness/ux/clarification.py +358 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/commands/__init__.py +5 -0
- mostlyright_data-0.10.5/src/mostlyright/data_harness/ux/commands/clarify.py +183 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/commands/record.py +15 -6
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/headline.py +1 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/remediation.py +18 -1
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/render.py +54 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/v4_acquisition.py +61 -4
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/v4_required_controls.py +88 -24
- mostlyright_data-0.10.5/src/mostlyright/data_harness/v4_stream_recording.py +375 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/.gitignore +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/README.md +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/scripts/hatch_build.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/skills/mr-data-build/agents/openai.yaml +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/skills/mr-data-build/scripts/write_research_notebook.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/skills/mr-data-build/scripts/write_visual_run.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/_vendor/__init__.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/_vendor/rapidocr/LICENSE +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/_vendor/rapidocr/PROVENANCE.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/_vendor/rapidocr/__init__.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/_vendor/rapidocr/__init__.pyi +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/_vendor/rapidocr/_version.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/_vendor/rapidocr/cal_rec_boxes/__init__.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/_vendor/rapidocr/cal_rec_boxes/main.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/_vendor/rapidocr/ch_ppocr_cls/__init__.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/_vendor/rapidocr/ch_ppocr_cls/main.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/_vendor/rapidocr/ch_ppocr_cls/utils.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/_vendor/rapidocr/ch_ppocr_det/__init__.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/_vendor/rapidocr/ch_ppocr_det/main.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/_vendor/rapidocr/ch_ppocr_det/utils.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/_vendor/rapidocr/ch_ppocr_rec/__init__.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/_vendor/rapidocr/ch_ppocr_rec/main.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/_vendor/rapidocr/ch_ppocr_rec/typings.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/_vendor/rapidocr/ch_ppocr_rec/utils.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/_vendor/rapidocr/config.yaml +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/_vendor/rapidocr/inference_engine/__init__.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/_vendor/rapidocr/inference_engine/base.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/_vendor/rapidocr/inference_engine/onnxruntime/__init__.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/_vendor/rapidocr/inference_engine/onnxruntime/main.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/_vendor/rapidocr/inference_engine/onnxruntime/provider_config.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/_vendor/rapidocr/main.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/_vendor/rapidocr/models/PP-OCRv6_det_small.onnx +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/_vendor/rapidocr/models/PP-OCRv6_rec_small.onnx +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/_vendor/rapidocr/models/ch_ppocr_mobile_v2.0_cls_mobile.onnx +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/_vendor/rapidocr/py.typed +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/_vendor/rapidocr/utils/__init__.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/_vendor/rapidocr/utils/load_image.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/_vendor/rapidocr/utils/log.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/_vendor/rapidocr/utils/model_resolver.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/_vendor/rapidocr/utils/output.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/_vendor/rapidocr/utils/parse_parameters.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/_vendor/rapidocr/utils/process_img.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/_vendor/rapidocr/utils/typings.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/_vendor/rapidocr/utils/utils.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/__init__.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/acquisition/__init__.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/acquisition/http.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/acquisition/parsing.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/acquisition/ranges.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/acquisition/result_download.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/acquisition/retention_admission.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/acquisition/sandbox.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/acquisition/url_policy.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/agent_runtime.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/assets/logo-ink.svg +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/backends/__init__.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/backends/pandas_backend.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/backends/polars_backend.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/backends/protocol.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/backends/reference.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/backends/registry.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/backends/restrictions.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/bounded_query.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/canonical.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/catalog_job.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/contracts.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/coordinator.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/crosswalks.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/declared_checks.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/deploy.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/deploy_target.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/deployment_evidence.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/documents/__init__.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/documents/_worker_capability.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/documents/agent_request.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/documents/capture.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/documents/contracts.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/documents/lane.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/documents/ocr.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/documents/pdf.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/documents/registry.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/documents/sandbox.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/documents/selections.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/documents/tables.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/documents/vendor_rapidocr.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/events.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/fast_delimited.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/formats.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/governors.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/hosted_bootstrap.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/hosted_crawler.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/hosted_crawler_container_smoke.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/hosted_crawler_fetch.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/hosted_crawler_job.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/hosted_crawler_protocol.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/hosted_dataset.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/hosted_deploy.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/hosted_handoff.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/hosted_ingestion_contract.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/hosted_ingestion_job.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/hosted_ingestion_job_smoke.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/hosted_rlimit_as_container_smoke.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/hosted_session_container_smoke.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/hosted_session_worker.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/hosted_session_worker_job_smoke.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/hosted_stream_recorder_container_smoke.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/hosted_stream_recorder_job.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/hosted_stream_subscription_container_smoke.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/hosted_stream_subscription_worker.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/hosted_worker.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ingestion/__init__.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ingestion/contracts.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ingestion/faults.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ingestion/gcs_store.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ingestion/spool.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ingestion/store.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/inprocess_acquisition.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/key_seam.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/linux_process_boundary.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/local_contracts.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/local_search/__init__.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/local_search/build_index.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/local_search/contracts.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/local_search/query_trace.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/local_search/retrieval.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/local_search/sealed.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/local_search/service.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/nbrender/CONTRACT.md +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/nbrender/__init__.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/nbrender/chrome.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/nbrender/code_body.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/nbrender/document.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/nbrender/frame.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/nbrender/interactive.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/nbrender/markdown_body.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/nbrender/mr_components.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/nbrender/outputs_data.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/nbrender/outputs_rich.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/nbrender/outputs_source.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/nbrender/outputs_stage.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/nbrender/outputs_text.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/nbrender/parse.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/nbrender/status.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/nbrender/tokens.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/notebook.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/offline.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/operation_registry.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/operator_setup.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/pipeline.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/plan_graph.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/preparation/__init__.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/preparation/contracts.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/preparation/engine.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/preparation/errors.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/preparation/gates.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/preparation/joins.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/preparation/profile.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/preparation/table.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/preparation/transforms.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/progress_events.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/__init__.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/_openpyxl.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/budgets.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/containers.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/contracts.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/delimited.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/geojson_vector.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/geopackage.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/geoparquet.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/grib2/__init__.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/grib2/admission.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/grib2/collection.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/grib2/collection_reader.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/grib2/decode.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/grib2/geometry.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/grib2/portable_math.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/grib_eccodes.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/html_tabular.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/html_web_extract.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/json_tabular.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/parquet_tabular.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/pcaxis_px.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/protobuf_tabular.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/raster/__init__.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/raster/_bytes.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/raster/decode.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/raster/family.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/raster/jpeg2000.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/raster/profiles.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/raster/rendered.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/raster/safe.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/raster/sentinel_safe.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/raster/tiff.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/registry.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/README.md +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/archive.gzip/1.0.0/cities_one_stream/cities.csv.gz +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/archive.gzip/1.0.0/cities_one_stream/expected.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/archive.gzip/1.1.0/cities_one_stream/cities.csv.gz +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/archive.gzip/1.1.0/cities_one_stream/expected.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/archive.tar/1.0.0/cities_beside_a_directory_entry/cities.tar +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/archive.tar/1.0.0/cities_beside_a_directory_entry/expected.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/archive.tar/1.1.0/cities_beside_a_directory_entry/cities.tar +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/archive.tar/1.1.0/cities_beside_a_directory_entry/expected.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/archive.zip/1.0.0/cities_beside_a_second_member/cities.zip +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/archive.zip/1.0.0/cities_beside_a_second_member/expected.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/archive.zip/1.1.0/dwd_semicolon_station_member/dwd-station.zip +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/archive.zip/1.1.0/dwd_semicolon_station_member/expected.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/archive.zip/1.2.0/dwd_semicolon_station_member/dwd-station.zip +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/archive.zip/1.2.0/dwd_semicolon_station_member/expected.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/delimited_text/1.0.0/an_ordinary_comma_separated_table/cities.csv +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/delimited_text/1.0.0/an_ordinary_comma_separated_table/expected.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/delimited_text/1.0.0/quoted_fields_holding_the_delimiter/cities.tsv +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/delimited_text/1.0.0/quoted_fields_holding_the_delimiter/expected.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/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.10.3 → mostlyright_data-0.10.5}/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.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/geojson.vector/1.0.0/czech_capital/expected.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/geojson.vector/1.0.0/czech_capital/places.geojson +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/geopackage.vector/1.0.0/epsg_4326_feature/expected.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/geopackage.vector/1.0.0/epsg_4326_feature/places.gpkg +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/geoparquet.vector/1.0.0/primary_wkb_point/expected.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/geoparquet.vector/1.0.0/primary_wkb_point/places.parquet +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/html.tabular/1.0.0/sanitized_table/expected.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/html.tabular/1.0.0/sanitized_table/table.html +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/html.web_extract/1.0.0/json_ld_scorecards/expected.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/html.web_extract/1.0.0/json_ld_scorecards/scorecards.html +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/image.rendered/1.0.0/tiny_png/expected.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/image.rendered/1.0.0/tiny_png/tiny-rendered.png +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/json.tabular/1.0.0/nested_hourly_observations/expected.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/json.tabular/1.0.0/nested_hourly_observations/stations.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/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.10.3 → mostlyright_data-0.10.5}/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.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/meteorology.bufr/1.0.0/eccodes_bufr4_subset/eccodes-bufr4.bufr +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/meteorology.bufr/1.0.0/eccodes_bufr4_subset/expected.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/meteorology.grib/1.0.0/eccodes_grib1_origin/expected.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/meteorology.grib/1.0.0/eccodes_grib1_origin/regular-ll-surface.grib1 +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/microdata.sas_xpt/1.0.0/two_raw_columns/expected.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/microdata.sas_xpt/1.0.0/two_raw_columns/survey.xpt +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/microdata.spss_sav/1.0.0/two_raw_columns/expected.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/microdata.spss_sav/1.0.0/two_raw_columns/survey.sav +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/microdata.stata_dta/1.0.0/two_raw_columns/expected.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/microdata.stata_dta/1.0.0/two_raw_columns/stata.dta +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/official.pcaxis_px/1.0.0/population_by_region_and_year/expected.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/official.pcaxis_px/1.0.0/population_by_region_and_year/population.px +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/official.sdmx_json/1.0.0/compact_population_series/expected.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/official.sdmx_json/1.0.0/compact_population_series/population.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/parquet.tabular/1.0.0/two_columns/expected.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/parquet.tabular/1.0.0/two_columns/prices.parquet +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/protobuf.tabular/1.0.0/gtfs_realtime_trip_updates/expected.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/protobuf.tabular/1.0.0/gtfs_realtime_trip_updates/gtfs-realtime.desc +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/protobuf.tabular/1.0.0/gtfs_realtime_trip_updates/trip-updates.pb +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/raster.geospatial/1.0.0/tiny_geotiff/expected.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/raster.geospatial/1.0.0/tiny_geotiff/tiny-geospatial.tif +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/satellite.goes_abi_l2/1.0.0/authored_cmi_window/expected.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/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.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/satellite.himawari_hsd/1.0.0/authored_b13_single_bzip2/expected.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/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.10.3 → mostlyright_data-0.10.5}/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.10.3 → mostlyright_data-0.10.5}/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.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/satellite.msg_seviri_l15/1.0.0/authored_calibrated_complete_visir/expected.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/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.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/satellite.sentinel_safe/1.0.0/authored_b02_scl_window/expected.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/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.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/satellite.xrit_image/1.0.0/authored_complete_raw_counts/expected.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/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.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/scientific.fits/1.0.0/tiny_primary_window/expected.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/scientific.fits/1.0.0/tiny_primary_window/tiny-primary.fits +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/scientific.hdf4/1.0.0/authored_temperature_window/expected.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/scientific.hdf4/1.0.0/authored_temperature_window/temperature.hdf +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/scientific.hdf5/1.0.0/authored_temperature_window/expected.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/scientific.hdf5/1.0.0/authored_temperature_window/temperature.h5 +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/scientific.hdf_eos2/1.0.0/authored_grid_temperature_window/expected.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/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.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/scientific.hdf_eos2/1.0.0/authored_swath_temperature_window/expected.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/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.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/scientific.netcdf/1.0.0/authored_classic_temperature_window/expected.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/scientific.netcdf/1.0.0/authored_classic_temperature_window/temperature-classic.nc +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/scientific.zarr/1.0.0/authored_v3_temperature_window/expected.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/scientific.zarr/1.0.0/authored_v3_temperature_window/temperature-zarr-v3.zip +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/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.10.3 → mostlyright_data-0.10.5}/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.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/spreadsheet.xlsx/1.0.0/shares_the_workbook_had_already_computed/expected.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/spreadsheet.xlsx/1.0.0/shares_the_workbook_had_already_computed/shares.xlsx +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/spreadsheet.xlsx/1.1.0/shares_the_workbook_had_already_computed/expected.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/spreadsheet.xlsx/1.1.0/shares_the_workbook_had_already_computed/shares.xlsx +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/README.md +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/gfs_2m_temperature/expected.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/gfs_2m_temperature/gfs-2m-temperature.grib2 +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/hrrr_2m_temperature/expected.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/hrrr_2m_temperature/hrrr-2m-temperature.grib2 +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/hrrr_categorical_rain/expected.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/hrrr_categorical_rain/hrrr-categorical-rain.grib2 +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/weather.grib2/2.0.0/hrrr_2m_temperature/expected.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/weather.grib2/2.0.0/hrrr_2m_temperature/hrrr-2m-temperature.grib2 +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/weather.grib2/3.0.0/gfs_and_hrrr_categorical_rain/expected.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/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.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/xbrl.facts/1.0.0/plain_filing_fact/expected.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/xbrl.facts/1.0.0/plain_filing_fact/filing.xml +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/xbrl.facts/1.0.0/xml_inline_fact/expected.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/xbrl.facts/1.0.0/xml_inline_fact/filing.xhtml +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/xml.tabular/1.0.0/pacer_rss_feed/expected.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/xml.tabular/1.0.0/pacer_rss_feed/feed.xml +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/xml.tabular/1.0.0/sec_form_d_filing/expected.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/xml.tabular/1.0.0/sec_form_d_filing/filing.xml +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/xml.tabular/1.0.0/unified_agenda_extract/agenda.xml +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples/xml.tabular/1.0.0/unified_agenda_extract/expected.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/samples.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/scientific.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/scientific_arrays/__init__.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/scientific_arrays/container.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/scientific_arrays/goes.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/scientific_arrays/hdf4.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/scientific_arrays/hdf4_bridge.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/scientific_arrays/hdf5.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/scientific_arrays/native.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/scientific_arrays/netcdf.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/scientific_arrays/profiles.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/scientific_arrays/raw.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/scientific_arrays/zarr.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/scientific_catalog.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/scientific_segmented/__init__.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/scientific_segmented/asset_sets.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/scientific_segmented/formats.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/scientific_segmented/hsd.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/scientific_segmented/native.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/scientific_segmented/profiles.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/scientific_segmented/reader.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/scientific_segmented/xrit.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/sdmx_json.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/spreadsheet.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/statistical_microdata.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/tabular.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/vector.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/vector_wkb.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/xbrl_facts.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/readers/xml_tabular.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/recipe.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/repair/__init__.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/repair/adapters.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/repair/contracts.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/repair/coordinator.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/repair/errors.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/review.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/rowset.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/session_probes.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/signing.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/skill_assets.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/source_discovery.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/__init__.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/_adapter_steps.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/adapters.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/authenticated_https.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/authenticated_https_v2.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/cadence.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/cadence_emission.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/cadence_history.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/catalog/__init__.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/catalog/admission.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/catalog/authoring.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/catalog/authoring_policy.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/catalog/authoring_shards.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/catalog/bounded_io.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/catalog/channel.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/catalog/channel_client.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/catalog/contracts.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/catalog/coverage.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/catalog/delta.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/catalog/embedding.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/catalog/entry_v2.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/catalog/fill.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/catalog/fill_partitions.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/catalog/fill_staging.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/catalog/gating.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/catalog/generation_receipt.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/catalog/harvest/__init__.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/catalog/harvest/ckan.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/catalog/harvest/datagov_v4.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/catalog/harvest/protocol.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/catalog/harvest/sdmx.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/catalog/harvest/stac.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/catalog/health.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/catalog/hosted_catalog.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/catalog/identity_history.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/catalog/neural.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/catalog/packed_catalog.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/catalog/packed_retrieval.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/catalog/packed_writer.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/catalog/query_trace.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/catalog/recommend.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/catalog/retrieval.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/catalog/retrieval_manifest.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/catalog/rights_decisions.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/catalog/sealed.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/catalog/search.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/catalog/streaming_delta.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/catalog/update.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/collections.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/contracts.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/dataset.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/deletion.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/document_projection.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/fitness.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/governance.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/hosted.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/integration.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/range_reader.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/registry.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/rights_rule.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/source_cadence_vectors.v1.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/sports.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/stream_connectors/fixture.cursor-resume.v3.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-frame-ed25519.v2.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-frame-hmac.v2.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-frame-hmac384.v2.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-frame-hmac512.v2.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-frame.v2.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-header-rsa.v2.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-header.v2.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-permessage-jwt.v2.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-permessage.v2.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-prelude.v2.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-query.v2.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-subprotocol.v2.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-subscribe.v2.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-urlpath.v2.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/stream_connectors/polymarket.clob-market.v1.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/stream_credential.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/stream_prelude.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/stream_registry.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/stream_rotation.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/stream_series.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/stream_signing.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sources/stream_transport.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/sql_transform_engine.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/stream_subscription_sealer.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/stream_subscription_worker.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/stream_venue.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/stream_venue_staging.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/studio_subscription_control.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/thin/__init__.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/thin/acquire.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/thin/acquire_cancel.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/thin/approvals.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/thin/commands.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/thin/download.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/thin/narrative.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/thin/parity.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/thin/probe.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/thin/propose.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/thin/recipe.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/thin/research.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/thin/runs.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/thin/session.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/thin/stream.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/thin/transport.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/thin/v4_artifacts.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/thin/v4_dataset_covers.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/thin/v4_handoff.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/thin/v4_narrative.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/thin/v4_query.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/thin/v4_runs.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/thin/v4_stream.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/thin/v4_tables.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/thin/workers.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ucum/TABLE-PIN.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ucum/ucum-subset.v1.json +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/unit_flow.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/units.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/__init__.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/approve.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/author_yaml.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/cloud_auth.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/commands/approve.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/commands/auth.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/commands/author.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/commands/catalog_author.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/commands/catalog_fill.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/commands/catalog_harvest.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/commands/catalog_publish.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/commands/catalog_search.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/commands/catalog_update.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/commands/deploy.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/commands/deploy_dataset.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/commands/deploy_plan.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/commands/deploy_status.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/commands/diff.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/commands/document.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/commands/index.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/commands/inventory.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/commands/list_builds.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/commands/login.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/commands/peek.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/commands/plan_check.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/commands/preflight.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/commands/review_setup.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/commands/search.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/commands/show.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/commands/whoami.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/credential_native.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/credential_store.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/credentials.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/diffing.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/hosted_acquisition.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/hosted_run_status.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/inventory.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/local_review.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/login.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/path_kind.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/peek.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/plain_file.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/plan_check.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/preflight.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/readers.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/ux/workload.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/v4_check_dialect.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/v4_document_pin.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/v4_reader_pin.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/v4_recipe.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/v4_snapshot_artifact.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/v4_transform.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/visual_run/__init__.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/visual_run/authoring.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/visual_run/contracts.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/visual_run/materialize.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/visual_run/observations.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/visual_run/query.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/visual_run/reducer.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/visual_run/sdk.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/src/mostlyright/data_harness/visual_run/store.py +0 -0
- {mostlyright_data-0.10.3 → mostlyright_data-0.10.5}/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.10.
|
|
3
|
+
Version: 0.10.5
|
|
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/
|
|
@@ -85,7 +85,7 @@ absence as a defect.
|
|
|
85
85
|
|
|
86
86
|
## Commands
|
|
87
87
|
|
|
88
|
-
These twenty-
|
|
88
|
+
These twenty-five are the whole surface, alongside `acquire-slices`, which names a capability
|
|
89
89
|
gap rather than doing anything, and `export-hosted-candidate`, which is a backend operator step.
|
|
90
90
|
|
|
91
91
|
| Command | What it does |
|
|
@@ -93,10 +93,11 @@ gap rather than doing anything, and `export-hosted-candidate`, which is a backen
|
|
|
93
93
|
| `mr-data auth` | Validate the effective device credential with Cloud; manage metadata-only device revocation, remote-first logout, safe rotation, and explicit recovery; explain the ephemeral token boundary. |
|
|
94
94
|
| `mr-data login` | Complete device approval and store a device credential. `login --force` is the compatibility alias for safe `auth rotate`, never an in-place truncate. |
|
|
95
95
|
| `mr-data whoami` | Use the compatibility alias for the remotely validated `auth status` answer. |
|
|
96
|
+
| `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. |
|
|
96
97
|
| `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. |
|
|
97
98
|
| `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. |
|
|
98
99
|
| `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. |
|
|
99
|
-
| `mr-data run` | Start one run against a registered recipe. The command accepts `--sample`, `--full`, `--refresh`, `--backfill` and `--window`,
|
|
100
|
+
| `mr-data run` | Start one run against a registered recipe. The command accepts `--sample`, `--full`, `--refresh`, `--backfill` and `--window`, and the worker executes `--sample`, `--full` and `--refresh` (a refresh re-acquires the declared addresses over the previous version and claims no window); `--backfill` and a `--window` on a sample or full are refused before acquisition. `--max-rows` and `--max-source-bytes` remain supported. 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. |
|
|
100
101
|
| `mr-data status` | Report which of the seven states one run is in, what it delivered and whether a ceiling cut it short, and — on a failure — what failed and where. Exits non-zero on a failed run. |
|
|
101
102
|
| `mr-data runs` | Report this workspace's own runs: identifier, mode, state and creation time, plus the failure triple of any that failed. `--status` and `--mode` narrow it and are refused for a word outside the seven or the four; `--limit` says how many, and pages are followed to reach it. |
|
|
102
103
|
| `mr-data watch` | Stream one run's live progress under the durable event type of each stage, resuming across stream cuts. Exits non-zero when the run failed. |
|
|
@@ -108,16 +109,18 @@ gap rather than doing anything, and `export-hosted-candidate`, which is a backen
|
|
|
108
109
|
| `mr-data download` | Bring one run's artifacts back to this computer, each one's bytes checked against the digest Studio sealed them under. `--kind` selects out of `table_parquet`, `column_profile`, `preview`, `receipt` and `raw_snapshot`; without it, the table and the receipt. |
|
|
109
110
|
| `mr-data diff` | Compare two runs and say what changed. |
|
|
110
111
|
| `mr-data keys` | Enrol a source credential by name, list the names with their created and rotated times, and delete one. `keys set` reads the value from a file or from standard input and never from the command line; no command prints a value back. |
|
|
112
|
+
| `mr-data stream` | Record a public `wss://` venue so a build can read it. `stream document register --file F` admits the connector document, `stream registry create --digest D` admits a set of them, `stream probe` listens briefly and seals nothing, `stream capture --seconds N` records a bounded window, `stream subscribe` keeps recording, `stream subscription {show|pause|resume|stop} ID` moves one, `stream status ID` reads a capture or a probe, and `stream recordings --document-digest D` names what a build could read and until when. `--seconds` is at most 600. `mr-data run` takes no duration: a build reads sealed batches and is bounded by them. |
|
|
111
113
|
| `mr-data open` | Mint a single-use, short-lived address that continues this session in a browser at one dashboard path, and print it. `--open` hands it to the platform opener. A handoff is minted only for a personal access token; a device credential is refused with `THIN_STUDIO_HANDOFF_REQUIRES_PERSONAL_ACCESS_TOKEN`, so give the user the plain dashboard address instead. |
|
|
112
114
|
| `mr-data promote` | Ask Studio to publish one table after a person's decision. The Harness worker does not perform the catch-up or scheduled refresh; report those only when another deployed component returns durable evidence that it did. |
|
|
113
115
|
| `mr-data pin` | Ask Studio to freeze one table pointer on an exact version, for a rollback or a hold. |
|
|
114
116
|
| `mr-data unpin` | Ask Studio to resume pointer tracking; read the returned state before claiming it resumed. |
|
|
115
117
|
| `mr-data demote` | Ask Studio to withdraw the pointer and any schedule it owns. |
|
|
116
118
|
|
|
117
|
-
`auth`, `login` and `
|
|
118
|
-
|
|
119
|
-
`
|
|
120
|
-
`
|
|
119
|
+
`auth`, `login`, `whoami` and `clarify` are the same implementation in both profiles, and
|
|
120
|
+
`clarify` alone reaches nothing at all. The other twenty-one answer from Studio. Eight only
|
|
121
|
+
read: `status`, `runs`, `watch`, `peek`, `receipt`, `checks`, `download` and `diff`. Thirteen
|
|
122
|
+
start or change something: `recipe`, `cover`, `run`, `query`, `probe`, `keys`, `stream`, `open`,
|
|
123
|
+
`note`, `promote`, `pin`, `unpin` and `demote`.
|
|
121
124
|
|
|
122
125
|
**Any successful run is readable straight away.** There is no approval, no admission and no release
|
|
123
126
|
step between a run finishing and reading it: `download`, `receipt`, `checks`, `peek` and `query`
|
|
@@ -226,6 +229,12 @@ again, and the failure triples on recent runs tell you what the backend is refus
|
|
|
226
229
|
`SANDBOX_MEMORY_BOUNDARY` on somebody else's recipe an hour ago means the room is unwell and your
|
|
227
230
|
first failure will not be your document's fault. Keep this check silent.
|
|
228
231
|
|
|
232
|
+
**Then settle anything only the user can settle, before probing.** Read the request for a word with
|
|
233
|
+
two defensible readings, a population whose edges are unstated, or a window nobody named.
|
|
234
|
+
`mr-data clarify --question TEXT` says whether there is anybody to ask and whether it is still early
|
|
235
|
+
enough; [Autonomous delivery](#autonomous-delivery) is the rule for what may be asked and what stays
|
|
236
|
+
yours to decide.
|
|
237
|
+
|
|
229
238
|
Pass `--json` to automated commands. A command receipt is the only record that a Harness action
|
|
230
239
|
succeeded.
|
|
231
240
|
|
|
@@ -316,6 +325,50 @@ Every grain, key, join and cutoff settled here is a `decision` block — see
|
|
|
316
325
|
[Narrating the run](#narrating-the-run). Append them to the same blocks file the source blocks
|
|
317
326
|
went into. There is still no run to write them into; stage 3 writes the file.
|
|
318
327
|
|
|
328
|
+
**The dataset description is the documentation, and it is read by people and by search engines.**
|
|
329
|
+
`dataset.description` is Markdown, rendered on the dataset page with headings and lists, and it
|
|
330
|
+
admits up to 4000 characters. Write it as a short reference entry a stranger can scan in thirty
|
|
331
|
+
seconds -- not a paragraph, and not a report. Use exactly this shape, in this order, and leave a
|
|
332
|
+
section out only when there is genuinely nothing to say (shown indented here; the document
|
|
333
|
+
itself carries the headings at column one):
|
|
334
|
+
|
|
335
|
+
One or two plain sentences: what each row is, where it comes from, and the period it covers.
|
|
336
|
+
|
|
337
|
+
## Coverage
|
|
338
|
+
- **Window:** the exact dates and the time zone.
|
|
339
|
+
- **Grain:** one row per what.
|
|
340
|
+
- **Cadence:** how often rows arrive, and how many per day or month.
|
|
341
|
+
|
|
342
|
+
## Columns
|
|
343
|
+
- `column_name` — what it measures, in which unit.
|
|
344
|
+
- (one bullet per column; group unit-sharing columns on one line where that reads better)
|
|
345
|
+
|
|
346
|
+
## Missing values
|
|
347
|
+
One or two sentences: how absent, trace and sentinel values are represented.
|
|
348
|
+
|
|
349
|
+
## Suitable for
|
|
350
|
+
- Two to four concrete uses, each a short phrase.
|
|
351
|
+
|
|
352
|
+
## Source and rights
|
|
353
|
+
The publisher, the programme, and the rights basis, in one or two sentences.
|
|
354
|
+
|
|
355
|
+
Rules that keep it readable: short sentences; no sentence over about twenty-five words; bullets
|
|
356
|
+
rather than comma lists; no tables, no code blocks, no links to internal tools, no headings beyond
|
|
357
|
+
the ones above. Spell out the names a reader would search for -- the place, the identifiers in
|
|
358
|
+
every common form, the programme and the publisher -- once each, in the opening sentences and
|
|
359
|
+
never as a keyword list. The opening sentences double as the summary cards and search engines
|
|
360
|
+
show, so they must stand alone. A one-line description is a defect to fix in the revision, not a
|
|
361
|
+
style choice. Give `table.description` the grain and the window, and give every column a
|
|
362
|
+
description a reader can act on.
|
|
363
|
+
|
|
364
|
+
**Every registered dataset gets a cover before its first run is presented.** After
|
|
365
|
+
`mr-data recipe` answers with the `dataset_id`, generate one with
|
|
366
|
+
`mr-data cover DATASET_ID "what the image should depict" --json`, describing the subject in plain
|
|
367
|
+
language — the place, the instrument, the phenomenon — and nothing about style, colour or size,
|
|
368
|
+
which Studio fixes. Do it once per dataset, silently, and do not repeat it for a revision unless the
|
|
369
|
+
subject changed. A dataset presented without a cover is a defect, the same as a one-line
|
|
370
|
+
description.
|
|
371
|
+
|
|
319
372
|
### What the statement must actually return
|
|
320
373
|
|
|
321
374
|
Every acquired source is bound as all-text CSV — `read_csv(header = true, auto_detect = false,
|
|
@@ -409,7 +462,7 @@ still going. [Narrating the run](#narrating-the-run) is the reference for what a
|
|
|
409
462
|
protocol, on `--sample`, `max_rows` and `window` truncate: the run succeeds at the clamp boundary
|
|
410
463
|
and reports the coverage it actually delivered. `max_source_bytes` refuses in every mode, sample
|
|
411
464
|
included, and on `full`, `refresh` and `backfill`, hitting any clamp is a refusal with
|
|
412
|
-
`CLAMP_EXCEEDED`. The current worker admits
|
|
465
|
+
`CLAMP_EXCEEDED`. The current worker admits `sample`, `full` and `refresh` (unwindowed in effect) and refuses `backfill` before applying
|
|
413
466
|
those dispositions. Therefore an executable sample may truncate on `max_rows`; an executable full
|
|
414
467
|
refuses a crossed row or byte ceiling; every stated window, refresh, and backfill is refused before
|
|
415
468
|
a byte is fetched.
|
|
@@ -423,9 +476,11 @@ cost, and waits; `mr-data run --confirm RUN` settles it against the number alrea
|
|
|
423
476
|
Any authenticated surface of the paying workspace may settle it. `--cancel RUN` stops a run that
|
|
424
477
|
is queued or running.
|
|
425
478
|
|
|
426
|
-
Do not treat the accepted command vocabulary as execution evidence. `refresh`
|
|
427
|
-
|
|
428
|
-
|
|
479
|
+
Do not treat the accepted command vocabulary as execution evidence. A `refresh` restores the
|
|
480
|
+
previous version, re-acquires the declared addresses in full and seals the next version, claiming
|
|
481
|
+
no coverage window -- it is how an enabled table's catch-up and its scheduled refresh run. A
|
|
482
|
+
`backfill` is defined by the exact window it covers, which this worker cannot narrow a source
|
|
483
|
+
request to, and is refused before acquisition.
|
|
429
484
|
|
|
430
485
|
### 4. Interrogate — ask the run what it actually delivered
|
|
431
486
|
|
|
@@ -724,6 +779,60 @@ or this command line.
|
|
|
724
779
|
If a source refuses for want of a credential, that is a product-level fact worth one sentence to
|
|
725
780
|
the user — the source needs a credential and which one — and nothing about the storage mechanism.
|
|
726
781
|
|
|
782
|
+
## Recording a stream venue
|
|
783
|
+
|
|
784
|
+
Some sources have no file to fetch: a `wss://` venue emits messages only while a socket is open, so
|
|
785
|
+
the bytes a build reads have to be recorded first. `mr-data stream` is that recording, and it is
|
|
786
|
+
four steps in front of the ordinary build loop.
|
|
787
|
+
|
|
788
|
+
```sh
|
|
789
|
+
mr-data stream document register --file connector.json --name coinbase --json
|
|
790
|
+
mr-data stream registry create --digest DOCUMENT_DIGEST --json
|
|
791
|
+
mr-data stream probe --document-digest DOCUMENT_DIGEST --registry REGISTRY_ID \
|
|
792
|
+
--member BTC-USD --json
|
|
793
|
+
mr-data stream capture --document-digest DOCUMENT_DIGEST --registry REGISTRY_ID \
|
|
794
|
+
--member BTC-USD --seconds 300 --watch --json
|
|
795
|
+
```
|
|
796
|
+
|
|
797
|
+
1. **Register the connector document.** It says where the venue is, how a message names its own
|
|
798
|
+
type and event time, and what a subscription frame looks like. Registration prints the
|
|
799
|
+
fingerprint the recipe will name; `mr-data stream document show ID` reads one back.
|
|
800
|
+
2. **Admit it into a registry.** A registry is the reviewed set a recording may name. Pass every
|
|
801
|
+
fingerprint the recording will use.
|
|
802
|
+
3. **Probe before you capture.** A probe connects briefly, reports which message types the document
|
|
803
|
+
classified and which it did not, and seals nothing. Read it with
|
|
804
|
+
`mr-data stream status ID --kind probe`. A document that classifies nothing is a document to fix
|
|
805
|
+
before spending a capture window on it.
|
|
806
|
+
4. **Capture, or subscribe.** `capture --seconds N` records one bounded window and seals it;
|
|
807
|
+
`--seconds` is at most 600, and `--max-events` and `--max-bytes` bound it further. `subscribe`
|
|
808
|
+
keeps recording until `mr-data stream subscription stop ID`, checkpointing as it goes.
|
|
809
|
+
`--watch` on a capture reads the record back until it stops and prints what stopped it.
|
|
810
|
+
|
|
811
|
+
The recipe then names the venue by its fingerprint, as `stream_connector_document_digest` on the
|
|
812
|
+
source, and `mr-data run` builds from the sealed messages. **`run` has no duration flag and will
|
|
813
|
+
not grow one.** A build reads sealed batches and is bounded by them, which is what makes it
|
|
814
|
+
reproducible: the bytes were fixed when they were recorded, not when the build was started. If a
|
|
815
|
+
build refuses for want of a recording, run `mr-data stream recordings --document-digest D` — it
|
|
816
|
+
reports every batch a build could read for that venue, the Bookmark each one carries, and when each
|
|
817
|
+
expires.
|
|
818
|
+
|
|
819
|
+
**A missed window is a permanent hole.** Recordings are kept for thirty days and a refresh carries
|
|
820
|
+
on from the Bookmark the last build reached; neither of those goes back for messages nobody was
|
|
821
|
+
listening for. If a venue was not being recorded over a period the user cares about, say so as a
|
|
822
|
+
gap in the series rather than promising a backfill: there is nothing to fetch.
|
|
823
|
+
|
|
824
|
+
**A keyed venue needs a shaped credential.** Store it once, by part, and name it on the recording:
|
|
825
|
+
|
|
826
|
+
```sh
|
|
827
|
+
mr-data keys set VENUE_KEY --part key_id=ABC123 --part private_key_pem=@signing.pem --json
|
|
828
|
+
mr-data stream capture --document-digest D --registry R --member M --seconds 300 \
|
|
829
|
+
--secret VENUE_KEY --json
|
|
830
|
+
```
|
|
831
|
+
|
|
832
|
+
`--part NAME=@PATH` reads that part off disk, which is how a signing key arrives; the parts are
|
|
833
|
+
composed into one envelope here and the value reaches nothing but the request body. The venue's
|
|
834
|
+
document declares which parts its shape holds, and a set that does not match is refused by name.
|
|
835
|
+
|
|
727
836
|
## Promote
|
|
728
837
|
|
|
729
838
|
Promotion is the one human gate in the product. Everything before it is workspace scratch: probing,
|
|
@@ -769,7 +878,29 @@ not ask the user to choose sources, Readers, engines, formats, workspaces, retry
|
|
|
769
878
|
operations, or validation repairs. Make those operational decisions from the question, observed
|
|
770
879
|
evidence, registered capabilities, and deterministic receipts.
|
|
771
880
|
|
|
772
|
-
|
|
881
|
+
One clarifying question is not a pause and does not weaken that ban. It is allowed for a fact the
|
|
882
|
+
user holds and no source can supply: what an ambiguous word in their request means, how wide the
|
|
883
|
+
population is, or how far back they need it. `Throughput: movements or passengers?` is such a fact.
|
|
884
|
+
Which Reader parses the feed is not, and neither is anything else named above; those stay banned
|
|
885
|
+
because the evidence settles them. Ask before probing, while nothing is registered, nothing is
|
|
886
|
+
running and nothing has been spent: a question at that point costs a sentence, and the guess it
|
|
887
|
+
replaces costs a whole build. Ask ONE question, carrying the answer you will assume if none comes
|
|
888
|
+
back. One, not two: `mr-data clarify` records exactly one question per invocation and the block it
|
|
889
|
+
composes has no field relating a question to another, so a second question is a second record with
|
|
890
|
+
nothing tying it to the first. If two things are genuinely unsettled, the one that survives the
|
|
891
|
+
evidence is the one to ask about.
|
|
892
|
+
|
|
893
|
+
`mr-data clarify --question TEXT` says whether to ask at all. It exits non-zero when no person can
|
|
894
|
+
answer, which is what a scheduled or headless session reports, and when `--recipe RECIPE_ID` names
|
|
895
|
+
a registered recipe, because the answer to a question asked after the contract is a revision and
|
|
896
|
+
goes through the contract approval instead. On a non-zero exit ask nothing: decide from the
|
|
897
|
+
evidence, write the assumption into the recipe document, and state it as a limitation in the final
|
|
898
|
+
report. `mr-data clarify --question TEXT --answer TEXT` composes the exchange as one `clarification`
|
|
899
|
+
block. Carry its wording into the recipe document the answer settles — the question text, the table
|
|
900
|
+
description, the column description — so the assumption the table rests on reads the same in the
|
|
901
|
+
document, in the Dataset, and in the report.
|
|
902
|
+
|
|
903
|
+
On a hosted install the delivered outcome is concrete: a run in `succeeded`, `mr-data checks` reporting
|
|
773
904
|
every declared check, the coverage read off the run rather than guessed, and the artifacts brought
|
|
774
905
|
here by `mr-data download` when the user asked for the bytes. Link to the canonical Dataset page and
|
|
775
906
|
state what is live and what is not, rather than claiming a promotion or reporting internal run
|
|
@@ -574,12 +574,18 @@ def _dispatch(
|
|
|
574
574
|
selected_command == "note"
|
|
575
575
|
or selected_command == "propose"
|
|
576
576
|
or selected_command == "acquire-cancel"
|
|
577
|
+
or selected_command == "clarify"
|
|
577
578
|
or selected_command in _RESEARCH_COMMANDS
|
|
578
579
|
):
|
|
579
580
|
# `note`, `propose` and the research commands are the hosted lane's own implementation, run
|
|
580
581
|
# here unchanged, so they refuse in the hosted lane's own typed vocabulary. Handling it here
|
|
581
582
|
# is what turns `THIN_...` into the same code-plus-remediation block every other refusal in
|
|
582
583
|
# this command line prints.
|
|
584
|
+
#
|
|
585
|
+
# `clarify` is here for the same reason and is not a hosted command at all: it reaches
|
|
586
|
+
# nothing and is identical in both profiles. It refuses in the thin lane's typed vocabulary
|
|
587
|
+
# because that is the vocabulary the agent driving it already branches on, and a fifth
|
|
588
|
+
# refusal class for four sentences would be a fifth remediation family for no reader.
|
|
583
589
|
from mostlyright.data_harness.thin.transport import ThinLaneError
|
|
584
590
|
|
|
585
591
|
handled_errors += (ThinLaneError,)
|
|
@@ -127,6 +127,7 @@ from mostlyright.data_harness.run_execution_v4 import (
|
|
|
127
127
|
)
|
|
128
128
|
from mostlyright.data_harness.sources.contracts import SourceContractError
|
|
129
129
|
from mostlyright.data_harness.v4_acquisition import (
|
|
130
|
+
STREAM_RELATION_COLUMNS,
|
|
130
131
|
RelationInput,
|
|
131
132
|
bind_v4_source,
|
|
132
133
|
connector_authority,
|
|
@@ -1025,6 +1026,14 @@ def _receipt_document(
|
|
|
1025
1026
|
for item in coverage
|
|
1026
1027
|
],
|
|
1027
1028
|
"coverage": [item.to_dict() for item in coverage],
|
|
1029
|
+
# WHAT EACH STREAM SOURCE ACTUALLY READ, and the member Studio persists
|
|
1030
|
+
# `bookmark_after` from. It is `{}` for a run that declares none. No transfer
|
|
1031
|
+
# capability appears in it: a signed session is a short-lived bearer credential and
|
|
1032
|
+
# belongs in no durable record. The digest `run:succeeded.receipt_digest` names is
|
|
1033
|
+
# taken over these bytes, so listing the block here is what binds it.
|
|
1034
|
+
"recordings": {
|
|
1035
|
+
name: job.recordings[name].sealed_recording() for name in sorted(job.recordings)
|
|
1036
|
+
},
|
|
1028
1037
|
"raw_snapshot": {
|
|
1029
1038
|
"media_type": RAW_SNAPSHOT_MEDIA_TYPE,
|
|
1030
1039
|
"members": [dict(member) for member in raw_members],
|
|
@@ -1038,6 +1047,7 @@ def v4_artifact_payloads(
|
|
|
1038
1047
|
candidate_run_dir: Path,
|
|
1039
1048
|
*,
|
|
1040
1049
|
coverage: Sequence[V4AcquisitionCoverage] = (),
|
|
1050
|
+
predecessor_run_dir: Path | None = None,
|
|
1041
1051
|
) -> tuple[pipeline.VerifiedCandidate, list[ArtifactPayload]]:
|
|
1042
1052
|
"""Derive all five v4 artifacts from the sealed candidate tree, in layout order.
|
|
1043
1053
|
|
|
@@ -1075,7 +1085,18 @@ def v4_artifact_payloads(
|
|
|
1075
1085
|
stage="persist",
|
|
1076
1086
|
)
|
|
1077
1087
|
verified, snapshot = _candidate_snapshot(candidate_run_dir)
|
|
1078
|
-
|
|
1088
|
+
# The restored predecessor tree, for the drift control a refresh is held to. Read through the
|
|
1089
|
+
# same replay-verifying door as the candidate: what is compared is what was sealed.
|
|
1090
|
+
predecessor_snapshot = (
|
|
1091
|
+
None if predecessor_run_dir is None else _candidate_snapshot(predecessor_run_dir)[1]
|
|
1092
|
+
)
|
|
1093
|
+
run_required_controls(
|
|
1094
|
+
job,
|
|
1095
|
+
verified=verified,
|
|
1096
|
+
snapshot=snapshot,
|
|
1097
|
+
coverage=coverage,
|
|
1098
|
+
predecessor_snapshot=predecessor_snapshot,
|
|
1099
|
+
)
|
|
1079
1100
|
candidate_digest = "sha256:" + verified.candidate_digest
|
|
1080
1101
|
# The tar is built BEFORE the receipt, because the receipt states the tar's members: the
|
|
1081
1102
|
# container is one artifact and the per-member digests are the only thing that keeps it
|
|
@@ -1349,6 +1370,7 @@ def _composed_registry(
|
|
|
1349
1370
|
DocumentProjectionAdapter,
|
|
1350
1371
|
)
|
|
1351
1372
|
from mostlyright.data_harness.sources.registry import AdapterRegistry
|
|
1373
|
+
from mostlyright.data_harness.v4_stream_recording import RecordedStreamAdapter
|
|
1352
1374
|
|
|
1353
1375
|
limits = [compose_source_limits(ceilings, job) for ceilings in source_ceilings(job.recipe)]
|
|
1354
1376
|
if not limits:
|
|
@@ -1359,15 +1381,22 @@ def _composed_registry(
|
|
|
1359
1381
|
disposition = limits[0].row_clamp_disposition
|
|
1360
1382
|
origins = {item.row_limit_origin for item in limits}
|
|
1361
1383
|
origin = "run_clamp" if origins == {"run_clamp"} else "registration"
|
|
1362
|
-
window
|
|
1384
|
+
# A refresh's stated window is Studio's tick coordinate, not a range this lane applies:
|
|
1385
|
+
# no request is narrowed to it and no coverage entry claims it. See EXECUTABLE_RUN_MODES.
|
|
1386
|
+
window = None if job.mode == "refresh" else job.clamps.window
|
|
1363
1387
|
# Structural rather than admitted, the same way the Reader pin is read: this asks only
|
|
1364
1388
|
# WHETHER a source names a coordinate, and the adapter is what verifies it against the
|
|
1365
1389
|
# capture store. Resolving twice would be two readings of one document that could disagree.
|
|
1366
1390
|
document_sources = tuple(
|
|
1367
1391
|
source for source in job.recipe.sources if document_projection_parameters(source)
|
|
1368
1392
|
)
|
|
1393
|
+
# A source read from a recording reaches no address, so it is routed away from the network
|
|
1394
|
+
# loop below rather than falling through its connector filter unrouted.
|
|
1395
|
+
stream_sources = tuple(source for source in job.recipe.sources if source.name in job.recordings)
|
|
1369
1396
|
network_sources = tuple(
|
|
1370
|
-
source
|
|
1397
|
+
source
|
|
1398
|
+
for source in job.recipe.sources
|
|
1399
|
+
if source not in document_sources and source not in stream_sources
|
|
1371
1400
|
)
|
|
1372
1401
|
if document_sources and disposition == "truncate":
|
|
1373
1402
|
raise RunExecutionError(
|
|
@@ -1382,7 +1411,9 @@ def _composed_registry(
|
|
|
1382
1411
|
for source in network_sources
|
|
1383
1412
|
if source.connector.adapter_id == GENERIC_API_ADAPTER_ID
|
|
1384
1413
|
}
|
|
1385
|
-
|
|
1414
|
+
# Both lanes order exactly one confined `parse` over bytes the operator already holds, and
|
|
1415
|
+
# neither orders a decode, so both pin the narrow policy rather than the composed one.
|
|
1416
|
+
redeemed = {source.name for source in (*document_sources, *stream_sources)}
|
|
1386
1417
|
adapters: list[Any] = []
|
|
1387
1418
|
if network_sources:
|
|
1388
1419
|
# `fetch` is the adapter's own declared seam (`InProcessPublicHttpsAdapter.fetch`),
|
|
@@ -1484,6 +1515,38 @@ def _composed_registry(
|
|
|
1484
1515
|
adapters=MappingProxyType(document_adapters),
|
|
1485
1516
|
)
|
|
1486
1517
|
)
|
|
1518
|
+
if stream_sources:
|
|
1519
|
+
if transfer is None or not base_url:
|
|
1520
|
+
raise RunExecutionError(
|
|
1521
|
+
"RUN_RECIPE_INVALID",
|
|
1522
|
+
failure_detail(
|
|
1523
|
+
"reading a sealed recording requires a Studio origin and a transfer client"
|
|
1524
|
+
),
|
|
1525
|
+
stage="acquire",
|
|
1526
|
+
)
|
|
1527
|
+
hosts = signed_storage_hosts(studio_origin=base_url, environ=os.environ)
|
|
1528
|
+
stream_adapters = {
|
|
1529
|
+
source.name: _CoveredRecordedStreamAdapter(
|
|
1530
|
+
adapter=RecordedStreamAdapter(
|
|
1531
|
+
recording=job.recordings[source.name],
|
|
1532
|
+
sandbox=sandbox,
|
|
1533
|
+
governance=recipe_governance(
|
|
1534
|
+
job, requested_at=trusted_clock, sources=(source,)
|
|
1535
|
+
),
|
|
1536
|
+
transfer=transfer,
|
|
1537
|
+
permitted_hosts=hosts,
|
|
1538
|
+
),
|
|
1539
|
+
coverage_log=coverage_log,
|
|
1540
|
+
)
|
|
1541
|
+
for source in stream_sources
|
|
1542
|
+
}
|
|
1543
|
+
first_stream = next(iter(stream_adapters.values()))
|
|
1544
|
+
adapters.append(
|
|
1545
|
+
_PerSourceAdapterRouter(
|
|
1546
|
+
descriptor=first_stream.descriptor,
|
|
1547
|
+
adapters=MappingProxyType(stream_adapters),
|
|
1548
|
+
)
|
|
1549
|
+
)
|
|
1487
1550
|
registry = AdapterRegistry(tuple(adapters))
|
|
1488
1551
|
contexts = {
|
|
1489
1552
|
item.source_id: item.acquisition_context(
|
|
@@ -1599,6 +1662,51 @@ class _CoveredDocumentProjectionAdapter:
|
|
|
1599
1662
|
return output
|
|
1600
1663
|
|
|
1601
1664
|
|
|
1665
|
+
@dataclass(frozen=True)
|
|
1666
|
+
class _CoveredRecordedStreamAdapter:
|
|
1667
|
+
"""Add v4 receipt coverage to a replayed recording, on the projection wrapper's own terms.
|
|
1668
|
+
|
|
1669
|
+
A recording reaches no venue and uses no session cache, so ``miss`` means no cached adapter
|
|
1670
|
+
output was used and the byte count is the concatenated sealed batches this run actually read.
|
|
1671
|
+
The URL is the content URN of those bytes and never a capability address.
|
|
1672
|
+
"""
|
|
1673
|
+
|
|
1674
|
+
adapter: Any
|
|
1675
|
+
coverage_log: V4CoverageLog
|
|
1676
|
+
|
|
1677
|
+
@property
|
|
1678
|
+
def descriptor(self) -> Any:
|
|
1679
|
+
return self.adapter.descriptor
|
|
1680
|
+
|
|
1681
|
+
def acquire(self, request: Any, context: Any) -> Any:
|
|
1682
|
+
output = self.adapter.acquire(request, context)
|
|
1683
|
+
rows = output.parsed_row_count
|
|
1684
|
+
if rows is None:
|
|
1685
|
+
raise RunExecutionError(
|
|
1686
|
+
"RUN_EXECUTION_FAILED",
|
|
1687
|
+
"the replayed recording did not report parsed row facts",
|
|
1688
|
+
stage="parse",
|
|
1689
|
+
)
|
|
1690
|
+
self.coverage_log.record(
|
|
1691
|
+
V4AcquisitionCoverage(
|
|
1692
|
+
source_id=request.source_id,
|
|
1693
|
+
query_digest=request.query_digest,
|
|
1694
|
+
window=None,
|
|
1695
|
+
cache=CacheDisposition.MISS,
|
|
1696
|
+
url=output.receipt.final_uri,
|
|
1697
|
+
fetched_at=output.receipt.observed_at,
|
|
1698
|
+
snapshot_sha256=output.receipt.snapshot.content_sha256,
|
|
1699
|
+
snapshot_bytes=output.receipt.snapshot.size_bytes,
|
|
1700
|
+
fetched_content_sha256=output.receipt.snapshot.content_sha256,
|
|
1701
|
+
bytes_fetched=output.receipt.snapshot.size_bytes,
|
|
1702
|
+
rows_kept=rows,
|
|
1703
|
+
rows_available=rows,
|
|
1704
|
+
truncated=False,
|
|
1705
|
+
)
|
|
1706
|
+
)
|
|
1707
|
+
return output
|
|
1708
|
+
|
|
1709
|
+
|
|
1602
1710
|
def _allowed_hostnames_by_source(job: RunExecution) -> Mapping[str, tuple[str, ...]]:
|
|
1603
1711
|
"""The exact host allowlist this run's own recipe states, PER SOURCE and nothing wider.
|
|
1604
1712
|
|
|
@@ -2069,6 +2177,7 @@ def acquire_v4_relations(
|
|
|
2069
2177
|
request_id=f"run.{job.run_id}.{job.attempt}.{source.name}",
|
|
2070
2178
|
requested_at=requested_at,
|
|
2071
2179
|
credential_handle=job.credential_handle_for(source.name),
|
|
2180
|
+
recording=job.recordings.get(source.name),
|
|
2072
2181
|
),
|
|
2073
2182
|
)
|
|
2074
2183
|
)
|
|
@@ -2091,7 +2200,15 @@ def acquire_v4_relations(
|
|
|
2091
2200
|
relation = relation_input(
|
|
2092
2201
|
output,
|
|
2093
2202
|
relation_name=source.name,
|
|
2094
|
-
|
|
2203
|
+
# A STREAM SOURCE'S HEADER IS DERIVED AND EVERY OTHER SOURCE'S IS REPORTED. The
|
|
2204
|
+
# Recorder's sealed line fixes it, the same for every stream source of every recipe,
|
|
2205
|
+
# and the adapter has already refused a parse that reported anything else -- so
|
|
2206
|
+
# taking it from the constant rather than from the parse says where it comes from.
|
|
2207
|
+
columns=(
|
|
2208
|
+
STREAM_RELATION_COLUMNS
|
|
2209
|
+
if source.name in job.recordings
|
|
2210
|
+
else output.parsed_columns or ()
|
|
2211
|
+
),
|
|
2095
2212
|
coverage=_coverage_for(coverage_log, source.name, output),
|
|
2096
2213
|
limits=limits,
|
|
2097
2214
|
)
|
|
@@ -2267,25 +2384,27 @@ def _restore_termination_handlers(installed: Sequence[tuple[int, Any]]) -> None:
|
|
|
2267
2384
|
signal.signal(number, previous)
|
|
2268
2385
|
|
|
2269
2386
|
|
|
2270
|
-
#: The run modes this worker executes, and the
|
|
2271
|
-
#:
|
|
2272
|
-
#: A ``refresh`` and a ``backfill`` are both defined AGAINST a predecessor and a window, and this
|
|
2273
|
-
#: worker can establish neither. The window narrows nothing on this lane -- ``bind_v4_source``
|
|
2274
|
-
#: composes the exact three members ``public.https`` admits from the address the document states,
|
|
2275
|
-
#: and the fetch takes whatever that address returns -- so the two modes whose whole meaning is
|
|
2276
|
-
#: "cover this range and no other" would cover whatever arrived while their sealed execution and
|
|
2277
|
-
#: their run record said otherwise.
|
|
2387
|
+
#: The run modes this worker executes, and the one it refuses rather than half-performing.
|
|
2278
2388
|
#:
|
|
2279
|
-
#:
|
|
2280
|
-
#:
|
|
2281
|
-
#:
|
|
2282
|
-
#:
|
|
2283
|
-
#:
|
|
2284
|
-
#: run
|
|
2389
|
+
#: A ``refresh`` on this lane is an unwindowed re-acquisition over the restored predecessor: every
|
|
2390
|
+
#: registered source is unwatermarked (``run_execution_v4._refuse_unbindable_watermark``), the
|
|
2391
|
+
#: fetch takes whatever the registered address returns, and the engine's ``refresh`` mode asks
|
|
2392
|
+
#: for exactly a predecessor and no window. So a refresh can be honest here -- it seals the rows
|
|
2393
|
+
#: it fetched as the next version of the same table and claims NO coverage window, so a later
|
|
2394
|
+
#: refresh resumes from the run's completion rather than from a range this lane never applied.
|
|
2395
|
+
#: Studio states ``clamps.window`` on a refresh to keep consecutive ticks distinct runs; that
|
|
2396
|
+
#: window is not applied to any request and is not recorded as covered.
|
|
2285
2397
|
#:
|
|
2286
|
-
#:
|
|
2287
|
-
#:
|
|
2288
|
-
|
|
2398
|
+
#: A ``backfill`` is different in kind and stays refused: the engine defines it BY its exact
|
|
2399
|
+
#: window -- it refuses a partition holding an event outside that range -- and this lane cannot
|
|
2400
|
+
#: narrow a source request to a range, so a backfill that fetched the whole address would either
|
|
2401
|
+
#: refuse at the engine or seal a range it did not cover. The refusal is visible on the run record
|
|
2402
|
+
#: at the moment it happens; a false range is discovered by the run that trusted it.
|
|
2403
|
+
EXECUTABLE_RUN_MODES: tuple[str, ...] = ("sample", "full", "refresh")
|
|
2404
|
+
|
|
2405
|
+
#: The modes on which a stated ``clamps.window`` is a contradiction rather than a request: a
|
|
2406
|
+
#: sample or a full with a window would be a windowed run this lane cannot perform.
|
|
2407
|
+
_WINDOW_REFUSED_MODES: frozenset[str] = frozenset({"sample", "full"})
|
|
2289
2408
|
|
|
2290
2409
|
|
|
2291
2410
|
def _admit_executable_mode(job: RunExecution) -> None:
|
|
@@ -2295,13 +2414,13 @@ def _admit_executable_mode(job: RunExecution) -> None:
|
|
|
2295
2414
|
raise RunExecutionError(
|
|
2296
2415
|
"RUN_MODE_INVALID",
|
|
2297
2416
|
failure_detail(
|
|
2298
|
-
f"this worker executes a run in {'
|
|
2299
|
-
f"{job.mode}
|
|
2300
|
-
|
|
2417
|
+
f"this worker executes a run in {', '.join(EXECUTABLE_RUN_MODES[:-1])} or "
|
|
2418
|
+
f"{EXECUTABLE_RUN_MODES[-1]} mode, and a {job.mode} is defined by the exact "
|
|
2419
|
+
"window it covers, which this worker cannot narrow a source request to"
|
|
2301
2420
|
),
|
|
2302
2421
|
stage="acquire",
|
|
2303
2422
|
)
|
|
2304
|
-
if job.clamps.window is not None:
|
|
2423
|
+
if job.clamps.window is not None and job.mode in _WINDOW_REFUSED_MODES:
|
|
2305
2424
|
raise RunExecutionError(
|
|
2306
2425
|
"RUN_CLAMPS_INVALID",
|
|
2307
2426
|
failure_detail(
|
|
@@ -2597,7 +2716,10 @@ def run_v4(
|
|
|
2597
2716
|
|
|
2598
2717
|
stage.set("persist")
|
|
2599
2718
|
verified, payloads = v4_artifact_payloads(
|
|
2600
|
-
job,
|
|
2719
|
+
job,
|
|
2720
|
+
output_dir,
|
|
2721
|
+
coverage=coverage_log.entries(),
|
|
2722
|
+
predecessor_run_dir=previous_run_dir,
|
|
2601
2723
|
)
|
|
2602
2724
|
_upload_all(
|
|
2603
2725
|
job,
|