Skip to content

Commit 2ffa657

Browse files
feat(asset): move download from product to asset #1619
+ update/complete asset mapping behaviour #2069 + update provider configuration #2069 + update specific providers #2069 + centralize/deduplicate source #2069 + rework register download #2071 + rework downloader patching #2071 + rework http download + stream #2071 + rework cache management as statement #2071 + sanitize dependencies expression #2071 + rework aws download + stream #2071 + makes all download request pass through processor to manage download paralellize restrict #2071 + update tests and tests samples #2071
1 parent 82687ea commit 2ffa657

234 files changed

Lines changed: 122352 additions & 28770 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ htmlcov/
4141
.coverage
4242
.coverage.*
4343
.cache
44+
.mypy_cache
4445
nosetests.xml
4546
coverage.xml
4647
*,cover

CHANGES.rst

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1371,7 +1371,7 @@ v3.3.0 (2025-04-10)
13711371
Features
13721372
--------
13731373

1374-
* **plugins**: :class:`~eodag.plugins.search.build_search_result.ECMWFSearch` search-by-id (`#1580`_, `f296c52`_)
1374+
* **plugins**: :class:`~eodag.plugins.search.build_search_result.ecmwfsearch.ECMWFSearch` search-by-id (`#1580`_, `f296c52`_)
13751375

13761376
Bug Fixes
13771377
---------
@@ -1469,9 +1469,9 @@ Providers and product types updates
14691469
Plugins new features and fixes
14701470
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
14711471

1472-
* **[v3.1.0]** :class:`~eodag.plugins.search.build_search_result.ECMWFSearch`: simplified configuration (:pull:`1433`),
1472+
* **[v3.1.0]** :class:`~eodag.plugins.search.build_search_result.ecmwfsearch.ECMWFSearch`: simplified configuration (:pull:`1433`),
14731473
fixed queryables issues (:pull:`1509`), mapped geometry metadata (:pull:`1555`)
1474-
* [v3.1.0b1] Removed default :class:`~eodag.plugins.download.http.HTTPDownload` zip extension (:pull:`1400`)
1474+
* [v3.1.0b1] Removed default :class:`~eodag.plugins.download.protocol.http.HTTPDownload` zip extension (:pull:`1400`)
14751475
* [v3.1.0b1] Order and poll without downloading (:pull:`1437`)
14761476

14771477
Remaining changes since `v3.1.0b2 <changelog.rst#v3-1-0b2-2025-02-03>`_
@@ -1495,7 +1495,7 @@ Providers and product types updates
14951495
Plugins new features and fixes
14961496
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
14971497

1498-
* :class:`~eodag.plugins.download.aws.AwsDownload`: zip partial download (:pull:`1561`), `InvalidRequest` handle
1498+
* :class:`~eodag.plugins.download.protocol.aws.AwsDownload`: zip partial download (:pull:`1561`), `InvalidRequest` handle
14991499
(:pull:`1532`)
15001500
* Already authenticated user fix on openid authentication plugins (:pull:`1524`)
15011501
* Fixes missing file error on ``usgs`` authentication during attempts (:pull:`1550`)
@@ -1568,7 +1568,7 @@ Providers and product types updates
15681568
Plugins new features and fixes
15691569
------------------------------
15701570

1571-
* Removed default :class:`~eodag.plugins.download.http.HTTPDownload` zip extension (:pull:`1400`)
1571+
* Removed default :class:`~eodag.plugins.download.protocol.http.HTTPDownload` zip extension (:pull:`1400`)
15721572
* Order and poll without downloading (:pull:`1437`)
15731573
* :class:`~eodag.plugins.authentication.token.TokenAuth` distinct headers for token retrieve and authentication
15741574
(:pull:`1451`, thanks `@jgaucher-cs <https://github.com/jgaucher-cs>`_)
@@ -1606,11 +1606,11 @@ Providers and product types updates
16061606
Plugins new features and fixes
16071607
------------------------------
16081608

