Remove dependency on
Fix HyRiver libraries requirements by specifying a range instead of exact version so
conda-forgecan resolve the dependencies.
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.
For now, retain compatibility with
Change missing value of both single-pixel and gridded versions to
Add a new model parameter for computing PET using
arid_correction. For arid regions, FAO 56 suggests subtracting the min temperature by 2 degrees. This parameter can be passed via
get_bycoordsto reduce memory usage by using a combination of
petmodule to improve performance and readability, and reduce code duplication.
Add more information about parameters that
Bump the minimum required version of
shapelyto 2.0, and use its new API.
Sync all minor versions of HyRiver packages to 0.14.0.
Convert relative imports to absolute with
Sync all patch versions of HyRiver packages to x.x.12.
show_versionsfunction to improve performance and print the output in a nicer table-like format.
Fix a bug in
get_bygeomwhere for small requests that lead to a single download URL, the function failed.
Skip 0.13.9 version so the minor version of all HyRiver packages become the same.
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 using
xarray.open_mfdataset. This should make the
bygeomfunction 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.
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.
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 as
keysfor the returned
pandas.DataFrameor a dimension called
idin the returned
Add a new argument called
get_bycoordsfunction for returning the results as a
xarray.Datasetinstead of a
pandas.DataFrame. When set to
True, the returned
xarray.Datasetwill have three attributes called
dateargument of both
by_geomfunctions now accepts
range-type objects for passing years, e.g.,
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)
pyupgradepackage to update the type hinting annotations to Python 3.10 style.
Fix the Daymet server URL.
Add the missing PyPi classifiers for the supported Python versions.
Append “Error” to all exception classes for conforming to PEP-8 naming conventions.
Bump the minimum versions of
py3depto 0.13.5 and that of
Fix a bug in
PETGriddedwhere the wrong data type was being set for
PETGridded, only chunk the elevation if the input climate data is chunked.
Set the minimum supported version of Python to 3.8 since many of the dependencies such as
rioxarrayhave dropped support for Python 3.7.
Adopt the default snow parameters’ values from a new source https://doi.org/10.5194/gmd-11-1077-2018 and add the citation.
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"
Add a new flag to both
snowwhich separates snow from the precipitation using the Martinez and Gupta (2010) method.
Add elevation data when computing PET regardless of the
Match the chunk size of
elevationwith that of the climate data.
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.
Clean up the PET computation functions’ output by removing temporary variables that are created during the computation.
Add more attributes for
Add type checking with
typeguardand fixed typing issues raised by
show_versionsto ensure getting correct versions of all dependencies.
Use the three new
ar.retrieve_*functions instead of the old
ar.retrievefunction to improve type hinting and to make the API more consistent.
sslargument for disabling the SSL certification verification (GH 41). Now, you can pass
ssl=Falseto disable the SSL verification in both
get_bycoordfunctions. Moreover, you can pass
--disable_sslto PyDaymet’s command line interface to disable the SSL verification.
Set the request caching’s expiration time to never expire. Add two flags to all functions to control the caching:
Add all the missing types so
importlib-metadatafor getting the version instead of
pkg_resourcesto decrease import time as discussed in this issue.
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 using
dtaccessor to gain access to the
priestley_taylormethods for computing PET.
Rewrite the command-line interface using
click.groupto improve UX. The command is now
pydaymet [command] [args] [options]. The two supported commands are
coordsfor getting climate data for a dataframe of coordinates and
geometryfor getting gridded climate data for a geo-dataframe. Moreover, Each sub-command now has a separate help message and example.
get_bylocin favor of
petargument in both
get_bygeomfunctions now accepts
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.
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.
Daymetclass by removing
pet_bygridmethods and creating a new public function called
potential_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.
Add command-line interface (GH 7).
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.
Drop support for Python 3.6 since many of the dependencies such as
pandashave done so.
Add examples to docstrings and improve writing.
Add more notes regarding the underlying assumptions for
Daymetclass to use
pydanticfor validating the inputs.
Increase test coverage.
Add announcement regarding the new name for the software stack, HyRiver.
pipinstallation and release workflow.
The first release after renaming hydrodata to PyGeoHydro.
mypychecks more strict and fix all the errors and prevent possible bugs.
Speed up CI testing by using
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 to
get_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 replace
get_bylocin the future. So consider migrating your code by replacing
get_bycoords. The input arguments of
get_bycoordsis very similar to
get_bygeom. Another difference between
get_bycoordsis column names where
get_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
get_bycoordsfunctions to download the respective summaries.
Add support for getting climate data for Hawaii and Puerto Rico by passing
get_bycoordsfunctions. The acceptable values are
hifor Hawaii, and
prfor Puerto Rico.
Add support for multipolygon.
Improve masking by geometry.
Use the newly added
pygeoogcfor getting Daymet data to increase the performance (almost 2x faster)
orjsonto speed-up JSON operations.
show_versionsfor showing versions of the installed deps.
Retained the compatibility with
xarray0.15 by removing the
load_datasetfor automatic handling of closing the input after reading the content.
yearsargument from both
datesargument now accepts both a tuple of start and end dates and a list of years.
Initial release on PyPI.