easysnowdata 0.3.3__tar.gz → 0.3.4__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.
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/CHANGELOG.md +23 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/PKG-INFO +21 -21
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/README.md +20 -20
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/WATCHLIST.toml +8 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/_version.py +2 -2
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/stations/_catalog.py +8 -3
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/stations/clients/README.md +7 -3
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/stations/clients/ceaza/ceaza_client.py +5 -2
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/stations/clients/yukon/yukon_client.py +28 -7
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/stations/networks.py +1 -1
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/stations/test_ceaza_client.py +13 -8
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/stations/test_clients_offline.py +21 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/stations/test_yukon_client.py +1 -1
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/.editorconfig +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/.gitignore +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/.pre-commit-config.yaml +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/CITATION.cff +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/LICENSE +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/POTENTIAL_DATA_PRODUCTS_SOURCES_AND_EXAMPLES.md +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/REVAMP_PLAN.md +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/__init__.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/_gdal.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/aoi.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/auth/__init__.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/auth/_base.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/auth/aisori.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/auth/earthdata.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/auth/earthengine.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/auth/nve.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/auth/planet.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/auth/planetary_computer.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/boundaries/__init__.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/boundaries/admin.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/boundaries/glaciers.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/boundaries/mountains.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/boundaries/natural_earth.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/catalog/__init__.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/catalog/_access.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/catalog/_models.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/catalog/_registry.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/catalog/health.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/catalog/pages.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/climate/__init__.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/climate/era5.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/climate/indices.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/climate/koppen_geiger.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/config.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/hydro/__init__.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/hydro/basins.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/land/__init__.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/land/forest_cover.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/land/landcover.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/land/nlcd.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/optical/__init__.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/optical/hls.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/optical/planetscope.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/optical/sentinel2.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/plotting/__init__.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/processing/__init__.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/processing/categorical.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/processing/contract.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/processing/masks.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/processing/optical.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/processing/sar.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/processing/snow.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/processing/wateryear.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/providers/__init__.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/providers/earthdata.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/providers/gee.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/providers/opentopography.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/providers/planet.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/providers/raster_http.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/providers/stac.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/providers/table_http.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/providers/vector_http.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/providers/zarr_cloud.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/sar/__init__.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/sar/sentinel1.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/snow/__init__.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/snow/modis.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/snow/mountain_snow_mask.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/snow/snodas.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/snow/snow_classification.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/snow/ucla_sr.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/snow/viirs.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/stations/__init__.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/stations/_adapter.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/stations/_frames.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/stations/archive.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/stations/clients/__init__.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/stations/clients/_common.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/stations/clients/alberta/__init__.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/stations/clients/alberta/alberta_client.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/stations/clients/awdb/__init__.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/stations/clients/awdb/awdb_client.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/stations/clients/canswe/__init__.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/stations/clients/canswe/_format.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/stations/clients/canswe/canswe_client.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/stations/clients/cdec/__init__.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/stations/clients/cdec/cdec_client.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/stations/clients/ceaza/__init__.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/stations/clients/databc/__init__.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/stations/clients/databc/databc_client.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/stations/clients/dwd/__init__.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/stations/clients/dwd/dwd_client.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/stations/clients/ghcnd/__init__.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/stations/clients/ghcnd/ghcnd_client.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/stations/clients/hydroquebec/__init__.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/stations/clients/hydroquebec/hydroquebec_client.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/stations/clients/norswe/__init__.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/stations/clients/norswe/norswe_client.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/stations/clients/nve/__init__.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/stations/clients/nve/nve_client.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/stations/clients/rihmi/__init__.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/stations/clients/rihmi/_aisori.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/stations/clients/rihmi/rihmi_client.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/stations/clients/rihmi/route_survey_stations.csv +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/stations/clients/rihmi/snow_cover_stations.csv +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/stations/clients/slf/__init__.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/stations/clients/slf/slf_client.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/stations/clients/snih/__init__.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/stations/clients/snih/snih_client.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/stations/clients/southern_andes/__init__.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/stations/clients/southern_andes/southern_andes_client.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/stations/clients/syke/__init__.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/stations/clients/syke/syke_client.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/stations/clients/yukon/__init__.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/temporal.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/terrain/__init__.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/terrain/chili.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/terrain/dem.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/terrain/hillshade.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/pyproject.toml +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/scripts/check_data_sources.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/scripts/feedstock_requirements.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/scripts/gallery_fallback.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/scripts/make_montage.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/scripts/report_health.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/scripts/update_readme_status.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/scripts/watch.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/__init__.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/cassettes/test_recorded/test_cmr_lpcloud_hls_search_is_open.yaml +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/cassettes/test_recorded/test_earth_search_sentinel2_search_with_time.yaml +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/cassettes/test_recorded/test_health_first_byte_probe_replays.yaml +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/cassettes/test_recorded/test_health_stac_probe_replays.yaml +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/cassettes/test_recorded/test_planetary_computer_dem_search.yaml +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/conftest.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/fixtures/make_fixtures.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/static/__init__.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/static/cassettes/test_land_landcover/TestSearchRecorded.test_search_filters_by_version.yaml +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/static/cassettes/test_terrain_dem/TestSearchRecorded.test_search_on_earth_search.yaml +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/static/cassettes/test_terrain_dem/TestSearchRecorded.test_search_returns_tiles.yaml +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/static/conftest.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/static/make_fixtures.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/static/test_boundaries.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/static/test_hydro_basins.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/static/test_land_forest_cover.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/static/test_land_landcover.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/static/test_land_nlcd.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/static/test_snow_classification.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/static/test_snow_mountain_snow_mask.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/static/test_terrain_chili.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/static/test_terrain_dem.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/static/test_terrain_hillshade.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/static/test_theme_common.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/stations/__init__.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/stations/conftest.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/stations/fixtures/make_fixtures.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/stations/fixtures/rihmi_aisori/README.md +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/stations/fixtures/rihmi_aisori/route_semicolon.zip +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/stations/fixtures/rihmi_aisori/route_space.zip +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/stations/fixtures/rihmi_aisori/snow_cover_semicolon.zip +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/stations/fixtures/rihmi_aisori/snow_cover_space.zip +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/stations/test_adapter.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/stations/test_adapter_offline.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/stations/test_alberta_client.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/stations/test_archive.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/stations/test_awdb_client.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/stations/test_canswe_client.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/stations/test_cdec_client.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/stations/test_common_download.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/stations/test_databc_client.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/stations/test_dwd_client.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/stations/test_ghcnd_client.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/stations/test_hydroquebec_client.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/stations/test_norswe_client.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/stations/test_nve_client.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/stations/test_rihmi_client.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/stations/test_slf_client.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/stations/test_snih_client.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/stations/test_southern_andes_client.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/stations/test_syke_client.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/test_aoi.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/test_auth.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/test_catalog.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/test_config.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/test_credentials.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/test_docs_pages.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/test_easysnowdata.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/test_edges.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/test_feedstock_requirements.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/test_gallery_fallback.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/test_health_reporting.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/test_montage.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/test_plotting.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/test_processing.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/test_providers.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/test_recorded.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/test_temporal.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/test_watch.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/timeseries/__init__.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/timeseries/cassettes/test_hls/test_search_cmr_lpcloud_is_open_and_labels_products.yaml +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/timeseries/cassettes/test_hls/test_search_planetary_computer_mirror.yaml +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/timeseries/cassettes/test_sentinel1/test_search_opera_rtc_is_open.yaml +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/timeseries/cassettes/test_sentinel1/test_search_planetary_computer.yaml +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/timeseries/cassettes/test_sentinel2/test_search_earth_search_collection_1.yaml +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/timeseries/cassettes/test_sentinel2/test_search_planetary_computer.yaml +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/timeseries/conftest.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/timeseries/fixtures/make_fixtures.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/timeseries/test_climate_indices.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/timeseries/test_contract.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/timeseries/test_era5.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/timeseries/test_hls.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/timeseries/test_koppen_geiger.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/timeseries/test_modis.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/timeseries/test_planetscope.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/timeseries/test_sentinel1.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/timeseries/test_sentinel2.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/timeseries/test_snodas.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/timeseries/test_ucla_sr.py +0 -0
- {easysnowdata-0.3.3 → easysnowdata-0.3.4}/tests/timeseries/test_viirs.py +0 -0
|
@@ -6,6 +6,29 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
|
|
|
6
6
|
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
8
|
<!-- insertion marker -->
|
|
9
|
+
## [v0.3.3](https://github.com/egagli/easysnowdata/releases/tag/v0.3.3) - 2026-10-21
|
|
10
|
+
|
|
11
|
+
<small>[Compare with v0.3.2](https://github.com/egagli/easysnowdata/compare/v0.3.2...v0.3.3)</small>
|
|
12
|
+
|
|
13
|
+
### Fixed
|
|
14
|
+
|
|
15
|
+
- fix(snih): parse pre-1970 /Date()/ values on Windows ([5488a84](https://github.com/egagli/easysnowdata/commit/5488a8453c4bd07b607323e27f5a253ab1c5fc13) by Claude).
|
|
16
|
+
- fix(tests): read client sources as UTF-8 so the credential scan passes on Windows ([e57a543](https://github.com/egagli/easysnowdata/commit/e57a543a26c3a803e5736ef6a549f9213e0649c3) by Claude).
|
|
17
|
+
- fix(stations): RIHMI reads real AISORI-M exports; fixed-width layout, zips, column files ([4cb9bf5](https://github.com/egagli/easysnowdata/commit/4cb9bf541d8517aa6f63531e33cbb8b5a88a5d65) by Claude).
|
|
18
|
+
- fix(stations): bring the new clients to the established client conventions ([4b98936](https://github.com/egagli/easysnowdata/commit/4b98936252975bca81e3a1beaa031ef250c629f7) by Claude).
|
|
19
|
+
- fix(gallery): climate indices example reads SWE from the station archive; add a western-US analysis ([afa84ee](https://github.com/egagli/easysnowdata/commit/afa84eee7d46b9506613bec76deefebc11cbeb3e) by Claude).
|
|
20
|
+
- fix(planetscope): pair UDM2 with its scene, scale radiance with Planet's coefficients (#59) ([8c166c6](https://github.com/egagli/easysnowdata/commit/8c166c6a9ad243070f95ddab526bbfde3508ed74) by Eric Gagliano).
|
|
21
|
+
- fix(docs): gallery fallback uses POSIX page paths for git lookups (Windows) ([2db26ae](https://github.com/egagli/easysnowdata/commit/2db26ae9ed7d159c01473665f43744325e13fdaa) by egagli).
|
|
22
|
+
- fix(modis): name the sinusoidal grid for Planetary Computer loads ([e5eeaf4](https://github.com/egagli/easysnowdata/commit/e5eeaf4824d59e8e23f0f8c5da0dc251545df5d7) by egagli).
|
|
23
|
+
- fix(auth): bearer-token GDAL reads skip the HEAD request LP DAAC answers with 404 ([0728852](https://github.com/egagli/easysnowdata/commit/072885248021d2cf1433e86390681a14506bed5a) by egagli).
|
|
24
|
+
- fix(watch): name the product a change touches; stop routine moves looking new ([47d21ce](https://github.com/egagli/easysnowdata/commit/47d21ce7d4af24a798d51c5f1a2f3c66e5acdcab) by egagli).
|
|
25
|
+
- fix(health): probe HLS L30 and S30 on both routes, and the LPCLOUD reads ([cfd0634](https://github.com/egagli/easysnowdata/commit/cfd0634a059ead0274e18ee5f3483630296ed540) by egagli).
|
|
26
|
+
- fix(auth): NSIDC on-premises files log in with the password, even with a token set ([5827702](https://github.com/egagli/easysnowdata/commit/5827702291853895f97889e6e366dc49a079989d) by egagli).
|
|
27
|
+
- fix(auth): read an Earthdata token's expiry from the token, not from URS ([2951938](https://github.com/egagli/easysnowdata/commit/2951938646740dda547cf908b338efaba5005717) by egagli).
|
|
28
|
+
- fix(status): escape probe errors in the README tooltips ([826e7df](https://github.com/egagli/easysnowdata/commit/826e7dfd9c66f0de6f25427b4bed534bbb0c4348) by egagli).
|
|
29
|
+
- fix(boundaries): clearer health probes, Census 2025, explain NSIDC's login page ([0086513](https://github.com/egagli/easysnowdata/commit/008651397cd72abf3dc71437fb10d2d3c9b61e3d) by egagli).
|
|
30
|
+
- fix(plotting): graticule on global projected maps ([5d46dfa](https://github.com/egagli/easysnowdata/commit/5d46dfaf9732f5a0b331e36a6cfd52570b002e34) by egagli).
|
|
31
|
+
|
|
9
32
|
## [v0.3.2](https://github.com/egagli/easysnowdata/releases/tag/v0.3.2) - 2026-09-23
|
|
10
33
|
|
|
11
34
|
<small>[Compare with v0.3.1](https://github.com/egagli/easysnowdata/compare/v0.3.1...v0.3.2)</small>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: easysnowdata
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.4
|
|
4
4
|
Summary: A Python package to easily retrieve data relevant to snow science
|
|
5
5
|
Project-URL: Homepage, https://github.com/egagli/easysnowdata
|
|
6
6
|
Project-URL: Documentation, https://egagli.github.io/easysnowdata
|
|
@@ -103,12 +103,12 @@ and both Earth Engine catalogs, under "Worth adding" when they are about the
|
|
|
103
103
|
cryosphere.
|
|
104
104
|
|
|
105
105
|
<!-- DATA_STATUS_START -->
|
|
106
|
-
_Last updated: 2026-10-
|
|
106
|
+
_Last updated: 2026-10-26 08:22 UTC_
|
|
107
107
|
_⚠️ = skipped (credentials not available in this run). Latency and virtualization probes are on the [status page](https://egagli.github.io/easysnowdata/status.html)._
|
|
108
108
|
|
|
109
109
|
### Stations (`esd.stations`)
|
|
110
110
|
|
|
111
|
-
| Data Source | Latest (Oct
|
|
111
|
+
| Data Source | Latest (Oct 26) | Oct 19 | Oct 12 | Oct 5 |
|
|
112
112
|
| :---------- | :------: | :------: | :------: | :------: |
|
|
113
113
|
| AWDB stations (NRCS REST API) | ✅ | ✅ | ✅ | ✅ |
|
|
114
114
|
| CDEC stations (JSON data servlet) | ✅ | ✅ | ✅ | ✅ |
|
|
@@ -122,7 +122,7 @@ _⚠️ = skipped (credentials not available in this run). Latency and virtualiz
|
|
|
122
122
|
|
|
123
123
|
### Snow (`esd.snow`)
|
|
124
124
|
|
|
125
|
-
| Data Source | Latest (Oct
|
|
125
|
+
| Data Source | Latest (Oct 26) | Oct 19 | Oct 12 | Oct 5 |
|
|
126
126
|
| :---------- | :------: | :------: | :------: | :------: |
|
|
127
127
|
| MODIS snow cover MOD10A1F (NASA NSIDC) | ✅ | ✅ | ✅ | ✅ |
|
|
128
128
|
| MODIS snow cover MOD10A1 (Planetary Computer) | ✅ | ✅ | ✅ | ✅ |
|
|
@@ -137,7 +137,7 @@ _⚠️ = skipped (credentials not available in this run). Latency and virtualiz
|
|
|
137
137
|
|
|
138
138
|
### SAR (`esd.sar`)
|
|
139
139
|
|
|
140
|
-
| Data Source | Latest (Oct
|
|
140
|
+
| Data Source | Latest (Oct 26) | Oct 19 | Oct 12 | Oct 5 |
|
|
141
141
|
| :---------- | :------: | :------: | :------: | :------: |
|
|
142
142
|
| Sentinel-1 RTC (Planetary Computer) | ✅ | ✅ | ✅ | ✅ |
|
|
143
143
|
| Sentinel-1 RTC OPERA (CMR-STAC ASF) | ✅ | ✅ | ✅ | ✅ |
|
|
@@ -148,7 +148,7 @@ _⚠️ = skipped (credentials not available in this run). Latency and virtualiz
|
|
|
148
148
|
|
|
149
149
|
### Optical imagery (`esd.optical`)
|
|
150
150
|
|
|
151
|
-
| Data Source | Latest (Oct
|
|
151
|
+
| Data Source | Latest (Oct 26) | Oct 19 | Oct 12 | Oct 5 |
|
|
152
152
|
| :---------- | :------: | :------: | :------: | :------: |
|
|
153
153
|
| HLS L30 (CMR-STAC LPCLOUD) | ✅ | ✅ | ✅ | ✅ |
|
|
154
154
|
| HLS S30 (CMR-STAC LPCLOUD) | ✅ | ✅ | ✅ | ✅ |
|
|
@@ -162,31 +162,31 @@ _⚠️ = skipped (credentials not available in this run). Latency and virtualiz
|
|
|
162
162
|
|
|
163
163
|
### Terrain (`esd.terrain`)
|
|
164
164
|
|
|
165
|
-
| Data Source | Latest (Oct
|
|
165
|
+
| Data Source | Latest (Oct 26) | Oct 19 | Oct 12 | Oct 5 |
|
|
166
166
|
| :---------- | :------: | :------: | :------: | :------: |
|
|
167
167
|
| CHILI (GEE/CSP ERGo) | ✅ | ✅ | ✅ | ✅ |
|
|
168
168
|
| Copernicus DEM (Planetary Computer) | ✅ | ✅ | ✅ | ✅ |
|
|
169
169
|
| Copernicus DEM (Earth Search) | ✅ | ✅ | ✅ | ✅ |
|
|
170
170
|
| Copernicus DEM (Earth Engine) | ✅ | ✅ | ✅ | ✅ |
|
|
171
|
-
| Copernicus DEM (OpenTopography) | ✅ | ✅ | ✅ |
|
|
171
|
+
| Copernicus DEM (OpenTopography) | ✅ | ✅ | ✅ | ✅ |
|
|
172
172
|
| NASADEM (Planetary Computer) | ✅ | ✅ | ✅ | ✅ |
|
|
173
173
|
| NASADEM (Earth Engine) | ✅ | ✅ | ✅ | ✅ |
|
|
174
|
-
| NASADEM (OpenTopography) | ✅ | ✅ | ✅ |
|
|
175
|
-
| SRTM GL1 (OpenTopography) | ✅ | ✅ | ✅ |
|
|
174
|
+
| NASADEM (OpenTopography) | ✅ | ✅ | ✅ | ✅ |
|
|
175
|
+
| SRTM GL1 (OpenTopography) | ✅ | ✅ | ✅ | ✅ |
|
|
176
176
|
| SRTM GL1 (Earth Engine) | ✅ | ✅ | ✅ | ✅ |
|
|
177
177
|
| 3DEP seamless (Planetary Computer) | ✅ | ✅ | ✅ | ✅ |
|
|
178
178
|
| 3DEP 10 m (Earth Engine) | ✅ | ✅ | ✅ | ✅ |
|
|
179
179
|
| ALOS World 3D (Planetary Computer) | ✅ | ✅ | ✅ | ✅ |
|
|
180
180
|
| ALOS World 3D (Earth Engine) | ✅ | ✅ | ✅ | ✅ |
|
|
181
|
-
| ALOS World 3D (OpenTopography) | ✅ | ✅ | ✅ |
|
|
182
|
-
| GEDTM30 (OpenTopography) | ✅ | ✅ | ✅ |
|
|
181
|
+
| ALOS World 3D (OpenTopography) | ✅ | ✅ | ✅ | ✅ |
|
|
182
|
+
| GEDTM30 (OpenTopography) | ✅ | ✅ | ✅ | ✅ |
|
|
183
183
|
| Natural Earth hillshade (S3) | ✅ | ✅ | ✅ | ✅ |
|
|
184
184
|
|
|
185
185
|
### Land cover (`esd.land`)
|
|
186
186
|
|
|
187
|
-
| Data Source | Latest (Oct
|
|
187
|
+
| Data Source | Latest (Oct 26) | Oct 19 | Oct 12 | Oct 5 |
|
|
188
188
|
| :---------- | :------: | :------: | :------: | :------: |
|
|
189
|
-
| Forest cover fraction (Zenodo) | ✅ | <abbr title="ReadTimeout: HTTPSConnectionPool(host='zenodo.org', port=443): Read timed out. (">❌</abbr> | ✅ |
|
|
189
|
+
| Forest cover fraction (Zenodo) | ✅ | ✅ | <abbr title="ReadTimeout: HTTPSConnectionPool(host='zenodo.org', port=443): Read timed out. (">❌</abbr> | ✅ |
|
|
190
190
|
| Forest cover fraction (GEE/CGLS-LC100) | ✅ | ✅ | ✅ | ✅ |
|
|
191
191
|
| ESA WorldCover (Planetary Computer) | ✅ | ✅ | ✅ | ✅ |
|
|
192
192
|
| ESA WorldCover (AWS bucket) | ✅ | ✅ | ✅ | ✅ |
|
|
@@ -195,7 +195,7 @@ _⚠️ = skipped (credentials not available in this run). Latency and virtualiz
|
|
|
195
195
|
|
|
196
196
|
### Hydrography (`esd.hydro`)
|
|
197
197
|
|
|
198
|
-
| Data Source | Latest (Oct
|
|
198
|
+
| Data Source | Latest (Oct 26) | Oct 19 | Oct 12 | Oct 5 |
|
|
199
199
|
| :---------- | :------: | :------: | :------: | :------: |
|
|
200
200
|
| HUC geometries (USGS WBD REST) | ✅ | ✅ | ✅ | ✅ |
|
|
201
201
|
| HUC geometries (GEE/USGS WBD) | ✅ | ✅ | ✅ | ✅ |
|
|
@@ -207,7 +207,7 @@ _⚠️ = skipped (credentials not available in this run). Latency and virtualiz
|
|
|
207
207
|
|
|
208
208
|
### Boundaries (`esd.boundaries`)
|
|
209
209
|
|
|
210
|
-
| Data Source | Latest (Oct
|
|
210
|
+
| Data Source | Latest (Oct 26) | Oct 19 | Oct 12 | Oct 5 |
|
|
211
211
|
| :---------- | :------: | :------: | :------: | :------: |
|
|
212
212
|
| Natural Earth countries (naciscdn) | ✅ | ✅ | ✅ | ✅ |
|
|
213
213
|
| geoBoundaries countries (ADM0, gbOpen) | ✅ | ✅ | ✅ | ✅ |
|
|
@@ -224,14 +224,14 @@ _⚠️ = skipped (credentials not available in this run). Latency and virtualiz
|
|
|
224
224
|
|
|
225
225
|
### Climate (`esd.climate`)
|
|
226
226
|
|
|
227
|
-
| Data Source | Latest (Oct
|
|
227
|
+
| Data Source | Latest (Oct 26) | Oct 19 | Oct 12 | Oct 5 |
|
|
228
228
|
| :---------- | :------: | :------: | :------: | :------: |
|
|
229
229
|
| ARCO-ERA5 (GCS anonymous) | ✅ | ✅ | ✅ | ✅ |
|
|
230
230
|
| ERA5 (Google Earth Engine) | ✅ | ✅ | ✅ | ✅ |
|
|
231
|
-
| Climate indices (CPC RONI) | ✅ |
|
|
232
|
-
| Climate indices (NCEI PDO) | ✅ |
|
|
233
|
-
| Climate indices (PSL MEI.v2) | ✅ |
|
|
234
|
-
| Climate indices (PSL pdo.data) | ✅ |
|
|
231
|
+
| Climate indices (CPC RONI) | ✅ | ✅ | — | — |
|
|
232
|
+
| Climate indices (NCEI PDO) | ✅ | ✅ | — | — |
|
|
233
|
+
| Climate indices (PSL MEI.v2) | ✅ | ✅ | — | — |
|
|
234
|
+
| Climate indices (PSL pdo.data) | ✅ | ✅ | — | — |
|
|
235
235
|
| Köppen-Geiger classification (figshare) | ✅ | ✅ | ✅ | ✅ |
|
|
236
236
|
<!-- DATA_STATUS_END -->
|
|
237
237
|
|
|
@@ -45,12 +45,12 @@ and both Earth Engine catalogs, under "Worth adding" when they are about the
|
|
|
45
45
|
cryosphere.
|
|
46
46
|
|
|
47
47
|
<!-- DATA_STATUS_START -->
|
|
48
|
-
_Last updated: 2026-10-
|
|
48
|
+
_Last updated: 2026-10-26 08:22 UTC_
|
|
49
49
|
_⚠️ = skipped (credentials not available in this run). Latency and virtualization probes are on the [status page](https://egagli.github.io/easysnowdata/status.html)._
|
|
50
50
|
|
|
51
51
|
### Stations (`esd.stations`)
|
|
52
52
|
|
|
53
|
-
| Data Source | Latest (Oct
|
|
53
|
+
| Data Source | Latest (Oct 26) | Oct 19 | Oct 12 | Oct 5 |
|
|
54
54
|
| :---------- | :------: | :------: | :------: | :------: |
|
|
55
55
|
| AWDB stations (NRCS REST API) | ✅ | ✅ | ✅ | ✅ |
|
|
56
56
|
| CDEC stations (JSON data servlet) | ✅ | ✅ | ✅ | ✅ |
|
|
@@ -64,7 +64,7 @@ _⚠️ = skipped (credentials not available in this run). Latency and virtualiz
|
|
|
64
64
|
|
|
65
65
|
### Snow (`esd.snow`)
|
|
66
66
|
|
|
67
|
-
| Data Source | Latest (Oct
|
|
67
|
+
| Data Source | Latest (Oct 26) | Oct 19 | Oct 12 | Oct 5 |
|
|
68
68
|
| :---------- | :------: | :------: | :------: | :------: |
|
|
69
69
|
| MODIS snow cover MOD10A1F (NASA NSIDC) | ✅ | ✅ | ✅ | ✅ |
|
|
70
70
|
| MODIS snow cover MOD10A1 (Planetary Computer) | ✅ | ✅ | ✅ | ✅ |
|
|
@@ -79,7 +79,7 @@ _⚠️ = skipped (credentials not available in this run). Latency and virtualiz
|
|
|
79
79
|
|
|
80
80
|
### SAR (`esd.sar`)
|
|
81
81
|
|
|
82
|
-
| Data Source | Latest (Oct
|
|
82
|
+
| Data Source | Latest (Oct 26) | Oct 19 | Oct 12 | Oct 5 |
|
|
83
83
|
| :---------- | :------: | :------: | :------: | :------: |
|
|
84
84
|
| Sentinel-1 RTC (Planetary Computer) | ✅ | ✅ | ✅ | ✅ |
|
|
85
85
|
| Sentinel-1 RTC OPERA (CMR-STAC ASF) | ✅ | ✅ | ✅ | ✅ |
|
|
@@ -90,7 +90,7 @@ _⚠️ = skipped (credentials not available in this run). Latency and virtualiz
|
|
|
90
90
|
|
|
91
91
|
### Optical imagery (`esd.optical`)
|
|
92
92
|
|
|
93
|
-
| Data Source | Latest (Oct
|
|
93
|
+
| Data Source | Latest (Oct 26) | Oct 19 | Oct 12 | Oct 5 |
|
|
94
94
|
| :---------- | :------: | :------: | :------: | :------: |
|
|
95
95
|
| HLS L30 (CMR-STAC LPCLOUD) | ✅ | ✅ | ✅ | ✅ |
|
|
96
96
|
| HLS S30 (CMR-STAC LPCLOUD) | ✅ | ✅ | ✅ | ✅ |
|
|
@@ -104,31 +104,31 @@ _⚠️ = skipped (credentials not available in this run). Latency and virtualiz
|
|
|
104
104
|
|
|
105
105
|
### Terrain (`esd.terrain`)
|
|
106
106
|
|
|
107
|
-
| Data Source | Latest (Oct
|
|
107
|
+
| Data Source | Latest (Oct 26) | Oct 19 | Oct 12 | Oct 5 |
|
|
108
108
|
| :---------- | :------: | :------: | :------: | :------: |
|
|
109
109
|
| CHILI (GEE/CSP ERGo) | ✅ | ✅ | ✅ | ✅ |
|
|
110
110
|
| Copernicus DEM (Planetary Computer) | ✅ | ✅ | ✅ | ✅ |
|
|
111
111
|
| Copernicus DEM (Earth Search) | ✅ | ✅ | ✅ | ✅ |
|
|
112
112
|
| Copernicus DEM (Earth Engine) | ✅ | ✅ | ✅ | ✅ |
|
|
113
|
-
| Copernicus DEM (OpenTopography) | ✅ | ✅ | ✅ |
|
|
113
|
+
| Copernicus DEM (OpenTopography) | ✅ | ✅ | ✅ | ✅ |
|
|
114
114
|
| NASADEM (Planetary Computer) | ✅ | ✅ | ✅ | ✅ |
|
|
115
115
|
| NASADEM (Earth Engine) | ✅ | ✅ | ✅ | ✅ |
|
|
116
|
-
| NASADEM (OpenTopography) | ✅ | ✅ | ✅ |
|
|
117
|
-
| SRTM GL1 (OpenTopography) | ✅ | ✅ | ✅ |
|
|
116
|
+
| NASADEM (OpenTopography) | ✅ | ✅ | ✅ | ✅ |
|
|
117
|
+
| SRTM GL1 (OpenTopography) | ✅ | ✅ | ✅ | ✅ |
|
|
118
118
|
| SRTM GL1 (Earth Engine) | ✅ | ✅ | ✅ | ✅ |
|
|
119
119
|
| 3DEP seamless (Planetary Computer) | ✅ | ✅ | ✅ | ✅ |
|
|
120
120
|
| 3DEP 10 m (Earth Engine) | ✅ | ✅ | ✅ | ✅ |
|
|
121
121
|
| ALOS World 3D (Planetary Computer) | ✅ | ✅ | ✅ | ✅ |
|
|
122
122
|
| ALOS World 3D (Earth Engine) | ✅ | ✅ | ✅ | ✅ |
|
|
123
|
-
| ALOS World 3D (OpenTopography) | ✅ | ✅ | ✅ |
|
|
124
|
-
| GEDTM30 (OpenTopography) | ✅ | ✅ | ✅ |
|
|
123
|
+
| ALOS World 3D (OpenTopography) | ✅ | ✅ | ✅ | ✅ |
|
|
124
|
+
| GEDTM30 (OpenTopography) | ✅ | ✅ | ✅ | ✅ |
|
|
125
125
|
| Natural Earth hillshade (S3) | ✅ | ✅ | ✅ | ✅ |
|
|
126
126
|
|
|
127
127
|
### Land cover (`esd.land`)
|
|
128
128
|
|
|
129
|
-
| Data Source | Latest (Oct
|
|
129
|
+
| Data Source | Latest (Oct 26) | Oct 19 | Oct 12 | Oct 5 |
|
|
130
130
|
| :---------- | :------: | :------: | :------: | :------: |
|
|
131
|
-
| Forest cover fraction (Zenodo) | ✅ | <abbr title="ReadTimeout: HTTPSConnectionPool(host='zenodo.org', port=443): Read timed out. (">❌</abbr> | ✅ |
|
|
131
|
+
| Forest cover fraction (Zenodo) | ✅ | ✅ | <abbr title="ReadTimeout: HTTPSConnectionPool(host='zenodo.org', port=443): Read timed out. (">❌</abbr> | ✅ |
|
|
132
132
|
| Forest cover fraction (GEE/CGLS-LC100) | ✅ | ✅ | ✅ | ✅ |
|
|
133
133
|
| ESA WorldCover (Planetary Computer) | ✅ | ✅ | ✅ | ✅ |
|
|
134
134
|
| ESA WorldCover (AWS bucket) | ✅ | ✅ | ✅ | ✅ |
|
|
@@ -137,7 +137,7 @@ _⚠️ = skipped (credentials not available in this run). Latency and virtualiz
|
|
|
137
137
|
|
|
138
138
|
### Hydrography (`esd.hydro`)
|
|
139
139
|
|
|
140
|
-
| Data Source | Latest (Oct
|
|
140
|
+
| Data Source | Latest (Oct 26) | Oct 19 | Oct 12 | Oct 5 |
|
|
141
141
|
| :---------- | :------: | :------: | :------: | :------: |
|
|
142
142
|
| HUC geometries (USGS WBD REST) | ✅ | ✅ | ✅ | ✅ |
|
|
143
143
|
| HUC geometries (GEE/USGS WBD) | ✅ | ✅ | ✅ | ✅ |
|
|
@@ -149,7 +149,7 @@ _⚠️ = skipped (credentials not available in this run). Latency and virtualiz
|
|
|
149
149
|
|
|
150
150
|
### Boundaries (`esd.boundaries`)
|
|
151
151
|
|
|
152
|
-
| Data Source | Latest (Oct
|
|
152
|
+
| Data Source | Latest (Oct 26) | Oct 19 | Oct 12 | Oct 5 |
|
|
153
153
|
| :---------- | :------: | :------: | :------: | :------: |
|
|
154
154
|
| Natural Earth countries (naciscdn) | ✅ | ✅ | ✅ | ✅ |
|
|
155
155
|
| geoBoundaries countries (ADM0, gbOpen) | ✅ | ✅ | ✅ | ✅ |
|
|
@@ -166,14 +166,14 @@ _⚠️ = skipped (credentials not available in this run). Latency and virtualiz
|
|
|
166
166
|
|
|
167
167
|
### Climate (`esd.climate`)
|
|
168
168
|
|
|
169
|
-
| Data Source | Latest (Oct
|
|
169
|
+
| Data Source | Latest (Oct 26) | Oct 19 | Oct 12 | Oct 5 |
|
|
170
170
|
| :---------- | :------: | :------: | :------: | :------: |
|
|
171
171
|
| ARCO-ERA5 (GCS anonymous) | ✅ | ✅ | ✅ | ✅ |
|
|
172
172
|
| ERA5 (Google Earth Engine) | ✅ | ✅ | ✅ | ✅ |
|
|
173
|
-
| Climate indices (CPC RONI) | ✅ |
|
|
174
|
-
| Climate indices (NCEI PDO) | ✅ |
|
|
175
|
-
| Climate indices (PSL MEI.v2) | ✅ |
|
|
176
|
-
| Climate indices (PSL pdo.data) | ✅ |
|
|
173
|
+
| Climate indices (CPC RONI) | ✅ | ✅ | — | — |
|
|
174
|
+
| Climate indices (NCEI PDO) | ✅ | ✅ | — | — |
|
|
175
|
+
| Climate indices (PSL MEI.v2) | ✅ | ✅ | — | — |
|
|
176
|
+
| Climate indices (PSL pdo.data) | ✅ | ✅ | — | — |
|
|
177
177
|
| Köppen-Geiger classification (figshare) | ✅ | ✅ | ✅ | ✅ |
|
|
178
178
|
<!-- DATA_STATUS_END -->
|
|
179
179
|
|
|
@@ -425,6 +425,14 @@ id = "page-cdec-news"
|
|
|
425
425
|
url = "https://water.ca.gov/News"
|
|
426
426
|
products = ["cdec-stations"]
|
|
427
427
|
|
|
428
|
+
[[page]]
|
|
429
|
+
id = "page-ceaza-ws-doc"
|
|
430
|
+
# CEAZA-Met's web-service documentation and terms of use. Its coordinator
|
|
431
|
+
# said (e-mail, 2026-10-23) that API keys will replace the user= name "in the
|
|
432
|
+
# coming months"; a change here is the early warning for CEAZAClient.
|
|
433
|
+
url = "https://www.ceazamet.cl/ws/pop_ws_doc.php"
|
|
434
|
+
products = ["snow-station-archive"]
|
|
435
|
+
|
|
428
436
|
[[page]]
|
|
429
437
|
id = "page-earth-search"
|
|
430
438
|
url = "https://element84.com/earth-search/"
|
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '0.3.
|
|
22
|
-
__version_tuple__ = version_tuple = (0, 3,
|
|
21
|
+
__version__ = version = '0.3.4'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 3, 4)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -289,7 +289,7 @@ YUKON_PRODUCT = Product(
|
|
|
289
289
|
temporal="~1975/present",
|
|
290
290
|
latency="hours to a day",
|
|
291
291
|
notes="the open AquaCache REST API; no account",
|
|
292
|
-
title="Yukon Water Data (AquaCache) API
|
|
292
|
+
title="Yukon Water Data (AquaCache) API v2",
|
|
293
293
|
health=_health_probe(
|
|
294
294
|
"Yukon stations (AquaCache API)",
|
|
295
295
|
f"{networks.NETWORKS['yukon'].api_url}/locations?limit=1",
|
|
@@ -298,15 +298,20 @@ YUKON_PRODUCT = Product(
|
|
|
298
298
|
),
|
|
299
299
|
variables=variables_for("yukon"),
|
|
300
300
|
citation=(
|
|
301
|
-
"Government of Yukon,
|
|
302
|
-
"(AquaCache) API
|
|
301
|
+
"Government of Yukon, Department of Environment, Water Science and "
|
|
302
|
+
"Stewardship Branch. Yukon Water Data (AquaCache) API v2, "
|
|
303
|
+
"https://service.yukon.ca/water-data/api/v2/; Yukon Snow Survey "
|
|
304
|
+
"Network. Contains information licensed under the Open Government "
|
|
305
|
+
"Licence – Yukon."
|
|
303
306
|
),
|
|
304
307
|
license="Open Government Licence – Yukon",
|
|
305
308
|
loader=_LOADER,
|
|
306
309
|
examples=("stations/plot_yukon_stations.py", "stations/plot_all_networks.py"),
|
|
307
310
|
references=(
|
|
311
|
+
"https://service.yukon.ca/water-data/api/v2/__docs__/",
|
|
308
312
|
"https://service.yukon.ca/water-data/shiny/?page=home&lang=en",
|
|
309
313
|
"https://yukon.ca/en/snow-survey-bulletin",
|
|
314
|
+
"https://open.yukon.ca/node/15612",
|
|
310
315
|
),
|
|
311
316
|
tags=("swe", "snow depth", "stations", "yukon", "snow course"),
|
|
312
317
|
)
|
|
@@ -758,7 +758,7 @@ per API key — the client spaces requests and honours `Retry-After` on 429.
|
|
|
758
758
|
|
|
759
759
|
**Module:** `easysnowdata.stations.clients.yukon.yukon_client`
|
|
760
760
|
**Class:** `YukonClient`
|
|
761
|
-
**API:** [AquaCache API
|
|
761
|
+
**API:** [AquaCache API v2](https://service.yukon.ca/water-data/api/v2/__docs__/)
|
|
762
762
|
**Operator:** Yukon Government Department of Environment, Water Science and
|
|
763
763
|
Stewardship
|
|
764
764
|
|
|
@@ -814,7 +814,7 @@ variables are already metric.
|
|
|
814
814
|
|
|
815
815
|
```python
|
|
816
816
|
YukonClient(
|
|
817
|
-
base_url: str = "https://service.yukon.ca/water-data/api/
|
|
817
|
+
base_url: str = "https://service.yukon.ca/water-data/api/v2",
|
|
818
818
|
timeout: int = 120,
|
|
819
819
|
max_retries: int = 3,
|
|
820
820
|
backoff: int = 4,
|
|
@@ -841,6 +841,10 @@ The continuous-series catalogue. Only series whose parameter appears in
|
|
|
841
841
|
groundwater and water-quality series that have no place in a snow archive.
|
|
842
842
|
This is the source of truth for per-station variable inventories, so period of
|
|
843
843
|
record and interval always reflect what the API currently serves.
|
|
844
|
+
`publicly_visible_only` (default True) drops series AquaCache hides from its
|
|
845
|
+
default public listings. The flag is read from `default_show`, which AquaCache
|
|
846
|
+
patch 65 renamed from `publicly_visible` on 2026-10-15; a response carrying
|
|
847
|
+
neither column counts every series as shown.
|
|
844
848
|
|
|
845
849
|
#### `get_snow_course_stations(active_only, bbox)` → `list[dict]`
|
|
846
850
|
|
|
@@ -971,7 +975,7 @@ Five vocabularies, exported separately and unioned into `DATA_FLAGS`:
|
|
|
971
975
|
| Course trends | `GET /snow-survey/trends` |
|
|
972
976
|
| Flag vocabularies | `GET /grades`, `/approvals`, `/qualifiers` |
|
|
973
977
|
|
|
974
|
-
Base URL: `https://service.yukon.ca/water-data/api/
|
|
978
|
+
Base URL: `https://service.yukon.ca/water-data/api/v2`
|
|
975
979
|
|
|
976
980
|
### Notes and gotchas
|
|
977
981
|
|
{easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/stations/clients/ceaza/ceaza_client.py
RENAMED
|
@@ -66,7 +66,9 @@ Known quirks (checked October 2026)
|
|
|
66
66
|
date range and also with the documentation's example ``user`` values.
|
|
67
67
|
The **JSON** form returned full ranges (13 years daily for Tascadero
|
|
68
68
|
snow depth, 4,748 rows, in 3.5 s). The client uses JSON and splits
|
|
69
|
-
requests into windows of
|
|
69
|
+
requests into windows of at most one year (365 days), the limit CEAZA-Met
|
|
70
|
+
gave for registered users (e-mail from Cristian Orrego, 2026-10-23: "hasta
|
|
71
|
+
1 año en cada [consulta]").
|
|
70
72
|
- Errors come back as HTTP 200: an unsupported ``interv`` gives an HTML
|
|
71
73
|
``<p>ERROR en lib_datos…</p>`` before the JSON (no ``serie``); an unknown
|
|
72
74
|
sensor gives ``e_cod: null`` and a ``serie`` of empty rows. Both raise
|
|
@@ -194,7 +196,8 @@ SENSOR_COLUMNS = (
|
|
|
194
196
|
|
|
195
197
|
#: Interval enum → ``interv`` code, and the request window per interval.
|
|
196
198
|
_INTERV: dict[str, str] = {"daily": "dia", "hourly": "hora"}
|
|
197
|
-
|
|
199
|
+
#: CEAZA-Met allows registered users at most one year per request.
|
|
200
|
+
_WINDOW_DAYS: dict[str, int] = {"daily": 365, "hourly": 365}
|
|
198
201
|
|
|
199
202
|
#: Earliest date the documentation allows for ``fecha_inicio``.
|
|
200
203
|
_EARLIEST = "2004-01-31"
|
{easysnowdata-0.3.3 → easysnowdata-0.3.4}/easysnowdata/stations/clients/yukon/yukon_client.py
RENAMED
|
@@ -14,9 +14,14 @@ Primary use cases:
|
|
|
14
14
|
daily snow-depth records reaching the Arctic coast (Herschel Island
|
|
15
15
|
69.57°N; Komakuk Beach from 1963).
|
|
16
16
|
|
|
17
|
-
API documentation : https://service.yukon.ca/water-data/api/
|
|
18
|
-
Base URL : https://service.yukon.ca/water-data/api/
|
|
17
|
+
API documentation : https://service.yukon.ca/water-data/api/v2/__docs__/
|
|
18
|
+
Base URL : https://service.yukon.ca/water-data/api/v2
|
|
19
19
|
Authentication : None — the API is fully open.
|
|
20
|
+
Source code : https://github.com/YukonWRB/YGwater (``inst/plumber/``; as of
|
|
21
|
+
2026-10-26 the live API matches ``dev.WRB``, not ``main``) on top of
|
|
22
|
+
the https://github.com/YukonWRB/AquaCache database, whose
|
|
23
|
+
``inst/patches/`` record schema changes such as the
|
|
24
|
+
``publicly_visible`` → ``default_show`` rename.
|
|
20
25
|
|
|
21
26
|
Endpoints used
|
|
22
27
|
--------------
|
|
@@ -114,7 +119,10 @@ logger = logging.getLogger(__name__)
|
|
|
114
119
|
|
|
115
120
|
# ── Constants ────────────────────────────────────────────────────────────────
|
|
116
121
|
|
|
117
|
-
BASE_URL = "https://service.yukon.ca/water-data/api/
|
|
122
|
+
BASE_URL = "https://service.yukon.ca/water-data/api/v2"
|
|
123
|
+
|
|
124
|
+
#: Identifies easysnowdata traffic to the AquaCache operators.
|
|
125
|
+
_USER_AGENT = "easysnowdata (+https://github.com/egagli/easysnowdata)"
|
|
118
126
|
|
|
119
127
|
_DEFAULT_TIMEOUT = 120
|
|
120
128
|
_DEFAULT_RETRIES = 3
|
|
@@ -207,7 +215,7 @@ _ROW_LIMIT = 1_000_000
|
|
|
207
215
|
#: depth starts 1963-12-26, so 1900 is comfortably early.
|
|
208
216
|
_EPOCH = "1900-01-01"
|
|
209
217
|
|
|
210
|
-
_YUKON_DATA_SOURCE = f"Yukon Water Data (AquaCache) API
|
|
218
|
+
_YUKON_DATA_SOURCE = f"Yukon Water Data (AquaCache) API v2 — {BASE_URL}"
|
|
211
219
|
|
|
212
220
|
# ── Public variable / flag tables ────────────────────────────────────────────
|
|
213
221
|
|
|
@@ -533,6 +541,15 @@ def _to_bool(value: Any) -> bool:
|
|
|
533
541
|
return str(value).strip().upper() == "TRUE"
|
|
534
542
|
|
|
535
543
|
|
|
544
|
+
def _series_shown(row: dict) -> bool:
|
|
545
|
+
"""Read a ``/timeseries`` row's ``default_show`` flag (``publicly_visible``
|
|
546
|
+
before AquaCache patch 65); a row carrying neither counts as shown."""
|
|
547
|
+
for key in ("default_show", "publicly_visible"):
|
|
548
|
+
if key in row:
|
|
549
|
+
return _to_bool(row[key])
|
|
550
|
+
return True
|
|
551
|
+
|
|
552
|
+
|
|
536
553
|
def _normalize_value(value: Any) -> float | None:
|
|
537
554
|
"""Convert a raw field to float, mapping sentinels to ``None``."""
|
|
538
555
|
num = _to_float(value)
|
|
@@ -830,7 +847,7 @@ class YukonClient:
|
|
|
830
847
|
self.max_retries = max_retries
|
|
831
848
|
self.backoff = backoff
|
|
832
849
|
self._session = session or requests.Session()
|
|
833
|
-
self._session.headers.update({"Accept": "text/csv"})
|
|
850
|
+
self._session.headers.update({"Accept": "text/csv", "User-Agent": _USER_AGENT})
|
|
834
851
|
|
|
835
852
|
# Response caches — the catalogue endpoints are queried repeatedly
|
|
836
853
|
# while resolving stations and variables.
|
|
@@ -915,7 +932,9 @@ class YukonClient:
|
|
|
915
932
|
variables : list[str] or str, optional
|
|
916
933
|
Restrict to these :data:`VARIABLES` keys or standardized types.
|
|
917
934
|
publicly_visible_only : bool
|
|
918
|
-
Drop series
|
|
935
|
+
Drop series AquaCache hides from its default public listings
|
|
936
|
+
(``default_show = FALSE``, formerly ``publicly_visible``;
|
|
937
|
+
default True).
|
|
919
938
|
|
|
920
939
|
Returns
|
|
921
940
|
-------
|
|
@@ -1810,7 +1829,9 @@ class YukonClient:
|
|
|
1810
1829
|
"start_datetime": (row.get("start_datetime") or "").strip(),
|
|
1811
1830
|
"end_datetime": (row.get("end_datetime") or "").strip(),
|
|
1812
1831
|
"active": _to_bool(row.get("active")),
|
|
1813
|
-
|
|
1832
|
+
# AquaCache patch 65 (2026-10-15) renamed publicly_visible to
|
|
1833
|
+
# default_show; read either, and count a row with neither as shown.
|
|
1834
|
+
"publicly_visible": _series_shown(row),
|
|
1814
1835
|
"owner": (row.get("default_owner") or "").strip(),
|
|
1815
1836
|
"networks": _parse_pg_array(row.get("networks")),
|
|
1816
1837
|
}
|
|
@@ -131,7 +131,7 @@ NETWORKS: dict[str, Network] = {
|
|
|
131
131
|
requires=(),
|
|
132
132
|
extent="Yukon and neighbouring BC/Alaska courses",
|
|
133
133
|
data_provider="Government of Yukon",
|
|
134
|
-
api_url="https://service.yukon.ca/water-data/api/
|
|
134
|
+
api_url="https://service.yukon.ca/water-data/api/v2",
|
|
135
135
|
id_key="station_id",
|
|
136
136
|
# "09AA-M1", "08AA-SC01", "10MD-MET-00004" — hyphenated
|
|
137
137
|
code_pattern=r"^[0-9]{2}[A-Z]{2}-[A-Z0-9-]+$",
|
|
@@ -8,7 +8,7 @@ stub session. ``live`` tests hit the real web service (no credentials).
|
|
|
8
8
|
"""
|
|
9
9
|
|
|
10
10
|
import json
|
|
11
|
-
from datetime import date
|
|
11
|
+
from datetime import date, timedelta
|
|
12
12
|
|
|
13
13
|
import pytest
|
|
14
14
|
|
|
@@ -453,18 +453,23 @@ def test_get_data_hourly_has_datetime(client, session):
|
|
|
453
453
|
|
|
454
454
|
def test_get_data_clips_to_sensor_dates_and_splits_windows(client, session):
|
|
455
455
|
# No dates: each sensor from its first reading to its last (HUAL ended
|
|
456
|
-
# 2019), in
|
|
456
|
+
# 2019), in windows of at most one year (CEAZA-Met's per-request limit).
|
|
457
457
|
client.get_data("HUAL", variables="snwd")
|
|
458
|
-
|
|
459
|
-
assert
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
458
|
+
calls = session.series_calls()
|
|
459
|
+
assert {c["s_cod"] for c in calls} == {"HUALAN"}
|
|
460
|
+
spans = [(c["fecha_inicio"], c["fecha_fin"]) for c in calls]
|
|
461
|
+
assert spans[0][0] == "2014-04-30" and spans[-1][1] == "2019-10-23"
|
|
462
|
+
for (b, e), (nb, _) in zip(spans, spans[1:]):
|
|
463
|
+
assert date.fromisoformat(nb) == date.fromisoformat(e) + timedelta(days=1)
|
|
464
|
+
assert all(
|
|
465
|
+
(date.fromisoformat(e) - date.fromisoformat(b)).days < 365 for b, e in spans
|
|
463
466
|
)
|
|
464
467
|
session.calls.clear()
|
|
465
468
|
client.get_data("TASC", variables="ae_mm", end_date="2025-12-31")
|
|
466
469
|
spans = [(c["fecha_inicio"], c["fecha_fin"]) for c in session.series_calls()]
|
|
467
|
-
assert spans ==
|
|
470
|
+
assert len(spans) == 14
|
|
471
|
+
assert spans[0] == ("2012-11-27", "2013-11-26")
|
|
472
|
+
assert spans[-1][1] == "2025-12-31"
|
|
468
473
|
session.calls.clear()
|
|
469
474
|
# Outside a sensor's life: no request at all.
|
|
470
475
|
assert client.get_data("HUAL", begin_date="2024-01-01") == []
|
|
@@ -900,3 +900,24 @@ def test_temperature_output_units_are_degrees_celsius():
|
|
|
900
900
|
if unit != "°C":
|
|
901
901
|
bad[(name, key)] = unit
|
|
902
902
|
assert bad == {}, bad
|
|
903
|
+
|
|
904
|
+
|
|
905
|
+
@pytest.mark.parametrize(
|
|
906
|
+
("extra", "shown"),
|
|
907
|
+
[
|
|
908
|
+
({"default_show": "TRUE"}, True),
|
|
909
|
+
({"default_show": "FALSE"}, False),
|
|
910
|
+
# Responses from before AquaCache patch 65 (2026-10-15).
|
|
911
|
+
({"publicly_visible": "TRUE"}, True),
|
|
912
|
+
({"publicly_visible": "FALSE"}, False),
|
|
913
|
+
({}, True),
|
|
914
|
+
],
|
|
915
|
+
)
|
|
916
|
+
def test_yukon_series_visibility_flag(extra, shown):
|
|
917
|
+
row = {
|
|
918
|
+
"timeseries_id": "1",
|
|
919
|
+
"parameter_name": "snow depth",
|
|
920
|
+
"aggregation_type": "",
|
|
921
|
+
**extra,
|
|
922
|
+
}
|
|
923
|
+
assert YukonClient()._parse_series(row)["publicly_visible"] is shown
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Live-API tests for YukonClient.
|
|
3
3
|
|
|
4
4
|
These tests hit the real Yukon Water Data (AquaCache) API
|
|
5
|
-
(https://service.yukon.ca/water-data/api/
|
|
5
|
+
(https://service.yukon.ca/water-data/api/v2) — an internet connection is
|
|
6
6
|
required. No API key is needed; the service is fully open.
|
|
7
7
|
|
|
8
8
|
Station-level assertions use long-running Yukon Snow Survey sites: the
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|