1609-
* Authenticate only when needed in :class:`~eodag.plugins.download.http.HTTPDownload` (:pull:`1370`)
1609+
* Authenticate only when needed in :class:`~eodag.plugins.downloadprotocol.http.HTTPDownload` (:pull:`1370`)
16101610
* Various fixes for ``cop_marine`` (:pull:`1336`)(:pull:`1364`)
16111611
* OpenID token expiration fix and ``oidc_config_url`` usage (:pull:`1346`)
16121612
* Concurrent requests for ``wekeo_cmems`` product-types fetch (:pull:`1374`)
1613-
* Error is raised when :class:`~eodag.plugins.download.http.HTTPDownload` order fails (:pull:`1338`)
1613+
* Error is raised when :class:`~eodag.plugins.download.protocol.http.HTTPDownload` order fails (:pull:`1338`)
16141614

16151615
Miscellaneous
16161616
-------------
@@ -1680,7 +1680,7 @@ Plugins new features and fixes
16801680
* [v3.0.0b1] Standardized download output tree (:pull:`746`)
16811681
* [v3.0.0b1] ``flatten_top_dirs`` download plugins option set to true by default (:pull:`1220`)
16821682
* [v3.0.0b1] ``base_uri`` download plugins setting is not systematically mandatory any more (:pull:`1230`)
1683-
* [v3.0.0b1] Allow no auth for :class:`~eodag.plugins.download.http.HTTPDownload` download requests (:pull:`1196`)
1683+
* [v3.0.0b1] Allow no auth for :class:`~eodag.plugins.download.protocol.http.HTTPDownload` download requests (:pull:`1196`)
16841684

16851685
Server mode
16861686
^^^^^^^^^^^
@@ -1715,7 +1715,7 @@ Providers and product types updates
17151715
Plugins new features and fixes
17161716
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
17171717

1718-
* Raise an error if no data available on :class:`~eodag.plugins.download.aws.AwsDownload` (:pull:`1257`)
1718+
* Raise an error if no data available on :class:`~eodag.plugins.download.protocol.aws.AwsDownload` (:pull:`1257`)
17191719

17201720
Server mode
17211721
^^^^^^^^^^^
@@ -1763,7 +1763,7 @@ Plugins new features and fixes
17631763
------------------------------
17641764

17651765
* ``aws_session_token`` support in :class:`~eodag.plugins.authentication.aws_auth.AwsAuth` (:pull:`1267`)
1766-
* :class:`~eodag.plugins.download.http.HTTPDownload` asset ``HEAD`` check and ``ssl_verify`` (:pull:`1266`)
1766+
* :class:`~eodag.plugins.download.protocol.http.HTTPDownload` asset ``HEAD`` check and ``ssl_verify`` (:pull:`1266`)
17671767
* Product types discovery disabled by default on :class:`~eodag.plugins.search.static_stac_search.StaticStacSearch`
17681768
(:pull:`1259`)
17691769

@@ -1846,7 +1846,7 @@ Providers and product types updates
18461846
* `OData` API usage for ``creodias`` & ``cop_dataspace`` (:pull:`1149`), fixes for empty geometries (:pull:`1186`),
18471847
search datetime intervals (:pull:`1158`), and removed `discover_product_types` (:pull:`1112`)
18481848
* ``cop_ads`` and ``cop_cds`` now use :class:`~eodag.plugins.search.build_search_result.BuildSearchResult` and
1849-
:class:`~eodag.plugins.download.http.HTTPDownload` instead of move ``CdsApi`` (:pull:`1029`), `EFAS` dates formatting
1849+
:class:`~eodag.plugins.download.protocol.http.HTTPDownload` instead of move ``CdsApi`` (:pull:`1029`), `EFAS` dates formatting
18501850
(:pull:`1178`), ``area`` metadata mapping fix (:pull:`1225`)
18511851
* ``wekeo`` now uses `hda-broker 2.0` API (:pull:`1034`), lists queryables (:pull:`1104`), has fixed pagination
18521852
(:pull:`1098`) and CLMS search by id (:pull:`1100`)
@@ -1865,10 +1865,10 @@ Plugins new features and fixes
18651865
* ``flatten_top_dirs`` download plugins option set to true by default (:pull:`1220`)
18661866
* ``base_uri`` download plugins setting is not systematically mandatory any more (:pull:`1230`)
18671867
* Re-login in :class:`~eodag.plugins.apis.usgs.UsgsApi` plugin on api file error (:pull:`1046`)
1868-
* Allow no auth for :class:`~eodag.plugins.download.http.HTTPDownload` download requests (:pull:`1196`)
1868+
* Allow no auth for :class:`~eodag.plugins.download.protocol.http.HTTPDownload` download requests (:pull:`1196`)
18691869
* Refactorization of ``Api`` base plugin that now inherits from ``Search`` and ``Download`` (:pull:`1051`)
18701870
* ``orderLink`` support in `build_search_result.*` plugins (:pull:`1082`), and parsing fix (:pull:`1091`)
1871-
* Fixed resume interrupted assets download using :class:`~eodag.plugins.download.http.HTTPDownload` (:pull:`1017`)
1871+
* Fixed resume interrupted assets download using :class:`~eodag.plugins.download.protocol.http.HTTPDownload` (:pull:`1017`)
18721872

