eodag 3.0.0b3__py3-none-any.whl → 3.0.1__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 (71) hide show
  1. eodag/api/core.py +189 -125
  2. eodag/api/product/metadata_mapping.py +12 -3
  3. eodag/api/search_result.py +29 -3
  4. eodag/cli.py +35 -19
  5. eodag/config.py +412 -116
  6. eodag/plugins/apis/base.py +10 -4
  7. eodag/plugins/apis/ecmwf.py +14 -4
  8. eodag/plugins/apis/usgs.py +25 -2
  9. eodag/plugins/authentication/aws_auth.py +14 -5
  10. eodag/plugins/authentication/base.py +10 -1
  11. eodag/plugins/authentication/generic.py +14 -3
  12. eodag/plugins/authentication/header.py +12 -4
  13. eodag/plugins/authentication/keycloak.py +41 -22
  14. eodag/plugins/authentication/oauth.py +11 -1
  15. eodag/plugins/authentication/openid_connect.py +178 -163
  16. eodag/plugins/authentication/qsauth.py +12 -4
  17. eodag/plugins/authentication/sas_auth.py +19 -2
  18. eodag/plugins/authentication/token.py +57 -10
  19. eodag/plugins/authentication/token_exchange.py +19 -19
  20. eodag/plugins/crunch/base.py +4 -1
  21. eodag/plugins/crunch/filter_date.py +5 -2
  22. eodag/plugins/crunch/filter_latest_intersect.py +5 -4
  23. eodag/plugins/crunch/filter_latest_tpl_name.py +1 -1
  24. eodag/plugins/crunch/filter_overlap.py +5 -7
  25. eodag/plugins/crunch/filter_property.py +4 -3
  26. eodag/plugins/download/aws.py +39 -22
  27. eodag/plugins/download/base.py +11 -11
  28. eodag/plugins/download/creodias_s3.py +11 -2
  29. eodag/plugins/download/http.py +86 -52
  30. eodag/plugins/download/s3rest.py +20 -18
  31. eodag/plugins/manager.py +168 -23
  32. eodag/plugins/search/base.py +33 -14
  33. eodag/plugins/search/build_search_result.py +55 -51
  34. eodag/plugins/search/cop_marine.py +112 -29
  35. eodag/plugins/search/creodias_s3.py +20 -5
  36. eodag/plugins/search/csw.py +41 -1
  37. eodag/plugins/search/data_request_search.py +109 -9
  38. eodag/plugins/search/qssearch.py +532 -152
  39. eodag/plugins/search/static_stac_search.py +20 -21
  40. eodag/resources/ext_product_types.json +1 -1
  41. eodag/resources/product_types.yml +187 -56
  42. eodag/resources/providers.yml +1610 -1701
  43. eodag/resources/stac.yml +3 -163
  44. eodag/resources/user_conf_template.yml +112 -97
  45. eodag/rest/config.py +1 -2
  46. eodag/rest/constants.py +0 -1
  47. eodag/rest/core.py +61 -51
  48. eodag/rest/errors.py +181 -0
  49. eodag/rest/server.py +24 -325
  50. eodag/rest/stac.py +93 -544
  51. eodag/rest/types/eodag_search.py +13 -8
  52. eodag/rest/types/queryables.py +1 -2
  53. eodag/rest/types/stac_search.py +11 -2
  54. eodag/types/__init__.py +15 -3
  55. eodag/types/download_args.py +1 -1
  56. eodag/types/queryables.py +1 -2
  57. eodag/types/search_args.py +3 -3
  58. eodag/utils/__init__.py +77 -57
  59. eodag/utils/exceptions.py +23 -9
  60. eodag/utils/logging.py +37 -77
  61. eodag/utils/requests.py +1 -3
  62. eodag/utils/stac_reader.py +1 -1
  63. {eodag-3.0.0b3.dist-info → eodag-3.0.1.dist-info}/METADATA +11 -12
  64. eodag-3.0.1.dist-info/RECORD +109 -0
  65. {eodag-3.0.0b3.dist-info → eodag-3.0.1.dist-info}/WHEEL +1 -1
  66. {eodag-3.0.0b3.dist-info → eodag-3.0.1.dist-info}/entry_points.txt +1 -0
  67. eodag/resources/constraints/climate-dt.json +0 -13
  68. eodag/resources/constraints/extremes-dt.json +0 -8
  69. eodag-3.0.0b3.dist-info/RECORD +0 -110
  70. {eodag-3.0.0b3.dist-info → eodag-3.0.1.dist-info}/LICENSE +0 -0
  71. {eodag-3.0.0b3.dist-info → eodag-3.0.1.dist-info}/top_level.txt +0 -0
