All notable changes to this project will be documented in this file.
The format is based on Common Changelog and this project uses Semantic Versioning.
- Relocated community resources section from overview page to resources page (#1253) (@Sherwin-14)
- Added the NASA Atmospheric Science Data Center's cloud provider to the integration tests. (#460) (@danielfromearth)
- Python 3.11 is no longer supported. (#1296) (@mfisher87)
- Fixed mypy type errors for missing stubs (virtualizarr, obstore, requests, xarray, etc.) (@betolink)
- While downloading, files will have temporary names until download completes. (@WeatherGod)
- BREAKING: refactored virtualization, now we have a unified virtualize() method that's compatible with VirtualiZarr 2.x and is open to most parsers not just dmrpp (#1271) (@betolink)
- Added
FutureWarningtoDataCollectionsandDataGranulesmethods in preparation for merge of #1187 in version 1.0. (#1267) (@andypbarrett) - Added
forcekwarg todownload()to force redownloads. (@WeatherGod)
consolidate_metadata(),open_virtual_dataset()andopen_virtual_mfdataset()have been removed in favor of a singlevirtualize()method (@betolink)
0.16.0 - 2026-01-30
- Improved performance of fetching temporary S3 credentials (roughly 4x speedup) by using EDL user token rather than EDL username/password in request (#1182) (@chuckwondo)
open_virtual_datasetsnow acceptsload=Falseto avoid materializing indexes when they are not needed (e.g. xarray pre-processing metadata). Fixes (#1185) (@betolink)
- Added methods
doiandcitationtoDataCollectionclass. (#203) (@Sherwin-14, @chuckwondo) - Added property
__geo_interface__toDataGranuleclass. (#1179) (@s-kganz)
-
Breaking: Remove default automatic login behavior. This removes previously undocumented behavior, where a user would be logged in automatically (i.e., without having to call
earthdata.loginexplicitly) if the user had valid EDL credentials specified either via environment variables or anetrcfile. This led to potentially unexpected behavior.Removing this automatic behavior breaks existing user code that does not make an explicit call to
earthdata.loginbefore streaming/downloading data, but used to succeed due to the (perhaps unknown) automatic login behavior.Users must now explicitly call
earthdata.loginin order to access data that requires EDL authentication.Removing this automatic behavior was necessary to fix #945.
- Ignore environment variables
EARTHDATA_USERNAMEandEARTHDATA_PASSWORDwhenEARTHDATA_TOKENis set (#1121) (@chuckwondo) - Use only specified login strategy to attempt login, when strategy other than "all" is specified (#945) (@chuckwondo)
- Fix undesirable pre-commit changes when running on Windows (#1143) (@ana-sher)
- No longer erroneously strip authorization header for valid hosts (#1130) (@chuckwondo)
- Fix
AttributeErrorraised byAuth.get_s3_credentialswhenEARTHDATA_TOKENenvironment variable is set, which prevented theusernameattribute from being defined on theAuthinstance (#1181) (@chuckwondo)
0.15.1 - 2025-09-16
0.15.0 - 2025-09-16
- Populated glossary section under USER-REFERENCE. (#1027) (@Sherwin-14)
- Change default cache behavior in fsspec from
readaheadtoblockcache. Allow user defined config withopen_kwargsin the.open()method. This improves performance by an order of magnitude. (#251) (#771) (@betolink) - Add
show_progressargument toearthaccess.download()to let the user control display of progress bars. Defaults to true for interactive sessions, otherwise false. (#612) (#1065) (@Sherwin-14) - Updated bug and triage label names in bug Issue template. (#998) (@asteiker)
downloadnow raisesDownloadFailureexception on failure. (#612) (@Sherwin-14)GESDISCshould beGES_DISCin docstrings. (#1037) (@abarciauskas-bgse)open_virtual_mfdatasetnow usesvirtualizarrv2, andobstorein place offsspec. Updated Zarr to V3 xref #967. (#1074) (@owenlittlejohns)- Populate search and access user guides. (#1035) (@andypbarrett)
- Added
tenacityto retry downloads up to 3 times with exponential backoff time, replaces #1016 (#481) (@betolink) - Add notebook demonstrating workflow with TEMPO Level 3 data as a virtual dataset (#924) (@danielfromearth)
get_s3_filesystemnow accepts anendpointargument for specifying a credentials url. (#602) (@rwegener2)- s3
downloadnow checks for existing files. (#807) (@Sherwin-14) - Added triaging guide (#754) (@Sherwin-14, @mfisher87)
downloadnow returns Path consistently. ([#595])(#595) (@Sherwin-14)- Users may now authenticate with an existing Earthdata login token with
environment variable
EARTHDATA_TOKEN(#484) (@kgrimes2) - Added top level
statusfunction to check the statuses of NASA Earthdata services (#161) (@Sherwin-14)
- Breaking: Removed
has_granules=trueandinclude_granule_counts=trueas default parameters upon creation of aDataCollectionsinstance. (#884) (@Sherwin-14) - Python 3.10 is no longer supported. (#966) (@weiji14)
- Files can be downloaded in the cloud (#1009) (@betolink)
- Corrected Harmony typo in notebooks/Demo.ipynb (#995) (@stelios-c)
- Resolved an error in virtual dataset tutorial notebook (#1044) (@danielfromearth)
- Issue when
FileDistributionInformationdid not exist for a collection (#971) (@mike-gangl) - Reflected new publisher of SEDAC datasets (#1032) (@itcarroll)
- Better proxying by
EarthAccessFilewith correct MRO (#610) (@alexandervladsemenov, @itcarroll)
0.14.0 - 2025-02-11
search_datasetsnow accepts ahas_granuleskeyword argument. Usehas_granules=Falseto search for metadata about collections with no associated granules. The default value set inDataCollectionsremainsTrue. (#939) (@juliacollins)
- Breaking: earthaccess will now raise an exception when login credentials are
rejected. If you need the old behavior, please use a
tryblock. (#946) (@mfisher87, @chuckwondo, @jhkennedy)
0.13.0 - 2025-01-28
- VirtualiZarr: earthaccess can open archival formats (NetCDF, HDF5) as if they were Zarr by leveraging VirtualiZarr In order to use this capability the collection needs to be supported by OPeNDAP and have dmrpp files. See example notebooks! (@ayushnag, @TomNicholas)
-
earthaccess.downloadwill let requests automatically decode compressed content (#887) (@itcarroll) -
earthaccess.downloadnow shares the authenticated session cookie among threads to avoid overloading EDL. (#913) (@hailiangzhang)
0.12.0 - 2024-11-13
- Refactored our development guide to clarify development environment setup and how to run tests (@jhkennedy)
- Use built-in
assertstatements instead ofunittestassertions in integration tests (#743) (@chuckwondo)
- Add support for opening data files with virtualizarr and NASA dmrpp with
open_virtual_dataset(#605) (@ayushnag) - Add support for
NETRCenvironment variable to override default.netrcfile location (#480) (@chuckwondo) - Add
noxsession for running integration tests locally (#815; #872) (@chuckwondo, @jhkennedy) - Auto-add comment to PR that requires maintainer to review and re-run integration tests (#824) (@chuckwondo)
- Add authentication to User Guide documentation. (#763) (@andypbarrett)
- The
scripts/integration-test.shscript has been removed in favor of theintegration-testsnox session. (#872) (@jhkennedy) - Python 3.9 is no longer supported. (#876) (@mfisher87)
earthaccess.downloadwill not ignore errors by default (#581) (@Sherwin-14, @chuckwondo, @mfisher87)- Integration tests no longer clobber existing
.netrcfile (#806) (@chuckwondo) - Return an empty list instead of raising an
IndexErrorwhen searches find no results. (#526) (@jhkennedy)
0.11.0 2024-10-01
- Automatically refresh EDL token and deprecate the
Auth.refresh_tokensmethod with no replacement, as there is no longer a need to explicitly refresh (#484) (@fwfichtner) - Deprecate
earthaccess.get_s3fs_sessionandStore.get_s3fs_session. Useearthaccess.get_s3_filesystemandStore.get_s3_filesystem, respectively, instead (#766) (@Sherwin-14, @chuckwondo)
- Add Issue Templates (#281) (@Sherwin-14)
- Support Service queries (#447) (@nikki-t, @chuckwondo, @mfisher87, @betolink)
- Add example PR links to pull request template (#756) (@Sherwin-14, @mfisher87)
- Add Contributing Naming Convention document (#532) (@Sherwin-14, @mfisher87)
- Remove
binder/directory, as we no longer need a special binder environment with the top-levelenvironment.ymlintroduced in #733 (@jhkennedy)
- Remove broken link "Introduction to NASA earthaccess" (#779) (@Sherwin-14)
- Restore automation for tidying notebooks used in documentation (#788) (@itcarroll)
- Remove the base class on
EarthAccessFileto fix method resolution (#610) (@itcarroll)
0.10.0 2024-07-19
- Perform YAML formatting with
yamlfmtinstead ofprettier(#555) (@chuckwondo, @mfisher87) - Replace
printcalls withloggingcalls where appropriate and add T20 Ruff rule (#511) (@botanical, @chuckwondo, @mfisher87) - Update
CHANGELOG.mdto follow Common Changelog conventions (#584) (@danielfromearth, @chuckwondo, @jhkennedy, @mfisher87)
- Enable queries to Earthdata User Acceptance Testing (UAT) system for authenticated accounts (#421) (@danielfromearth, @mfisher87, @jhkennedy, @chuckwondo, @betolink)
- Add support for Python 3.12 (#457) (@chuckwondo, @mfisher87)
- Added documentation for the backwards compatibility (#471) (@Sherwin-14, @mfisher87)
- Breaking: Remove support for Python 3.8 (#457) (@mfisher87, @chuckwondo)
- Breaking: Remove the
get_user_profilemethod and theemail_addressandprofileattributes from theAuthclass. Calling the EDL API to get user profile information is not intended for library access and is not necessary for this library's intended use cases. (#421) (@danielfromearth, @mfisher87, @jhkennedy, @chuckwondo, @betolink)
- Use Search After for collection and granule searches to support deep-paging through large result sets (#483) (@doug-newman-nasa, @chuckwondo, @mfisher87, @betolink)
- Correct and enhance static type hints for functions and methods that make CMR queries or handle CMR query results (#508) (@mfisher87, @jhkennedy, @chuckwondo, @betolink)
- Create destination path prior to direct S3 downloads, if it doesn't already exist (#562) (@itcarroll, @mfisher87, @chuckwondo)
- Fix broken image link in sea level rise tutorial (#427) (@jbrownrs)
0.9.0 - 2024-02-28
- Improve search by adding instrument and project to collection queries (#427) (@betolink, @mfisher87, @jhkennedy)
- Add user-agent in the request to track usage (#436) (@asteiker, @mikedorfman, @betolink)
- Implement more trusted domains in the SessionWithRedirection (#439) (@cmspeed, @mfisher87, @betolink, @jhkennedy)
- Use an authenticated session for hits() instead of calling parent's class super() (#438) (@betolink, @mfisher87, @jhkennedy)
0.8.2 - 2023-12-06
- Update poetry lockfile (#403) (@jrbourbeau)
- Use YAML formatting (prettier) (#398) (@jrbourbeau)
- Add CI tests with minimum supported versions (#402) (@jrbourbeau, @mfisher87, @jhkennedy)
- Add
python-dateutilas a direct dependency (#397) (@jrbourbeau)
- Remove binder PR comments (#400) (@jrbourbeau)
- Enable AWS check with IMDSv2 (#391) (@jrbourbeau, @mfisher87, @itcarroll)
- Add region to running in AWS check (#395) (@jrbourbeau, @betolink)
- Handle opening multi-file granules (#394) (@jrbourbeau, @betolink)
0.8.1 - 2023-12-01
- Handle S3 credential expiration more gracefully (#354) (@jrbourbeau, @mfisher87)
- Use dependabot to update GitHub Actions (#373) (@jhkennedy)
- Consolidate dependabot updates (#380) (@mfisher87)
- Switch to
rufffor formatting (#372) (@jrbourbeau, @mfisher87)
- Add
kerchunkmetadata consolidation utility (#278) (@jrbourbeau, @mfisher87, @betolink, @martindurant, @lsterzinger, @mrocklin)
0.8.0 - 2023-11-29
- Raise errors instead of
printing them in more cases (#351) (@jrbourbeau) daacandproviderparameters are now normalized to uppercase, since lowercase characters are never valid (#355) (@jrbourbeau, @mfisher87)- Allow single file URL inputs for
earthaccess.download(#347) (@jrbourbeau, @mfisher87)
- Fix zero granules being reported for restricted datasets (#358) (@danielfromearth)
0.7.1 - 2023-11-08
- Treat granules without
RelatedUrlsas not cloud-hosted (#339) (@mfisher87)
0.7.0 - 2023-10-31
earthaccess.downloadnow accepts a single granule as input in addition to a list of granules (#317) (@jrbourbeau)earthaccess.downloadnow returns fully qualified local file paths (#317) (@jrbourbeau)
- Earthaccess will now automatically search for Earthdata authentication.
earthaccess.login()still works as before, but is no longer required if you have a~/.netrcfile for have setEARTHDATA_USERNAMEandEARTHDATA_PASSWORDenvironment variables (#300) (@jrbourbeau, @mfisher87) - Add
earthaccess.auth_environ()utility for getting Earthdata authentication environment variables (#316) (@jrbourbeau, @mfisher87)
- Fix spelling mistake in
accessvariable assignment (direc->direct) inearthaccess.store._get_granules(#308) (@trey-stafford) - Pass
threadsarg to_open_urls_httpsinearthaccess.store._open_urls, replacing the hard-coded value of 8 (#308) (@trey-stafford) - Return S3 data links by default when in region (#318) (@jrbourbeau, @mfisher87, @jhkennedy)
0.6.0 - 2023-09-20
earthaccess.get_s3fs_session()can use the results to find the right set of S3 credentials (#296) (@betolink)
earthaccess.search_datasets()andearthaccess.search_data()can find restricted datasets (#296) (@betolink)- Fix distributed serialization for EarthAccessFile (#301) (#276) (@jrbourbeau, @betolink)
0.5.3 - 2023-08-01
- Add download from onprem how-to (#265) (@andypbarrett)
- For CI, integration tests are now only run when we push to main (after a merge) (#267) (@betolink)
- For CI, unit tests are run for any branch and opened PR (#267) (@betolink)
- Update example in
search_datasets(#247) (@jrbourbeau) - Improve remote cluster performance (#259) (@jrbourbeau, @mrocklin, @mfisher87)
- Return useful error message for failed download (#263) (@andypbarrett)
- Granule's size() returned zero (#267) (@betolink)
- Add exception handling for fsspec sessions, thanks to @jrbourbeau (#249) (@jrbourbeau)
0.5.2 - 2023-04-21
- Remove Benedict (core dependency) as the default dict for JSON coming from CMR (#229, #230) (@psarka)
- S3 credentials endpoints are tried with tokens and basic auth until all the DAACs accept the same auth (#234) (@betolink)
0.5.1 - 2023-03-20
- For CI, documentation for readthedocs fixed by including poetry as the default tool (#214) (@betolink)
- For CI, injected new secrets to test Auth using the icepyx convention (EARTHDATA_USERNAME) (#214) (@JessicaS11, @betolink)
- Add ability to get the user's profile with auth.user_profile which includes the user email (#214) (@betolink)
- Add LAAD as a supported DAAC (#214) (@betolink)
- Remove magic from dependencies (not available in windows and not used but just in tests) (#214) (@betolink)
get_s3_credentials()only worked when a netrc file was present, bug reported by @scottyhq and @JessicaS11 (#214) (@betolink, @JessicaS11, @scottyhq)- Include tests for all DAAC S3 endpoints (#214) (@betolink)
- Update notebooks to use the new top level API (#214) (@betolink)
0.5.0 - 2023-02-23
- For CI, documentation is now only built for the main, dev and documentation branches (#202) (@betolink)
- For CI, notebooks are executed every time the documentation gets published! (#202) (@betolink, @asteiker)
- Add ability to use the top level API to get S3 credentials, authenticated fsspec and requests sessions! (#202) (@betolink)
- Make available ASF direct access for Sentinel1 products (#202) (@betolink)
- Fix a bug where the Auth class is invoked without the proper parameters (#202) (@JessicaS11)
- Raise and exception if a user specifies the netrc strategy and there is no netrc (#202) (@betolink)
- S3 URLs broke the Store class when opened outside AWS (#202) (@betolink)
- Opening files using URLs was not working properly on AWS, thanks to @amfriesz for reporting it! (#202) (@betolink, @amfriesz)
0.4.7 - 2022-12-11
- Fix open() for direct access (#186) (@betolink)
- Move python-magic to the dev section because it is a test dependency (#186) (@betolink)
- Make minor edits in the README (#186) (@betolink)
0.4.6 - 2022-12-08
- Add feature to search collections by DOI (#183) (@betolink)
- Add new API documentation and simplify notation to access data (#183) (@jroebuck932)
0.4.1 - 2022-11-02
- For CI, install Poetry using the new script (#131) (@betolink)
- For CI, change dependabot alerts to monthly (#131) (@betolink)
- Improve documentation by reimplementing python_cmr methods for docstring compatibility (#131) (@betolink)
- Use
CMR-Search-After(#145) (@betolink)
- Add GES_DISC S3 endpoint (#131) (@betolink)
- Improve documentation by adding types to method signatures (#131) (@betolink)
- Add store, auth to docs and update mkdocs config (#119) (@betolink)
- For
auth, add the ability to persist credentials into a.netrcfile (#119) (@betolink) - For
store, use fsspec s3fs for in cloud access and https sessions for out of region access (#43) (@betolink) - For
store, can open files with fsspec in and out of region (stream into xarray) (#41) (@betolink)
0.3.0 - 2022-04-28
- Update python-cmr to NASA fork (#75) (@jhkennedy)
- Drop unused
pydanticdependency (5761548) (@jhkennedy) - Auth can refresh CMR tokens (#82) (@betolink)
- Verify git tag and poetry version are the same before publishing to PyPI
- Fix bug with CMR tokens
- Add missing
python-datutildependency (747e992) (@jhkennedy)
0.2.2 - 2022-03-23
- Fix store to download multi-file granules (#73) (@betolink)
- Fix granule formatting (#73) (@betolink)
0.2.1 - 2022-03-19
- Rename Accessor to Store
(
4bd618d) (@betolink) - Relax dependency requirements
(
c9a5ed6) (@betolink) - Store can download plain links if they are on prem
(
92d2919) (@betolink)
- Add basic classes to interact with NASA CMR, EDL and cloud access.
- Basic object formatting.