18731873
Server mode
18741874
-----------
@@ -1928,7 +1928,7 @@ v2.12.0 (2024-02-19)
19281928
* Adds missing `tileIdentifier` and `quicklook` for `creodias`, `creodias_s3` and `cop_dataspace` (:pull:`957`)
19291929
(:pull:`1014`)
19301930
* HTTP download with `CdsApi` (:pull:`946`)
1931-
* Download streaming available for :class:`~eodag.plugins.download.aws.AwsDownload` plugin (:pull:`997`)
1931+
* Download streaming available for :class:`~eodag.plugins.download.protocol.aws.AwsDownload` plugin (:pull:`997`)
19321932
* Lists STAC alternate assets in server mode (:pull:`961`)
19331933
* `_dc_qs` used in server-mode to store `CdsApi` search criteria (:pull:`958`)(:pull:`1000`)
19341934
* New eodag exception :class:`~eodag.utils.exceptions.TimeOutError` (:pull:`982`)
@@ -2061,7 +2061,7 @@ v2.8.0 (2023-01-17)
20612061
* Metadata mapping `to_geo_interface()` renamed to `to_geojson()`
20622062
(`d7565a4 <https://github.com/CS-SI/eodag/pull/604/commits/d7565a4984d356aca20310a87c02692cb879427e>`_)
20632063
* Added support for `python3.11` (:pull:`552`)
2064-
* Improved http asset size discovery in :class:`~eodag.plugins.download.http.HTTPDownload` (:pull:`566`)
2064+
* Improved http asset size discovery in :class:`~eodag.plugins.download.protocol.http.HTTPDownload` (:pull:`566`)
20652065
* Various minor fixes and improvements (:pull:`572`)(:pull:`574`)(:pull:`576`)(:pull:`579`)(:pull:`580`)(:pull:`582`)
20662066
(:pull:`586`)(:pull:`588`)(:pull:`589`)(:pull:`590`)(:pull:`592`)(:pull:`593`)(:pull:`595`)(:pull:`597`)(:pull:`598`)
20672067
(:pull:`599`)(:pull:`609`)(:pull:`610`)
@@ -2070,7 +2070,7 @@ v2.7.0 (2022-11-29)
20702070
===================
20712071

20722072
* Fetch external product types before searching for an unkown product type (:pull:`559`)
2073-
* Handle local assets in :class:`~eodag.plugins.download.http.HTTPDownload` plugin (:pull:`561`)
2073+
* Handle local assets in :class:`~eodag.plugins.download.protocol.http.HTTPDownload` plugin (:pull:`561`)
20742074
* Fetch external product types only for given provider if one is specified (:pull:`557`)
20752075
* Fixed request error handling during :meth:`~eodag.api.core.EODataAccessGateway.search_all` (:pull:`554`)
20762076
* Various minor fixes and improvements (:pull:`555`)(:pull:`558`)(:pull:`562`)
@@ -2120,7 +2120,7 @@ v2.5.2 (2022-07-05)
21202120
v2.5.1 (2022-06-27)
21212121
===================
21222122