eodag/resources/stac.yml CHANGED
@@ -126,7 +126,6 @@ collection:
126
126
  interval:
127
127
  - - '$.product_type.missionStartDate'
128
128
  - '$.product_type.missionEndDate'
129
- properties:
130
129
  crs: http://www.opengis.net/def/crs/OGC/1.3/CRS84
131
130
  stac_version: "{stac_version}"
132
131
  keywords:
@@ -144,7 +143,8 @@ collection:
144
143
  - '$.product_type.platformSerialIdentifier'
145
144
  intruments:
146
145
  - '$.product_type.instrument'
147
- processing:level: '$.product_type.processingLevel'
146
+ processing:level:
147
+ - '$.product_type.processingLevel'
148
148
 
149
149
  # Data ------------------------------------------------------------------------
150
150
 
@@ -250,7 +250,7 @@ stac_extensions:
250
250
  view: 'https://stac-extensions.github.io/view/v1.0.0/schema.json'
251
251
  oseo: "{catalog[root]}/extensions/oseo/json-schema/schema.json"
252
252
 
253
- # Catalogs --------------------------------------------------------------------
253
+ # Catalog --------------------------------------------------------------------
254
254
 
255
255
  catalog:
256
256
  parent_key: root
@@ -267,166 +267,6 @@ catalog:
267
267
  stac_version: "{stac_version}"
268
268
  stac_extensions: "{catalog[stac_extensions]}"
269
269
 
