eodag 2.12.1__py3-none-any.whl → 3.0.0__py3-none-any.whl

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.
Files changed (93) hide show
  1. eodag/__init__.py +6 -8
  2. eodag/api/core.py +654 -538
  3. eodag/api/product/__init__.py +12 -2
  4. eodag/api/product/_assets.py +59 -16
  5. eodag/api/product/_product.py +100 -93
  6. eodag/api/product/drivers/__init__.py +7 -2
  7. eodag/api/product/drivers/base.py +0 -3
  8. eodag/api/product/metadata_mapping.py +192 -96
  9. eodag/api/search_result.py +69 -10
  10. eodag/cli.py +55 -25
  11. eodag/config.py +391 -116
  12. eodag/plugins/apis/base.py +11 -168
  13. eodag/plugins/apis/ecmwf.py +36 -25
  14. eodag/plugins/apis/usgs.py +80 -35
  15. eodag/plugins/authentication/aws_auth.py +13 -4
  16. eodag/plugins/authentication/base.py +10 -1
  17. eodag/plugins/authentication/generic.py +2 -2
  18. eodag/plugins/authentication/header.py +31 -6
  19. eodag/plugins/authentication/keycloak.py +17 -84
  20. eodag/plugins/authentication/oauth.py +3 -3
  21. eodag/plugins/authentication/openid_connect.py +268 -49
  22. eodag/plugins/authentication/qsauth.py +4 -1
  23. eodag/plugins/authentication/sas_auth.py +9 -2
  24. eodag/plugins/authentication/token.py +98 -47
  25. eodag/plugins/authentication/token_exchange.py +122 -0
  26. eodag/plugins/crunch/base.py +3 -1
  27. eodag/plugins/crunch/filter_date.py +3 -9
  28. eodag/plugins/crunch/filter_latest_intersect.py +0 -3
  29. eodag/plugins/crunch/filter_latest_tpl_name.py +1 -4
  30. eodag/plugins/crunch/filter_overlap.py +4 -8
  31. eodag/plugins/crunch/filter_property.py +5 -11
  32. eodag/plugins/download/aws.py +149 -185
  33. eodag/plugins/download/base.py +88 -97
  34. eodag/plugins/download/creodias_s3.py +1 -1
  35. eodag/plugins/download/http.py +638 -310
  36. eodag/plugins/download/s3rest.py +47 -45
  37. eodag/plugins/manager.py +228 -88
  38. eodag/plugins/search/__init__.py +36 -0
  39. eodag/plugins/search/base.py +239 -30
  40. eodag/plugins/search/build_search_result.py +382 -37
  41. eodag/plugins/search/cop_marine.py +441 -0
  42. eodag/plugins/search/creodias_s3.py +25 -20
  43. eodag/plugins/search/csw.py +5 -7
  44. eodag/plugins/search/data_request_search.py +61 -30
  45. eodag/plugins/search/qssearch.py +713 -255
  46. eodag/plugins/search/static_stac_search.py +106 -40
  47. eodag/resources/ext_product_types.json +1 -1
  48. eodag/resources/product_types.yml +1921 -34
  49. eodag/resources/providers.yml +4091 -3655
  50. eodag/resources/stac.yml +50 -216
  51. eodag/resources/stac_api.yml +71 -25
  52. eodag/resources/stac_provider.yml +5 -0
  53. eodag/resources/user_conf_template.yml +89 -32
  54. eodag/rest/__init__.py +6 -0
  55. eodag/rest/cache.py +70 -0
  56. eodag/rest/config.py +68 -0
  57. eodag/rest/constants.py +26 -0
  58. eodag/rest/core.py +735 -0
  59. eodag/rest/errors.py +178 -0
  60. eodag/rest/server.py +264 -431
  61. eodag/rest/stac.py +442 -836
  62. eodag/rest/types/collections_search.py +44 -0
  63. eodag/rest/types/eodag_search.py +238 -47
  64. eodag/rest/types/queryables.py +164 -0
  65. eodag/rest/types/stac_search.py +273 -0
  66. eodag/rest/utils/__init__.py +216 -0
  67. eodag/rest/utils/cql_evaluate.py +119 -0
  68. eodag/rest/utils/rfc3339.py +64 -0
  69. eodag/types/__init__.py +106 -10
  70. eodag/types/bbox.py +15 -14
  71. eodag/types/download_args.py +40 -0
  72. eodag/types/search_args.py +57 -7
  73. eodag/types/whoosh.py +79 -0
  74. eodag/utils/__init__.py +110 -91
  75. eodag/utils/constraints.py +37 -45
  76. eodag/utils/exceptions.py +39 -22
  77. eodag/utils/import_system.py +0 -4
  78. eodag/utils/logging.py +37 -80
  79. eodag/utils/notebook.py +4 -4
  80. eodag/utils/repr.py +113 -0
  81. eodag/utils/requests.py +128 -0
  82. eodag/utils/rest.py +100 -0
  83. eodag/utils/stac_reader.py +93 -21
  84. {eodag-2.12.1.dist-info → eodag-3.0.0.dist-info}/METADATA +88 -53
  85. eodag-3.0.0.dist-info/RECORD +109 -0
  86. {eodag-2.12.1.dist-info → eodag-3.0.0.dist-info}/WHEEL +1 -1
  87. {eodag-2.12.1.dist-info → eodag-3.0.0.dist-info}/entry_points.txt +7 -5
  88. eodag/plugins/apis/cds.py +0 -540
  89. eodag/rest/types/stac_queryables.py +0 -134
  90. eodag/rest/utils.py +0 -1133
  91. eodag-2.12.1.dist-info/RECORD +0 -94
  92. {eodag-2.12.1.dist-info → eodag-3.0.0.dist-info}/LICENSE +0 -0
  93. {eodag-2.12.1.dist-info → eodag-3.0.0.dist-info}/top_level.txt +0 -0
@@ -27,8 +27,9 @@ from urllib.request import urlopen
27
27
  import concurrent.futures
28
28
  import orjson
29
29
  import pystac
30
+ from pystac.stac_object import STACObjectType
30
31
 
31
- from eodag.utils import HTTP_REQ_TIMEOUT
32
+ from eodag.utils import HTTP_REQ_TIMEOUT, get_ssl_context
32
33
  from eodag.utils.exceptions import STACOpenerError
33
34
 
34
35
  logger = logging.getLogger("eodag.utils.stac_reader")
@@ -38,10 +39,11 @@ class _TextOpener:
38
39
  """Exhaust read methods for pystac.StacIO in the order defined
39
40
  in the openers list"""
