mostlyright-data 0.17.2__tar.gz → 0.17.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/PKG-INFO +1 -1
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/pyproject.toml +1 -1
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/skills/mr-data-build/SKILL.md +1 -1
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/hosted_run_worker.py +108 -10
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/studio_boundary.py +1 -1
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/thin/router.py +1 -1
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/thin/session.py +196 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/thin/v4_datasets.py +328 -5
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/thin/v4_handoff.py +17 -99
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/thin/vocabulary.py +3 -2
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/ux/render.py +18 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/.gitignore +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/README.md +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/scripts/hatch_build.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/skills/mr-data-build/agents/openai.yaml +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/skills/mr-data-build/scripts/write_research_notebook.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/skills/mr-data-build/scripts/write_visual_run.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/_vendor/__init__.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/_vendor/rapidocr/LICENSE +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/_vendor/rapidocr/PROVENANCE.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/_vendor/rapidocr/__init__.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/_vendor/rapidocr/__init__.pyi +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/_vendor/rapidocr/_version.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/_vendor/rapidocr/cal_rec_boxes/__init__.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/_vendor/rapidocr/cal_rec_boxes/main.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/_vendor/rapidocr/ch_ppocr_cls/__init__.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/_vendor/rapidocr/ch_ppocr_cls/main.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/_vendor/rapidocr/ch_ppocr_cls/utils.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/_vendor/rapidocr/ch_ppocr_det/__init__.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/_vendor/rapidocr/ch_ppocr_det/main.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/_vendor/rapidocr/ch_ppocr_det/utils.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/_vendor/rapidocr/ch_ppocr_rec/__init__.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/_vendor/rapidocr/ch_ppocr_rec/main.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/_vendor/rapidocr/ch_ppocr_rec/typings.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/_vendor/rapidocr/ch_ppocr_rec/utils.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/_vendor/rapidocr/config.yaml +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/_vendor/rapidocr/inference_engine/__init__.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/_vendor/rapidocr/inference_engine/base.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/_vendor/rapidocr/inference_engine/onnxruntime/__init__.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/_vendor/rapidocr/inference_engine/onnxruntime/main.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/_vendor/rapidocr/inference_engine/onnxruntime/provider_config.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/_vendor/rapidocr/main.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/_vendor/rapidocr/models/PP-OCRv6_det_small.onnx +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/_vendor/rapidocr/models/PP-OCRv6_rec_small.onnx +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/_vendor/rapidocr/models/ch_ppocr_mobile_v2.0_cls_mobile.onnx +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/_vendor/rapidocr/py.typed +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/_vendor/rapidocr/utils/__init__.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/_vendor/rapidocr/utils/load_image.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/_vendor/rapidocr/utils/log.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/_vendor/rapidocr/utils/model_resolver.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/_vendor/rapidocr/utils/output.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/_vendor/rapidocr/utils/parse_parameters.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/_vendor/rapidocr/utils/process_img.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/_vendor/rapidocr/utils/typings.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/_vendor/rapidocr/utils/utils.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/__init__.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/acquisition/__init__.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/acquisition/derived_credentials.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/acquisition/http.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/acquisition/parsing.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/acquisition/ranges.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/acquisition/result_download.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/acquisition/retention_admission.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/acquisition/sandbox.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/acquisition/sandbox_bootstrap.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/acquisition/url_policy.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/agent_runtime.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/assets/logo-ink.svg +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/backends/__init__.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/backends/pandas_backend.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/backends/polars_backend.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/backends/protocol.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/backends/reference.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/backends/registry.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/backends/restrictions.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/bounded_query.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/bounded_scratch_sink.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/canonical.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/catalog_job.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/cli.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/compact_worker.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/contracts.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/coordinator.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/crosswalks.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/declared_checks.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/delta.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/delta_checks.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/delta_classifier.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/delta_persist.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/delta_recompute.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/delta_rows.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/deploy.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/deploy_target.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/deployment_evidence.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/documents/__init__.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/documents/_worker_capability.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/documents/capture.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/documents/contracts.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/documents/lane.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/documents/ocr.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/documents/pdf.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/documents/registry.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/documents/sandbox.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/documents/selections.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/documents/tables.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/documents/vendor_rapidocr.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/events.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/fast_delimited.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/fetch_egress_smoke.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/formats.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/governors.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/hosted_bootstrap.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/hosted_crawler.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/hosted_crawler_container_smoke.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/hosted_crawler_fetch.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/hosted_crawler_job.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/hosted_crawler_protocol.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/hosted_deploy.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/hosted_ingestion_contract.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/hosted_ingestion_job.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/hosted_ingestion_job_smoke.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/hosted_ingestion_worker.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/hosted_rlimit_as_container_smoke.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/hosted_session_container_smoke.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/hosted_session_worker.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/hosted_session_worker_job_smoke.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/hosted_stream_recorder_container_smoke.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/hosted_stream_recorder_job.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/hosted_stream_subscription_container_smoke.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/hosted_stream_subscription_worker.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/hosted_worker.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/incremental_slice_executor.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/incremental_worker.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/ingestion/__init__.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/ingestion/contracts.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/ingestion/faults.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/ingestion/gcs_store.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/ingestion/spool.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/ingestion/store.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/inprocess_acquisition.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/key_seam.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/linux_process_boundary.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/local_contracts.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/nbrender/CONTRACT.md +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/nbrender/__init__.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/nbrender/chrome.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/nbrender/code_body.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/nbrender/document.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/nbrender/frame.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/nbrender/interactive.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/nbrender/markdown_body.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/nbrender/mr_components.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/nbrender/outputs_data.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/nbrender/outputs_rich.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/nbrender/outputs_source.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/nbrender/outputs_stage.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/nbrender/outputs_text.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/nbrender/parse.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/nbrender/status.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/nbrender/tokens.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/notebook.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/offline.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/operation_registry.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/operator_setup.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/part_check_evidence.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/pipeline.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/plan_graph.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/preparation/__init__.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/preparation/contracts.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/preparation/engine.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/preparation/errors.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/preparation/gates.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/preparation/joins.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/preparation/profile.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/preparation/table.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/preparation/transforms.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/progress_events.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/__init__.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/_openpyxl.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/budgets.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/containers.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/contracts.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/delimited.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/geojson_vector.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/geopackage.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/geoparquet.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/grib2/__init__.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/grib2/admission.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/grib2/collection.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/grib2/collection_reader.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/grib2/decode.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/grib2/geometry.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/grib2/portable_math.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/grib_eccodes.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/html_tabular.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/html_web_extract.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/json_tabular.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/parquet_tabular.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/pcaxis_px.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/protobuf_tabular.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/raster/__init__.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/raster/_bytes.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/raster/decode.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/raster/family.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/raster/jpeg2000.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/raster/profiles.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/raster/rendered.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/raster/safe.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/raster/sentinel_safe.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/raster/tiff.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/registry.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/README.md +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/archive.gzip/1.0.0/cities_one_stream/cities.csv.gz +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/archive.gzip/1.0.0/cities_one_stream/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/archive.gzip/1.1.0/cities_one_stream/cities.csv.gz +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/archive.gzip/1.1.0/cities_one_stream/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/archive.tar/1.0.0/cities_beside_a_directory_entry/cities.tar +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/archive.tar/1.0.0/cities_beside_a_directory_entry/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/archive.tar/1.1.0/cities_beside_a_directory_entry/cities.tar +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/archive.tar/1.1.0/cities_beside_a_directory_entry/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/archive.zip/1.0.0/cities_beside_a_second_member/cities.zip +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/archive.zip/1.0.0/cities_beside_a_second_member/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/archive.zip/1.1.0/dwd_semicolon_station_member/dwd-station.zip +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/archive.zip/1.1.0/dwd_semicolon_station_member/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/archive.zip/1.2.0/dwd_semicolon_station_member/dwd-station.zip +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/archive.zip/1.2.0/dwd_semicolon_station_member/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/delimited_text/1.0.0/an_ordinary_comma_separated_table/cities.csv +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/delimited_text/1.0.0/an_ordinary_comma_separated_table/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/delimited_text/1.0.0/quoted_fields_holding_the_delimiter/cities.tsv +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/delimited_text/1.0.0/quoted_fields_holding_the_delimiter/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/delimited_text/1.1.0/an_hourly_observation_table_served_as_plain_text/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/delimited_text/1.1.0/an_hourly_observation_table_served_as_plain_text/observations.csv +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/geojson.vector/1.0.0/czech_capital/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/geojson.vector/1.0.0/czech_capital/places.geojson +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/geopackage.vector/1.0.0/epsg_4326_feature/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/geopackage.vector/1.0.0/epsg_4326_feature/places.gpkg +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/geoparquet.vector/1.0.0/primary_wkb_point/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/geoparquet.vector/1.0.0/primary_wkb_point/places.parquet +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/html.tabular/1.0.0/sanitized_table/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/html.tabular/1.0.0/sanitized_table/table.html +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/html.web_extract/1.0.0/json_ld_scorecards/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/html.web_extract/1.0.0/json_ld_scorecards/scorecards.html +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/image.rendered/1.0.0/tiny_png/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/image.rendered/1.0.0/tiny_png/tiny-rendered.png +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/json.tabular/1.0.0/nested_hourly_observations/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/json.tabular/1.0.0/nested_hourly_observations/stations.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/json.tabular/1.1.0/an_observation_stream_served_as_plain_text/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/json.tabular/1.1.0/an_observation_stream_served_as_plain_text/observations.ndjson +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/meteorology.bufr/1.0.0/eccodes_bufr4_subset/eccodes-bufr4.bufr +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/meteorology.bufr/1.0.0/eccodes_bufr4_subset/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/meteorology.grib/1.0.0/eccodes_grib1_origin/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/meteorology.grib/1.0.0/eccodes_grib1_origin/regular-ll-surface.grib1 +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/microdata.sas_xpt/1.0.0/two_raw_columns/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/microdata.sas_xpt/1.0.0/two_raw_columns/survey.xpt +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/microdata.spss_sav/1.0.0/two_raw_columns/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/microdata.spss_sav/1.0.0/two_raw_columns/survey.sav +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/microdata.stata_dta/1.0.0/two_raw_columns/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/microdata.stata_dta/1.0.0/two_raw_columns/stata.dta +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/official.pcaxis_px/1.0.0/population_by_region_and_year/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/official.pcaxis_px/1.0.0/population_by_region_and_year/population.px +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/official.sdmx_json/1.0.0/compact_population_series/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/official.sdmx_json/1.0.0/compact_population_series/population.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/parquet.tabular/1.0.0/two_columns/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/parquet.tabular/1.0.0/two_columns/prices.parquet +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/protobuf.tabular/1.0.0/gtfs_realtime_trip_updates/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/protobuf.tabular/1.0.0/gtfs_realtime_trip_updates/gtfs-realtime.desc +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/protobuf.tabular/1.0.0/gtfs_realtime_trip_updates/trip-updates.pb +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/raster.geospatial/1.0.0/tiny_geotiff/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/raster.geospatial/1.0.0/tiny_geotiff/tiny-geospatial.tif +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/satellite.goes_abi_l2/1.0.0/authored_cmi_window/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/satellite.goes_abi_l2/1.0.0/authored_cmi_window/goes-abi-l2-cmi-window.nc +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/satellite.himawari_hsd/1.0.0/authored_b13_single_bzip2/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/satellite.himawari_hsd/1.0.0/authored_b13_single_bzip2/himawari-b13-0101-bzip2.dat +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/satellite.himawari_hsd_complete/1.0.0/authored_b13_three_segment_scan/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/satellite.himawari_hsd_complete/1.0.0/authored_b13_three_segment_scan/himawari-hsd-b13-complete.zip +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/satellite.msg_seviri_l15/1.0.0/authored_calibrated_complete_visir/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/satellite.msg_seviri_l15/1.0.0/authored_calibrated_complete_visir/msg-seviri-l15.zip +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/satellite.sentinel_safe/1.0.0/authored_b02_scl_window/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/satellite.sentinel_safe/1.0.0/authored_b02_scl_window/sentinel-safe-b02-scl.zip +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/satellite.xrit_image/1.0.0/authored_complete_raw_counts/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/satellite.xrit_image/1.0.0/authored_complete_raw_counts/xrit-complete-image.zip +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/scientific.fits/1.0.0/tiny_primary_window/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/scientific.fits/1.0.0/tiny_primary_window/tiny-primary.fits +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/scientific.hdf4/1.0.0/authored_temperature_window/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/scientific.hdf4/1.0.0/authored_temperature_window/temperature.hdf +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/scientific.hdf5/1.0.0/authored_temperature_window/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/scientific.hdf5/1.0.0/authored_temperature_window/temperature.h5 +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/scientific.hdf_eos2/1.0.0/authored_grid_temperature_window/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/scientific.hdf_eos2/1.0.0/authored_grid_temperature_window/nasa-hdfeos2-grid.hdf +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/scientific.hdf_eos2/1.0.0/authored_swath_temperature_window/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/scientific.hdf_eos2/1.0.0/authored_swath_temperature_window/nasa-hdfeos2-swath.hdf +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/scientific.netcdf/1.0.0/authored_classic_temperature_window/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/scientific.netcdf/1.0.0/authored_classic_temperature_window/temperature-classic.nc +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/scientific.zarr/1.0.0/authored_v3_temperature_window/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/scientific.zarr/1.0.0/authored_v3_temperature_window/temperature-zarr-v3.zip +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/spreadsheet.xlsx/1.0.0/an_ordinary_table_beside_a_second_sheet/cities.xlsx +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/spreadsheet.xlsx/1.0.0/an_ordinary_table_beside_a_second_sheet/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/spreadsheet.xlsx/1.0.0/shares_the_workbook_had_already_computed/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/spreadsheet.xlsx/1.0.0/shares_the_workbook_had_already_computed/shares.xlsx +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/spreadsheet.xlsx/1.1.0/shares_the_workbook_had_already_computed/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/spreadsheet.xlsx/1.1.0/shares_the_workbook_had_already_computed/shares.xlsx +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/README.md +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/gfs_2m_temperature/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/gfs_2m_temperature/gfs-2m-temperature.grib2 +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/hrrr_2m_temperature/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/hrrr_2m_temperature/hrrr-2m-temperature.grib2 +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/hrrr_categorical_rain/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/hrrr_categorical_rain/hrrr-categorical-rain.grib2 +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/weather.grib2/2.0.0/hrrr_2m_temperature/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/weather.grib2/2.0.0/hrrr_2m_temperature/hrrr-2m-temperature.grib2 +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/weather.grib2/3.0.0/gfs_and_hrrr_categorical_rain/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/weather.grib2/3.0.0/gfs_and_hrrr_categorical_rain/gfs-and-hrrr-categorical-rain.grib2 +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/xbrl.facts/1.0.0/plain_filing_fact/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/xbrl.facts/1.0.0/plain_filing_fact/filing.xml +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/xbrl.facts/1.0.0/xml_inline_fact/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/xbrl.facts/1.0.0/xml_inline_fact/filing.xhtml +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/xml.tabular/1.0.0/pacer_rss_feed/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/xml.tabular/1.0.0/pacer_rss_feed/feed.xml +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/xml.tabular/1.0.0/sec_form_d_filing/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/xml.tabular/1.0.0/sec_form_d_filing/filing.xml +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/xml.tabular/1.0.0/unified_agenda_extract/agenda.xml +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples/xml.tabular/1.0.0/unified_agenda_extract/expected.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/samples.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/scientific.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/scientific_arrays/__init__.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/scientific_arrays/container.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/scientific_arrays/goes.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/scientific_arrays/hdf4.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/scientific_arrays/hdf4_bridge.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/scientific_arrays/hdf5.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/scientific_arrays/native.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/scientific_arrays/netcdf.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/scientific_arrays/profiles.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/scientific_arrays/raw.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/scientific_arrays/zarr.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/scientific_catalog.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/scientific_segmented/__init__.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/scientific_segmented/asset_sets.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/scientific_segmented/formats.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/scientific_segmented/hsd.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/scientific_segmented/native.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/scientific_segmented/profiles.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/scientific_segmented/reader.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/scientific_segmented/xrit.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/sdmx_json.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/spreadsheet.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/statistical_microdata.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/tabular.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/vector.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/vector_wkb.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/xbrl_facts.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/readers/xml_tabular.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/recipe.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/review.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/rowset.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/run_execution_v4.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/run_phase_timing.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/session_probes.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/signing.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/skill_assets.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/source_bootstrap.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/source_bundle_writer.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/source_discovery.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/source_history_candidate_child.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/source_history_transform_child.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/source_inventory.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/source_partition.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/source_raw_inventory.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/source_state_index.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/__init__.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/_adapter_steps.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/adapters.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/authenticated_https.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/authenticated_https_v2.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/authenticated_https_v3.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/cadence.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/cadence_emission.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/cadence_history.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/catalog/__init__.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/catalog/admission.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/catalog/authoring.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/catalog/authoring_policy.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/catalog/authoring_shards.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/catalog/bounded_io.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/catalog/channel.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/catalog/channel_client.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/catalog/contracts.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/catalog/coverage.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/catalog/embedding.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/catalog/entry_v2.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/catalog/fill.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/catalog/fill_partitions.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/catalog/fill_staging.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/catalog/gating.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/catalog/generation_receipt.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/catalog/harvest/__init__.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/catalog/harvest/ckan.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/catalog/harvest/datagov_v4.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/catalog/harvest/protocol.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/catalog/harvest/sdmx.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/catalog/harvest/stac.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/catalog/hosted_catalog.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/catalog/identity_history.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/catalog/neural.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/catalog/packed_catalog.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/catalog/packed_retrieval.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/catalog/packed_writer.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/catalog/query_trace.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/catalog/recommend.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/catalog/retrieval.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/catalog/retrieval_manifest.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/catalog/sealed.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/catalog/search.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/catalog/streaming_delta.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/catalog/update.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/collections.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/contracts.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/dataset.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/deletion.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/document_projection.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/fitness.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/governance.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/hosted.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/integration.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/range_reader.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/registry.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/rights_rule.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/source_cadence_vectors.v1.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/sports.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/stream.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/stream_capture_session.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/stream_connector.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/stream_connectors/fixture.cursor-resume.v3.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-frame-ed25519.v2.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-frame-hmac.v2.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-frame-hmac384.v2.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-frame-hmac512.v2.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-frame.v2.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-header-rsa.v2.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-header.v2.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-permessage-jwt.v2.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-permessage.v2.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-prelude.v2.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-query.v2.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-subprotocol.v2.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-subscribe.v2.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/stream_connectors/fixture.keyed-urlpath.v2.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/stream_connectors/polymarket.clob-market.v1.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/stream_credential.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/stream_prelude.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/stream_recorder.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/stream_registry.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/stream_rotation.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/stream_segment_recorder.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/stream_series.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/stream_signing.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sources/stream_transport.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/sql_transform_engine.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/stream_order_vector.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/stream_recovery_objects.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/stream_segment_spill.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/stream_subscription_feed.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/stream_subscription_sealer.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/stream_subscription_worker.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/stream_venue.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/stream_venue_staging.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/studio_subscription_control.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/table_manifest.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/table_parts.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/table_profile.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/thin/__init__.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/thin/acquire.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/thin/acquire_cancel.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/thin/activity.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/thin/approvals.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/thin/commands.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/thin/download.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/thin/narrative.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/thin/parity.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/thin/probe.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/thin/propose.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/thin/recipe.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/thin/research.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/thin/runs.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/thin/stream.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/thin/stream_venue.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/thin/transport.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/thin/v4.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/thin/v4_artifacts.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/thin/v4_connections.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/thin/v4_dataset_covers.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/thin/v4_narrative.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/thin/v4_query.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/thin/v4_runs.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/thin/v4_secrets.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/thin/v4_stream.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/thin/v4_tables.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/thin/workers.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/ucum/TABLE-PIN.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/ucum/ucum-subset.v1.json +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/unit_flow.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/units.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/ux/__init__.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/ux/attendance.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/ux/clarification.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/ux/cloud_auth.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/ux/commands/__init__.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/ux/commands/auth.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/ux/commands/catalog_author.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/ux/commands/catalog_harvest.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/ux/commands/catalog_publish.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/ux/commands/clarify.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/ux/commands/login.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/ux/commands/record.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/ux/commands/whoami.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/ux/credential_native.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/ux/credential_store.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/ux/credentials.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/ux/headline.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/ux/hosted_acquisition.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/ux/local_review.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/ux/login.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/ux/path_kind.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/ux/plain_file.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/ux/readers.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/ux/remediation.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/v4_acquisition.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/v4_check_dialect.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/v4_closed_source.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/v4_document_pin.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/v4_reader_pin.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/v4_recipe.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/v4_required_controls.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/v4_snapshot_artifact.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/v4_stream_recording.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/v4_transform.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/v4_window.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/visual_run/__init__.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/visual_run/authoring.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/visual_run/contracts.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/visual_run/materialize.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/visual_run/observations.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/visual_run/reducer.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/visual_run/sdk.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/visual_run/store.py +0 -0
- {mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/visual_run/transport.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mostlyright-data
|
|
3
|
-
Version: 0.17.
|
|
3
|
+
Version: 0.17.3
|
|
4
4
|
Summary: Mostly Right CLI for reproducible, reviewed Parquet datasets
|
|
5
5
|
Project-URL: Homepage, https://mostlyright.md/
|
|
6
6
|
Project-URL: Documentation, https://mostlyright.md/docs/guides/cli/
|
|
@@ -117,7 +117,7 @@ gap rather than doing anything, and `export-hosted-candidate`, which is a backen
|
|
|
117
117
|
| `mr-data whoami` | Use the compatibility alias for the remotely validated `auth status` answer. |
|
|
118
118
|
| `mr-data clarify` | Say whether one clarifying question may be put to the user right now, and compose the record of their answer. It reaches nothing, asks nobody and waits for nothing. Exits non-zero when no person can answer or when a recipe is already registered. |
|
|
119
119
|
| `mr-data probe` | Ask one registered source one question and print the answer. **Currently unusable:** it reaches `/v3/sessions`, which Studio refuses, and it takes a question identifier that no v4 receipt returns. Do not plan a source inspection around it. |
|
|
120
|
-
| `mr-data dataset` | Bring the dataset page into existence before there is anything on it, then fill it in while somebody watches. `dataset create --name TEXT` mints it and prints the `dataset_id`; `dataset show ID` reads it back; `dataset set ID --name TEXT --topics "a,b,c" --license ID --description-file F` writes the title, the categories, the SPDX licence and the description under the version it was read at, retrying once if somebody else wrote first, and an empty `--topics` or `--license` takes that value off the page; `dataset note ID --heading H --blocks-file B` writes one cell of the decision record that OUTLIVES every run, and `--list` reads it back; `dataset watch ID` follows the page's own event stream; `dataset activity ID --phase P --message TEXT` says what is happening right now, silently, and is never a chat message and never a cell; `dataset archive ID --confirm-name TITLE` retires the page and frees its title, deleting nothing. |
|
|
120
|
+
| `mr-data dataset` | Bring the dataset page into existence before there is anything on it, then fill it in while somebody watches. `dataset create --name TEXT` mints it and prints the `dataset_id`; `dataset show ID` reads it back; `dataset set ID --name TEXT --topics "a,b,c" --license ID --description-file F` writes the title, the categories, the SPDX licence and the description under the version it was read at, retrying once if somebody else wrote first, and an empty `--topics` or `--license` takes that value off the page; `dataset note ID --heading H --blocks-file B` writes one cell of the decision record that OUTLIVES every run, and `--list` reads it back; `dataset watch ID` follows the page's own event stream; `dataset activity ID --phase P --message TEXT` says what is happening right now, silently, and is never a chat message and never a cell; `dataset publish ID [--mode public|link|private]` says who can read the dataset — `public` lists it in the public directory and serves it at an address anybody can read, `link` serves it at an unlisted address, `private` takes it back to the workspace — and `dataset publish ID --show` reads that back without changing it; `dataset archive ID --confirm-name TITLE` retires the page and frees its title, deleting nothing. |
|
|
121
121
|
| `mr-data recipe` | Register one recipe document — dataset, question, table plan, sources, transform, checks and units — in one call, and print the identifiers the server derived. `mr-data recipe show ID` reads one back. |
|
|
122
122
|
| `mr-data cover` | Generate and attach one branded 1200×630 dataset cover. Give it the dataset ID and what the image should depict; Studio fixes the model, single-color style, curated random palette, dimensions and storage. |
|
|
123
123
|
| `mr-data run` | Start one run against a registered recipe, named as `--recipe RECIPE_ID --digest RECIPE_DIGEST` — both required, neither positional, and the digest is the bare hex the registration receipt printed. The command accepts `--sample`, `--full`, `--refresh`, `--backfill` and `--window`, and the worker executes `--sample`, `--full` and `--refresh`. A refresh narrows each source that declares a supported address window and merges its returned relation into retained source state; unwindowed sources are conditionally revalidated or re-acquired whole, then the full declared transform runs. `--backfill` and a `--window` on a sample or full are refused before acquisition. `--max-rows` and `--max-source-bytes` remain supported, and each bounds ONE SOURCE rather than the finished table. A large run is held for a spend confirmation, which `--confirm` settles; a sample-first held full requires Studio's interactive human approval instead. `--cancel RUN` stops one. |
|
|
@@ -1765,6 +1765,15 @@ class PredecessorRecord:
|
|
|
1765
1765
|
#: already holds. Read leniently: a receipt sealed before the member existed states none, and
|
|
1766
1766
|
#: a run continuing from one is left to the guards that were already there.
|
|
1767
1767
|
recording_bookmarks: Mapping[str, str] = MappingProxyType({})
|
|
1768
|
+
#: The sources whose committed state was DERIVED from a recording commitment because the
|
|
1769
|
+
#: receipt stated no digest of its own for them; see :func:`_recorded_source_state`.
|
|
1770
|
+
#:
|
|
1771
|
+
#: It is the one place a reader can tell a version a run sealed from a version composed at a
|
|
1772
|
+
#: recorder's checkpoint. A checkpoint acquires nothing -- its receipt states an empty source
|
|
1773
|
+
#: list -- so a name here says the position beside it was committed by the recorder rather
|
|
1774
|
+
#: than by an acquisition, which is the only lineage in which a commitment can have jumped
|
|
1775
|
+
#: ahead of the rows the version holds.
|
|
1776
|
+
recorded_source_states: frozenset[str] = frozenset()
|
|
1768
1777
|
|
|
1769
1778
|
@property
|
|
1770
1779
|
def layout_format_version(self) -> int:
|
|
@@ -1832,6 +1841,57 @@ def _receipt_table_record(
|
|
|
1832
1841
|
}
|
|
1833
1842
|
|
|
1834
1843
|
|
|
1844
|
+
#: The commitment members a recorded source's committed state is derived from.
|
|
1845
|
+
#:
|
|
1846
|
+
#: CLOSED RATHER THAN "WHATEVER THE ENTRY CARRIES". The derived state is a digest, so every member
|
|
1847
|
+
#: folded into it decides what that digest is; taking the entry whole would let a member a later
|
|
1848
|
+
#: control plane adds silently change the state a source is recorded at. These five are the
|
|
1849
|
+
#: position and the identity of the recording it is a position in, which is the whole of what a
|
|
1850
|
+
#: recorded source's state consists of.
|
|
1851
|
+
_RECORDING_STATE_MEMBERS = (
|
|
1852
|
+
"bookmark_after",
|
|
1853
|
+
"connector_document_digest",
|
|
1854
|
+
"recording_id",
|
|
1855
|
+
"series_id",
|
|
1856
|
+
"stream_id",
|
|
1857
|
+
)
|
|
1858
|
+
|
|
1859
|
+
|
|
1860
|
+
def _recorded_source_state(commitment: Mapping[str, Any]) -> str | None:
|
|
1861
|
+
"""The committed state of a source whose bytes a recorder sealed, or ``None`` for no position.
|
|
1862
|
+
|
|
1863
|
+
WHAT A SOURCE'S COMMITTED STATE IS, AND WHY A RECORDED ONE CANNOT BE A CONTENT DIGEST. For a
|
|
1864
|
+
source read from an address the state is the digest of the bytes that run read, because those
|
|
1865
|
+
bytes are what the version was built from and re-reading the address is how a successor tells
|
|
1866
|
+
whether anything moved. A recorded stream has no such reading: the version is the rows of the
|
|
1867
|
+
batches a recorder sealed, the successor reads the batches AFTER a position rather than the
|
|
1868
|
+
same ones again, and the position is therefore the entire state -- which is exactly what the
|
|
1869
|
+
receipt's ``recordings`` commitment states.
|
|
1870
|
+
|
|
1871
|
+
So the state is the digest of that commitment: the bookmark the version stopped at, and the
|
|
1872
|
+
identity of the recording the bookmark is a position in. Two versions of one table agree here
|
|
1873
|
+
only when they stopped at the same position of the same recording, which is the statement the
|
|
1874
|
+
member is read for, and the value can never collide with the digest of any source's bytes.
|
|
1875
|
+
|
|
1876
|
+
⚠ A VERSION COMPOSED AT A RECORDER'S CHECKPOINT STATES NO SOURCE DIGESTS AT ALL. Its receipt
|
|
1877
|
+
carries an empty ``sources`` list -- nothing was fetched and no window was covered -- so a
|
|
1878
|
+
successor that required a per-source digest could not number itself after it, and a stream
|
|
1879
|
+
table whose live version is a checkpoint could not be continued by any run. The commitment is
|
|
1880
|
+
the authenticated statement of what that version committed, and deriving the state from it is
|
|
1881
|
+
what lets a refresh or a debt drain continue a lineage the recorder is writing.
|
|
1882
|
+
"""
|
|
1883
|
+
|
|
1884
|
+
after = commitment.get("bookmark_after")
|
|
1885
|
+
if not isinstance(after, str) or RECORDING_BOOKMARK.fullmatch(after) is None:
|
|
1886
|
+
return None
|
|
1887
|
+
stated = {
|
|
1888
|
+
member: commitment[member]
|
|
1889
|
+
for member in _RECORDING_STATE_MEMBERS
|
|
1890
|
+
if isinstance(commitment.get(member), str) and commitment[member]
|
|
1891
|
+
}
|
|
1892
|
+
return hashlib.sha256(canonical_json_bytes(stated)).hexdigest()
|
|
1893
|
+
|
|
1894
|
+
|
|
1835
1895
|
def _decode_predecessor_receipt(raw: bytes, job: RunExecution) -> PredecessorRecord:
|
|
1836
1896
|
"""Read the authenticated receipt bytes into the record, or refuse by name."""
|
|
1837
1897
|
|
|
@@ -1954,6 +2014,7 @@ def _decode_predecessor_receipt(raw: bytes, job: RunExecution) -> PredecessorRec
|
|
|
1954
2014
|
# entry states no `bookmark_after`, contributes nothing rather than refusing -- the successor
|
|
1955
2015
|
# then has no rewind to compare against and behaves exactly as it did before this member.
|
|
1956
2016
|
bookmarks: dict[str, str] = {}
|
|
2017
|
+
recorded: set[str] = set()
|
|
1957
2018
|
recordings = value.get("recordings")
|
|
1958
2019
|
if isinstance(recordings, Mapping):
|
|
1959
2020
|
for name, entry in recordings.items():
|
|
@@ -1962,6 +2023,15 @@ def _decode_predecessor_receipt(raw: bytes, job: RunExecution) -> PredecessorRec
|
|
|
1962
2023
|
committed = entry.get("bookmark_after")
|
|
1963
2024
|
if isinstance(committed, str) and RECORDING_BOOKMARK.fullmatch(committed) is not None:
|
|
1964
2025
|
bookmarks[name] = committed
|
|
2026
|
+
# AND THE SAME COMMITMENT IS THE SOURCE'S COMMITTED STATE WHEN THE RECEIPT
|
|
2027
|
+
# STATES NO DIGEST FOR IT; see `_recorded_source_state`. A receipt that states
|
|
2028
|
+
# both keeps the digest of the bytes its own acquisition read: that reading is
|
|
2029
|
+
# the stronger one wherever it exists, a derived state must never displace it,
|
|
2030
|
+
# and the name is recorded only when the derivation is what supplied the state.
|
|
2031
|
+
derived = _recorded_source_state(entry)
|
|
2032
|
+
if derived is not None and name not in states:
|
|
2033
|
+
states[name] = derived
|
|
2034
|
+
recorded.add(name)
|
|
1965
2035
|
evidence["recipe_digest"] = recipe_digest
|
|
1966
2036
|
# ⚠ A CARRIED PREVIEW IS DROPPED RATHER THAN REFUSED WHEN IT IS NOT THIS WORKER'S SHAPE. The
|
|
1967
2037
|
# member is a template a successor RE-STAMPS, so a document written under an older
|
|
@@ -2020,6 +2090,7 @@ def _decode_predecessor_receipt(raw: bytes, job: RunExecution) -> PredecessorRec
|
|
|
2020
2090
|
observed_at=min(observations) if observations else None,
|
|
2021
2091
|
source_validators=MappingProxyType(validators),
|
|
2022
2092
|
recording_bookmarks=MappingProxyType(bookmarks),
|
|
2093
|
+
recorded_source_states=frozenset(recorded),
|
|
2023
2094
|
)
|
|
2024
2095
|
|
|
2025
2096
|
|
|
@@ -3376,6 +3447,24 @@ def _refuse_rewound_continuation(job: RunExecution, predecessor: PredecessorReco
|
|
|
3376
3447
|
position PAST it is a forward gap, which is the documented and benign outcome of a rotation
|
|
3377
3448
|
and is left alone. Below it is a rewind and refused.
|
|
3378
3449
|
|
|
3450
|
+
⚠ ONE REWIND IS NOT A RE-READ, AND IT IS THE ONE A RECORDER'S OWN LINEAGE PRODUCES. This
|
|
3451
|
+
guard's premise is that a version covers everything up to the position it committed at. That
|
|
3452
|
+
holds for every version a run sealed, and it fails for exactly one shape: a version composed
|
|
3453
|
+
at a recorder's checkpoint whose commitment JUMPED, because the control plane handed the
|
|
3454
|
+
table to the recorder at its own frontier rather than leaving a gap no run could ever close.
|
|
3455
|
+
Such a version's commitment names ground it does not hold, the skipped batch-counter range is
|
|
3456
|
+
written down as a debt, and the run that drains it is dispatched to read that range and stop
|
|
3457
|
+
inside it -- so its opening position is below the commitment by construction and comparing
|
|
3458
|
+
the two says nothing about duplication.
|
|
3459
|
+
|
|
3460
|
+
The exemption is therefore held to both halves of that shape at once, and neither alone is
|
|
3461
|
+
enough. The source's committed position must come from a version that ACQUIRED NOTHING (see
|
|
3462
|
+
``recorded_source_states``: a checkpoint states no source digests, and only a checkpoint can
|
|
3463
|
+
have jumped), and this run's span must CLOSE below that position -- an interval, not a
|
|
3464
|
+
continuation. A span that opens below and then runs to or past the commitment is the re-read
|
|
3465
|
+
of a tail, which is what a stale commitment produces, and it stays refused whatever composed
|
|
3466
|
+
the predecessor.
|
|
3467
|
+
|
|
3379
3468
|
⚠ ONLY WITHIN ONE RECORDING. The epoch half of a bookmark names the recording the counter is
|
|
3380
3469
|
a counter in, so two positions of different recordings are not comparable at all -- and a
|
|
3381
3470
|
successor recording is started only when no active predecessor exists and can only capture
|
|
@@ -3403,16 +3492,25 @@ def _refuse_rewound_continuation(job: RunExecution, predecessor: PredecessorReco
|
|
|
3403
3492
|
continue
|
|
3404
3493
|
# Fixed-width counters, so the text order IS the numeric order -- the same comparison
|
|
3405
3494
|
# `_parse_recording` makes between two batches of one run.
|
|
3406
|
-
if position
|
|
3407
|
-
|
|
3408
|
-
|
|
3409
|
-
|
|
3410
|
-
|
|
3411
|
-
|
|
3412
|
-
|
|
3413
|
-
|
|
3414
|
-
|
|
3415
|
-
|
|
3495
|
+
if position >= committed:
|
|
3496
|
+
continue
|
|
3497
|
+
reaches = job.recordings[name].expected_watermark
|
|
3498
|
+
if (
|
|
3499
|
+
name in predecessor.recorded_source_states
|
|
3500
|
+
and _recording_epoch(reaches) == _recording_epoch(committed)
|
|
3501
|
+
and reaches < committed
|
|
3502
|
+
):
|
|
3503
|
+
continue
|
|
3504
|
+
raise RunExecutionError(
|
|
3505
|
+
"RUN_RECORDING_INVALID",
|
|
3506
|
+
failure_detail(
|
|
3507
|
+
f"this refresh was dispatched to continue {name} from {position} through "
|
|
3508
|
+
f"{reaches} while the version it appends to already covers {committed}, so the "
|
|
3509
|
+
"batches it read hold rows the table already has; a re-dispatched span cannot "
|
|
3510
|
+
"be added"
|
|
3511
|
+
),
|
|
3512
|
+
stage=_CONTINUATION_STAGE,
|
|
3513
|
+
)
|
|
3416
3514
|
|
|
3417
3515
|
|
|
3418
3516
|
def _refuse_multi_source_stream_continuation(
|
{mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/studio_boundary.py
RENAMED
|
@@ -85,7 +85,7 @@ PINNED_OPENAPI_SOURCE_SHA256 = "f2164517534e299f96449659332fc5bc0552fa7f94539c3d
|
|
|
85
85
|
#: One line, and it stays one line: ``_replace_exactly`` in the repin matches the whole assignment
|
|
86
86
|
#: as a literal and refuses on any count but one, so a wrapped constant is a constant the repin can
|
|
87
87
|
#: no longer rewrite.
|
|
88
|
-
PINNED_V4_OPENAPI_SOURCE_SHA256 = "
|
|
88
|
+
PINNED_V4_OPENAPI_SOURCE_SHA256 = "fe6184bc1205c73600647f6a1ad6b5ee708fd357e2b29350be0b11c0eee24bbc"
|
|
89
89
|
|
|
90
90
|
_DIGEST = re.compile(r"^sha256:[0-9a-f]{64}$")
|
|
91
91
|
_IMAGE_DIGEST = re.compile(r"^[a-z0-9][a-z0-9._/-]{0,254}@sha256:[0-9a-f]{64}$")
|
{mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/thin/router.py
RENAMED
|
@@ -116,7 +116,7 @@ HOSTED_SUMMARY = dict(
|
|
|
116
116
|
# finished; every other authoring command edits something that already exists.
|
|
117
117
|
(
|
|
118
118
|
"dataset",
|
|
119
|
-
"create the page, correct it, write its record,
|
|
119
|
+
"create the page, correct it, write its record, say who can read it, and retire it",
|
|
120
120
|
),
|
|
121
121
|
("recipe", "register one whole recipe and print the identifiers the server derived"),
|
|
122
122
|
("connections", "list saved connections available for recipes"),
|
{mostlyright_data-0.17.2 → mostlyright_data-0.17.3}/src/mostlyright/data_harness/thin/session.py
RENAMED
|
@@ -16,6 +16,7 @@ recorded production failures on 2026-08-20.
|
|
|
16
16
|
|
|
17
17
|
from __future__ import annotations
|
|
18
18
|
|
|
19
|
+
import json
|
|
19
20
|
import re
|
|
20
21
|
import time
|
|
21
22
|
from collections.abc import Callable, Mapping
|
|
@@ -52,6 +53,16 @@ CLOUD_TOKEN_PATH = "/api/cli/studio-token"
|
|
|
52
53
|
#: check and Studio cannot.
|
|
53
54
|
CLOUD_SESSION_HANDOFF_PATH = "/api/cli/session-handoffs"
|
|
54
55
|
|
|
56
|
+
#: Cloud's own route for how one dataset is shared: read it with ``GET``, change it with ``POST``.
|
|
57
|
+
#:
|
|
58
|
+
#: ⚠ CLOUD RATHER THAN STUDIO, FOR A REASON THAT IS NOT THE HANDOFF'S. Making a dataset public is
|
|
59
|
+
#: not one Studio call: it initialises the dataset's publication with the organization's publisher
|
|
60
|
+
#: handle, flips the mode, and writes Cloud's OWN public index row and the slug that serves
|
|
61
|
+
#: ``/datasets/<slug>``. Only Cloud holds all three, and it already held them for the dashboard's
|
|
62
|
+
#: Share dialog -- so this route is that dialog's own decision behind the device credential, and
|
|
63
|
+
#: this client sends a mode and renders what came back rather than deciding any part of it.
|
|
64
|
+
CLOUD_DATASET_ACCESS_PATH = "/api/cli/datasets/{dataset_id}/access"
|
|
65
|
+
|
|
55
66
|
#: The one Cloud address a Dataset has. ``mostlyright-cloud`` serves it at this route with
|
|
56
67
|
#: section suffixes, and a run has no page of its own: its evidence lives on this page's Harness
|
|
57
68
|
#: card, so a receipt names its run with :func:`run_dashboard_url` as a query member here rather
|
|
@@ -315,19 +326,203 @@ def open_studio_session(
|
|
|
315
326
|
)
|
|
316
327
|
|
|
317
328
|
|
|
329
|
+
#: What a stated refusal code has to look like before it is interpolated into one.
|
|
330
|
+
#:
|
|
331
|
+
#: The shape every code in this lane's own vocabulary has, applied to somebody else's: a leading
|
|
332
|
+
#: letter, then letters, digits and underscores, bounded. It is not a check that the code is one
|
|
333
|
+
#: this build knows -- Cloud may ship a code before this client learns it, and forwarding an
|
|
334
|
+
#: unknown one is the point -- it is a check that what arrives is a CODE and not prose, markup or
|
|
335
|
+
#: a sentence with spaces in it.
|
|
336
|
+
CLOUD_REFUSAL_CODE = re.compile(r"[A-Z][A-Z0-9_]{0,63}")
|
|
337
|
+
|
|
338
|
+
#: The longest sentence somebody else's service composed that this lane will repeat, and the
|
|
339
|
+
#: shape it has to have. Cloud and Studio are this product's own services, so their sentence is
|
|
340
|
+
#: worth showing -- and it is still text this lane did not compose, so it is bounded, has to be
|
|
341
|
+
#: printable, and is quoted with its author named rather than presented as this lane's own words.
|
|
342
|
+
MAX_STATED_MESSAGE_CHARS = 300
|
|
343
|
+
|
|
344
|
+
|
|
345
|
+
def stated_sentence(value: Any) -> str | None:
|
|
346
|
+
"""One sentence somebody else composed, admitted only when it is a sentence and not a payload.
|
|
347
|
+
|
|
348
|
+
⚠ THE MESSAGE IS SHOWN AND THE CODE IS ACTED ON, WHICH IS THE SPLIT EVERY COMMAND IN THIS
|
|
349
|
+
LANE MAKES. A refusal a person cannot act on is a refusal they file a bug about, and the
|
|
350
|
+
useful half of a service's answer -- which capability is missing, which setting to change --
|
|
351
|
+
is in its sentence. So the sentence reaches the person, bounded and printable, and nothing
|
|
352
|
+
branches on it: what a script reads is the typed code beside it.
|
|
353
|
+
"""
|
|
354
|
+
|
|
355
|
+
if not isinstance(value, str):
|
|
356
|
+
return None
|
|
357
|
+
stated = value.strip()
|
|
358
|
+
if not stated or len(stated) > MAX_STATED_MESSAGE_CHARS or not stated.isprintable():
|
|
359
|
+
return None
|
|
360
|
+
return stated
|
|
361
|
+
|
|
362
|
+
|
|
363
|
+
def cloud_refusal(
|
|
364
|
+
status: int, parsed: Any, *, act: str, absent: str | None = None
|
|
365
|
+
) -> ThinLaneError:
|
|
366
|
+
"""One Cloud refusal, folded the way ``runs._studio_refusal`` folds Studio's.
|
|
367
|
+
|
|
368
|
+
⚠ THE TWO ISSUERS MUST REMEDIATE THE SAME SITUATION THE SAME WAY. ``ux/remediation.py``
|
|
369
|
+
keys on the code PREFIX, so a revoked device key arriving as ``THIN_CLOUD_...`` and a
|
|
370
|
+
revoked Studio token arriving as ``THIN_AUTHORIZATION_DENIED`` sent one person to two
|
|
371
|
+
different fixes for one problem. 401 and 403 fold onto the shared code here as they do
|
|
372
|
+
there, with Cloud's own code kept in the sentence so an expired key and a refused scope
|
|
373
|
+
stay distinguishable, and ``http_status`` rides along for the same reason it does there.
|
|
374
|
+
|
|
375
|
+
⚠ AND THE CODE CLOUD STATED IS A CODE, NOT A STRING TO INTERPOLATE. The comment this
|
|
376
|
+
replaces said "the code is a closed vocabulary" and nothing checked it, so a Cloud answer
|
|
377
|
+
of ``{"code": "<script>"}`` composed ``THIN_CLOUD_<script>`` -- a refusal code no caller
|
|
378
|
+
can branch on and no vocabulary contains. A stated code that does not look like one falls
|
|
379
|
+
through to ``THIN_CLOUD_REFUSED``, which is the answer for "Cloud stated nothing usable".
|
|
380
|
+
|
|
381
|
+
``act`` is what this call was trying to do, written as a verb phrase, and it is THIS lane's
|
|
382
|
+
words rather than Cloud's.
|
|
383
|
+
|
|
384
|
+
⚠ AND ``absent`` IS WHY A 404 IS NOT ONE SENTENCE FOR EVERY ROUTE. On the handoff mint a 404
|
|
385
|
+
really is "Cloud has no such route" -- a Cloud too old to serve it. On a route whose path
|
|
386
|
+
carries a dataset identifier this lane has already checked is a uuid, a 404 cannot be a
|
|
387
|
+
missing route: it is Cloud saying it holds no such dataset for this workspace. Telling that
|
|
388
|
+
person to look at a deployment would send them after a problem that does not exist, so the
|
|
389
|
+
caller states the sentence its own 404 means and the default stays the mint's.
|
|
390
|
+
|
|
391
|
+
⚠ AND A ROUTE THAT NAMES NO CODE STILL NAMED SOMETHING. NO Cloud CLI route sends a top-level
|
|
392
|
+
``code``: every refusal on ``/api/cli/`` -- the handoff mint's 401, 429 and 503, the dataset
|
|
393
|
+
sharing route's 400 and 403 -- is a one-line ``error`` and nothing else. So this is the branch
|
|
394
|
+
the real wire takes on both routes, and dropping the sentence folded "this key may not change
|
|
395
|
+
dataset sharing" onto the same bare words as an expired key. Where Cloud stated no code, its
|
|
396
|
+
sentence is quoted -- bounded, printable, and attributed to Cloud -- so the two stay
|
|
397
|
+
distinguishable. The ``named`` branch above stands for a Cloud that starts sending a code, not
|
|
398
|
+
for one that does. Nothing branches on the sentence; the code beside it is what a script reads.
|
|
399
|
+
"""
|
|
400
|
+
|
|
401
|
+
stated = parsed.get("code") if isinstance(parsed, dict) else None
|
|
402
|
+
named = stated if isinstance(stated, str) and CLOUD_REFUSAL_CODE.fullmatch(stated) else None
|
|
403
|
+
said = (
|
|
404
|
+
stated_sentence(parsed.get("error")) if named is None and isinstance(parsed, dict) else None
|
|
405
|
+
)
|
|
406
|
+
if status in {401, 403}:
|
|
407
|
+
if named:
|
|
408
|
+
suffix = f" (Cloud said {named}, HTTP {status})"
|
|
409
|
+
elif said:
|
|
410
|
+
suffix = f" (HTTP {status}; Cloud said: {said})"
|
|
411
|
+
else:
|
|
412
|
+
suffix = ""
|
|
413
|
+
refusal = ThinLaneError(
|
|
414
|
+
"THIN_AUTHORIZATION_DENIED",
|
|
415
|
+
f"the device key does not carry the authority this call needs{suffix}",
|
|
416
|
+
)
|
|
417
|
+
elif status == 404:
|
|
418
|
+
suffix = f" (Cloud said {named})" if named else ""
|
|
419
|
+
sentence = absent or f"Cloud has no route here to {act}"
|
|
420
|
+
refusal = ThinLaneError("THIN_NOT_FOUND", f"{sentence}{suffix}")
|
|
421
|
+
elif named is not None:
|
|
422
|
+
refusal = ThinLaneError(f"THIN_CLOUD_{named}", f"Cloud refused to {act} ({named})")
|
|
423
|
+
else:
|
|
424
|
+
detail = f"Cloud answered the request to {act} with HTTP {status}"
|
|
425
|
+
refusal = ThinLaneError(
|
|
426
|
+
"THIN_CLOUD_REFUSED", f"{detail}. Cloud said: {said}" if said else detail
|
|
427
|
+
)
|
|
428
|
+
refusal.http_status = status # type: ignore[attr-defined]
|
|
429
|
+
return refusal
|
|
430
|
+
|
|
431
|
+
|
|
432
|
+
class CloudClient:
|
|
433
|
+
"""One bounded call to the Cloud origin, authenticated by the device key Cloud itself issued.
|
|
434
|
+
|
|
435
|
+
NOT a :class:`~mostlyright.data_harness.thin.v4.StudioV4Client` subclass, and that is
|
|
436
|
+
structural rather than stylistic: that class carries a Studio bearer and a Studio base URL,
|
|
437
|
+
and these calls carry the DEVICE key to the CLOUD origin. Making it look like a Studio client
|
|
438
|
+
would be the first step towards somebody passing it a Studio session.
|
|
439
|
+
|
|
440
|
+
⚠ ONE CLASS FOR EVERY CLOUD ROUTE THIS LANE CALLS, for the reason
|
|
441
|
+
:class:`~mostlyright.data_harness.thin.v4.StudioV4Client` gives about its own single ``_call``:
|
|
442
|
+
a second one would be a second place for the origin check, the byte ceiling, the credential
|
|
443
|
+
header and the refusal folding to drift. The handoff mint was the first caller and the dataset
|
|
444
|
+
sharing route is the second; both are ``self.call`` and one line of route.
|
|
445
|
+
"""
|
|
446
|
+
|
|
447
|
+
def __init__(
|
|
448
|
+
self, credentials: ResolvedCloudCredentials, *, transport: Transport | None = None
|
|
449
|
+
) -> None:
|
|
450
|
+
self._credentials = credentials
|
|
451
|
+
self._origin = service_origin(credentials.cloud_url, "Cloud URL", allow_loopback_http=False)
|
|
452
|
+
self._transport = transport or UrlLibTransport()
|
|
453
|
+
|
|
454
|
+
@property
|
|
455
|
+
def cloud_url(self) -> str:
|
|
456
|
+
return self._origin
|
|
457
|
+
|
|
458
|
+
def call(
|
|
459
|
+
self,
|
|
460
|
+
method: str,
|
|
461
|
+
path: str,
|
|
462
|
+
*,
|
|
463
|
+
act: str,
|
|
464
|
+
body: Mapping[str, Any] | None = None,
|
|
465
|
+
expected: tuple[int, ...] = (200,),
|
|
466
|
+
absent: str | None = None,
|
|
467
|
+
) -> dict[str, Any]:
|
|
468
|
+
"""Make one Cloud call and return the object it answered with, or raise the refusal.
|
|
469
|
+
|
|
470
|
+
``expected`` is stated by the caller rather than defaulted to "anything below 400",
|
|
471
|
+
because the difference between the statuses a route can answer is the difference between
|
|
472
|
+
two things having happened: a ``200`` where a ``201`` was contracted means something other
|
|
473
|
+
than "it was created", and this client has nothing to do with anything else.
|
|
474
|
+
|
|
475
|
+
``absent`` is what this route's own 404 means, in the caller's words; see
|
|
476
|
+
:func:`cloud_refusal` for why one sentence could not serve both routes.
|
|
477
|
+
"""
|
|
478
|
+
|
|
479
|
+
headers = {
|
|
480
|
+
"Accept": "application/json",
|
|
481
|
+
"Authorization": f"Bearer {self._credentials.raw_key}",
|
|
482
|
+
}
|
|
483
|
+
encoded: bytes | None = None
|
|
484
|
+
if body is not None:
|
|
485
|
+
headers["Content-Type"] = "application/json"
|
|
486
|
+
encoded = json.dumps(dict(body), separators=(",", ":")).encode("utf-8")
|
|
487
|
+
status, raw, _headers = self._transport.request(
|
|
488
|
+
method,
|
|
489
|
+
f"{self._origin}{path}",
|
|
490
|
+
headers,
|
|
491
|
+
encoded,
|
|
492
|
+
MAX_TOKEN_RESPONSE_BYTES,
|
|
493
|
+
)
|
|
494
|
+
try:
|
|
495
|
+
parsed = parse_json(raw)
|
|
496
|
+
except CanonicalJSONError:
|
|
497
|
+
parsed = None
|
|
498
|
+
if status not in expected:
|
|
499
|
+
raise cloud_refusal(status, parsed, act=act, absent=absent)
|
|
500
|
+
if not isinstance(parsed, dict):
|
|
501
|
+
raise ThinLaneError(
|
|
502
|
+
"THIN_RESPONSE_INVALID",
|
|
503
|
+
f"Cloud answered the request to {act} without an object to read it from",
|
|
504
|
+
)
|
|
505
|
+
return parsed
|
|
506
|
+
|
|
507
|
+
|
|
318
508
|
__all__ = [
|
|
319
509
|
"CLOUD_APPROVAL_DASHBOARD_PATH",
|
|
510
|
+
"CLOUD_DATASET_ACCESS_PATH",
|
|
320
511
|
"CLOUD_DATASET_DASHBOARD_PATH",
|
|
321
512
|
"CLOUD_DATASET_RUN_QUERY_KEY",
|
|
513
|
+
"CLOUD_REFUSAL_CODE",
|
|
322
514
|
"CLOUD_SESSION_HANDOFF_PATH",
|
|
323
515
|
"CLOUD_TEAM_DASHBOARD_PATH",
|
|
324
516
|
"CLOUD_TOKEN_PATH",
|
|
325
517
|
"MAX_JSON_RESPONSE_BYTES",
|
|
518
|
+
"MAX_STATED_MESSAGE_CHARS",
|
|
326
519
|
"MAX_TOKEN_RESPONSE_BYTES",
|
|
327
520
|
"TOKEN_EXCHANGE_MAX_RETRY_SECONDS",
|
|
328
521
|
"TOKEN_EXCHANGE_RETRY_ATTEMPTS",
|
|
522
|
+
"CloudClient",
|
|
329
523
|
"StudioSession",
|
|
330
524
|
"approval_dashboard_url",
|
|
525
|
+
"cloud_refusal",
|
|
331
526
|
"dataset_dashboard_url",
|
|
332
527
|
"dataset_research_dashboard_url",
|
|
333
528
|
"is_device_key",
|
|
@@ -335,5 +530,6 @@ __all__ = [
|
|
|
335
530
|
"require_device_key",
|
|
336
531
|
"run_dashboard_url",
|
|
337
532
|
"run_record_dashboard_url",
|
|
533
|
+
"stated_sentence",
|
|
338
534
|
"team_dashboard_url",
|
|
339
535
|
]
|