270
-
271
- # nested catalogs for filtering
272
- catalogs:
273
-
274
- product_types_list:
275
- parent_key: root
276
- child_key: product_type
277
- model:
278
- id: "product_types"
279
- description: Available product types
280
-
281
- product_type:
282
- parent_key: product_types_list
283
- model:
284
- id: "{collection[id]}"
285
- title: "{collection[title]}"
286
- description: "{collection[description]}"
287
- extent:
288
- spatial:
289
- bbox:
290
- - - "{collection[extent][spatial][bbox][0][0]}"
291
- - "{collection[extent][spatial][bbox][0][1]}"
292
- - "{collection[extent][spatial][bbox][0][2]}"
293
- - "{collection[extent][spatial][bbox][0][3]}"
294
- temporal:
295
- interval:
296
- - - "{collection[extent][temporal][interval][0][0]}"
297
- - "{collection[extent][temporal][interval][0][1]}"
298
- crs: http://www.opengis.net/def/crs/OGC/1.3/CRS84
299
- keywords: "{collection[keywords]}"
300
- license: "{collection[license]}"
301
- properties: "{collection[properties]}"
302
- providers: "{collection[providers]}"
303
- summaries: "{collection[summaries]}"
304
-
305
- years_list:
306
- child_key: year
307
- model:
308
- id: year
309
- title: "{parent_catalog[title]} / year"
310
- description: "{parent_catalog[description]}\n\n- Filter by year"
311
-
312
- year:
313
- parent_key: years_list
314
- model:
315
- id: "{date[year]}"
316
- title: "{catalog[title]}: {date[year]}"
317
- description: "{catalog[description]}: {date[year]};"
318
- extent:
319
- spatial:
320
- bbox:
321
- - - "{catalog[extent][spatial][bbox][0][0]}"
322
- - "{catalog[extent][spatial][bbox][0][1]}"
323
- - "{catalog[extent][spatial][bbox][0][2]}"
324
- - "{catalog[extent][spatial][bbox][0][3]}"
325
- temporal:
326
- interval:
327
- - - "{date[min]}"
328
- - "{date[max]}"
329
-
330
- months_list:
331
- child_key: month
332
- parent_key: year
333
- model:
334
- id: month
335
- title: "{parent_catalog[title]} / month"
336
- description: "{parent_catalog[description]}\n\n- Filter by month"
337
-
338
- month:
339
- parent_key: months_list
340
- model:
341
- id: "{date[month]}"
342
- title: "{catalog[title]}: {date[month]}"
343
- description: "{catalog[description]}: {date[month]};"
344
- extent:
345
- spatial:
346
- bbox:
347
- - - "{catalog[extent][spatial][bbox][0][0]}"
348
- - "{catalog[extent][spatial][bbox][0][1]}"
349
- - "{catalog[extent][spatial][bbox][0][2]}"
350
- - "{catalog[extent][spatial][bbox][0][3]}"
351
- temporal:
352
- interval:
353
- - - "{date[min]}"
354
- - "{date[max]}"
355
-
356
- days_list:
357
- child_key: day
358
- parent_key: month
359
- model:
360
- id: day
361
- title: "{parent_catalog[title]} / day"
362
- description: "{parent_catalog[description]}\n\n- Filter by day"
363
-
364
- day:
365
- parent_key: days_list
366
- model:
367
- id: "{date[day]}"
368
- title: "{catalog[title]}: {date[day]}"
369
- description: "{catalog[description]}: {date[day]};"
370
- extent:
371
- spatial:
372
- bbox:
373
- - - "{catalog[extent][spatial][bbox][0][0]}"
374
- - "{catalog[extent][spatial][bbox][0][1]}"
375
- - "{catalog[extent][spatial][bbox][0][2]}"
376
- - "{catalog[extent][spatial][bbox][0][3]}"
377
- temporal:
378
- interval:
379
- - - "{date[min]}"
380
- - "{date[max]}"
381
-
382
- cloud_covers_list:
383
- child_key: cloud_cover
384
- model:
385
- id: cloud_cover
386
- title: "{parent_catalog[title]} / Max cloud cover"
387
- description: "{parent_catalog[description]}\n\n- Filter by maximum cloud cover %"
388
-
389
- cloud_cover:
390
- parent_key: cloud_covers_list
391
- model:
392
- id: "{cloud_cover}"
393
- title: "{catalog[title]}: {cloud_cover}%"
394
- description: "{catalog[description]}: {cloud_cover}%;"
395
-
396
-
397
- locations_catalogs:
398
-
399
- locations_list:
400
- catalog_type: location_list
401
- child_key: "$.shp_location.name"
402
- path: "$.shp_location.path"
403
- attr: "$.shp_location.attr"
404
- parent_key: "$.shp_location.parent.name"
405
- parent:
406
- key: "$.shp_location.parent.name"
407
- attr: "$.shp_location.parent.attr"
408
- model:
409
- id: "$.shp_location.name"
410
- self_title: "$.shp_location.name"
411
- title: "{parent_catalog[title]} / {catalog[self_title]}"
412
- description: "{parent_catalog[description]}\n\n- Filter by {catalog[self_title]}"
413
-
414
- location:
415
- catalog_type: location
416
- parent_key: "{locations_list}"
417
- model:
418
- id: "{feature[id]}"
419
- title: "{catalog[title]}: {feature[id]}"
420
- description: "{catalog[description]}: {feature[id]};"
421
- extent:
422
- spatial:
423
- bbox: '{feature[geometry]#to_bounds_lists}'
424
- temporal:
425
- interval:
426
- - - "{catalog[extent][temporal][interval][0][0]}"
427
- - "{catalog[extent][temporal][interval][0][1]}"
428
-
429
-
430
270
  # Extensions ------------------------------------------------------------------
431
271
  extensions:
432
272
  oseo:
@@ -15,53 +15,63 @@
15
15
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
16
  # See the License for the specific language governing permissions and
17
17
  # limitations under the License.