40
41
 
41
- def __init__(self, timeout: int) -> None:
42
+ def __init__(self, timeout: int, ssl_verify: bool) -> None:
42
43
  self.openers = [self.read_local_json, self.read_http_remote_json]
43
44
  # Only used by read_http_remote_json
44
45
  self.timeout = timeout
46
+ self.ssl_verify = ssl_verify
45
47
 
46
48
  @staticmethod
47
49
  def read_local_json(url: str, as_json: bool = False) -> Any:
@@ -54,13 +56,14 @@ class _TextOpener:
54
56
  with open(url) as f:
55
57
  return f.read()
56
58
  except OSError:
57
- logger.debug("read_local_json is not the right STAC opener")
58
- raise STACOpenerError
59
+ raise STACOpenerError("read_local_json is not the right STAC opener")
59
60
 
60
61
  def read_http_remote_json(self, url: str, as_json: bool = False) -> Any:
61
62
  """Read JSON remote HTTP file"""
63
+ ssl_ctx = get_ssl_context(self.ssl_verify)
64
+
62
65
  try:
63
- res = urlopen(url, timeout=self.timeout)
66
+ res = urlopen(url, timeout=self.timeout, context=ssl_ctx)
64
67
  content_type = res.getheader("Content-Type")
65
68
  if content_type is None:
66
69
  encoding = "utf-8"
@@ -79,17 +82,19 @@ class _TextOpener:
79
82
  f"{url} with a timeout of {self.timeout} seconds"
80
83
  ) from None
81
84
  else:
82
- logger.debug("read_http_remote_json is not the right STAC opener")
83
- raise STACOpenerError
85
+ raise STACOpenerError(
86
+ "read_http_remote_json is not the right STAC opener"
87
+ )
84
88
 
85
89
  def __call__(self, url: str, as_json: bool = False) -> Any:
90
+ openers = self.openers[:]
86
91
  res = None
87
- while self.openers:
92
+ while openers:
88
93
  try:
89
- res = self.openers[0](url, as_json)
94
+ res = openers[0](url, as_json)
90
95
  except STACOpenerError:
91
96
  # Remove the opener that just failed
92
- self.openers.pop(0)
97
+ openers.pop(0)
93
98
  if res is not None:
94
99
  break
95
100
  if res is None:
@@ -102,25 +107,22 @@ def fetch_stac_items(
102
107
  recursive: bool = False,
103
108
  max_connections: int = 100,
104
109
  timeout: int = HTTP_REQ_TIMEOUT,
110
+ ssl_verify: bool = True,
105
111
  ) -> List[Dict[str, Any]]:
106
112
  """Fetch STAC item from a single item file or items from a catalog.
107
113
 
108
114
  :param stac_path: A STAC object filepath
109
- :type stac_path: str
110
115
  :param recursive: (optional) Browse recursively in child nodes if True
111
- :type recursive: bool
112
116
  :param max_connections: (optional) Maximum number of connections for HTTP requests
113
- :type max_connections: int
114
117
  :param timeout: (optional) Timeout in seconds for each internal HTTP request
115
- :type timeout: float
118
+ :param ssl_verify: (optional) SSL Verification for HTTP request
116
119
  :returns: The items found in `stac_path`
117
- :rtype: :class:`list`
118
120
  """
119
121
 
120
122
  # URI opener used by PySTAC internally, instantiated here
121
123
  # to retrieve the timeout.
122
- _text_opener = _TextOpener(timeout)
123
- pystac.StacIO.read_text = _text_opener
124
+ _text_opener = _TextOpener(timeout, ssl_verify)
125
+ pystac.StacIO.read_text = _text_opener # type: ignore[assignment]
124
126
 
125
127
  stac_obj = pystac.read_file(stac_path)
126
128
  # Single STAC item
@@ -142,6 +144,8 @@ def _fetch_stac_items_from_catalog(
142
144
  _text_opener: Callable[[str, bool], Any],
143
145
  ) -> List[Any]:
144
146
  """Fetch items from a STAC catalog"""
147
+ items: List[Dict[Any, Any]] = []
148
+
145
149
  # pystac cannot yet return links from a single file catalog, see:
146
150
  # https://github.com/stac-utils/pystac/issues/256
147
151
  extensions: Optional[Union[List[str], str]] = getattr(cat, "stac_extensions", None)
