History#
0.19.3 (2025-03-07)#
New Features#
Improve the performance of
get_bycoordsfunction by using the single-pixel API of the Daymet server.Add a new argument to both
get_bygeomandget_bycoordsfunctions calledconn_timeoutfor setting the connection timeout in seconds. The default value is 5 minutes.Add a new argument to both
get_bygeomandget_bycoordsfunctions calledvalidate_filesize. When set toTrue, the function checks the file size of the previously cached files and will re-download if the local filesize does not match that of the remote. Defaults toFalse. Setting this toFalsecan be useful when you are sure that the cached files are not corrupted and just want to get the combined dataset more quickly. This is faster because it avoids web requests that are necessary for getting the file sizes.
Internal Changes#
Use TinyRetriever for all server requests. It offers the same functionalities as the previous
_streamingmodule and has the same dependencies. It has a more robust handling of async threads and is more efficient.
0.19.1 (2025-01-17)#
This release is a major refactoring of the package to make it more lightweight
and independent. The package now uses aiohttp and aiofiles with a limit
on the number of simulnatious connections to the host, for handling
all server requests. This avoids hammering the server with multiple requests and
improves the performance and reliability of the package. The package no longer
depends on other HyRiver libraries, making it more lightweight and faster to load.
New Features#
Add a new function to get Daymet tile IDs for a given geometry called
daymet_tiles.
Internal Changes#
Remove dependency on other HyRiver libraries to make the package more lightweight and independent.
Use
aiohttpandaiofilesfor handling all server requests. This avoids hammering the server with multiple requests and improves the performance and reliability of the package.Remove dependency on
geopandasand useshapelyonly for handling geometries. This makes the package more lightweight and faster.
Breaking Changes#
Use a more efficient and reliable approach for adding elevation data to the climate dataset for computing PET. We now directly use 30-m elevation data from 3DEP and resample it to the climate data resolution by averaging each cell within a 1-km window.
Remove the option to disable SSL in all functions. Now, SSL verification is always enabled.
0.18.0 (2024-10-05)#
Breaking Changes#
Drop support for Python 3.8 since its end-of-life date is October 2024.
Remove all exceptions from the main module and raise them from the
exceptionsmodule. This is to declutter the public API and make it easier to maintain.
0.17.1 (2024-09-14)#
Internal Changes#
A release without change to match the version of other HyRiver packages.
0.16.3 (2024-05-16)#
Bug Fixes#
In
get_bystacfunction, only three variables were being returned regardless of the input variables. This version fixes this issue by returning all the requested variables.
Internal Changes#
Add the
exceptionsmodule to the high-level API to declutter the main module. In the future, all exceptions will be raised from this module and not from the main module. For now, the exceptions are raised from both modules for backward compatibility.Switch to using the
srclayout instead of theflatlayout for the package structure. This is to make the package more maintainable and to avoid any potential conflicts with other packages.
0.16.1 (2024-01-15)#
New Features#
Add a new function for getting Daymet data from Microsoft’s Planetary Computer called
get_bystac. Although this function can be much faster thanget_bygeom, currently, it gives access to Daymet v4.2 from 1980 to 2020. As discussed here, the Daymet v4.5 will be added to the Planetary Computer in the future. Until then, for accessing the latest version of Daymet (v4.5) you need to useget_bygeom. Additionally, this function requiresfsspec,dask,zarr, andpystac-clientpackages.Make
separate_snowa standalone, pure, and public function. Now, it can be used like so:pydaymet.separate_snow.Change the length unit from
kmtomforget_bygeom.
Internal Changes#
The
potential_etfunction usespy3dep.add_elevationfunction but the CRS info gets lost in the process for the newelevationvariable. This version fixes this issue by adding the CRS info to theelevationvariable.Change
PetParamsclass fromNamedTupletodataclassfor better performance and consistency. Now, it has a newclassmethodcalledfieldsthat returns a list of the four fields of the class.
0.16.0 (2024-01-03)#
Breaking Changes#
Bump min version of
shapelyto 2.
Internal Changes#
Use the new
py3dep.add_elevationAPI.
0.15.2 (2023-09-22)#
Internal Changes#
Remove dependency on
dask.
0.15.1 (2023-09-02)#
Bug Fixes#
Fix HyRiver libraries requirements by specifying a range instead of exact version so
conda-forgecan resolve the dependencies.
0.15.0 (2023-05-07)#
From release 0.15 onward, all minor versions of HyRiver packages
will be pinned. This ensures that previous minor versions of HyRiver
packages cannot be installed with later minor releases. For example,
if you have py3dep==0.14.x installed, you cannot install
pydaymet==0.15.x. This is to ensure that the API is
consistent across all minor versions.
New Features#
For now, retain compatibility with
shapely<2while supportingshapley>=2.
0.14.0 (2023-03-05)#
New Features#
Change missing value of both single-pixel and gridded versions to
numpy.nanfrom -9999.Add a new model parameter for computing PET using
priestlet_taylorandpenman_monteithmodels calledarid_correction. For arid regions, FAO 56 suggests subtracting the min temperature by 2 degrees. This parameter can be passed viapet_paramsindaymet_by*functions, orparamsinpotential_petfunction.Refactor
get_bycoordsto reduce memory usage by using a combination ofitertoolsandGeneratorobjects.Refactor the
petmodule to improve performance and readability, and reduce code duplication.
Documentation#
Add more information about parameters that
petfunctions accept.
Breaking Changes#
Bump the minimum required version of
shapelyto 2.0, and use its new API.
Internal Changes#
Sync all minor versions of HyRiver packages to 0.14.0.
0.13.12 (2023-02-10)#
Internal Changes#
Fully migrate
setup.cfgandsetup.pytopyproject.toml.Convert relative imports to absolute with
absolufy-imports.Sync all patch versions of HyRiver packages to x.x.12.
0.13.10 (2023-01-08)#
New Features#
Refactor the
show_versionsfunction to improve performance and print the output in a nicer table-like format.
Bug Fixes#
Fix a bug in
get_bygeomwhere for small requests that lead to a single download URL, the function failed.
Internal Changes#
Skip 0.13.9 version so the minor version of all HyRiver packages become the same.
0.13.8 (2022-12-09)#
Internal Changes#
More robust handling of getting large gridded data. Instead of caching the requests/ responses, directly store the responses as NetCDF files to a cache folder using
pygeoogc.streaming_downloadand ultimately read them usingxarray.open_mfdataset. This should make thebygeomfunction even faster than before and also make it possible to make large requests without having to worry about running out of memory (GH 59).Modify the codebase based on Refurb suggestions.
0.13.7 (2022-11-04)#
Since the release of Daymet v4 R1 on November 2022, the URL of Daymet’s server has been changed. Therefore, only PyDaymet v0.13.7+ is going to work, and previous versions will not work anymore.
New Features#
Add support for passing a list of coordinates to the
get_bycoordsfunction. Also, optionally, you can pass a list of IDs for the input coordinates that will be used askeysfor the returnedpandas.DataFrameor a dimension calledidin the returnedxarray.Datasetifto_xarrayis enabled.Add a new argument called
to_xarrayto theget_bycoordsfunction for returning the results as axarray.Datasetinstead of apandas.DataFrame. When set toTrue, the returnedxarray.Datasetwill have three attributes calledunits,description, andlong_name.The
dateargument of bothget_bycoordsandby_geomfunctions now acceptsrange-type objects for passing years, e.g.,range(2000-2005).
import pydaymet as daymet
coords = [(-94.986, 29.973), (-95.478, 30.134)]
idx = ["P1", "P2"]
clm = daymet.get_bycoords(coords, range(2000, 2021), coords_id=idx, to_xarray=True)
Internal Changes#
Use
pyupgradepackage to update the type hinting annotations to Python 3.10 style.Fix the Daymet server URL.
0.13.6 (2022-08-30)#
Internal Changes#
Add the missing PyPi classifiers for the supported Python versions.
0.13.5 (2022-08-29)#
Breaking Changes#
Append “Error” to all exception classes for conforming to PEP-8 naming conventions.
Internal Changes#
Bump the minimum versions of
pygeoogc,pygeoutils,py3depto 0.13.5 and that ofasync-retrieverto 0.3.5.
0.13.3 (2022-07-31)#
Bug Fixes#
Fix a bug in
PETGriddedwhere the wrong data type was being set forpetandelevationvariables.When initializing
PETGridded, only chunk the elevation if the input climate data is chunked.
0.13.2 (2022-06-14)#
Breaking Changes#
Set the minimum supported version of Python to 3.8 since many of the dependencies such as
xarray,pandas,rioxarrayhave dropped support for Python 3.7.
Internal Changes#
Use micromamba for running tests and use nox for linting in CI.
0.13.1 (2022-06-11)#
New Features#
Adopt the default snow parameters’ values from a new source https://doi.org/10.5194/gmd-11-1077-2018 and add the citation.
Bug Fixes#
0.13.0 (2022-03-03)#
Breaking Changes#
Remove caching-related arguments from all functions since now they can be set globally via three environmental variables:
HYRIVER_CACHE_NAME: Path to the caching SQLite database.HYRIVER_CACHE_EXPIRE: Expiration time for cached requests in seconds.HYRIVER_CACHE_DISABLE: Disable reading/writing from/to the cache file.
You can do this like so:
import os
os.environ["HYRIVER_CACHE_NAME"] = "path/to/file.sqlite"
os.environ["HYRIVER_CACHE_EXPIRE"] = "3600"
os.environ["HYRIVER_CACHE_DISABLE"] = "true"
0.12.3 (2022-02-04)#
New Features#
Add a new flag to both
get_bycoordsandget_bygeomfunctions calledsnowwhich separates snow from the precipitation using the Martinez and Gupta (2010) method.
Internal Changes#
Add elevation data when computing PET regardless of the
petmethod.Match the chunk size of
elevationwith that of the climate data.Drop
timedimension fromelevation,lon, andlatvariables.
Bug Fixes#
Fix a bug in setting dates for monthly timescales. For monthly timescale Daymet calendar is at 15th or 16th of the month, so input dates need to be adjusted accordingly.
0.12.2 (2022-01-15)#
Internal Changes#
Clean up the PET computation functions’ output by removing temporary variables that are created during the computation.
Add more attributes for
elevationandpetvariables.Add type checking with
typeguardand fixed typing issues raised bytypeguard.Refactor
show_versionsto ensure getting correct versions of all dependencies.
0.12.1 (2021-12-31)#
Internal Changes#
Use the three new
ar.retrieve_*functions instead of the oldar.retrievefunction to improve type hinting and to make the API more consistent.
0.12.0 (2021-12-27)#
New Features#
Expose the
sslargument for disabling the SSL certification verification (GH 41). Now, you can passssl=Falseto disable the SSL verification in bothget_bygeomandget_bycoordfunctions. Moreover, you can pass--disable_sslto PyDaymet’s command line interface to disable the SSL verification.
Breaking Changes#
Set the request caching’s expiration time to never expire. Add two flags to all functions to control the caching:
expire_afteranddisable_caching.
Internal Changes#
Add all the missing types so
mypy --strictpasses.
0.11.4 (2021-11-12)#
Internal Changes#
Use
importlib-metadatafor getting the version instead ofpkg_resourcesto decrease import time as discussed in this issue.
0.11.3 (2021-10-07)#
Bug Fixes#
There was an issue in the PET computation due to
dayofyearbeing added as a new dimension. This version fixes it and even further simplifies the code by usingxarray’sdtaccessor to gain access to thedayofyearmethod.
0.11.2 (2021-10-07)#
New Features#
Add
hargreaves_samaniandpriestley_taylormethods for computing PET.
Breaking Changes#
Rewrite the command-line interface using
click.groupto improve UX. The command is nowpydaymet [command] [args] [options]. The two supported commands arecoordsfor getting climate data for a dataframe of coordinates andgeometryfor getting gridded climate data for a geo-dataframe. Moreover, Each sub-command now has a separate help message and example.Deprecate
get_bylocin favor ofget_bycoords.The
petargument in bothget_bycoordsandget_bygeomfunctions now acceptshargreaves_samani,penman_monteith,priestley_taylor, andNone.
Internal Changes#
Refactor the
petmodule for reducing duplicate code and improving readability and maintainability. The code is smaller now and the functions for computing physical properties include references to equations from the respective original paper.
0.11.1 (2021-07-31)#
The highlight of this release is a major refactor of Daymet to allow for
extending PET computation function for using methods other than FAO-56.
New Features#
Refactor
Daymetclass by removingpet_bycoordsandpet_bygridmethods and creating a new public function calledpotential_et. This function computes potential evapotranspiration (PET) and supports both gridded (xarray.Dataset) and single pixel (pandas.DataFrame) climate data. The long-term plan is to add support for methods other than FAO 56 for computing PET.
0.11.0 (2021-06-19)#
New Features#
Add command-line interface (GH 7).
Use
AsyncRetrieverfor sending requests asynchronously with persistent caching. A cache folder in the current directory is created.Check for validity of start/end dates based on Daymet V4 since Puerto Rico data starts from 1950 while North America and Hawaii start from 1980.
Check for validity of input coordinate/geometry based on the Daymet V4 bounding boxes.
Improve accuracy of computing Psychometric constant in PET calculations by using an equation in Allen et al. 1998.
Breaking Changes#
Drop support for Python 3.6 since many of the dependencies such as
xarrayandpandashave done so.Change
loc_crsandgeo_crsarguments tocrsinget_bycoordsandget_bygeom.
Documentation#
Add examples to docstrings and improve writing.
Add more notes regarding the underlying assumptions for
pet_bycoordsandpet_bygrid.
Internal Changes#
Refactor
Daymetclass to usepydanticfor validating the inputs.Increase test coverage.
0.10.2 (2021-03-27)#
Add announcement regarding the new name for the software stack, HyRiver.
Improve
pipinstallation and release workflow.
0.10.0 (2021-03-06)#
The first release after renaming hydrodata to PyGeoHydro.
Make
mypychecks more strict and fix all the errors and prevent possible bugs.Speed up CI testing by using
mambaand caching.
0.9.0 (2021-02-14)#
Bump version to the same version as PyGeoHydro.
Update to version 4 of Daymet database. You can check the release information here
Add a new function called
get_bycoordsthat provides an alternative toget_bylocfor getting climate data at a single pixel. This new function uses THREDDS data server with NetCDF Subset Service (NCSS), and supports getting monthly and annual averages directly from the server. Note that this function will replaceget_bylocin the future. So consider migrating your code by replacingget_bylocwithget_bycoords. The input arguments ofget_bycoordsis very similar toget_bygeom. Another difference betweenget_bylocandget_bycoordsis column names whereget_bycoordsuses the units that are return by NCSS server.Add support for downloading monthly and annual summaries in addition to the daily timescale. You can pass
time_scaleasdaily,monthly, orannualtoget_bygeomorget_bycoordsfunctions to download the respective summaries.Add support for getting climate data for Hawaii and Puerto Rico by passing
regiontoget_bygeomandget_bycoordsfunctions. The acceptable values arenafor CONUS,hifor Hawaii, andprfor Puerto Rico.
0.2.0 (2020-12-06)#
Add support for multipolygon.
Remove the
fill_holeargument.Improve masking by geometry.
Use the newly added
async_requestsfunction frompygeoogcfor getting Daymet data to increase the performance (almost 2x faster)
0.1.3 (2020-08-18)#
Replaced
simplejsonwithorjsonto speed-up JSON operations.
0.1.2 (2020-08-11)#
Add
show_versionsfor showing versions of the installed deps.
0.1.1 (2020-08-03)#
Retained the compatibility with
xarray0.15 by removing theattrsflag.Replaced
open_datasetwithload_datasetfor automatic handling of closing the input after reading the content.Removed
yearsargument from bothbylocandbygeomfunctions. Thedatesargument now accepts both a tuple of start and end dates and a list of years.
0.1.0 (2020-07-27)#
Initial release on PyPI.