18
- peps:
19
- priority: # Lower value means lower priority (Default: 1)
20
- search: # Search parameters configuration
18
+ aws_eos:
19
+ priority: # Lower value means lower priority (Default: 0)
20
+ search: # Search parameters configuration
21
+ search_auth:
22
+ credentials:
23
+ api_key:
24
+ download_auth:
25
+ credentials:
26
+ aws_access_key_id:
27
+ aws_secret_access_key:
28
+ aws_profile:
21
29
  download:
22
- extract: # whether to extract the downloaded products, only applies to archived products (true or false, Default: true).
23
- output_dir: # where to store downloaded products, as an absolute file path (Default: local temporary directory)
24
- dl_url_params: # additional parameters to pass over to the download url as an url parameter
25
- delete_archive: # whether to delete the downloaded archives (true or false, Default: true).
30
+ output_dir:
31
+ cop_ads:
32
+ priority: # Lower value means lower priority (Default: 0)
33
+ search: # Search parameters configuration
34
+ download:
35
+ extract:
36
+ output_dir:
26
37
  auth:
27
38
  credentials:
28
- username:
29
- password:
30
- theia:
39
+ apikey:
40
+ cop_cds:
31
41
  priority: # Lower value means lower priority (Default: 0)
32
- search: # Search parameters configuration
42
+ search: # Search parameters configuration
33
43
  download:
34
44
  extract:
35
45
  output_dir:
36
- dl_url_params:
37
46
  auth:
38
47
  credentials:
39
- ident:
40
- pass:
41
- usgs:
48
+ apikey:
49
+ cop_dataspace:
42
50
  priority: # Lower value means lower priority (Default: 0)
43
- api:
51
+ search: # Search parameters configuration
52
+ download:
44
53
  extract:
45
54
  output_dir:
46
- dl_url_params:
47
- product_location_scheme:
55
+ auth:
48
56
  credentials:
49
57
  username:
50
58
  password:
51
- aws_eos:
59
+ cop_ewds:
52
60
  priority: # Lower value means lower priority (Default: 0)
53
- search: # Search parameters configuration
61
+ download:
62
+ output_dir:
54
63
  auth:
55
64
  credentials:
56
65
  apikey:
57
- aws_access_key_id:
58
- aws_secret_access_key:
59
- aws_profile:
66
+ cop_marine:
67
+ priority: # Lower value means lower priority (Default: 0)
68
+ search: # Search parameters configuration
60
69
  download:
70
+ extract:
61
71
  output_dir:
62
72
  creodias:
63
73
  priority: # Lower value means lower priority (Default: 0)
64
- search: # Search parameters configuration
74
+ search: # Search parameters configuration
65
75
  download:
66
76
  extract:
67
77
  output_dir:
@@ -70,39 +80,36 @@ creodias:
70
80
  username:
71
81
  password:
72
82
  totp: # set totp dynamically, see https://eodag.readthedocs.io/en/latest/getting_started_guide/configure.html#authenticate-using-an-otp-one-time-password-two-factor-authentication
73
- onda:
83
+ creodias_s3:
74
84
  priority: # Lower value means lower priority (Default: 0)
75
- search: # Search parameters configuration
85
+ search: # Search parameters configuration
76
86
  download:
77
- extract:
78
87
  output_dir:
79
- auth:
80
- credentials:
81
- username:
82
- password:
83
- astraea_eod:
84
- priority: # Lower value means lower priority (Default: 0)
85
- search: # Search parameters configuration
86
88
  auth:
87
89
  credentials:
88
90
  aws_access_key_id:
89
91
  aws_secret_access_key:
90
- aws_profile:
92
+ dedl:
93
+ priority: # Lower value means lower priority (Default: 0)
94
+ search: # Search parameters configuration
91
95
  download:
92
96
  output_dir:
93
- usgs_satapi_aws:
94
- priority: # Lower value means lower priority (Default: 0)
95
- search: # Search parameters configuration
96
97
  auth:
97
98
  credentials:
98
- aws_access_key_id:
99
- aws_secret_access_key:
100
- aws_profile:
99
+ username:
100
+ password:
101
+ dedt_lumi:
102
+ priority: # Lower value means lower priority (Default: 0)
103
+ search:
101
104
  download:
