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.
- eodag/__init__.py +6 -8
- eodag/api/core.py +654 -538
- eodag/api/product/__init__.py +12 -2
- eodag/api/product/_assets.py +59 -16
- eodag/api/product/_product.py +100 -93
- eodag/api/product/drivers/__init__.py +7 -2
- eodag/api/product/drivers/base.py +0 -3
- eodag/api/product/metadata_mapping.py +192 -96
- eodag/api/search_result.py +69 -10
- eodag/cli.py +55 -25
- eodag/config.py +391 -116
- eodag/plugins/apis/base.py +11 -168
- eodag/plugins/apis/ecmwf.py +36 -25
- eodag/plugins/apis/usgs.py +80 -35
- eodag/plugins/authentication/aws_auth.py +13 -4
- eodag/plugins/authentication/base.py +10 -1
- eodag/plugins/authentication/generic.py +2 -2
- eodag/plugins/authentication/header.py +31 -6
- eodag/plugins/authentication/keycloak.py +17 -84
- eodag/plugins/authentication/oauth.py +3 -3
- eodag/plugins/authentication/openid_connect.py +268 -49
- eodag/plugins/authentication/qsauth.py +4 -1
- eodag/plugins/authentication/sas_auth.py +9 -2
- eodag/plugins/authentication/token.py +98 -47
- eodag/plugins/authentication/token_exchange.py +122 -0
- eodag/plugins/crunch/base.py +3 -1
- eodag/plugins/crunch/filter_date.py +3 -9
- eodag/plugins/crunch/filter_latest_intersect.py +0 -3
- eodag/plugins/crunch/filter_latest_tpl_name.py +1 -4
- eodag/plugins/crunch/filter_overlap.py +4 -8
- eodag/plugins/crunch/filter_property.py +5 -11
- eodag/plugins/download/aws.py +149 -185
- eodag/plugins/download/base.py +88 -97
- eodag/plugins/download/creodias_s3.py +1 -1
- eodag/plugins/download/http.py +638 -310
- eodag/plugins/download/s3rest.py +47 -45
- eodag/plugins/manager.py +228 -88
- eodag/plugins/search/__init__.py +36 -0
- eodag/plugins/search/base.py +239 -30
- eodag/plugins/search/build_search_result.py +382 -37
- eodag/plugins/search/cop_marine.py +441 -0
- eodag/plugins/search/creodias_s3.py +25 -20
- eodag/plugins/search/csw.py +5 -7
- eodag/plugins/search/data_request_search.py +61 -30
- eodag/plugins/search/qssearch.py +713 -255
- eodag/plugins/search/static_stac_search.py +106 -40
- eodag/resources/ext_product_types.json +1 -1
- eodag/resources/product_types.yml +1921 -34
- eodag/resources/providers.yml +4091 -3655
- eodag/resources/stac.yml +50 -216
- eodag/resources/stac_api.yml +71 -25
- eodag/resources/stac_provider.yml +5 -0
- eodag/resources/user_conf_template.yml +89 -32
- eodag/rest/__init__.py +6 -0
- eodag/rest/cache.py +70 -0
- eodag/rest/config.py +68 -0
- eodag/rest/constants.py +26 -0
- eodag/rest/core.py +735 -0
- eodag/rest/errors.py +178 -0
- eodag/rest/server.py +264 -431
- eodag/rest/stac.py +442 -836
- eodag/rest/types/collections_search.py +44 -0
- eodag/rest/types/eodag_search.py +238 -47
- eodag/rest/types/queryables.py +164 -0
- eodag/rest/types/stac_search.py +273 -0
- eodag/rest/utils/__init__.py +216 -0
- eodag/rest/utils/cql_evaluate.py +119 -0
- eodag/rest/utils/rfc3339.py +64 -0
- eodag/types/__init__.py +106 -10
- eodag/types/bbox.py +15 -14
- eodag/types/download_args.py +40 -0
- eodag/types/search_args.py +57 -7
- eodag/types/whoosh.py +79 -0
- eodag/utils/__init__.py +110 -91
- eodag/utils/constraints.py +37 -45
- eodag/utils/exceptions.py +39 -22
- eodag/utils/import_system.py +0 -4
- eodag/utils/logging.py +37 -80
- eodag/utils/notebook.py +4 -4
- eodag/utils/repr.py +113 -0
- eodag/utils/requests.py +128 -0
- eodag/utils/rest.py +100 -0
- eodag/utils/stac_reader.py +93 -21
- {eodag-2.12.1.dist-info → eodag-3.0.0.dist-info}/METADATA +88 -53
- eodag-3.0.0.dist-info/RECORD +109 -0
- {eodag-2.12.1.dist-info → eodag-3.0.0.dist-info}/WHEEL +1 -1
- {eodag-2.12.1.dist-info → eodag-3.0.0.dist-info}/entry_points.txt +7 -5
- eodag/plugins/apis/cds.py +0 -540
- eodag/rest/types/stac_queryables.py +0 -134
- eodag/rest/utils.py +0 -1133
- eodag-2.12.1.dist-info/RECORD +0 -94
- {eodag-2.12.1.dist-info → eodag-3.0.0.dist-info}/LICENSE +0 -0
- {eodag-2.12.1.dist-info → eodag-3.0.0.dist-info}/top_level.txt +0 -0
eodag/utils/stac_reader.py
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
83
|
-
|
|
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
|
|
92
|
+
while openers:
|
|
88
93
|
try:
|
|
89
|
-
res =
|
|
94
|
+
res = openers[0](url, as_json)
|
|
90
95
|
except STACOpenerError:
|
|
91
96
|
# Remove the opener that just failed
|
|
92
|
-
|
|
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
|
-
:
|
|
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(
|
|
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:
|
|
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
|
|
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:
|
|
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:
|
|
49
|
-
Requires-Dist:
|
|
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:
|
|
61
|
-
Requires-Dist:
|
|
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
|
|
87
|
+
Requires-Dist: sphinx-book-theme >=1.0.0 ; extra == 'docs'
|
|
84
88
|
Requires-Dist: sphinx-copybutton ; extra == 'docs'
|
|
85
|
-
Requires-Dist:
|
|
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
|
|
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/
|
|
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:
|
|
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:
|
|
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:
|
|
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,,
|
|
@@ -2,9 +2,8 @@
|
|
|
2
2
|
eodag = eodag.cli:eodag
|
|
3
3
|
|
|
4
4
|
[eodag.plugins.api]
|
|
5
|
-
|
|
6
|
-
|
|
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
|
-
|
|
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
|