2123-
* Fixed broken :class:`~eodag.plugins.download.aws.AwsDownload` configuration for STAC providers (:pull:`475`)
2123+
* Fixed broken :class:`~eodag.plugins.download.protocol.aws.AwsDownload` configuration for STAC providers (:pull:`475`)
21242124
* Set ``setuptools_scm`` max version for python3.6 (:pull:`477`)
21252125

21262126
v2.5.0 (2022-06-07)
@@ -2137,7 +2137,7 @@ v2.5.0 (2022-06-07)
21372137
* New packaging using `pyproject.toml` and `setup.cfg`, following `PEP 517 <https://peps.python.org/pep-0517/>`_
21382138
recommendations and `setuptools build_meta <https://setuptools.pypa.io/en/latest/build_meta.html>`_ (:pull:`435`)
21392139
* `setuptools_scm` usage to have intermediate `dev` versions between releases (:pull:`431`)
2140-
* New options for :class:`~eodag.plugins.download.aws.AwsDownload` plugin: `requester_pays`, `base_uri`,
2140+
* New options for :class:`~eodag.plugins.download.protocol.aws.AwsDownload` plugin: `requester_pays`, `base_uri`,
21412141
and `ignore_assets` (:pull:`456`, thanks `@robert-werner <https://github.com/robert-werner>`_)
21422142
* :meth:`~eodag.api.search_result.SearchResult.filter_online` and additional convert methods added to
21432143
:class:`~eodag.api.search_result.SearchResult` (:pull:`458`)(:pull:`450`)
@@ -2266,7 +2266,7 @@ v2.1.0 (2021-03-09)
22662266

22672267
- `earth_search <https://www.element84.com/earth-search>`_ and
22682268
`usgs_satapi_aws <https://landsatlook.usgs.gov/sat-api>`_ as new providers
2269-
- Updated :class:`~eodag.plugins.download.http.HTTPDownload` plugin, handling products with multiple assets
2269+
- Updated :class:`~eodag.plugins.download.protocol.http.HTTPDownload` plugin, handling products with multiple assets
22702270
- New plugin :class:`~eodag.plugins.authentication.aws_auth.AwsAuth`, enables AWS authentication using no-sign-request,
22712271
profile, ``~/.aws/*``
22722272
- New search plugin :class:`~eodag.plugins.search.static_stac_search.StaticStacSearch` and updated

docs/add_provider.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ providers themselves, they just implement generic methods required to talk to di
88

99
* :class:`~eodag.plugins.search.qssearch.QueryStringSearch`: Search plugin that implements a search protocol that relies on `query strings <https://en.wikipedia.org/wiki/Query_string>`_
1010
* :class:`~eodag.plugins.authentication.header.HTTPHeaderAuth`: Authentication plugin that implements `HTTP authentication using headers <https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication>`_
11-
* :class:`~eodag.plugins.download.http.HTTPDownload`: Download plugin that implements download over `HTTP protocol <https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol>`_
11+
* :class:`~eodag.plugins.download.protocol.http.HTTPDownload`: Download plugin that implements download over `HTTP protocol <https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol>`_
1212

1313
Dynamically add a new provider
1414
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -44,7 +44,7 @@ provide the new provider's configuration in a ``YAML`` format. The following exa
4444
aws_secret_access_key: PLEASE_CHANGE_ME
4545
4646
It configures the following existing plugins: :class:`~eodag.plugins.search.qssearch.StacSearch` (search),
47-
:class:`~eodag.plugins.authentication.aws_auth.AwsAuth` (authentication) and :class:`~eodag.plugins.download.aws.AwsDownload` (download).
47+
:class:`~eodag.plugins.authentication.aws_auth.AwsAuth` (authentication) and :class:`~eodag.plugins.download.protocol.aws.AwsDownload` (download).
4848

4949
Each plugin configuration is inserted following the appropriate plugin topic key:
5050

docs/conf.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@
2525
from importlib.metadata import metadata
2626
from typing import Any
2727

28-
from docutils import nodes
29-
from sphinx.writers.html import HTMLTranslator
28+
from docutils import nodes # type: ignore
29+
from sphinx.writers.html import HTMLTranslator # type: ignore
3030

3131
# -- General configuration ------------------------------------------------
3232

0 commit comments

Comments
 (0)