102
105
  output_dir:
106
+ auth:
107
+ credentials:
108
+ username:
109
+ password:
103
110
  earth_search:
104
111
  priority: # Lower value means lower priority (Default: 0)
105
- search: # Search parameters configuration
112
+ search: # Search parameters configuration
106
113
  auth:
107
114
  credentials:
108
115
  aws_access_key_id:
@@ -112,12 +119,12 @@ earth_search:
112
119
  output_dir:
113
120
  earth_search_cog:
114
121
  priority: # Lower value means lower priority (Default: 0)
115
- search: # Search parameters configuration
122
+ search: # Search parameters configuration
116
123
  download:
117
124
  output_dir:
118
125
  earth_search_gcs:
119
126
  priority: # Lower value means lower priority (Default: 0)
120
- search: # Search parameters configuration
127
+ search: # Search parameters configuration
121
128
  auth:
122
129
  credentials:
123
130
  aws_access_key_id:
@@ -131,48 +138,44 @@ ecmwf:
131
138
  credentials:
132
139
  username:
133
140
  password:
134
- cop_ads:
141
+ eumetsat_ds:
135
142
  priority: # Lower value means lower priority (Default: 0)
136
- search: # Search parameters configuration
137
- download:
138
- extract:
143
+ search: # Search parameters configuration
139
144
  output_dir:
140
145
  auth:
141
146
  credentials:
142
147
  username:
143
148
  password:
144
- cop_cds:
145
- priority: # Lower value means lower priority (Default: 0)
146
- search: # Search parameters configuration
147
149
  download:
148
- extract:
149
150
  output_dir:
151
+ geodes:
152
+ priority: # Lower value means lower priority (Default: 0)
153
+ search: # Search parameters configuration
150
154
  auth:
151
155
  credentials:
152
- username:
153
- password:
154
- sara:
155
- priority: # Lower value means lower priority (Default: 0)
156
- search: # Search parameters configuration
156
+ apikey:
157
157
  download:
158
158
  extract:
159
159
  output_dir:
160
- delete_archive:
160
+ hydroweb_next:
161
+ priority: # Lower value means lower priority (Default: 0)
162
+ search: # Search parameters configuration
161
163
  auth:
162
164
  credentials:
163
- username:
164
- password:
165
+ apikey:
166
+ download:
167
+ output_dir:
165
168
  meteoblue:
166
169
  priority: # Lower value means lower priority (Default: 0)
167
- search: # Search parameters configuration
170
+ search: # Search parameters configuration
168
171
  auth:
169
172
  credentials:
170
173
  apikey:
171
174
  download:
172
175
  output_dir:
173
- cop_dataspace:
176
+ onda:
174
177
  priority: # Lower value means lower priority (Default: 0)
175
- search: # Search parameters configuration
178
+ search: # Search parameters configuration
176
179
  download:
177
180
  extract:
178
181
  output_dir:
@@ -180,50 +183,69 @@ cop_dataspace:
180
183
  credentials:
181
184
  username:
182
185
  password:
183
- planetary_computer:
184
- priority: # Lower value means lower priority (Default: 0)
185
- search: # Search parameters configuration
186
+ peps:
187
+ priority: # Lower value means lower priority (Default: 1)
188
+ search: # Search parameters configuration
189
+ download:
190
+ extract: # whether to extract the downloaded products, only applies to archived products (true or false, Default: true).
191
+ output_dir: # where to store downloaded products, as an absolute file path (Default: local temporary directory)
192
+ dl_url_params: # additional parameters to pass over to the download url as an url parameter
193
+ delete_archive: # whether to delete the downloaded archives (true or false, Default: true).
186
194
  auth:
187
195
  credentials:
188
- apikey:
189
- download:
190
- output_dir:
191
- hydroweb_next:
196
+ username:
197
+ password:
198
+ planetary_computer:
192
199
  priority: # Lower value means lower priority (Default: 0)
193
- search: # Search parameters configuration
200
+ search: # Search parameters configuration
194
201
  auth:
195
202
  credentials:
196
203
  apikey:
197
204
  download:
198
205
  output_dir:
199
- wekeo:
206
+ sara:
200
207
  priority: # Lower value means lower priority (Default: 0)
201
- search: # Search parameters configuration
208
+ search: # Search parameters configuration
202
209
  download:
210
+ extract:
203
211
  output_dir:
212
+ delete_archive:
204
213
  auth:
205
214
  credentials:
206
215
  username:
207
216
  password:
208
- wekeo_cmems:
217
+ theia:
209
218
  priority: # Lower value means lower priority (Default: 0)
210
- search:
219
+ search: # Search parameters configuration
211
220
  download:
221
+ extract:
212
222
  output_dir:
223
+ dl_url_params:
213
224
  auth:
225
+ credentials:
226
+ ident:
227
+ pass:
228
+ usgs:
229
+ priority: # Lower value means lower priority (Default: 0)
230
+ api:
231
+ extract:
232
+ output_dir:
233
+ dl_url_params:
234
+ product_location_scheme:
214
235
  credentials:
215
236
  username:
216
237
  password:
217
- creodias_s3:
238
+ usgs_satapi_aws:
218
239
  priority: # Lower value means lower priority (Default: 0)
219
- search: # Search parameters configuration
220
- download:
221
- output_dir:
240
+ search: # Search parameters configuration
222
241
  auth:
223
242
  credentials:
224
- aws_access_key_id:
225
- aws_secret_access_key:
226
- dedt_lumi:
243
+ aws_access_key_id:
244
+ aws_secret_access_key:
245
+ aws_profile:
246
+ download:
247
+ output_dir:
248
+ wekeo_cmems:
227
249
  priority: # Lower value means lower priority (Default: 0)
228
250
  search:
229
251
  download:
@@ -232,28 +254,21 @@ dedt_lumi:
232
254
  credentials:
233
255
  username:
234
256
  password:
235
- dedl:
257
+ wekeo_ecmwf:
236
258
  priority: # Lower value means lower priority (Default: 0)
237
- search: # Search parameters configuration
259
+ search: # Search parameters configuration
238
260
  download:
239
261
  output_dir:
240
- auth:
241
- credentials:
242
- username:
243
- password:
244
- eumetsat_ds:
245
- priority: # Lower value means lower priority (Default: 0)
246
- search: # Search parameters configuration
247
- output_dir:
248
262
  auth:
249
263
  credentials:
250
264
  username:
251
265
  password:
252
- download:
253
- output_dir:
254
- cop_marine:
266
+ wekeo_main:
255
267
  priority: # Lower value means lower priority (Default: 0)
256
- search: # Search parameters configuration
268
+ search: # Search parameters configuration
257
269
  download:
258
- extract:
259
270
  output_dir:
271
+ auth:
272
+ credentials:
273
+ username:
274
+ password:
eodag/rest/config.py CHANGED
@@ -18,7 +18,7 @@
18
18
  from __future__ import annotations
19
19
 
20
20
  from functools import lru_cache
21
- from typing import List, Union
21
+ from typing import Annotated, List, Union
22
22
 
23
23
  from pydantic import Field
24
24
  from pydantic.functional_validators import BeforeValidator
@@ -26,7 +26,6 @@ from pydantic_settings import BaseSettings, SettingsConfigDict
26
26
  from typing_extensions import Doc
27
27
 
28
28
  from eodag.rest.constants import DEFAULT_MAXSIZE, DEFAULT_TTL
29
- from eodag.utils import Annotated
30
29
 
31
30
 
32
31
  def str2liststr(raw: Union[str, List[str]]) -> List[str]:
eodag/rest/constants.py CHANGED
@@ -24,4 +24,3 @@ CACHE_KEY_COLLECTIONS = "collections"
24
24
  CACHE_KEY_COLLECTION = "collection"
25
25
  CACHE_KEY_SEARCH = "search"
26
26
  CACHE_KEY_QUERYABLES = "queryables"
27
- CACHE_KEY_CATALOGS = "catalogs"