@@ -151,8 +155,7 @@ def _fetch_stac_items_from_catalog(
151
155
  items = [feature for feature in cat.to_dict()["features"]]
152
156
  return items
153
157
 
154
- # Making the links absolutes allow for both relative and absolute links
155
- # to be handled.
158
+ # Making the links absolutes allow for both relative and absolute links to be handled.
156
159
  if not recursive:
157
160
  hrefs: List[Optional[str]] = [
158
161
  link.get_absolute_href() for link in cat.get_item_links()
@@ -164,7 +167,6 @@ def _fetch_stac_items_from_catalog(
164
167
  link.get_absolute_href() for link in parent_catalog.get_item_links()
165
168
  ]
166
169
 
167
- items: List[Dict[Any, Any]] = []
168
170
  if hrefs:
169
171
  logger.debug("Fetching %s items", len(hrefs))
170
172
  with concurrent.futures.ThreadPoolExecutor(
@@ -176,5 +178,75 @@ def _fetch_stac_items_from_catalog(
176
178
  for future in concurrent.futures.as_completed(future_to_href):
177
179
  item = future.result()
178
180
  if item:
179
- items.append(future.result())
181
+ items.append(item)
180
182
  return items
183
+
184
+
185
+ def fetch_stac_collections(
186
+ stac_path: str,
187
+ collection: Optional[str] = None,
188
+ max_connections: int = 100,
189
+ timeout: int = HTTP_REQ_TIMEOUT,
190
+ ssl_verify: bool = True,
191
+ ) -> List[Dict[str, Any]]:
192
+ """Fetch STAC collection(s) from a catalog.
193
+
194
+ :param stac_path: A STAC object filepath
195
+ :param collection: the collection to fetch
196
+ :param max_connections: (optional) Maximum number of connections for HTTP requests
197
+ :param timeout: (optional) Timeout in seconds for each internal HTTP request
198
+ :param ssl_verify: (optional) SSL Verification for HTTP request
199
+ :returns: The collection(s) found in `stac_path`
200
+ """
201
+
202
+ # URI opener used by PySTAC internally, instantiated here to retrieve the timeout.
203
+ _text_opener = _TextOpener(timeout, ssl_verify)
204
+ pystac.StacIO.read_text = _text_opener # type: ignore[assignment]
205
+
206
+ stac_obj = pystac.read_file(stac_path)
207
+ if isinstance(stac_obj, pystac.Catalog):
208
+ return _fetch_stac_collections_from_catalog(
209
+ stac_obj, collection, max_connections, _text_opener
210
+ )
211
+ else:
212
+ raise STACOpenerError(f"{stac_path} must be a STAC catalog")
213
+
214
+
215
+ def _fetch_stac_collections_from_catalog(
216
+ cat: pystac.Catalog,
217
+ collection: Optional[str],
218
+ max_connections: int,
219
+ _text_opener: Callable[[str, bool], Any],
220
+ ) -> List[Any]:
221
+ """Fetch collections from a STAC catalog"""
222
+ collections: List[Dict[Any, Any]] = []
223
+
224
+ # Making the links absolutes allow for both relative and absolute links to be handled.
225
+ hrefs: List[Optional[str]] = [
226
+ link.get_absolute_href()
227
+ for link in cat.get_child_links()
228
+ if collection is not None and link.title == collection
229
+ ]
230
+ if len(hrefs) == 0:
231
+ hrefs = [link.get_absolute_href() for link in cat.get_child_links()]
232
+
233
+ if hrefs:
234
+ with concurrent.futures.ThreadPoolExecutor(
235
+ max_workers=max_connections
236
+ ) as executor:
237
+ future_to_href = (
238
+ executor.submit(_text_opener, str(href), True) for href in hrefs
239
+ )
240
+ for future in concurrent.futures.as_completed(future_to_href):
241
+ fetched_collection = future.result()
242
+ if (
243
+ fetched_collection
244
+ and fetched_collection["type"] == STACObjectType.COLLECTION
245
+ and (
246
+ collection is None
247
+ or collection is not None
248
+ and fetched_collection.get("id") == collection
249
+ )
250
+ ):
251
+ collections.append(fetched_collection)
252
+ return collections
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: eodag
3
- Version: 2.12.1
3
+ Version: 3.0.0
4
4
  Summary: Earth Observation Data Access Gateway
5
5
  Home-page: https://github.com/CS-SI/eodag
6
- Author: CS GROUP - France (CSSI)
6
+ Author: CS GROUP - France
7
7
  Author-email: eodag@csgroup.space
8
8
  License: Apache 2.0
9
9
  Project-URL: Bug Tracker, https://github.com/CS-SI/eodag/issues/
@@ -27,40 +27,42 @@ Classifier: Programming Language :: Python :: Implementation :: CPython
27
27
  Classifier: Topic :: Internet :: WWW/HTTP :: Indexing/Search
28
28
  Classifier: Topic :: Scientific/Engineering :: GIS
29
29
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
30
+ Classifier: Typing :: Typed
30
31
  Requires-Python: >=3.6
31
32
  Description-Content-Type: text/x-rst
32
33
  License-File: LICENSE
33
- Requires-Dist: click
34
- Requires-Dist: requests
35
- Requires-Dist: urllib3
36
- Requires-Dist: python-dateutil
37
- Requires-Dist: PyYAML
38
- Requires-Dist: tqdm
39
- Requires-Dist: shapely
40
- Requires-Dist: pyshp
41
- Requires-Dist: OWSLib >=0.27.1
42
- Requires-Dist: orjson
43
- Requires-Dist: geojson
44
- Requires-Dist: pyproj >=2.1.0
45
- Requires-Dist: usgs >=0.3.1
34
+ Requires-Dist: annotated-types
46
35
  Requires-Dist: boto3
47
36
  Requires-Dist: botocore
48
- Requires-Dist: fastapi >=0.93.0
49
- Requires-Dist: starlette
50
- Requires-Dist: uvicorn
37
+ Requires-Dist: click
38
+ Requires-Dist: geojson
51
39
  Requires-Dist: jsonpath-ng <1.6.0
52
40
  Requires-Dist: lxml
53
- Requires-Dist: Whoosh
54
- Requires-Dist: pystac >=1.0.0b1
55
- Requires-Dist: ecmwf-api-client
56
- Requires-Dist: cdsapi
57
- Requires-Dist: stream-zip
58
- Requires-Dist: requests-ftp
59
41
  Requires-Dist: pydantic >=2.1.0
60
- Requires-Dist: typing-extensions
61
- Requires-Dist: annotated-types
42
+ Requires-Dist: pydantic-core
43
+ Requires-Dist: pyproj >=2.1.0
44
+ Requires-Dist: pyshp
45
+ Requires-Dist: pystac >=1.0.0b1
46
+ Requires-Dist: python-dateutil
47
+ Requires-Dist: PyYAML
48
+ Requires-Dist: requests
62
49
  Requires-Dist: setuptools
50
+ Requires-Dist: shapely >=2.0.6
51
+ Requires-Dist: stream-zip
52
+ Requires-Dist: tqdm
53
+ Requires-Dist: typing-extensions >=4.8.0
54
+ Requires-Dist: urllib3
55
+ Requires-Dist: Whoosh
56
+ Requires-Dist: orjson ; python_version < "3.12" or platform_system != "Windows"
57
+ Requires-Dist: orjson <3.10.0 ; python_version >= "3.12" and platform_system == "Windows"
58
+ Provides-Extra: all
59
+ Requires-Dist: eodag[all-providers,csw,server,tutorials] ; extra == 'all'
60
+ Provides-Extra: all-providers
61
+ Requires-Dist: eodag[ecmwf,usgs] ; extra == 'all-providers'
62
+ Provides-Extra: csw
63
+ Requires-Dist: OWSLib >=0.27.1 ; extra == 'csw'
63
64
  Provides-Extra: dev
65
+ Requires-Dist: eodag[all-providers,csw,server,stubs] ; extra == 'dev'
64
66
  Requires-Dist: pytest ; extra == 'dev'
65
67
  Requires-Dist: pytest-cov ; extra == 'dev'
66
68
  Requires-Dist: py >=1.8.2 ; extra == 'dev'
@@ -78,20 +80,37 @@ Requires-Dist: pre-commit ; extra == 'dev'
78
80
  Requires-Dist: responses <0.24.0 ; extra == 'dev'
79
81
  Requires-Dist: fastapi[all] ; extra == 'dev'
80
82
  Requires-Dist: stdlib-list ; extra == 'dev'
83
+ Requires-Dist: mypy ; extra == 'dev'
81
84
  Provides-Extra: docs
85
+ Requires-Dist: eodag[all,stubs] ; extra == 'docs'
82
86
  Requires-Dist: sphinx ; extra == 'docs'
83
- Requires-Dist: sphinx-book-theme <1.0.0 ; extra == 'docs'
87
+ Requires-Dist: sphinx-book-theme >=1.0.0 ; extra == 'docs'
84
88
  Requires-Dist: sphinx-copybutton ; extra == 'docs'
85
- Requires-Dist: sphinxcontrib-applehelp <1.0.8 ; extra == 'docs'
86
- Requires-Dist: sphinxcontrib-devhelp <1.0.6 ; extra == 'docs'
87
- Requires-Dist: sphinxcontrib-htmlhelp <2.0.5 ; extra == 'docs'
88
- Requires-Dist: sphinxcontrib-qthelp <1.0.7 ; extra == 'docs'
89
- Requires-Dist: sphinxcontrib-serializinghtml <1.1.10 ; extra == 'docs'
90
- Requires-Dist: sphinxcontrib-jquery ; extra == 'docs'
89
+ Requires-Dist: sphinx-tabs ; extra == 'docs'
91
90
  Requires-Dist: nbsphinx ; extra == 'docs'
91
+ Requires-Dist: sphinx-autodoc-typehints ; extra == 'docs'
92
+ Requires-Dist: sphinxemoji ; extra == 'docs'
93
+ Provides-Extra: ecmwf
94
+ Requires-Dist: ecmwf-api-client ; extra == 'ecmwf'
92
95
  Provides-Extra: notebook
93
96
  Requires-Dist: tqdm[notebook] ; extra == 'notebook'
97
+ Provides-Extra: server
98
+ Requires-Dist: fastapi >=0.93.0 ; extra == 'server'
99
+ Requires-Dist: pygeofilter ; extra == 'server'
100
+ Requires-Dist: starlette ; extra == 'server'
101
+ Requires-Dist: uvicorn[standard] ; extra == 'server'
102
+ Requires-Dist: pydantic-settings ; extra == 'server'
103
+ Requires-Dist: cachetools ; extra == 'server'
104
+ Provides-Extra: stubs
105
+ Requires-Dist: boto3-stubs[essential] ; extra == 'stubs'
106
+ Requires-Dist: types-lxml ; extra == 'stubs'
107
+ Requires-Dist: types-cachetools ; extra == 'stubs'
108
+ Requires-Dist: types-requests ; extra == 'stubs'
109
+ Requires-Dist: types-python-dateutil ; extra == 'stubs'
110
+ Requires-Dist: types-setuptools ; extra == 'stubs'
111
+ Requires-Dist: types-tqdm ; extra == 'stubs'
94
112
  Provides-Extra: tutorials
113
+ Requires-Dist: eodag[ecmwf,notebook] ; extra == 'tutorials'
95
114
  Requires-Dist: eodag-cube >=0.2.0 ; extra == 'tutorials'
96
115
  Requires-Dist: jupyter ; extra == 'tutorials'
97
116
  Requires-Dist: ipyleaflet >=0.10.0 ; extra == 'tutorials'
@@ -101,38 +120,42 @@ Requires-Dist: folium ; extra == 'tutorials'
101
120
  Requires-Dist: imageio ; extra == 'tutorials'
102
121
  Requires-Dist: rasterio ; extra == 'tutorials'
103
122
  Requires-Dist: netcdf4 ; extra == 'tutorials'
123
+ Provides-Extra: usgs
124
+ Requires-Dist: usgs >=0.3.1 ; extra == 'usgs'
104
125
 
105
126
  .. image:: https://eodag.readthedocs.io/en/latest/_static/eodag_bycs.png
106
127
  :target: https://github.com/CS-SI/eodag
107
128
 
108
129
  |
109
130
 
110
- .. image:: https://badge.fury.io/py/eodag.svg
131
+ .. |pypi-badge| image:: https://badge.fury.io/py/eodag.svg
111
132
  :target: https://badge.fury.io/py/eodag
112
133
 
113
- .. image:: https://img.shields.io/conda/vn/conda-forge/eodag
134
+ .. |conda-badge| image:: https://img.shields.io/conda/vn/conda-forge/eodag
114
135
  :target: https://anaconda.org/conda-forge/eodag
115
136
 
116
- .. image:: https://readthedocs.org/projects/eodag/badge/?version=latest&style=flat
137
+ .. |rtd-badge| image:: https://readthedocs.org/projects/eodag/badge/?version=latest&style=flat
117
138
  :target: https://eodag.readthedocs.io/en/latest/
118
139
 
119
- .. image:: https://github.com/CS-SI/eodag/actions/workflows/test.yml/badge.svg
140
+ .. |gha-badge| image:: https://github.com/CS-SI/eodag/actions/workflows/test.yml/badge.svg
120
141
  :target: https://github.com/CS-SI/eodag/actions
121
142
 
122
- .. image:: https://img.shields.io/github/issues/CS-SI/eodag.svg
143
+ .. |ghi-badge| image:: https://img.shields.io/github/issues/CS-SI/eodag.svg
123
144
  :target: https://github.com/CS-SI/eodag/issues
124
145
 
125
- .. image:: https://mybinder.org/badge_logo.svg
146
+ .. |binder-badge| image:: https://mybinder.org/badge_logo.svg
126
147
  :target: https://mybinder.org/v2/git/https%3A%2F%2Fgithub.com%2FCS-SI%2Feodag.git/master?filepath=docs%2Fnotebooks%2Fintro_notebooks.ipynb
127
148
 
128
- |
149
+ |pypi-badge| |conda-badge| |rtd-badge| |gha-badge| |ghi-badge| |binder-badge|
129
150
 
130
- .. image:: https://img.shields.io/pypi/l/eodag.svg
151
+ .. |license-badge| image:: https://img.shields.io/pypi/l/eodag.svg
131
152
  :target: https://pypi.org/project/eodag/
132
153
 
133
- .. image:: https://img.shields.io/pypi/pyversions/eodag.svg
154
+ .. |versions-badge| image:: https://img.shields.io/pypi/pyversions/eodag.svg
134
155
  :target: https://pypi.org/project/eodag/
135
156
 
157
+ |license-badge| |versions-badge|
158
+
136
159
  |
137
160
 
138
161
  ..
@@ -184,6 +207,15 @@ And with ``conda`` from the `conda-forge channel <https://anaconda.org/conda-for
184
207
 
185
208
  conda install -c conda-forge eodag
186
209
 
210
+ ..
211
+
212
+ [!IMPORTANT]
213
+
214
+ `Breaking change <https://eodag.readthedocs.io/en/latest/breaking_changes.html>`_ **in v3.0.0**:
215
+ Please note that EODAG
216
+ comes with a minimal set of dependencies. If you want more features, please install using one of the
217
+ `available extras <https://eodag.readthedocs.io/en/latest/getting_started_guide/install.html#optional-dependencies>`_.
218
+
187
219
  Usage
188
220
  =====
189
221
 
@@ -202,7 +234,7 @@ Example usage for interacting with the api in your Python code:
202
234
 
203
235
  dag = EODataAccessGateway()
204
236
 
205
- search_results, total_count = dag.search(
237
+ search_results = dag.search(
206
238
  productType='S2_MSI_L1C',
207
239
  geom={'lonmin': 1, 'latmin': 43.5, 'lonmax': 2, 'latmax': 44}, # accepts WKT polygons, shapely.geometry, ...
208
240
  start='2021-01-01',
@@ -216,10 +248,18 @@ This will search for Sentinel 2 level-1C products on the default provider and re
216
248
  an estimated total number of products matching the search criteria. And then it will download these products. Please
217
249
  check the `Python API User Guide <https://eodag.readthedocs.io/en/latest/api_user_guide.html>`_ for more details.
218
250
 
251
+ ..
252
+
253
+ [!IMPORTANT]
254
+
255
+ `Breaking change <https://eodag.readthedocs.io/en/latest/breaking_changes.html>`_ **in v3.0.0**:
256
+ `search() <https://eodag.readthedocs.io/en/latest/api_reference/core.html#eodag.api.core.EODataAccessGateway.search>`_ method now returns
257
+ only a single ``SearchResult`` instead of a 2 values tuple.
258
+
219
259
  STAC REST API
220
260
  -------------
221
261
 
222
- An eodag instance can be exposed through a STAC compliant REST api from the command line:
262
+ An eodag instance can be exposed through a STAC compliant REST api from the command line (``eodag[server]`` needed):
223
263
 
224
264
  .. code-block:: bash
225
265
 
@@ -259,25 +299,20 @@ An eodag instance can be exposed through a STAC compliant REST api from the comm
259
299
  | jq ".numberMatched"
260
300
  6
261
301
 
262
- # browse for items
263
- $ curl "http://127.0.0.1:5000/catalogs/S2_MSI_L1C/country/FRA/year/2021/month/01/day/25/cloud_cover/10/items" \
264
- | jq ".numberMatched"
265
- 9
266
-
267
302
  # get download link
268
- $ curl "http://127.0.0.1:5000/catalogs/S2_MSI_L1C/country/FRA/year/2021/month/01/day/25/cloud_cover/10/items" \
303
+ $ curl "http://127.0.0.1:5000/collections/S2_MSI_L1C/items" \
269
304
  | jq ".features[0].assets.downloadLink.href"
270
- "http://127.0.0.1:5000/catalogs/S2_MSI_L1C/country/FRA/year/2021/month/01/day/25/cloud_cover/10/items/S2A_MSIL1C_20210125T105331_N0209_R051_T31UCR_20210125T130733/download"
305
+ "http://127.0.0.1:5002/collections/S2_MSI_L1C/items/S2B_MSIL1C_20240917T115259_N0511_R137_T21CWS_20240917T145134/download"
271
306
 
272
307
  # download
273
- $ wget "http://127.0.0.1:5000/catalogs/S2_MSI_L1C/country/FRA/year/2021/month/01/day/25/cloud_cover/10/items/S2A_MSIL1C_20210125T105331_N0209_R051_T31UCR_20210125T130733/download"
308
+ $ wget "http://127.0.0.1:5002/collections/S2_MSI_L1C/items/S2B_MSIL1C_20240917T115259_N0511_R137_T21CWS_20240917T145134/download"
274
309
 
275
310
 
276
311
  ``eodag-server`` is available on `https://hub.docker.com/r/csspace/eodag-server <https://hub.docker.com/r/csspace/eodag-server>`_:
277
312
 
278
313
  .. code-block:: bash
279
314
 
280
- docker run -p 5000:5000 --rm csspace/eodag-server:2.12.1
315
+ docker run -p 5000:5000 --rm csspace/eodag-server:3.0.0b3
281
316
 
282
317
  You can also browse over your STAC API server using `STAC Browser <https://github.com/radiantearth/stac-browser>`_.
283
318
  Simply run:
@@ -0,0 +1,109 @@
1
+ eodag/__init__.py,sha256=qADIO6H3KR0CMs0qePdJROjSzcGnHaYpv-RFIk18WGQ,1608
2
+ eodag/cli.py,sha256=hq_mJmHSKisxdT0rddcXIGEFpjPINtgt0AEdWmh8niQ,29398
3
+ eodag/config.py,sha256=jKvbjsiGVVYWy8xOH2nPmtTLVeuYKbzggxPmd4tGfYY,39376
4
+ eodag/crunch.py,sha256=fLVAPGVPw31N_DrnFk4gkCpQZLMY8oBhK6NUSYmdr24,1099
5
+ eodag/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
+ eodag/api/__init__.py,sha256=ytr30NUVmEtmJTsp3QCwkCIhS1nF6UlFCv0vmySHN7g,735
7
+ eodag/api/core.py,sha256=ZcqrFmkqK-1L6X1RjK3Ljlz71CVsSHiJJMETJI1T-Ko,107289
8
+ eodag/api/search_result.py,sha256=CJmM6ky3Z5mrjphRd8ZIPUuGeQfTw3kE80I-VQjQAm0,8218
9
+ eodag/api/product/__init__.py,sha256=klSKudmnHHeXvcwIX6Y30UTiP39tMfTwLNexSnAZnx0,1154
10
+ eodag/api/product/_assets.py,sha256=FfV9K_bsQzx0ZZ-xblK-t4kRlVYaER8eQJit6pRGsO4,6287
11
+ eodag/api/product/_product.py,sha256=40RcEBGkLE-iCaQCVofVNOrDdeldoecKMgGcX7gT7-g,22990
12
+ eodag/api/product/metadata_mapping.py,sha256=Zcem_4PYXUgSPhDBjgWX84L9GbXMt32TQ8Pw9kdDhK4,70436
13
+ eodag/api/product/drivers/__init__.py,sha256=67fvk_Zmuasrlw7TYP5GfM5Z4fS5a4KjfohHFhg-WiU,1035
14
+ eodag/api/product/drivers/base.py,sha256=TL_Kqbi7g4mLKn4CiBXrsAiTPVVFQBYY7DuG8pVlrlc,1793
15
+ eodag/plugins/__init__.py,sha256=KQkD5aVwb9I6C-Rmi5ABEG1-j8w5FP1zKN12vagsT9Y,739
16
+ eodag/plugins/base.py,sha256=I-kxG83mh805kZldrgl--VTVBzDNtyE8f_MRkm1VLCY,2689
17
+ eodag/plugins/manager.py,sha256=I1Xdtj3gfy-DW72tKpWINxq7eNpIoS6HXDPqq97ywwI,20061
18
+ eodag/plugins/apis/__init__.py,sha256=PyY4f7P2iu3MkLPnw5eOrVew2fuavbBL3Asci3Ulwoo,744
19
+ eodag/plugins/apis/base.py,sha256=92Us1K9Ar1lGspXRCJzoFdp_P789Ix7WoAN9Yn2QF30,2657
20
+ eodag/plugins/apis/ecmwf.py,sha256=qiJNo82msdu3hsNOYXR8efz5Fofmdd5HTgIA3ByKcLQ,9984
21
+ eodag/plugins/apis/usgs.py,sha256=s_RyYoWLMDxDhPBBpi5uNOY3AEB6L6Pdr_DWw-0Lv3k,17920
22
+ eodag/plugins/authentication/__init__.py,sha256=_LVw42Bb1IhGAZH5xHRaS4b1iFoF9e27KDZOyoSoJHY,1039
23
+ eodag/plugins/authentication/aws_auth.py,sha256=aCzQadBFoKoTTSvS18C_aBiB5dWcSzEAaoUCsHLHCqg,2647
24
+ eodag/plugins/authentication/base.py,sha256=-qnWabuC6FyeKYzMnbSccm4skMEIsj3ZVEWMDAMKZjY,2603
25
+ eodag/plugins/authentication/generic.py,sha256=KM6Qll2gHwSJBXFD0BAUnTLIO8ZHWlSsHVa2aLrKu3Q,1853
26
+ eodag/plugins/authentication/header.py,sha256=mAduHrwu4rhJpneuvocQ765XRxMICZij614TfgxM_J4,3922
27
+ eodag/plugins/authentication/keycloak.py,sha256=fObU1jduwsGKZg_xebfN4i7yqxoG0jo3igo9OpeL13I,6158
28
+ eodag/plugins/authentication/oauth.py,sha256=x39Fcx6x1mOwc5BlukrJCVnGVu1XhU6ikRCWsQip5q0,1545
29
+ eodag/plugins/authentication/openid_connect.py,sha256=2s2KjVG7aBU63tOr-zU3dHst-IoBBCCLF0n6fGnLOYk,22861
30
+ eodag/plugins/authentication/qsauth.py,sha256=Sb_6h3HK7c-lOvrKPBoJZQHAuU8CXPfhRIhHNDh1uNU,3618
31
+ eodag/plugins/authentication/sas_auth.py,sha256=Ac9MkhlpXJK_3rxzYcGSaYZ-uqK1NRf_-8K2Tf7R9nI,3943
32
+ eodag/plugins/authentication/token.py,sha256=3AVGsYl_7EA91BTFGB_yza3Us7H0bORLd_PD2OMaUYg,8264
33
+ eodag/plugins/authentication/token_exchange.py,sha256=QrJRHcpadGEWH_av5E7GWTUOsv2izVYfHdJWKwU9OI0,4544
34
+ eodag/plugins/crunch/__init__.py,sha256=58D7kJhEpHJWobIKaNFPynfbSqAWgS90BiHzitqS5Ds,746
35
+ eodag/plugins/crunch/base.py,sha256=bS2sQlOvHvBTeBRZWK1FNrQyNDrLAokLIRF61VXWR8c,1381
36
+ eodag/plugins/crunch/filter_date.py,sha256=p6GbbatxAVDBLy3nWQb7lQ2qbZc98iQX8qJCpPC5eSM,4339
37
+ eodag/plugins/crunch/filter_latest_intersect.py,sha256=IHvXNdZNHL1LntBQR4s9-G5KfMY_tTmjm18tkxhMBJY,4351
38
+ eodag/plugins/crunch/filter_latest_tpl_name.py,sha256=EtbedumAW_jAI-fs_xTrn1Bfr25UVTSAM9beiQXFYoc,3679
39
+ eodag/plugins/crunch/filter_overlap.py,sha256=Chv1nN-YrFUokeuG_Qstk2D8uMQVK1v6ogei7Tgwmus,7194
40
+ eodag/plugins/crunch/filter_property.py,sha256=-Mkoz6nZ3Yc6l6ZXC6PHGXvJzUzO568-I5zQExlD-jM,3212
41
+ eodag/plugins/download/__init__.py,sha256=zqszaeNgYP0YHlZDkLMf6odcwNw0KrAahGpcA-l0kAw,740
42
+ eodag/plugins/download/aws.py,sha256=KNpanHRV-odOJMVV51-9OPpMFd_aGJhTiYWGpkZY_5U,54435
43
+ eodag/plugins/download/base.py,sha256=d9guW-Y2S6n24z_xo1fx3PBkx3YtBDJnmOPK7YKPi4M,30137
44
+ eodag/plugins/download/creodias_s3.py,sha256=wnoiqGyctXzpJNuNLB7wAAamdPD8ZQpLTlx01sNHn_w,2258
45
+ eodag/plugins/download/http.py,sha256=ln8c5UmpRxoAmTJBfeXcCWMTUDKz2G-Nt1OVhP0w9No,54769
46
+ eodag/plugins/download/s3rest.py,sha256=eDJ5uuMSmwwNwVItYSodwj1kQx0w1dLbo3cuWyIp1KE,14376
47
+ eodag/plugins/search/__init__.py,sha256=-1M-AB81A8KwLSEhSiNNEA77ecUvmvp4dUL8J1C1wFA,1986
48
+ eodag/plugins/search/base.py,sha256=WB7jCC5ElmO77XwCC3q4x3Jek1q_IiX6T72qsc1v9OM,16209
49
+ eodag/plugins/search/build_search_result.py,sha256=ktrKsu-io49WrC7edaYTL8LgG0aLL5jcv_CgNcQ_sQ8,21732
50
+ eodag/plugins/search/cop_marine.py,sha256=BZIvwMBO5wlwoorAlGwyJqb61JByJWfc232V0fxnCJg,18158
51
+ eodag/plugins/search/creodias_s3.py,sha256=8iJ6oE-nxgmfmWCWcvcgUYE3brEvZDsPKxL319udV60,5611
52
+ eodag/plugins/search/csw.py,sha256=qZkjd_HtZwmCSOqeCEgJUJ9GEgfKks0VmwRi12zjrQU,9664
53
+ eodag/plugins/search/data_request_search.py,sha256=ksQdUxlyMVWGd1iRTeOthafRAyKcZBF4BzT9rcm9b6E,18937
54
+ eodag/plugins/search/qssearch.py,sha256=Zwpkwsd9LvHqcuQa45YDP1WBUo03Y-81m13WPqUyNvI,79241
55
+ eodag/plugins/search/static_stac_search.py,sha256=wZCOXw1YMk7kuO5nr5n_spJ2m6WYkDwclRdOh7dFsOk,8918
56
+ eodag/resources/ext_product_types.json,sha256=6zRVk7ocn33bTTA8vdpWb81xol8OSADla1BeR3_ngc4,1557769
57
+ eodag/resources/locations_conf_template.yml,sha256=_eBv-QKHYMIKhY0b0kp4Ee33RsayxN8LWH3kDXxfFSk,986
58
+ eodag/resources/product_types.yml,sha256=GMgBF59A9iJwd-5Glf1J_FDQbtegslKKN5WJKn9xxtI,364143
59
+ eodag/resources/providers.yml,sha256=Sww2rkWaRAcI_0aJy7TROgI0gJYAqPxpm2RU5RkTvto,261418
60
+ eodag/resources/stac.yml,sha256=XgQFkJEfu_f2ZiVM5L1flkew7wq55p_PJmDuVkOG3fs,10442
61
+ eodag/resources/stac_api.yml,sha256=3wz1rAfxb_IWJHBdIONA7JPpAYVJpo9pzlSPFwfb41s,68893
62
+ eodag/resources/stac_provider.yml,sha256=2yfdnuhJYV1f5el3aFkunoPqHAcD8oCDzvASbmldIvY,6703
63
+ eodag/resources/user_conf_template.yml,sha256=7lZ2Lza1snTJYy72x2hnY121_1Azdody-w-7AXxyuls,7635
64
+ eodag/resources/shp/ne_110m_admin_0_map_units.VERSION.txt,sha256=CHSo_jbv-4d4D0MYRbWn2FvmV_K9mYzo7qznF4YNO3g,7
65
+ eodag/resources/shp/ne_110m_admin_0_map_units.cpg,sha256=FG1nif_gM6UpfBrQRuamLuNTGbhrAhRE8FtuoqqKH0o,6
66
+ eodag/resources/shp/ne_110m_admin_0_map_units.dbf,sha256=uEEO22hZ_crWxMNhuQ_ix889c1Us1awYXAglxbf1K-s,393747
67
+ eodag/resources/shp/ne_110m_admin_0_map_units.prj,sha256=oaohy2UQUlLMiTy3HhYS1Kurl_7z3A3LYcOmVf_TbNo,148
68
+ eodag/resources/shp/ne_110m_admin_0_map_units.shp,sha256=GMVJQ1pe0JfaJnVfAew0MvembDJDkfUs0To2Qc82Aos,181628
69
+ eodag/resources/shp/ne_110m_admin_0_map_units.shx,sha256=N74fDl6sQAljmHQ_e9DO7suO6BXuwC0LwmriAnDBH-U,1564
70
+ eodag/rest/__init__.py,sha256=v4SI9gLuFP81YXi5_k98lvVNGzz6h8YZ_aUdhKAbE2M,916
71
+ eodag/rest/cache.py,sha256=zGqVt8AAbqwhRmWmAbRPLMJgEb1ZD67WO-QnWwoe3a4,2103
72
+ eodag/rest/config.py,sha256=mNXmixiRBpV_39sUlrl_r2H7PFyYfHyvvv1mxy49xjg,2141
73
+ eodag/rest/constants.py,sha256=XsNgjzv0Qvw1hhjeuscDuyQpCm99g3O-hEyslPSiFzQ,945
74
+ eodag/rest/core.py,sha256=s_zxBL0ySYV7YW-tQjBEAbpXkiUUyFlMnqVTvq9gAec,25100
75
+ eodag/rest/errors.py,sha256=U63SBcmJeS5OtRfx72VHHmtl-LWIM2PFSwC4Th0c14w,6106
76
+ eodag/rest/server.py,sha256=r3KxAIUE-ZTb-8OsNwpyTT108syx-SRfUItsHYErD_Q,17641
77
+ eodag/rest/server.wsgi,sha256=ssM4JQi8tZpOYj03CTdM0weyUF1b3Lbh38pdD-vBfXs,152
78
+ eodag/rest/stac.py,sha256=JtuCFa4bldO4exe-G8MUHYhuNVvOA7q_GxzU99xQPyI,35788
79
+ eodag/rest/templates/README,sha256=qFgCBE6XC4YiXkpPoSHkYbMTQr8Zg5Wc5eAKVcooXmw,57
80
+ eodag/rest/types/__init__.py,sha256=Bu0C3dzXHe8kocnz2PIHV0GjQWlAQas6ToIfwusNPQs,742
81
+ eodag/rest/types/collections_search.py,sha256=76dvL9y_Cq0ERoJdAn6btXx-0EFWxlfPYSoO7xkFA7c,1533
82
+ eodag/rest/types/eodag_search.py,sha256=DPfXp2zV0cNIUl4wGMumspP7vN47ew3rJY0xuSox5To,14001
83
+ eodag/rest/types/queryables.py,sha256=dUNgdYxvZOzzi_D43IeaK3Rq2W7L-yVNGnl0iydseDM,6310
84
+ eodag/rest/types/stac_search.py,sha256=5lfwVJUpOpGrDOiv1Hn2GanpwjH0HfkfaWxGNnC4Efo,8813
85
+ eodag/rest/utils/__init__.py,sha256=D6SWRK_UF3yY-s1PweehJ1Oesnyw6ySMrhxQzjn3dJs,6544
86
+ eodag/rest/utils/cql_evaluate.py,sha256=cren4gxNyi_3gIEq0CADpqyi5sVnr93rY26CXWCyM3Y,4106
87
+ eodag/rest/utils/rfc3339.py,sha256=pZf6PXpUiQCNLAd-EJwgQ0sHJdTwac2RDEUv92LG3Os,2241
88
+ eodag/types/__init__.py,sha256=YDBVb5LrLdkXwDXh-7J18BLWJP6ZtR0vbRqL42HiJO0,11772
89
+ eodag/types/bbox.py,sha256=okc8oFgvoSTQnXJew740i41HArAoSD36Xjr_XmZ1Q4M,4373
90
+ eodag/types/download_args.py,sha256=xP4cLBocbJsscaJBGUFIDeif3HSe9pTusMTT_PKA5H8,1554
91
+ eodag/types/queryables.py,sha256=oELD822--6aZiJGG82eIH3HLKHcmUpXW-gL5TtaN-WQ,6010
92
+ eodag/types/search_args.py,sha256=8pwh_Go8PRyOP9arwL7IP1n3XcutNDR1_rj7rBlnd5A,5668
93
+ eodag/types/whoosh.py,sha256=dmfS8UIjmdP4kLkeFK99lfiS0owzHa4bLUfB4hrXb5w,2503
94
+ eodag/utils/__init__.py,sha256=9N4pgKF6iT2gE-DZxV3GPVeOLz9gvQh293fZEl4CalE,48883
95
+ eodag/utils/constraints.py,sha256=NAFI-UzrC0zMCG3rVzB_UeutC-sFaZPGRhlI0ytQbbE,9560
96
+ eodag/utils/exceptions.py,sha256=DMnM02WQgAkZMA9kGwyGQA5F8PWnrZ_i1o0XtyLYx1k,3956
97
+ eodag/utils/import_system.py,sha256=TqfRi_Kl0mzqNBapnOr3A7Y3qjCAgd7wYZ0bkPLeuJU,3908
98
+ eodag/utils/logging.py,sha256=KoMsyS1f6O1hr_SMDOIxvt842mOJgmu_yLUk0-0EKFs,3507
99
+ eodag/utils/notebook.py,sha256=AUxtayvu26qYf3x3Eu3ujRl1XDgy24EfQaETbqmXSZw,2703
100
+ eodag/utils/repr.py,sha256=6ocR8WyatAvh0oAM40bj_FvIt_XMmu-sW0nPxbH9UnM,3683
101
+ eodag/utils/requests.py,sha256=YfN37yA9a_rIEpzhIaG1AL-vpCZitVECicdrKgKgp3A,4604
102
+ eodag/utils/rest.py,sha256=Jd7HMbPCaGW5fFK1Ud0FyocEXqGInwneLFdB7mNRW9A,3361
103
+ eodag/utils/stac_reader.py,sha256=qb0zN7Z1gWS2ha6lpvgup_Yv2Zuc1q154m6tdk9rumk,9237
104
+ eodag-3.0.0.dist-info/LICENSE,sha256=4MAecetnRTQw5DlHtiikDSzKWO1xVLwzM5_DsPMYlnE,10172
105
+ eodag-3.0.0.dist-info/METADATA,sha256=Yt-2q2bOy6urndsPsjanvmcKBI67qpuXRz-CI4mYymk,15452
106
+ eodag-3.0.0.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
107
+ eodag-3.0.0.dist-info/entry_points.txt,sha256=iKQHH0DeP96tHvTTPGLBhsJm-2Iyh1k02UbcMyTpcec,2438
108
+ eodag-3.0.0.dist-info/top_level.txt,sha256=025IMTmVe5eDjIPP4KEFQKespOPMQdne4U4jOy8nftM,6
109
+ eodag-3.0.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.42.0)
2
+ Generator: setuptools (75.1.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -2,9 +2,8 @@
2
2
  eodag = eodag.cli:eodag
3
3
 
4
4
  [eodag.plugins.api]
5
- CdsApi = eodag.plugins.apis.cds:CdsApi
6
- EcmwfApi = eodag.plugins.apis.ecmwf:EcmwfApi
7
- UsgsApi = eodag.plugins.apis.usgs:UsgsApi
5
+ EcmwfApi = eodag.plugins.apis.ecmwf:EcmwfApi [ecmwf]
6
+ UsgsApi = eodag.plugins.apis.usgs:UsgsApi [usgs]
8
7
 
9
8
  [eodag.plugins.auth]
10
9
  AwsAuth = eodag.plugins.authentication.aws_auth:AwsAuth
@@ -14,6 +13,7 @@ HttpQueryStringAuth = eodag.plugins.authentication.qsauth:HttpQueryStringAuth
14
13
  KeycloakOIDCPasswordAuth = eodag.plugins.authentication.keycloak:KeycloakOIDCPasswordAuth
15
14
  OAuth = eodag.plugins.authentication.oauth:OAuth
16
15
  OIDCAuthorizationCodeFlowAuth = eodag.plugins.authentication.openid_connect:OIDCAuthorizationCodeFlowAuth
16
+ OIDCTokenExchangeAuth = eodag.plugins.authentication.token_exchange:OIDCTokenExchangeAuth
17
17
  SASAuth = eodag.plugins.authentication.sas_auth:SASAuth
18
18
  TokenAuth = eodag.plugins.authentication.token:TokenAuth
19
19
 
@@ -31,13 +31,15 @@ HTTPDownload = eodag.plugins.download.http:HTTPDownload
31
31
  S3RestDownload = eodag.plugins.download.s3rest:S3RestDownload
32
32
 
33
33
  [eodag.plugins.search]
34
- AwsSearch = eodag.plugins.search.qssearch:AwsSearch
35
34
  BuildPostSearchResult = eodag.plugins.search.build_search_result:BuildPostSearchResult
36
- CSWSearch = eodag.plugins.search.csw:CSWSearch
35
+ BuildSearchResult = eodag.plugins.search.build_search_result:BuildSearchResult
36
+ CSWSearch = eodag.plugins.search.csw:CSWSearch [csw]
37
+ CopMarineSearch = eodag.plugins.search.cop_marine:CopMarineSearch
37
38
  CreodiasS3Search = eodag.plugins.search.creodias_s3:CreodiasS3Search
38
39
  DataRequestSearch = eodag.plugins.search.data_request_search:DataRequestSearch
39
40
  ODataV4Search = eodag.plugins.search.qssearch:ODataV4Search
40
41
  PostJsonSearch = eodag.plugins.search.qssearch:PostJsonSearch
42
+ PostJsonSearchWithStacQueryables = eodag.plugins.search.qssearch:PostJsonSearchWithStacQueryables
41
43
  QueryStringSearch = eodag.plugins.search.qssearch:QueryStringSearch
42
44
  StacSearch = eodag.plugins.search.qssearch:StacSearch
43
45
  StaticStacSearch = eodag.plugins.search.static_stac_search:StaticStacSearch