mostlyright-data 0.9.0__py3-none-any.whl
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_harness/__init__.py +158 -0
- mostlyright/data_harness/acquisition/__init__.py +55 -0
- mostlyright/data_harness/acquisition/http.py +2773 -0
- mostlyright/data_harness/acquisition/parsing.py +809 -0
- mostlyright/data_harness/acquisition/ranges.py +495 -0
- mostlyright/data_harness/acquisition/result_download.py +360 -0
- mostlyright/data_harness/acquisition/retention_admission.py +248 -0
- mostlyright/data_harness/acquisition/sandbox.py +4888 -0
- mostlyright/data_harness/acquisition/url_policy.py +530 -0
- mostlyright/data_harness/agent_runtime.py +2743 -0
- mostlyright/data_harness/assets/logo-ink.svg +31 -0
- mostlyright/data_harness/backends/__init__.py +28 -0
- mostlyright/data_harness/backends/pandas_backend.py +350 -0
- mostlyright/data_harness/backends/polars_backend.py +366 -0
- mostlyright/data_harness/backends/protocol.py +124 -0
- mostlyright/data_harness/backends/reference.py +83 -0
- mostlyright/data_harness/backends/registry.py +55 -0
- mostlyright/data_harness/backends/restrictions.py +126 -0
- mostlyright/data_harness/canonical.py +333 -0
- mostlyright/data_harness/catalog_job.py +625 -0
- mostlyright/data_harness/cli.py +5398 -0
- mostlyright/data_harness/contracts.py +53 -0
- mostlyright/data_harness/coordinator.py +1307 -0
- mostlyright/data_harness/deploy.py +924 -0
- mostlyright/data_harness/deploy_target.py +312 -0
- mostlyright/data_harness/deployment_evidence.py +1067 -0
- mostlyright/data_harness/event_presentation.py +576 -0
- mostlyright/data_harness/events.py +2152 -0
- mostlyright/data_harness/fast_delimited.py +239 -0
- mostlyright/data_harness/fleet.py +237 -0
- mostlyright/data_harness/formats.py +236 -0
- mostlyright/data_harness/governors.py +1163 -0
- mostlyright/data_harness/hosted_bootstrap.py +972 -0
- mostlyright/data_harness/hosted_crawler.py +1115 -0
- mostlyright/data_harness/hosted_crawler_container_smoke.py +351 -0
- mostlyright/data_harness/hosted_crawler_fetch.py +423 -0
- mostlyright/data_harness/hosted_crawler_job.py +1277 -0
- mostlyright/data_harness/hosted_crawler_protocol.py +676 -0
- mostlyright/data_harness/hosted_dataset.py +1500 -0
- mostlyright/data_harness/hosted_deploy.py +3037 -0
- mostlyright/data_harness/hosted_handoff.py +62 -0
- mostlyright/data_harness/hosted_ingestion_contract.py +504 -0
- mostlyright/data_harness/hosted_ingestion_job.py +356 -0
- mostlyright/data_harness/hosted_ingestion_job_smoke.py +40 -0
- mostlyright/data_harness/hosted_session_container_smoke.py +194 -0
- mostlyright/data_harness/hosted_session_worker.py +3554 -0
- mostlyright/data_harness/hosted_session_worker_job_smoke.py +46 -0
- mostlyright/data_harness/hosted_worker.py +6784 -0
- mostlyright/data_harness/ingestion/__init__.py +56 -0
- mostlyright/data_harness/ingestion/contracts.py +461 -0
- mostlyright/data_harness/ingestion/faults.py +42 -0
- mostlyright/data_harness/ingestion/gcs_store.py +1162 -0
- mostlyright/data_harness/ingestion/spool.py +130 -0
- mostlyright/data_harness/ingestion/store.py +885 -0
- mostlyright/data_harness/key_seam.py +434 -0
- mostlyright/data_harness/linux_process_boundary.py +262 -0
- mostlyright/data_harness/local_contracts.py +2880 -0
- mostlyright/data_harness/local_search/__init__.py +5 -0
- mostlyright/data_harness/local_search/build_index.py +1087 -0
- mostlyright/data_harness/local_search/contracts.py +920 -0
- mostlyright/data_harness/local_search/query_trace.py +266 -0
- mostlyright/data_harness/local_search/retrieval.py +700 -0
- mostlyright/data_harness/local_search/sealed.py +474 -0
- mostlyright/data_harness/local_search/service.py +784 -0
- mostlyright/data_harness/nbrender/CONTRACT.md +212 -0
- mostlyright/data_harness/nbrender/__init__.py +12 -0
- mostlyright/data_harness/nbrender/chrome.py +359 -0
- mostlyright/data_harness/nbrender/code_body.py +266 -0
- mostlyright/data_harness/nbrender/document.py +407 -0
- mostlyright/data_harness/nbrender/frame.py +275 -0
- mostlyright/data_harness/nbrender/interactive.py +337 -0
- mostlyright/data_harness/nbrender/markdown_body.py +477 -0
- mostlyright/data_harness/nbrender/mr_components.py +134 -0
- mostlyright/data_harness/nbrender/outputs_data.py +595 -0
- mostlyright/data_harness/nbrender/outputs_rich.py +906 -0
- mostlyright/data_harness/nbrender/outputs_source.py +260 -0
- mostlyright/data_harness/nbrender/outputs_stage.py +176 -0
- mostlyright/data_harness/nbrender/outputs_text.py +400 -0
- mostlyright/data_harness/nbrender/parse.py +394 -0
- mostlyright/data_harness/nbrender/status.py +40 -0
- mostlyright/data_harness/nbrender/tokens.py +1295 -0
- mostlyright/data_harness/notebook.py +1710 -0
- mostlyright/data_harness/offline.py +2049 -0
- mostlyright/data_harness/operation_registry.py +1007 -0
- mostlyright/data_harness/operator_setup.py +239 -0
- mostlyright/data_harness/pipeline.py +6428 -0
- mostlyright/data_harness/plan_graph.py +2026 -0
- mostlyright/data_harness/preparation/__init__.py +104 -0
- mostlyright/data_harness/preparation/contracts.py +1017 -0
- mostlyright/data_harness/preparation/engine.py +221 -0
- mostlyright/data_harness/preparation/errors.py +14 -0
- mostlyright/data_harness/preparation/gates.py +751 -0
- mostlyright/data_harness/preparation/joins.py +574 -0
- mostlyright/data_harness/preparation/profile.py +384 -0
- mostlyright/data_harness/preparation/table.py +217 -0
- mostlyright/data_harness/preparation/transforms.py +568 -0
- mostlyright/data_harness/progress_events.py +534 -0
- mostlyright/data_harness/readers/__init__.py +46 -0
- mostlyright/data_harness/readers/containers.py +963 -0
- mostlyright/data_harness/readers/contracts.py +542 -0
- mostlyright/data_harness/readers/delimited.py +257 -0
- mostlyright/data_harness/readers/grib2/__init__.py +33 -0
- mostlyright/data_harness/readers/grib2/admission.py +722 -0
- mostlyright/data_harness/readers/grib2/decode.py +1009 -0
- mostlyright/data_harness/readers/grib2/geometry.py +1133 -0
- mostlyright/data_harness/readers/grib2/portable_math.py +501 -0
- mostlyright/data_harness/readers/json_tabular.py +485 -0
- mostlyright/data_harness/readers/registry.py +514 -0
- mostlyright/data_harness/readers/samples/README.md +110 -0
- mostlyright/data_harness/readers/samples/archive.gzip/1.0.0/cities_one_stream/cities.csv.gz +0 -0
- mostlyright/data_harness/readers/samples/archive.gzip/1.0.0/cities_one_stream/expected.json +24 -0
- mostlyright/data_harness/readers/samples/archive.gzip/1.1.0/cities_one_stream/cities.csv.gz +0 -0
- mostlyright/data_harness/readers/samples/archive.gzip/1.1.0/cities_one_stream/expected.json +24 -0
- mostlyright/data_harness/readers/samples/archive.tar/1.0.0/cities_beside_a_directory_entry/cities.tar +0 -0
- mostlyright/data_harness/readers/samples/archive.tar/1.0.0/cities_beside_a_directory_entry/expected.json +24 -0
- mostlyright/data_harness/readers/samples/archive.tar/1.1.0/cities_beside_a_directory_entry/cities.tar +0 -0
- mostlyright/data_harness/readers/samples/archive.tar/1.1.0/cities_beside_a_directory_entry/expected.json +24 -0
- mostlyright/data_harness/readers/samples/archive.zip/1.0.0/cities_beside_a_second_member/cities.zip +0 -0
- mostlyright/data_harness/readers/samples/archive.zip/1.0.0/cities_beside_a_second_member/expected.json +25 -0
- mostlyright/data_harness/readers/samples/archive.zip/1.1.0/dwd_semicolon_station_member/dwd-station.zip +0 -0
- mostlyright/data_harness/readers/samples/archive.zip/1.1.0/dwd_semicolon_station_member/expected.json +25 -0
- mostlyright/data_harness/readers/samples/archive.zip/1.2.0/dwd_semicolon_station_member/dwd-station.zip +0 -0
- mostlyright/data_harness/readers/samples/archive.zip/1.2.0/dwd_semicolon_station_member/expected.json +25 -0
- mostlyright/data_harness/readers/samples/delimited_text/1.0.0/an_ordinary_comma_separated_table/cities.csv +3 -0
- mostlyright/data_harness/readers/samples/delimited_text/1.0.0/an_ordinary_comma_separated_table/expected.json +23 -0
- mostlyright/data_harness/readers/samples/delimited_text/1.0.0/quoted_fields_holding_the_delimiter/cities.tsv +5 -0
- mostlyright/data_harness/readers/samples/delimited_text/1.0.0/quoted_fields_holding_the_delimiter/expected.json +25 -0
- mostlyright/data_harness/readers/samples/delimited_text/1.1.0/an_hourly_observation_table_served_as_plain_text/expected.json +30 -0
- mostlyright/data_harness/readers/samples/delimited_text/1.1.0/an_hourly_observation_table_served_as_plain_text/observations.csv +5 -0
- mostlyright/data_harness/readers/samples/json.tabular/1.0.0/nested_hourly_observations/expected.json +44 -0
- mostlyright/data_harness/readers/samples/json.tabular/1.0.0/nested_hourly_observations/stations.json +1 -0
- mostlyright/data_harness/readers/samples/json.tabular/1.1.0/an_observation_stream_served_as_plain_text/expected.json +48 -0
- mostlyright/data_harness/readers/samples/json.tabular/1.1.0/an_observation_stream_served_as_plain_text/observations.ndjson +4 -0
- mostlyright/data_harness/readers/samples/spreadsheet.xlsx/1.0.0/an_ordinary_table_beside_a_second_sheet/cities.xlsx +0 -0
- mostlyright/data_harness/readers/samples/spreadsheet.xlsx/1.0.0/an_ordinary_table_beside_a_second_sheet/expected.json +24 -0
- mostlyright/data_harness/readers/samples/spreadsheet.xlsx/1.0.0/shares_the_workbook_had_already_computed/expected.json +27 -0
- mostlyright/data_harness/readers/samples/spreadsheet.xlsx/1.0.0/shares_the_workbook_had_already_computed/shares.xlsx +0 -0
- mostlyright/data_harness/readers/samples/spreadsheet.xlsx/1.1.0/shares_the_workbook_had_already_computed/expected.json +27 -0
- mostlyright/data_harness/readers/samples/spreadsheet.xlsx/1.1.0/shares_the_workbook_had_already_computed/shares.xlsx +0 -0
- mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/README.md +20 -0
- mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/gfs_2m_temperature/expected.json +55 -0
- mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/gfs_2m_temperature/gfs-2m-temperature.grib2 +0 -0
- mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/hrrr_2m_temperature/expected.json +54 -0
- mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/hrrr_2m_temperature/hrrr-2m-temperature.grib2 +0 -0
- mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/hrrr_categorical_rain/expected.json +54 -0
- mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/hrrr_categorical_rain/hrrr-categorical-rain.grib2 +0 -0
- mostlyright/data_harness/readers/samples/weather.grib2/2.0.0/hrrr_2m_temperature/expected.json +54 -0
- mostlyright/data_harness/readers/samples/weather.grib2/2.0.0/hrrr_2m_temperature/hrrr-2m-temperature.grib2 +0 -0
- mostlyright/data_harness/readers/samples.py +582 -0
- mostlyright/data_harness/readers/spreadsheet.py +803 -0
- mostlyright/data_harness/readers/tabular.py +510 -0
- mostlyright/data_harness/recipe.py +5321 -0
- mostlyright/data_harness/repair/__init__.py +78 -0
- mostlyright/data_harness/repair/adapters.py +274 -0
- mostlyright/data_harness/repair/contracts.py +872 -0
- mostlyright/data_harness/repair/coordinator.py +1099 -0
- mostlyright/data_harness/repair/errors.py +16 -0
- mostlyright/data_harness/review.py +2533 -0
- mostlyright/data_harness/rowset.py +283 -0
- mostlyright/data_harness/serving.py +1975 -0
- mostlyright/data_harness/serving_edge.py +590 -0
- mostlyright/data_harness/serving_http.py +1031 -0
- mostlyright/data_harness/session_probes.py +759 -0
- mostlyright/data_harness/signing.py +101 -0
- mostlyright/data_harness/source_discovery.py +898 -0
- mostlyright/data_harness/sources/__init__.py +209 -0
- mostlyright/data_harness/sources/_adapter_steps.py +213 -0
- mostlyright/data_harness/sources/adapters.py +1214 -0
- mostlyright/data_harness/sources/cadence.py +1428 -0
- mostlyright/data_harness/sources/cadence_emission.py +453 -0
- mostlyright/data_harness/sources/cadence_history.py +546 -0
- mostlyright/data_harness/sources/catalog/__init__.py +17 -0
- mostlyright/data_harness/sources/catalog/admission.py +477 -0
- mostlyright/data_harness/sources/catalog/authoring.py +1701 -0
- mostlyright/data_harness/sources/catalog/authoring_policy.py +701 -0
- mostlyright/data_harness/sources/catalog/authoring_shards.py +1217 -0
- mostlyright/data_harness/sources/catalog/bounded_io.py +231 -0
- mostlyright/data_harness/sources/catalog/channel.py +523 -0
- mostlyright/data_harness/sources/catalog/channel_client.py +296 -0
- mostlyright/data_harness/sources/catalog/contracts.py +825 -0
- mostlyright/data_harness/sources/catalog/coverage.py +137 -0
- mostlyright/data_harness/sources/catalog/delta.py +1340 -0
- mostlyright/data_harness/sources/catalog/embedding.py +532 -0
- mostlyright/data_harness/sources/catalog/entry_v2.py +1182 -0
- mostlyright/data_harness/sources/catalog/fill.py +3889 -0
- mostlyright/data_harness/sources/catalog/fill_partitions.py +459 -0
- mostlyright/data_harness/sources/catalog/fill_staging.py +1105 -0
- mostlyright/data_harness/sources/catalog/gating.py +374 -0
- mostlyright/data_harness/sources/catalog/generation_receipt.py +1607 -0
- mostlyright/data_harness/sources/catalog/harvest/__init__.py +7 -0
- mostlyright/data_harness/sources/catalog/harvest/ckan.py +384 -0
- mostlyright/data_harness/sources/catalog/harvest/datagov_v4.py +798 -0
- mostlyright/data_harness/sources/catalog/harvest/protocol.py +964 -0
- mostlyright/data_harness/sources/catalog/harvest/sdmx.py +445 -0
- mostlyright/data_harness/sources/catalog/harvest/stac.py +384 -0
- mostlyright/data_harness/sources/catalog/health.py +447 -0
- mostlyright/data_harness/sources/catalog/hosted_catalog.py +105 -0
- mostlyright/data_harness/sources/catalog/identity_history.py +1549 -0
- mostlyright/data_harness/sources/catalog/neural.py +1618 -0
- mostlyright/data_harness/sources/catalog/packed_catalog.py +2345 -0
- mostlyright/data_harness/sources/catalog/packed_retrieval.py +1517 -0
- mostlyright/data_harness/sources/catalog/packed_writer.py +2802 -0
- mostlyright/data_harness/sources/catalog/query_trace.py +1037 -0
- mostlyright/data_harness/sources/catalog/recommend.py +171 -0
- mostlyright/data_harness/sources/catalog/retrieval.py +230 -0
- mostlyright/data_harness/sources/catalog/retrieval_manifest.py +995 -0
- mostlyright/data_harness/sources/catalog/rights_decisions.py +254 -0
- mostlyright/data_harness/sources/catalog/sealed.py +560 -0
- mostlyright/data_harness/sources/catalog/search.py +230 -0
- mostlyright/data_harness/sources/catalog/streaming_delta.py +1097 -0
- mostlyright/data_harness/sources/catalog/update.py +891 -0
- mostlyright/data_harness/sources/collections.py +815 -0
- mostlyright/data_harness/sources/contracts.py +2223 -0
- mostlyright/data_harness/sources/deletion.py +761 -0
- mostlyright/data_harness/sources/fitness.py +162 -0
- mostlyright/data_harness/sources/governance.py +163 -0
- mostlyright/data_harness/sources/hosted.py +173 -0
- mostlyright/data_harness/sources/integration.py +218 -0
- mostlyright/data_harness/sources/range_reader.py +418 -0
- mostlyright/data_harness/sources/registry.py +514 -0
- mostlyright/data_harness/sources/rights_rule.py +59 -0
- mostlyright/data_harness/sources/source_cadence_vectors.v1.json +1 -0
- mostlyright/data_harness/sources/sports.py +521 -0
- mostlyright/data_harness/sources/stream.py +524 -0
- mostlyright/data_harness/sources/stream_connector.py +418 -0
- mostlyright/data_harness/sources/stream_recorder.py +1404 -0
- mostlyright/data_harness/studio_boundary.py +2019 -0
- mostlyright/data_harness/thin/__init__.py +37 -0
- mostlyright/data_harness/thin/acquire.py +1137 -0
- mostlyright/data_harness/thin/acquire_cancel.py +579 -0
- mostlyright/data_harness/thin/approvals.py +617 -0
- mostlyright/data_harness/thin/commands.py +406 -0
- mostlyright/data_harness/thin/download.py +194 -0
- mostlyright/data_harness/thin/narrative.py +589 -0
- mostlyright/data_harness/thin/parity.py +1070 -0
- mostlyright/data_harness/thin/propose.py +2759 -0
- mostlyright/data_harness/thin/research.py +1663 -0
- mostlyright/data_harness/thin/router.py +924 -0
- mostlyright/data_harness/thin/runs.py +519 -0
- mostlyright/data_harness/thin/session.py +281 -0
- mostlyright/data_harness/thin/stream.py +501 -0
- mostlyright/data_harness/thin/transport.py +187 -0
- mostlyright/data_harness/thin/vocabulary.py +368 -0
- mostlyright/data_harness/thin/workers.py +164 -0
- mostlyright/data_harness/ucum/TABLE-PIN.json +40 -0
- mostlyright/data_harness/ucum/ucum-subset.v1.json +632 -0
- mostlyright/data_harness/unit_flow.py +927 -0
- mostlyright/data_harness/units.py +572 -0
- mostlyright/data_harness/ux/__init__.py +9 -0
- mostlyright/data_harness/ux/approve.py +485 -0
- mostlyright/data_harness/ux/author_yaml.py +597 -0
- mostlyright/data_harness/ux/cloud_auth.py +447 -0
- mostlyright/data_harness/ux/commands/__init__.py +260 -0
- mostlyright/data_harness/ux/commands/approve.py +136 -0
- mostlyright/data_harness/ux/commands/auth.py +744 -0
- mostlyright/data_harness/ux/commands/author.py +79 -0
- mostlyright/data_harness/ux/commands/catalog_author.py +403 -0
- mostlyright/data_harness/ux/commands/catalog_fill.py +523 -0
- mostlyright/data_harness/ux/commands/catalog_harvest.py +545 -0
- mostlyright/data_harness/ux/commands/catalog_publish.py +1838 -0
- mostlyright/data_harness/ux/commands/catalog_search.py +71 -0
- mostlyright/data_harness/ux/commands/catalog_update.py +437 -0
- mostlyright/data_harness/ux/commands/deploy.py +134 -0
- mostlyright/data_harness/ux/commands/deploy_dataset.py +98 -0
- mostlyright/data_harness/ux/commands/deploy_plan.py +105 -0
- mostlyright/data_harness/ux/commands/deploy_status.py +104 -0
- mostlyright/data_harness/ux/commands/diff.py +74 -0
- mostlyright/data_harness/ux/commands/index.py +84 -0
- mostlyright/data_harness/ux/commands/inventory.py +47 -0
- mostlyright/data_harness/ux/commands/list_builds.py +143 -0
- mostlyright/data_harness/ux/commands/login.py +63 -0
- mostlyright/data_harness/ux/commands/peek.py +236 -0
- mostlyright/data_harness/ux/commands/plan_check.py +90 -0
- mostlyright/data_harness/ux/commands/preflight.py +97 -0
- mostlyright/data_harness/ux/commands/record.py +107 -0
- mostlyright/data_harness/ux/commands/review_setup.py +47 -0
- mostlyright/data_harness/ux/commands/search.py +440 -0
- mostlyright/data_harness/ux/commands/show.py +61 -0
- mostlyright/data_harness/ux/commands/whoami.py +37 -0
- mostlyright/data_harness/ux/credential_native.py +551 -0
- mostlyright/data_harness/ux/credential_store.py +1055 -0
- mostlyright/data_harness/ux/credentials.py +631 -0
- mostlyright/data_harness/ux/diffing.py +444 -0
- mostlyright/data_harness/ux/headline.py +671 -0
- mostlyright/data_harness/ux/hosted_acquisition.py +974 -0
- mostlyright/data_harness/ux/hosted_run_status.py +619 -0
- mostlyright/data_harness/ux/inventory.py +427 -0
- mostlyright/data_harness/ux/local_review.py +375 -0
- mostlyright/data_harness/ux/login.py +691 -0
- mostlyright/data_harness/ux/path_kind.py +147 -0
- mostlyright/data_harness/ux/peek.py +1000 -0
- mostlyright/data_harness/ux/plain_file.py +178 -0
- mostlyright/data_harness/ux/plan_check.py +311 -0
- mostlyright/data_harness/ux/preflight.py +918 -0
- mostlyright/data_harness/ux/readers.py +1124 -0
- mostlyright/data_harness/ux/remediation.py +2195 -0
- mostlyright/data_harness/ux/render.py +657 -0
- mostlyright/data_harness/ux/workload.py +1077 -0
- mostlyright/data_harness/viewer.py +3713 -0
- mostlyright/data_harness/visual_run/__init__.py +83 -0
- mostlyright/data_harness/visual_run/authoring.py +235 -0
- mostlyright/data_harness/visual_run/contracts.py +673 -0
- mostlyright/data_harness/visual_run/materialize.py +486 -0
- mostlyright/data_harness/visual_run/observations.py +874 -0
- mostlyright/data_harness/visual_run/query.py +259 -0
- mostlyright/data_harness/visual_run/reducer.py +280 -0
- mostlyright/data_harness/visual_run/sdk.py +892 -0
- mostlyright/data_harness/visual_run/store.py +584 -0
- mostlyright/data_harness/visual_run/transport.py +239 -0
- mostlyright/data_harness/watch.py +2999 -0
- mostlyright_data-0.9.0.dist-info/METADATA +607 -0
- mostlyright_data-0.9.0.dist-info/RECORD +314 -0
- mostlyright_data-0.9.0.dist-info/WHEEL +4 -0
- mostlyright_data-0.9.0.dist-info/entry_points.txt +12 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"column_names": [
|
|
3
|
+
"city",
|
|
4
|
+
"population"
|
|
5
|
+
],
|
|
6
|
+
"decode_options": {
|
|
7
|
+
"header": true,
|
|
8
|
+
"member": "cities.tsv",
|
|
9
|
+
"member_format": "tsv"
|
|
10
|
+
},
|
|
11
|
+
"family_id": "archive.tar",
|
|
12
|
+
"family_version": "1.0.0",
|
|
13
|
+
"flags": [],
|
|
14
|
+
"normalized_sha256": "81de33fff0533b3370011dea5bdc26afe38cc6dd7ea53306f2b589509a8551a0",
|
|
15
|
+
"provenance": {
|
|
16
|
+
"licence": "project-owned test fixture, redistributable with the package",
|
|
17
|
+
"origin": "authored for this test",
|
|
18
|
+
"retrieved": "2026-08-07",
|
|
19
|
+
"why": "proves that a directory entry and an unrelated second member sit beside the named member without changing what is selected, and that the recipe's stated member form decides the delimiter rather than the filename suffix"
|
|
20
|
+
},
|
|
21
|
+
"row_count": 2,
|
|
22
|
+
"sample_file": "cities.tar",
|
|
23
|
+
"warm_up": true
|
|
24
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"column_names": [
|
|
3
|
+
"city",
|
|
4
|
+
"population"
|
|
5
|
+
],
|
|
6
|
+
"decode_options": {
|
|
7
|
+
"header": true,
|
|
8
|
+
"member": "cities.tsv",
|
|
9
|
+
"member_format": "tsv"
|
|
10
|
+
},
|
|
11
|
+
"family_id": "archive.tar",
|
|
12
|
+
"family_version": "1.1.0",
|
|
13
|
+
"flags": [],
|
|
14
|
+
"normalized_sha256": "81de33fff0533b3370011dea5bdc26afe38cc6dd7ea53306f2b589509a8551a0",
|
|
15
|
+
"provenance": {
|
|
16
|
+
"licence": "project-owned test fixture, redistributable with the package",
|
|
17
|
+
"origin": "authored for this test",
|
|
18
|
+
"retrieved": "2026-08-07",
|
|
19
|
+
"why": "proves that a directory entry and an unrelated second member sit beside the named member without changing what is selected, and that the recipe's stated member form decides the delimiter rather than the filename suffix \u2014 carried byte-for-byte from the archive.tar@1.0.0 warm-up sample because this coordinate widens only the label a response may arrive under and inherits the decode unchanged."
|
|
20
|
+
},
|
|
21
|
+
"row_count": 2,
|
|
22
|
+
"sample_file": "cities.tar",
|
|
23
|
+
"warm_up": true
|
|
24
|
+
}
|
mostlyright/data_harness/readers/samples/archive.zip/1.0.0/cities_beside_a_second_member/cities.zip
ADDED
|
Binary file
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"column_names": [
|
|
3
|
+
"city",
|
|
4
|
+
"population",
|
|
5
|
+
"note"
|
|
6
|
+
],
|
|
7
|
+
"decode_options": {
|
|
8
|
+
"header": true,
|
|
9
|
+
"member": "cities.csv",
|
|
10
|
+
"member_format": "csv"
|
|
11
|
+
},
|
|
12
|
+
"family_id": "archive.zip",
|
|
13
|
+
"family_version": "1.0.0",
|
|
14
|
+
"flags": [],
|
|
15
|
+
"normalized_sha256": "ddd5ea7866fe454d7b7ed2460299b500e168b0c0ae507f8dfafb4f0454df8036",
|
|
16
|
+
"provenance": {
|
|
17
|
+
"licence": "project-owned test fixture, redistributable with the package",
|
|
18
|
+
"origin": "authored for this test",
|
|
19
|
+
"retrieved": "2026-08-07",
|
|
20
|
+
"why": "proves clause 2: the archive carries a second member the recipe does not name, so selection is by name and never by count, and the named member carries a quoted field with an embedded delimiter and a missing cell so the canonical emitter's quoting and empty-cell rules are exercised end to end"
|
|
21
|
+
},
|
|
22
|
+
"row_count": 2,
|
|
23
|
+
"sample_file": "cities.zip",
|
|
24
|
+
"warm_up": true
|
|
25
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"column_names": [
|
|
3
|
+
"STATIONS_ID",
|
|
4
|
+
"MESS_DATUM",
|
|
5
|
+
"TMK"
|
|
6
|
+
],
|
|
7
|
+
"decode_options": {
|
|
8
|
+
"header": true,
|
|
9
|
+
"member": "produkt_klima_tag_00044_akt.txt",
|
|
10
|
+
"member_format": "semicolon"
|
|
11
|
+
},
|
|
12
|
+
"family_id": "archive.zip",
|
|
13
|
+
"family_version": "1.1.0",
|
|
14
|
+
"flags": [],
|
|
15
|
+
"normalized_sha256": "cb5903de1a0e6da1e3801db8cf69ad2c3b6e1d8d7d6d2fbe4da530396bc2d35c",
|
|
16
|
+
"provenance": {
|
|
17
|
+
"licence": "project-owned synthetic fixture, redistributable with the package",
|
|
18
|
+
"origin": "authored as a DWD-shaped station-member fixture; contains no DWD observations",
|
|
19
|
+
"retrieved": "2026-08-12",
|
|
20
|
+
"why": "certifies archive.zip@1.1.0 opening one explicitly named semicolon-delimited station text member and emitting canonical CSV"
|
|
21
|
+
},
|
|
22
|
+
"row_count": 1,
|
|
23
|
+
"sample_file": "dwd-station.zip",
|
|
24
|
+
"warm_up": true
|
|
25
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"column_names": [
|
|
3
|
+
"STATIONS_ID",
|
|
4
|
+
"MESS_DATUM",
|
|
5
|
+
"TMK"
|
|
6
|
+
],
|
|
7
|
+
"decode_options": {
|
|
8
|
+
"header": true,
|
|
9
|
+
"member": "produkt_klima_tag_00044_akt.txt",
|
|
10
|
+
"member_format": "semicolon"
|
|
11
|
+
},
|
|
12
|
+
"family_id": "archive.zip",
|
|
13
|
+
"family_version": "1.2.0",
|
|
14
|
+
"flags": [],
|
|
15
|
+
"normalized_sha256": "cb5903de1a0e6da1e3801db8cf69ad2c3b6e1d8d7d6d2fbe4da530396bc2d35c",
|
|
16
|
+
"provenance": {
|
|
17
|
+
"licence": "project-owned synthetic fixture, redistributable with the package",
|
|
18
|
+
"origin": "authored as a DWD-shaped station-member fixture; contains no DWD observations",
|
|
19
|
+
"retrieved": "2026-08-12",
|
|
20
|
+
"why": "certifies archive.zip@1.2.0 opening one explicitly named semicolon-delimited station text member and emitting canonical CSV, carried byte-for-byte from the archive.zip@1.1.0 warm-up sample because this coordinate widens only the label a response may arrive under and inherits the decode unchanged, so the answer this sample records is the same answer."
|
|
21
|
+
},
|
|
22
|
+
"row_count": 1,
|
|
23
|
+
"sample_file": "dwd-station.zip",
|
|
24
|
+
"warm_up": true
|
|
25
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"family_id": "delimited_text",
|
|
3
|
+
"family_version": "1.0.0",
|
|
4
|
+
"decode_options": {
|
|
5
|
+
"delimiter": ",",
|
|
6
|
+
"header": true,
|
|
7
|
+
"encoding": "utf-8"
|
|
8
|
+
},
|
|
9
|
+
"sample_file": "cities.csv",
|
|
10
|
+
"normalized_sha256": "9d0dca0495303af224c23a20d6d7772d4069f89666a9ab4abc267d08bd2e8486",
|
|
11
|
+
"row_count": 2,
|
|
12
|
+
"column_names": [
|
|
13
|
+
"city",
|
|
14
|
+
"population"
|
|
15
|
+
],
|
|
16
|
+
"flags": [],
|
|
17
|
+
"provenance": {
|
|
18
|
+
"origin": "authored for this test",
|
|
19
|
+
"retrieved": "2026-08-07",
|
|
20
|
+
"licence": "project-owned, redistributable with this repository",
|
|
21
|
+
"why": "The same family reading the other admitted separator, with no quoting anywhere, so the ordinary case is covered as well as the hostile one."
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"family_id": "delimited_text",
|
|
3
|
+
"family_version": "1.0.0",
|
|
4
|
+
"decode_options": {
|
|
5
|
+
"delimiter": "\t",
|
|
6
|
+
"header": true,
|
|
7
|
+
"encoding": "utf-8"
|
|
8
|
+
},
|
|
9
|
+
"sample_file": "cities.tsv",
|
|
10
|
+
"normalized_sha256": "4b6492f2950f4940d4ce9d3a696a88373dd9810b9951587ba2933c427ae1f6b9",
|
|
11
|
+
"row_count": 3,
|
|
12
|
+
"column_names": [
|
|
13
|
+
"city",
|
|
14
|
+
"note",
|
|
15
|
+
"population"
|
|
16
|
+
],
|
|
17
|
+
"flags": [],
|
|
18
|
+
"provenance": {
|
|
19
|
+
"origin": "authored for this test",
|
|
20
|
+
"retrieved": "2026-08-07",
|
|
21
|
+
"licence": "project-owned, redistributable with this repository",
|
|
22
|
+
"why": "A tab-separated table whose fields hold a tab, a doubled quote, a newline, and a missing cell, so the quoting rules and the empty-cell rule are proved on the path a refresh warms up on."
|
|
23
|
+
},
|
|
24
|
+
"warm_up": true
|
|
25
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"family_id": "delimited_text",
|
|
3
|
+
"family_version": "1.1.0",
|
|
4
|
+
"decode_options": {
|
|
5
|
+
"delimiter": ",",
|
|
6
|
+
"header": true,
|
|
7
|
+
"encoding": "utf-8"
|
|
8
|
+
},
|
|
9
|
+
"sample_file": "observations.csv",
|
|
10
|
+
"normalized_sha256": "3d6dda952c8a4faf3f8a6f4f219ce1af101202aa0fcdc192a2a3d14404019257",
|
|
11
|
+
"row_count": 4,
|
|
12
|
+
"column_names": [
|
|
13
|
+
"station",
|
|
14
|
+
"valid",
|
|
15
|
+
"tmpf",
|
|
16
|
+
"dwpf",
|
|
17
|
+
"drct",
|
|
18
|
+
"sknt",
|
|
19
|
+
"alti",
|
|
20
|
+
"vsby"
|
|
21
|
+
],
|
|
22
|
+
"flags": [],
|
|
23
|
+
"provenance": {
|
|
24
|
+
"origin": "authored for this test",
|
|
25
|
+
"retrieved": "2026-08-19",
|
|
26
|
+
"licence": "project-owned, redistributable with this repository",
|
|
27
|
+
"why": "An hourly observation table in the shape a public mesonet archive answers with, which is the shape this coordinate exists to reach: the publishers that serve it label it text/plain. Synthetic rows, so no publisher's data is redistributed. It carries a row with two empty readings, so the empty-cell rule is proved on the path a refresh warms up on, and the decode it proves is the one 1.0.0 performs."
|
|
28
|
+
},
|
|
29
|
+
"warm_up": true
|
|
30
|
+
}
|
mostlyright/data_harness/readers/samples/json.tabular/1.0.0/nested_hourly_observations/expected.json
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
{
|
|
2
|
+
"family_id": "json.tabular",
|
|
3
|
+
"family_version": "1.0.0",
|
|
4
|
+
"decode_options": {
|
|
5
|
+
"document_format": "json",
|
|
6
|
+
"records_pointer": "/stations",
|
|
7
|
+
"expand": [
|
|
8
|
+
"/observations"
|
|
9
|
+
],
|
|
10
|
+
"columns": [
|
|
11
|
+
{
|
|
12
|
+
"name": "station_id",
|
|
13
|
+
"pointer": "/id",
|
|
14
|
+
"required": true
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"name": "time",
|
|
18
|
+
"pointer": "/observations/time",
|
|
19
|
+
"required": true
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"name": "rain",
|
|
23
|
+
"pointer": "/observations/rain",
|
|
24
|
+
"required": true
|
|
25
|
+
}
|
|
26
|
+
]
|
|
27
|
+
},
|
|
28
|
+
"sample_file": "stations.json",
|
|
29
|
+
"normalized_sha256": "23c40cf7e3478f1678a900dc562833414776288f0b4f228a0158fc9d3c58c216",
|
|
30
|
+
"row_count": 3,
|
|
31
|
+
"column_names": [
|
|
32
|
+
"station_id",
|
|
33
|
+
"time",
|
|
34
|
+
"rain"
|
|
35
|
+
],
|
|
36
|
+
"flags": [],
|
|
37
|
+
"provenance": {
|
|
38
|
+
"origin": "authored for this test",
|
|
39
|
+
"retrieved": "2026-08-12",
|
|
40
|
+
"licence": "project-owned, redistributable with this repository",
|
|
41
|
+
"why": "A nested hourly-observation document proving record selection, parent-field preservation, array expansion, scalar projection, numbers, and nulls on the warm-up path."
|
|
42
|
+
},
|
|
43
|
+
"warm_up": true
|
|
44
|
+
}
|
mostlyright/data_harness/readers/samples/json.tabular/1.0.0/nested_hourly_observations/stations.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"stations":[{"id":"A","observations":[{"time":"2026-08-12T00:00:00Z","rain":1.25},{"time":"2026-08-12T01:00:00Z","rain":null}]},{"id":"B","observations":[{"time":"2026-08-12T00:00:00Z","rain":0}]}]}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"family_id": "json.tabular",
|
|
3
|
+
"family_version": "1.1.0",
|
|
4
|
+
"decode_options": {
|
|
5
|
+
"document_format": "ndjson",
|
|
6
|
+
"records_pointer": "",
|
|
7
|
+
"expand": [],
|
|
8
|
+
"columns": [
|
|
9
|
+
{
|
|
10
|
+
"name": "station",
|
|
11
|
+
"pointer": "/station",
|
|
12
|
+
"required": true
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"name": "valid",
|
|
16
|
+
"pointer": "/valid",
|
|
17
|
+
"required": true
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"name": "tmpf",
|
|
21
|
+
"pointer": "/tmpf",
|
|
22
|
+
"required": false
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"name": "dwpf",
|
|
26
|
+
"pointer": "/dwpf",
|
|
27
|
+
"required": false
|
|
28
|
+
}
|
|
29
|
+
]
|
|
30
|
+
},
|
|
31
|
+
"sample_file": "observations.ndjson",
|
|
32
|
+
"normalized_sha256": "779568246d6c8c66bed330ed82f6d3f4215733e48b6fb2ced5b1c6ebfc5b28c5",
|
|
33
|
+
"row_count": 4,
|
|
34
|
+
"column_names": [
|
|
35
|
+
"station",
|
|
36
|
+
"valid",
|
|
37
|
+
"tmpf",
|
|
38
|
+
"dwpf"
|
|
39
|
+
],
|
|
40
|
+
"flags": [],
|
|
41
|
+
"provenance": {
|
|
42
|
+
"origin": "authored for this test",
|
|
43
|
+
"retrieved": "2026-08-20",
|
|
44
|
+
"licence": "project-owned, redistributable with this repository",
|
|
45
|
+
"why": "An hourly observation stream in the shape a public agency endpoint answers with, which is the shape this coordinate exists to reach: the publishers that serve NDJSON label it text/plain. Synthetic rows, so no publisher's data is redistributed. It carries a record with two null readings, so the empty-cell rule is proved on the path a refresh warms up on, and the decode it proves is the one 1.0.0 performs."
|
|
46
|
+
},
|
|
47
|
+
"warm_up": true
|
|
48
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
{"station": "DSM", "valid": "2026-08-18T00:54:00Z", "tmpf": 78.0, "dwpf": 66.0}
|
|
2
|
+
{"station": "DSM", "valid": "2026-08-18T01:54:00Z", "tmpf": 77.0, "dwpf": 66.0}
|
|
3
|
+
{"station": "DSM", "valid": "2026-08-18T02:54:00Z", "tmpf": null, "dwpf": null}
|
|
4
|
+
{"station": "AMW", "valid": "2026-08-18T00:54:00Z", "tmpf": 75.0, "dwpf": 64.0}
|
|
Binary file
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"column_names": [
|
|
3
|
+
"city",
|
|
4
|
+
"population",
|
|
5
|
+
"measured_on"
|
|
6
|
+
],
|
|
7
|
+
"decode_options": {
|
|
8
|
+
"header_row": 1,
|
|
9
|
+
"range": "A1:C3",
|
|
10
|
+
"sheet": "Cities"
|
|
11
|
+
},
|
|
12
|
+
"family_id": "spreadsheet.xlsx",
|
|
13
|
+
"family_version": "1.0.0",
|
|
14
|
+
"flags": [],
|
|
15
|
+
"normalized_sha256": "ed1b6bba5c99de6563f3dd16fa1d3944b0d7d74b29814434dc160f9be5db8f28",
|
|
16
|
+
"provenance": {
|
|
17
|
+
"licence": "project-owned test fixture, redistributable with the package",
|
|
18
|
+
"origin": "authored for this test",
|
|
19
|
+
"retrieved": "2026-08-07",
|
|
20
|
+
"why": "proves the ordinary case and the two rules most likely to move under it: the workbook carries a second sheet the recipe does not name, so selection is by name and not by position, and the named window holds a date and a missing cell, so the stated ISO 8601 date form and the empty-cell rule are exercised end to end rather than asserted. It carries no formula, which is what makes it the control for the flag the other sample sets"
|
|
21
|
+
},
|
|
22
|
+
"row_count": 2,
|
|
23
|
+
"sample_file": "cities.xlsx"
|
|
24
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"column_names": [
|
|
3
|
+
"city",
|
|
4
|
+
"population",
|
|
5
|
+
"share"
|
|
6
|
+
],
|
|
7
|
+
"decode_options": {
|
|
8
|
+
"header_row": 1,
|
|
9
|
+
"range": "A1:C4",
|
|
10
|
+
"sheet": "Cities"
|
|
11
|
+
},
|
|
12
|
+
"family_id": "spreadsheet.xlsx",
|
|
13
|
+
"family_version": "1.0.0",
|
|
14
|
+
"flags": [
|
|
15
|
+
"contains_formula_cells"
|
|
16
|
+
],
|
|
17
|
+
"normalized_sha256": "83e59dd74d67a2cd574971674c554fcc1a8b726072848374f81a0552d4f03b98",
|
|
18
|
+
"provenance": {
|
|
19
|
+
"licence": "project-owned test fixture, redistributable with the package",
|
|
20
|
+
"origin": "authored for this test",
|
|
21
|
+
"retrieved": "2026-08-07",
|
|
22
|
+
"why": "proves the behaviour that is this family's whole reason for existing: two of its cells hold formulas whose results the authoring application had already computed, so the decode uses those cached values and records contains_formula_cells on the receipt. It is the warm-up sample because it is the one that exercises both passes over the workbook, which is where an engine change would show up first, and its last row leaves the computed column empty so the missing-value rule is exercised beside the flag"
|
|
23
|
+
},
|
|
24
|
+
"row_count": 3,
|
|
25
|
+
"sample_file": "shares.xlsx",
|
|
26
|
+
"warm_up": true
|
|
27
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"column_names": [
|
|
3
|
+
"city",
|
|
4
|
+
"population",
|
|
5
|
+
"share"
|
|
6
|
+
],
|
|
7
|
+
"decode_options": {
|
|
8
|
+
"header_row": 1,
|
|
9
|
+
"range": "A1:C4",
|
|
10
|
+
"sheet": "Cities"
|
|
11
|
+
},
|
|
12
|
+
"family_id": "spreadsheet.xlsx",
|
|
13
|
+
"family_version": "1.1.0",
|
|
14
|
+
"flags": [
|
|
15
|
+
"contains_formula_cells"
|
|
16
|
+
],
|
|
17
|
+
"normalized_sha256": "83e59dd74d67a2cd574971674c554fcc1a8b726072848374f81a0552d4f03b98",
|
|
18
|
+
"provenance": {
|
|
19
|
+
"licence": "project-owned test fixture, redistributable with the package",
|
|
20
|
+
"origin": "authored for this test",
|
|
21
|
+
"retrieved": "2026-08-07",
|
|
22
|
+
"why": "proves this family's whole reason for existing \u2014 two cells hold formulas whose results the authoring application had already computed, so the decode uses those cached values, records contains_formula_cells on the receipt, and leaves the last computed cell empty so the missing-value rule is exercised beside the flag \u2014 carried byte-for-byte from the spreadsheet.xlsx@1.0.0 warm-up sample because this coordinate widens only the label a response may arrive under and inherits the decode unchanged."
|
|
23
|
+
},
|
|
24
|
+
"row_count": 3,
|
|
25
|
+
"sample_file": "shares.xlsx",
|
|
26
|
+
"warm_up": true
|
|
27
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Weather GRIB2 samples
|
|
2
|
+
|
|
3
|
+
This directory contains three single-message NOAA GRIB2 samples for
|
|
4
|
+
`weather.grib2@1.0.0`.
|
|
5
|
+
|
|
6
|
+
| Directory | Field | Grid | Packing | Bytes |
|
|
7
|
+
|---|---|---|---|---:|
|
|
8
|
+
| `gfs_2m_temperature` | GFS 2 m temperature analysis | 3.0 regular latitude/longitude | 5.3 complex with spatial differencing | 48,558 |
|
|
9
|
+
| `hrrr_2m_temperature` | HRRR 2 m temperature analysis | 3.30 Lambert conformal | 5.3 complex with spatial differencing | 1,194,490 |
|
|
10
|
+
| `hrrr_categorical_rain` | HRRR categorical rain at the surface | 3.30 Lambert conformal | 5.0 simple | 188 |
|
|
11
|
+
|
|
12
|
+
Each `expected.json` records decode options, normalized output digest, row count, column names,
|
|
13
|
+
flags, source URL and byte range, retrieval date, licence, and selection reason. The GFS temperature
|
|
14
|
+
sample is the warm-up input.
|
|
15
|
+
|
|
16
|
+
The samples were acquired manually by reading the publisher's index sidecar and requesting the
|
|
17
|
+
listed byte range once. The Reader accepts an extracted single record; it does not fetch ranges.
|
|
18
|
+
|
|
19
|
+
`hrrr_2m_temperature` exceeds the normal sample-size ceiling because 1,194,490 bytes is the complete
|
|
20
|
+
record. Its exception is listed in `tests/test_reader_samples.py`.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
{
|
|
2
|
+
"column_names": [
|
|
3
|
+
"point_id",
|
|
4
|
+
"requested_latitude",
|
|
5
|
+
"requested_longitude",
|
|
6
|
+
"grid_row",
|
|
7
|
+
"grid_column",
|
|
8
|
+
"grid_latitude",
|
|
9
|
+
"grid_longitude",
|
|
10
|
+
"valid_time",
|
|
11
|
+
"variable",
|
|
12
|
+
"value"
|
|
13
|
+
],
|
|
14
|
+
"decode_options": {
|
|
15
|
+
"admission_allowlist_version": 1,
|
|
16
|
+
"points": [
|
|
17
|
+
{
|
|
18
|
+
"id": "prague",
|
|
19
|
+
"latitude": "50.0755",
|
|
20
|
+
"longitude": "14.4378"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"id": "denver",
|
|
24
|
+
"latitude": "39.7392",
|
|
25
|
+
"longitude": "-104.9903"
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"id": "sydney",
|
|
29
|
+
"latitude": "-33.8688",
|
|
30
|
+
"longitude": "151.2093"
|
|
31
|
+
}
|
|
32
|
+
],
|
|
33
|
+
"variable": {
|
|
34
|
+
"discipline": 0,
|
|
35
|
+
"name": "temperature_2m",
|
|
36
|
+
"parameter_category": 0,
|
|
37
|
+
"parameter_number": 0,
|
|
38
|
+
"surface_type": 103,
|
|
39
|
+
"surface_value": 2
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
"family_id": "weather.grib2",
|
|
43
|
+
"family_version": "1.0.0",
|
|
44
|
+
"flags": [],
|
|
45
|
+
"normalized_sha256": "ba399748617428c590c94b03017f3bde51ae4c53ca0ff044a4c549446c98edda",
|
|
46
|
+
"provenance": {
|
|
47
|
+
"licence": "Public domain. A work of the United States Government under 17 U.S.C. 105, redistributed by NOAA through the NOAA Open Data Dissemination programme with no restriction on reuse or redistribution.",
|
|
48
|
+
"origin": "https://noaa-gfs-bdp-pds.s3.amazonaws.com/gfs.20260805/12/atmos/gfs.t12z.pgrb2.1p00.f000, bytes 35020223-35068780 (record 580 of the .idx sidecar)",
|
|
49
|
+
"retrieved": "2026-08-07",
|
|
50
|
+
"why": "GFS 2 m temperature on the one-degree regular latitude/longitude grid, so admission is proven against a second geometry and is not a rule that happens to fit one model; pulled by hand with a one-off command-line range request, so no range-fetching code ships in src because of it."
|
|
51
|
+
},
|
|
52
|
+
"row_count": 3,
|
|
53
|
+
"sample_file": "gfs-2m-temperature.grib2",
|
|
54
|
+
"warm_up": true
|
|
55
|
+
}
|
|
Binary file
|
mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/hrrr_2m_temperature/expected.json
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"column_names": [
|
|
3
|
+
"point_id",
|
|
4
|
+
"requested_latitude",
|
|
5
|
+
"requested_longitude",
|
|
6
|
+
"grid_row",
|
|
7
|
+
"grid_column",
|
|
8
|
+
"grid_latitude",
|
|
9
|
+
"grid_longitude",
|
|
10
|
+
"valid_time",
|
|
11
|
+
"variable",
|
|
12
|
+
"value"
|
|
13
|
+
],
|
|
14
|
+
"decode_options": {
|
|
15
|
+
"admission_allowlist_version": 1,
|
|
16
|
+
"points": [
|
|
17
|
+
{
|
|
18
|
+
"id": "denver",
|
|
19
|
+
"latitude": "39.7392",
|
|
20
|
+
"longitude": "-104.9903"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"id": "chicago",
|
|
24
|
+
"latitude": "41.8781",
|
|
25
|
+
"longitude": "-87.6298"
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"id": "houston",
|
|
29
|
+
"latitude": "29.7604",
|
|
30
|
+
"longitude": "-95.3698"
|
|
31
|
+
}
|
|
32
|
+
],
|
|
33
|
+
"variable": {
|
|
34
|
+
"discipline": 0,
|
|
35
|
+
"name": "temperature_2m",
|
|
36
|
+
"parameter_category": 0,
|
|
37
|
+
"parameter_number": 0,
|
|
38
|
+
"surface_type": 103,
|
|
39
|
+
"surface_value": 2
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
"family_id": "weather.grib2",
|
|
43
|
+
"family_version": "1.0.0",
|
|
44
|
+
"flags": [],
|
|
45
|
+
"normalized_sha256": "2fcb86b42f8b3a58df4180b0535e4ced9ba6ff4e4e590a536722dfb6392610d7",
|
|
46
|
+
"provenance": {
|
|
47
|
+
"licence": "Public domain. A work of the United States Government under 17 U.S.C. 105, redistributed by NOAA through the NOAA Open Data Dissemination programme with no restriction on reuse or redistribution.",
|
|
48
|
+
"origin": "https://noaa-hrrr-bdp-pds.s3.amazonaws.com/hrrr.20260805/conus/hrrr.t12z.wrfsfcf00.grib2, bytes 34694688-35889177 (record 71 of the .grib2.idx sidecar)",
|
|
49
|
+
"retrieved": "2026-08-07",
|
|
50
|
+
"why": "It is the flagship's own field, HRRR 2 m temperature, so it settles from evidence which grid and packing templates the flagship declares rather than which ones a design document assumed; it was pulled by hand with a one-off command-line range request and no range-fetching code ships in src because of it; and at 1194490 bytes it exceeds the 256 KiB sample discipline because that is the true size of one HRRR 2 m temperature record and a trimmed message is not a real message."
|
|
51
|
+
},
|
|
52
|
+
"row_count": 3,
|
|
53
|
+
"sample_file": "hrrr-2m-temperature.grib2"
|
|
54
|
+
}
|
|
Binary file
|
mostlyright/data_harness/readers/samples/weather.grib2/1.0.0/hrrr_categorical_rain/expected.json
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"column_names": [
|
|
3
|
+
"point_id",
|
|
4
|
+
"requested_latitude",
|
|
5
|
+
"requested_longitude",
|
|
6
|
+
"grid_row",
|
|
7
|
+
"grid_column",
|
|
8
|
+
"grid_latitude",
|
|
9
|
+
"grid_longitude",
|
|
10
|
+
"valid_time",
|
|
11
|
+
"variable",
|
|
12
|
+
"value"
|
|
13
|
+
],
|
|
14
|
+
"decode_options": {
|
|
15
|
+
"admission_allowlist_version": 1,
|
|
16
|
+
"points": [
|
|
17
|
+
{
|
|
18
|
+
"id": "denver",
|
|
19
|
+
"latitude": "39.7392",
|
|
20
|
+
"longitude": "-104.9903"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"id": "chicago",
|
|
24
|
+
"latitude": "41.8781",
|
|
25
|
+
"longitude": "-87.6298"
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"id": "houston",
|
|
29
|
+
"latitude": "29.7604",
|
|
30
|
+
"longitude": "-95.3698"
|
|
31
|
+
}
|
|
32
|
+
],
|
|
33
|
+
"variable": {
|
|
34
|
+
"discipline": 0,
|
|
35
|
+
"name": "categorical_rain",
|
|
36
|
+
"parameter_category": 1,
|
|
37
|
+
"parameter_number": 33,
|
|
38
|
+
"surface_type": 1,
|
|
39
|
+
"surface_value": 0
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
"family_id": "weather.grib2",
|
|
43
|
+
"family_version": "1.0.0",
|
|
44
|
+
"flags": [],
|
|
45
|
+
"normalized_sha256": "0a8a3bbcce1ac73cad2cf703a6f43585fd51cb2256a4f65f2e6cc49ff59add2b",
|
|
46
|
+
"provenance": {
|
|
47
|
+
"licence": "Public domain. A work of the United States Government under 17 U.S.C. 105, redistributed by NOAA through the NOAA Open Data Dissemination programme with no restriction on reuse or redistribution.",
|
|
48
|
+
"origin": "https://noaa-hrrr-bdp-pds.s3.amazonaws.com/hrrr.20260805/conus/hrrr.t12z.wrfsfcf00.grib2, bytes 50403071-50403258 (record 149 of the .grib2.idx sidecar)",
|
|
49
|
+
"retrieved": "2026-08-07",
|
|
50
|
+
"why": "A complete 188-byte message declaring 1905141 points, which proves two things at once from one real file: the flagship's Lambert conformal grid also arrives paired with simple packing, so the admitted pairs are a genuine set rather than one packing repeated; and a message can declare a grid of nearly two million points in under two hundred bytes, which is why the geometry budget is checked against the declaration and never against a byte ratio. Pulled by hand with a one-off command-line range request, so no range-fetching code ships in src because of it."
|
|
51
|
+
},
|
|
52
|
+
"row_count": 3,
|
|
53
|
+
"sample_file": "hrrr-categorical-rain.grib2"
|
|
54
|
+
}
|