eodag 3.1.0b2__py3-none-any.whl → 3.2.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/api/core.py +10 -11
- eodag/api/product/_assets.py +45 -9
- eodag/api/product/_product.py +14 -18
- eodag/api/product/metadata_mapping.py +23 -5
- eodag/config.py +11 -11
- eodag/plugins/apis/ecmwf.py +2 -6
- eodag/plugins/apis/usgs.py +1 -1
- eodag/plugins/authentication/openid_connect.py +6 -0
- eodag/plugins/download/aws.py +90 -11
- eodag/plugins/search/base.py +3 -2
- eodag/plugins/search/build_search_result.py +229 -280
- eodag/plugins/search/data_request_search.py +3 -3
- eodag/plugins/search/qssearch.py +32 -103
- eodag/plugins/search/static_stac_search.py +1 -1
- eodag/resources/ext_product_types.json +1 -1
- eodag/resources/product_types.yml +564 -114
- eodag/resources/providers.yml +947 -1164
- eodag/resources/user_conf_template.yml +1 -11
- eodag/rest/stac.py +1 -0
- eodag/rest/types/queryables.py +28 -16
- eodag/types/__init__.py +73 -11
- eodag/utils/__init__.py +1 -1
- eodag/utils/s3.py +31 -8
- {eodag-3.1.0b2.dist-info → eodag-3.2.0.dist-info}/METADATA +10 -9
- {eodag-3.1.0b2.dist-info → eodag-3.2.0.dist-info}/RECORD +29 -29
- {eodag-3.1.0b2.dist-info → eodag-3.2.0.dist-info}/WHEEL +1 -1
- {eodag-3.1.0b2.dist-info → eodag-3.2.0.dist-info}/entry_points.txt +0 -0
- {eodag-3.1.0b2.dist-info → eodag-3.2.0.dist-info/licenses}/LICENSE +0 -0
- {eodag-3.1.0b2.dist-info → eodag-3.2.0.dist-info}/top_level.txt +0 -0
|
@@ -157,7 +157,7 @@ geodes:
|
|
|
157
157
|
download:
|
|
158
158
|
extract:
|
|
159
159
|
output_dir:
|
|
160
|
-
|
|
160
|
+
geodes_s3:
|
|
161
161
|
priority: # Lower value means lower priority (Default: 0)
|
|
162
162
|
search: # Search parameters configuration
|
|
163
163
|
auth:
|
|
@@ -184,16 +184,6 @@ meteoblue:
|
|
|
184
184
|
apikey:
|
|
185
185
|
download:
|
|
186
186
|
output_dir:
|
|
187
|
-
onda:
|
|
188
|
-
priority: # Lower value means lower priority (Default: 0)
|
|
189
|
-
search: # Search parameters configuration
|
|
190
|
-
download:
|
|
191
|
-
extract:
|
|
192
|
-
output_dir:
|
|
193
|
-
auth:
|
|
194
|
-
credentials:
|
|
195
|
-
username:
|
|
196
|
-
password:
|
|
197
187
|
peps:
|
|
198
188
|
priority: # Lower value means lower priority (Default: 1)
|
|
199
189
|
search: # Search parameters configuration
|
eodag/rest/stac.py
CHANGED
eodag/rest/types/queryables.py
CHANGED
|
@@ -25,8 +25,9 @@ from pydantic import (
|
|
|
25
25
|
Field,
|
|
26
26
|
SerializationInfo,
|
|
27
27
|
SerializerFunctionWrapHandler,
|
|
28
|
-
|
|
28
|
+
field_validator,
|
|
29
29
|
model_serializer,
|
|
30
|
+
model_validator,
|
|
30
31
|
)
|
|
31
32
|
|
|
32
33
|
from eodag.rest.types.eodag_search import EODAGSearch
|
|
@@ -35,6 +36,7 @@ from eodag.types import python_field_definition_to_json
|
|
|
35
36
|
|
|
36
37
|
if TYPE_CHECKING:
|
|
37
38
|
from pydantic.fields import FieldInfo
|
|
39
|
+
from typing_extensions import Self
|
|
38
40
|
|
|
39
41
|
|
|
40
42
|
class QueryablesGetParams(BaseModel):
|
|
@@ -42,6 +44,8 @@ class QueryablesGetParams(BaseModel):
|
|
|
42
44
|
|
|
43
45
|
collection: Optional[str] = Field(default=None, serialization_alias="productType")
|
|
44
46
|
datetime: Optional[str] = Field(default=None)
|
|
47
|
+
start_datetime: Optional[str] = Field(default=None)
|
|
48
|
+
end_datetime: Optional[str] = Field(default=None)
|
|
45
49
|
|
|
46
50
|
model_config = ConfigDict(extra="allow", frozen=True)
|
|
47
51
|
|
|
@@ -50,21 +54,29 @@ class QueryablesGetParams(BaseModel):
|
|
|
50
54
|
dumped: dict[str, Any] = handler(self)
|
|
51
55
|
return {EODAGSearch.to_eodag(k): v for k, v in dumped.items()}
|
|
52
56
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
return
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
57
|
+
@field_validator("datetime", "start_datetime", "end_datetime", mode="before")
|
|
58
|
+
def validate_datetime(cls, value: Any) -> Optional[str]:
|
|
59
|
+
"""datetime, start_datetime and end_datetime must be a string"""
|
|
60
|
+
if isinstance(value, list):
|
|
61
|
+
return value[0]
|
|
62
|
+
|
|
63
|
+
return value
|
|
64
|
+
|
|
65
|
+
@model_validator(mode="after")
|
|
66
|
+
def compute_datetimes(self: Self) -> Self:
|
|
67
|
+
"""Start datetime must be a string"""
|
|
68
|
+
if not self.datetime:
|
|
69
|
+
return self
|
|
70
|
+
|
|
71
|
+
start, end = str_to_interval(self.datetime)
|
|
72
|
+
|
|
73
|
+
if not self.start_datetime and start:
|
|
74
|
+
self.start_datetime = start.strftime("%Y-%m-%dT%H:%M:%SZ")
|
|
75
|
+
|
|
76
|
+
if not self.end_datetime and end:
|
|
77
|
+
self.end_datetime = end.strftime("%Y-%m-%dT%H:%M:%SZ")
|
|
78
|
+
|
|
79
|
+
return self
|
|
68
80
|
|
|
69
81
|
|
|
70
82
|
class StacQueryableProperty(BaseModel):
|
eodag/types/__init__.py
CHANGED
|
@@ -24,6 +24,7 @@ from typing import (
|
|
|
24
24
|
Any,
|
|
25
25
|
Literal,
|
|
26
26
|
Optional,
|
|
27
|
+
Type,
|
|
27
28
|
TypedDict,
|
|
28
29
|
Union,
|
|
29
30
|
get_args,
|
|
@@ -31,8 +32,11 @@ from typing import (
|
|
|
31
32
|
)
|
|
32
33
|
|
|
33
34
|
from annotated_types import Gt, Lt
|
|
34
|
-
from pydantic import BaseModel, Field, create_model
|
|
35
|
+
from pydantic import BaseModel, ConfigDict, Field, create_model
|
|
36
|
+
from pydantic.annotated_handlers import GetJsonSchemaHandler
|
|
35
37
|
from pydantic.fields import FieldInfo
|
|
38
|
+
from pydantic.json_schema import JsonSchemaValue
|
|
39
|
+
from pydantic_core import CoreSchema
|
|
36
40
|
|
|
37
41
|
from eodag.utils import copy_deepcopy
|
|
38
42
|
from eodag.utils.exceptions import ValidationError
|
|
@@ -199,10 +203,18 @@ def json_field_definition_to_python(
|
|
|
199
203
|
if "$ref" in json_field_definition:
|
|
200
204
|
field_type_kwargs["json_schema_extra"] = {"$ref": json_field_definition["$ref"]}
|
|
201
205
|
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
+
metadata = [
|
|
207
|
+
python_type,
|
|
208
|
+
Field(
|
|
209
|
+
default_value if not required or default_value is not None else ...,
|
|
210
|
+
**field_type_kwargs,
|
|
211
|
+
),
|
|
212
|
+
]
|
|
213
|
+
|
|
214
|
+
if required:
|
|
215
|
+
metadata.append("json_schema_required")
|
|
216
|
+
|
|
217
|
+
return Annotated[tuple(metadata)]
|
|
206
218
|
|
|
207
219
|
|
|
208
220
|
def python_field_definition_to_json(
|
|
@@ -332,26 +344,76 @@ def model_fields_to_annotated(
|
|
|
332
344
|
return annotated_model_fields
|
|
333
345
|
|
|
334
346
|
|
|
347
|
+
class BaseModelCustomJsonSchema(BaseModel):
|
|
348
|
+
"""Base class for generated models with custom json schema."""
|
|
349
|
+
|
|
350
|
+
@classmethod
|
|
351
|
+
def __get_pydantic_json_schema__(
|
|
352
|
+
cls: Type[BaseModel], core_schema: CoreSchema, handler: GetJsonSchemaHandler
|
|
353
|
+
) -> JsonSchemaValue:
|
|
354
|
+
"""
|
|
355
|
+
Custom get json schema method to handle required fields with default values.
|
|
356
|
+
This is not supported by Pydantic by default.
|
|
357
|
+
It requires the field to be marked with the key "json_schema_required" in the metadata dict.
|
|
358
|
+
Example: Annotated[str, "json_schema_required"]
|
|
359
|
+
"""
|
|
360
|
+
json_schema = handler.resolve_ref_schema(handler(core_schema))
|
|
361
|
+
|
|
362
|
+
json_schema["required"] = [
|
|
363
|
+
key
|
|
364
|
+
for key, field_info in cls.model_fields.items()
|
|
365
|
+
if "json_schema_required" in field_info.metadata
|
|
366
|
+
]
|
|
367
|
+
|
|
368
|
+
return json_schema
|
|
369
|
+
|
|
370
|
+
model_config = ConfigDict(arbitrary_types_allowed=True)
|
|
371
|
+
|
|
372
|
+
|
|
335
373
|
def annotated_dict_to_model(
|
|
336
374
|
model_name: str, annotated_fields: dict[str, Annotated[Any, FieldInfo]]
|
|
337
375
|
) -> BaseModel:
|
|
338
376
|
"""Convert a dictionary of Annotated values to a Pydantic BaseModel.
|
|
339
377
|
|
|
378
|
+
>>> from pydantic import Field
|
|
379
|
+
>>> annotated_fields = {
|
|
380
|
+
... "field1": Annotated[str, Field(description="A string field"), "json_schema_required"],
|
|
381
|
+
... "field2": Annotated[int, Field(default=42, description="An integer field")],
|
|
382
|
+
... }
|
|
383
|
+
>>> model = annotated_dict_to_model("TestModel", annotated_fields)
|
|
384
|
+
>>> json_schema = model.model_json_schema()
|
|
385
|
+
>>> json_schema["required"]
|
|
386
|
+
['field1']
|
|
387
|
+
>>> json_schema["properties"]["field1"]
|
|
388
|
+
{'description': 'A string field', 'title': 'Field1', 'type': 'string'}
|
|
389
|
+
>>> json_schema["properties"]["field2"]
|
|
390
|
+
{'default': 42, 'description': 'An integer field', 'title': 'Field2', 'type': 'integer'}
|
|
391
|
+
>>> json_schema["title"]
|
|
392
|
+
'TestModel'
|
|
393
|
+
>>> json_schema["type"]
|
|
394
|
+
'object'
|
|
395
|
+
|
|
340
396
|
:param model_name: name of the model to be created
|
|
341
397
|
:param annotated_fields: dict containing the parameters and annotated values that should become
|
|
342
398
|
the properties of the model
|
|
343
399
|
:returns: pydantic model
|
|
344
400
|
"""
|
|
345
|
-
fields = {
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
401
|
+
fields = {}
|
|
402
|
+
for name, field in annotated_fields.items():
|
|
403
|
+
base_type, field_info, *metadata = get_args(field)
|
|
404
|
+
fields[name] = (
|
|
405
|
+
Annotated[tuple([base_type] + metadata)] if metadata else base_type,
|
|
406
|
+
field_info,
|
|
407
|
+
)
|
|
408
|
+
|
|
409
|
+
custom_model = create_model(
|
|
350
410
|
model_name,
|
|
411
|
+
__base__=BaseModelCustomJsonSchema,
|
|
351
412
|
**fields, # type: ignore
|
|
352
|
-
__config__={"arbitrary_types_allowed": True},
|
|
353
413
|
)
|
|
354
414
|
|
|
415
|
+
return custom_model
|
|
416
|
+
|
|
355
417
|
|
|
356
418
|
class ProviderSortables(TypedDict):
|
|
357
419
|
"""A class representing sortable parameter(s) of a provider and the allowed
|
eodag/utils/__init__.py
CHANGED
|
@@ -1048,7 +1048,7 @@ def format_string(key: str, str_to_format: Any, **format_variables: Any) -> Any:
|
|
|
1048
1048
|
# defaultdict usage will return "" for missing keys in format_args
|
|
1049
1049
|
try:
|
|
1050
1050
|
result = str_to_format.format_map(defaultdict(str, **format_variables))
|
|
1051
|
-
except TypeError as e:
|
|
1051
|
+
except (ValueError, TypeError) as e:
|
|
1052
1052
|
raise MisconfiguredError(
|
|
1053
1053
|
f"Unable to format str={str_to_format} using {str(format_variables)}: {str(e)}"
|
|
1054
1054
|
)
|
eodag/utils/s3.py
CHANGED
|
@@ -36,7 +36,7 @@ from eodag.utils.exceptions import (
|
|
|
36
36
|
)
|
|
37
37
|
|
|
38
38
|
if TYPE_CHECKING:
|
|
39
|
-
from zipfile import ZipInfo
|
|
39
|
+
from zipfile import ZipFile, ZipInfo
|
|
40
40
|
|
|
41
41
|
from mypy_boto3_s3.client import S3Client
|
|
42
42
|
|
|
@@ -78,11 +78,11 @@ def parse_int(bytes: bytes) -> int:
|
|
|
78
78
|
return val
|
|
79
79
|
|
|
80
80
|
|
|
81
|
-
def
|
|
82
|
-
bucket_name: str, key_name: str, client_s3: S3Client
|
|
83
|
-
) ->
|
|
81
|
+
def open_s3_zipped_object(
|
|
82
|
+
bucket_name: str, key_name: str, client_s3: S3Client, partial: bool = True
|
|
83
|
+
) -> ZipFile:
|
|
84
84
|
"""
|
|
85
|
-
|
|
85
|
+
Open s3 zipped object, without downloading it.
|
|
86
86
|
|
|
87
87
|
See https://stackoverflow.com/questions/41789176/how-to-count-files-inside-zip-in-aws-s3-without-downloading-it;
|
|
88
88
|
Based on https://stackoverflow.com/questions/51351000/read-zip-files-from-s3-without-downloading-the-entire-file
|
|
@@ -90,6 +90,7 @@ def list_files_in_s3_zipped_object(
|
|
|
90
90
|
:param bucket_name: Bucket name of the object to fetch
|
|
91
91
|
:param key_name: Key name of the object to fetch
|
|
92
92
|
:param client_s3: s3 client used to fetch the object
|
|
93
|
+
:param partial: fetch partial data if only content info is needed
|
|
93
94
|
:returns: List of files in zip
|
|
94
95
|
"""
|
|
95
96
|
response = client_s3.head_object(Bucket=bucket_name, Key=key_name)
|
|
@@ -104,11 +105,33 @@ def list_files_in_s3_zipped_object(
|
|
|
104
105
|
|
|
105
106
|
# fetch central directory, append EOCD, and open as zipfile
|
|
106
107
|
cd = fetch(bucket_name, key_name, cd_start, cd_size, client_s3)
|
|
107
|
-
zip = zipfile.ZipFile(io.BytesIO(cd + eocd))
|
|
108
108
|
|
|
109
|
-
|
|
109
|
+
zip_data = (
|
|
110
|
+
cd + eocd if partial else fetch(bucket_name, key_name, 0, size, client_s3)
|
|
111
|
+
)
|
|
112
|
+
|
|
113
|
+
zip = zipfile.ZipFile(io.BytesIO(zip_data))
|
|
114
|
+
|
|
115
|
+
return zip
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
def list_files_in_s3_zipped_object(
|
|
119
|
+
bucket_name: str, key_name: str, client_s3: S3Client
|
|
120
|
+
) -> List[ZipInfo]:
|
|
121
|
+
"""
|
|
122
|
+
List files in s3 zipped object, without downloading it.
|
|
123
|
+
|
|
124
|
+
See https://stackoverflow.com/questions/41789176/how-to-count-files-inside-zip-in-aws-s3-without-downloading-it;
|
|
125
|
+
Based on https://stackoverflow.com/questions/51351000/read-zip-files-from-s3-without-downloading-the-entire-file
|
|
110
126
|
|
|
111
|
-
|
|
127
|
+
:param bucket_name: Bucket name of the object to fetch
|
|
128
|
+
:param key_name: Key name of the object to fetch
|
|
129
|
+
:param client_s3: s3 client used to fetch the object
|
|
130
|
+
:returns: List of files in zip
|
|
131
|
+
"""
|
|
132
|
+
with open_s3_zipped_object(bucket_name, key_name, client_s3) as zip_file:
|
|
133
|
+
logger.debug("Found %s files in %s" % (len(zip_file.filelist), key_name))
|
|
134
|
+
return zip_file.filelist
|
|
112
135
|
|
|
113
136
|
|
|
114
137
|
def update_assets_from_s3(
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: eodag
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.2.0
|
|
4
4
|
Summary: Earth Observation Data Access Gateway
|
|
5
5
|
Home-page: https://github.com/CS-SI/eodag
|
|
6
6
|
Author: CS GROUP - France
|
|
@@ -36,10 +36,9 @@ Requires-Dist: boto3
|
|
|
36
36
|
Requires-Dist: botocore
|
|
37
37
|
Requires-Dist: click
|
|
38
38
|
Requires-Dist: geojson
|
|
39
|
-
Requires-Dist: jsonpath-ng
|
|
39
|
+
Requires-Dist: jsonpath-ng
|
|
40
40
|
Requires-Dist: lxml
|
|
41
|
-
Requires-Dist: orjson
|
|
42
|
-
Requires-Dist: orjson; python_version < "3.12" or platform_system != "Windows"
|
|
41
|
+
Requires-Dist: orjson
|
|
43
42
|
Requires-Dist: pydantic!=2.10.0,>=2.1.0
|
|
44
43
|
Requires-Dist: pydantic_core
|
|
45
44
|
Requires-Dist: PyJWT[crypto]>=2.5.0
|
|
@@ -77,7 +76,7 @@ Provides-Extra: notebook
|
|
|
77
76
|
Requires-Dist: tqdm[notebook]; extra == "notebook"
|
|
78
77
|
Provides-Extra: tutorials
|
|
79
78
|
Requires-Dist: eodag[ecmwf,notebook]; extra == "tutorials"
|
|
80
|
-
Requires-Dist: eodag-cube>=0.6.
|
|
79
|
+
Requires-Dist: eodag-cube>=0.6.0b2; extra == "tutorials"
|
|
81
80
|
Requires-Dist: jupyter; extra == "tutorials"
|
|
82
81
|
Requires-Dist: ipyleaflet>=0.10.0; extra == "tutorials"
|
|
83
82
|
Requires-Dist: ipywidgets; extra == "tutorials"
|
|
@@ -92,7 +91,7 @@ Requires-Dist: eodag[all-providers,csw,server,stubs]; extra == "dev"
|
|
|
92
91
|
Requires-Dist: pytest; extra == "dev"
|
|
93
92
|
Requires-Dist: pytest-cov; extra == "dev"
|
|
94
93
|
Requires-Dist: py>=1.8.2; extra == "dev"
|
|
95
|
-
Requires-Dist: pytest-html
|
|
94
|
+
Requires-Dist: pytest-html!=3.2.0; extra == "dev"
|
|
96
95
|
Requires-Dist: pytest-xdist; extra == "dev"
|
|
97
96
|
Requires-Dist: pytest-socket; extra == "dev"
|
|
98
97
|
Requires-Dist: pytest-instafail; extra == "dev"
|
|
@@ -104,7 +103,7 @@ Requires-Dist: twine; extra == "dev"
|
|
|
104
103
|
Requires-Dist: wheel; extra == "dev"
|
|
105
104
|
Requires-Dist: flake8; extra == "dev"
|
|
106
105
|
Requires-Dist: pre-commit; extra == "dev"
|
|
107
|
-
Requires-Dist: responses
|
|
106
|
+
Requires-Dist: responses!=0.24.0; extra == "dev"
|
|
108
107
|
Requires-Dist: fastapi[all]; extra == "dev"
|
|
109
108
|
Requires-Dist: stdlib-list; extra == "dev"
|
|
110
109
|
Requires-Dist: mypy; extra == "dev"
|
|
@@ -114,6 +113,7 @@ Requires-Dist: types-lxml; extra == "stubs"
|
|
|
114
113
|
Requires-Dist: types-cachetools; extra == "stubs"
|
|
115
114
|
Requires-Dist: types-requests; extra == "stubs"
|
|
116
115
|
Requires-Dist: types-python-dateutil; extra == "stubs"
|
|
116
|
+
Requires-Dist: types-PyYAML; extra == "stubs"
|
|
117
117
|
Requires-Dist: types-setuptools; extra == "stubs"
|
|
118
118
|
Requires-Dist: types-tqdm; extra == "stubs"
|
|
119
119
|
Requires-Dist: types-urllib3; extra == "stubs"
|
|
@@ -126,6 +126,7 @@ Requires-Dist: sphinx-tabs; extra == "docs"
|
|
|
126
126
|
Requires-Dist: nbsphinx; extra == "docs"
|
|
127
127
|
Requires-Dist: sphinx_autodoc_typehints; extra == "docs"
|
|
128
128
|
Requires-Dist: sphinxemoji; extra == "docs"
|
|
129
|
+
Dynamic: license-file
|
|
129
130
|
|
|
130
131
|
.. image:: https://eodag.readthedocs.io/en/latest/_static/eodag_bycs.png
|
|
131
132
|
:target: https://github.com/CS-SI/eodag
|
|
@@ -316,7 +317,7 @@ An eodag instance can be exposed through a STAC compliant REST api from the comm
|
|
|
316
317
|
|
|
317
318
|
.. code-block:: bash
|
|
318
319
|
|
|
319
|
-
docker run -p 5000:5000 --rm csspace/eodag-server:3.
|
|
320
|
+
docker run -p 5000:5000 --rm csspace/eodag-server:3.2.0
|
|
320
321
|
|
|
321
322
|
You can also browse over your STAC API server using `STAC Browser <https://github.com/radiantearth/stac-browser>`_.
|
|
322
323
|
Simply run:
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
eodag/__init__.py,sha256=qADIO6H3KR0CMs0qePdJROjSzcGnHaYpv-RFIk18WGQ,1608
|
|
2
2
|
eodag/cli.py,sha256=63QvLzyZEf6dsTB1jK_80lOTtp6fbjoSJROqKIL-mR4,29959
|
|
3
|
-
eodag/config.py,sha256=
|
|
3
|
+
eodag/config.py,sha256=WUL9yLwVXyXArnZ8RYI8Dnf7Ujnd04dl3M0dc9UTwWE,45837
|
|
4
4
|
eodag/crunch.py,sha256=fLVAPGVPw31N_DrnFk4gkCpQZLMY8oBhK6NUSYmdr24,1099
|
|
5
5
|
eodag/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
6
|
eodag/api/__init__.py,sha256=ytr30NUVmEtmJTsp3QCwkCIhS1nF6UlFCv0vmySHN7g,735
|
|
7
|
-
eodag/api/core.py,sha256=
|
|
7
|
+
eodag/api/core.py,sha256=tGMdrgJnm_7D5b2VoMCt-QeMOnOOfnhYiOwufDxpF6k,109426
|
|
8
8
|
eodag/api/search_result.py,sha256=ri3-5Jxr1Ik8V0uQtuXvnd3L3tSGS_niqpmHeaI2Obw,8176
|
|
9
9
|
eodag/api/product/__init__.py,sha256=klSKudmnHHeXvcwIX6Y30UTiP39tMfTwLNexSnAZnx0,1154
|
|
10
|
-
eodag/api/product/_assets.py,sha256=
|
|
11
|
-
eodag/api/product/_product.py,sha256=
|
|
12
|
-
eodag/api/product/metadata_mapping.py,sha256=
|
|
10
|
+
eodag/api/product/_assets.py,sha256=9bWIe_SYvsQO-q_lQFd7SxhUIWv7feze2-wnXOe8hhs,7570
|
|
11
|
+
eodag/api/product/_product.py,sha256=1Jz-oPg65Njc7DOWw4ADT9QmNXReiD1LeXFDosnXsOA,23458
|
|
12
|
+
eodag/api/product/metadata_mapping.py,sha256=URGvZX2coTTm5TNWoDoV1pDsSV17Xtg1ZZ2xpKUrmlw,72234
|
|
13
13
|
eodag/api/product/drivers/__init__.py,sha256=Sy9bGmDhWCAxvxRUf3QGijjQoQvzS1LSUMN34Usq6fM,3357
|
|
14
14
|
eodag/api/product/drivers/base.py,sha256=iPAE5Jx3isxmHHFPP-jysdUylYbsbIq6UejU3qsMROE,4111
|
|
15
15
|
eodag/api/product/drivers/generic.py,sha256=RER088E5_mqyGw1Pa4Kxea5YMFakAHFNcZEQINRiDwM,2069
|
|
@@ -20,8 +20,8 @@ eodag/plugins/base.py,sha256=bBp4k8QYJFEE6CRctrVwjws6suBwQdCLrLmvoGAmG3A,2670
|
|
|
20
20
|
eodag/plugins/manager.py,sha256=EYz5zliB3e3pxTvP4QIwtMtXfwPhxXJxjdYIsJsvFx0,20373
|
|
21
21
|
eodag/plugins/apis/__init__.py,sha256=PyY4f7P2iu3MkLPnw5eOrVew2fuavbBL3Asci3Ulwoo,744
|
|
22
22
|
eodag/plugins/apis/base.py,sha256=oCEKVtIbOjzNgM3lzaCCtO-DhU2PvGfKaATG6OxR-V8,2818
|
|
23
|
-
eodag/plugins/apis/ecmwf.py,sha256=
|
|
24
|
-
eodag/plugins/apis/usgs.py,sha256=
|
|
23
|
+
eodag/plugins/apis/ecmwf.py,sha256=CnFeuxx2GghuSQF9oGhCWC2ixL3q9aO_lpMRZehLueI,11455
|
|
24
|
+
eodag/plugins/apis/usgs.py,sha256=42vrVZ_fKi1-Z8nUt5-9wapUE7v75_hzgZHbKD23Auo,19625
|
|
25
25
|
eodag/plugins/authentication/__init__.py,sha256=_LVw42Bb1IhGAZH5xHRaS4b1iFoF9e27KDZOyoSoJHY,1039
|
|
26
26
|
eodag/plugins/authentication/aws_auth.py,sha256=6qeULjxljV9WTPqZjJJ6E0DWeiaGmzGR3rM0at75CFQ,3199
|
|
27
27
|
eodag/plugins/authentication/base.py,sha256=7vwX7O9xxvcKA9cMZ85F2eOkcdb7HyNbanUC5J0f9SA,2643
|
|
@@ -29,7 +29,7 @@ eodag/plugins/authentication/generic.py,sha256=LlOVPjvwRpbMDl62Brd7Ao34WmktKWoo0
|
|
|
29
29
|
eodag/plugins/authentication/header.py,sha256=U_KnUqgZTLHXM5OKdGbH6jRqoQ0uIfOoxO6krUeAAcQ,4284
|
|
30
30
|
eodag/plugins/authentication/keycloak.py,sha256=f0AnWkvtsmLmWqgGfT3XB6AqbfCPU_ZHkDu07Zwf3E4,7178
|
|
31
31
|
eodag/plugins/authentication/oauth.py,sha256=fCMx7OxS3JNO9lLZhQNnL9lsBB9nFwZJLEYXI49QRtw,1952
|
|
32
|
-
eodag/plugins/authentication/openid_connect.py,sha256=
|
|
32
|
+
eodag/plugins/authentication/openid_connect.py,sha256=LbpQzekxin_bLrKfk7bzU3LGxlfaABSm1fwx7S1O58M,24913
|
|
33
33
|
eodag/plugins/authentication/qsauth.py,sha256=bkepO_sFRIhYm3Dzecx3VJP0Ap37vUuJSRmEY8HrV1U,3947
|
|
34
34
|
eodag/plugins/authentication/sas_auth.py,sha256=gZp5UDeAi6iEi-IXv_RjrmAVpQCD5s9A0b3V7HV6KnU,4773
|
|
35
35
|
eodag/plugins/authentication/token.py,sha256=5mipX9SuNSNJtLntLRLm8KS7kqwylurvzkQq57fxWg0,12879
|
|
@@ -42,29 +42,29 @@ eodag/plugins/crunch/filter_latest_tpl_name.py,sha256=pP4EDP73mQg1zvkVm1Uo4nGAgw
|
|
|
42
42
|
eodag/plugins/crunch/filter_overlap.py,sha256=mkm5_ljgK_7QOOp-KgJjDjbVfss4gwRjIYUTMyKrw5o,7272
|
|
43
43
|
eodag/plugins/crunch/filter_property.py,sha256=5V0_S11iAnvZqRzYN0Jox96zZwIxPGC13IWQwNYyYrU,3193
|
|
44
44
|
eodag/plugins/download/__init__.py,sha256=zqszaeNgYP0YHlZDkLMf6odcwNw0KrAahGpcA-l0kAw,740
|
|
45
|
-
eodag/plugins/download/aws.py,sha256=
|
|
45
|
+
eodag/plugins/download/aws.py,sha256=SwyiF1j2MBvUJi-LwVT8NmQfxZYRfi7kk5Uxd8vFVW8,58623
|
|
46
46
|
eodag/plugins/download/base.py,sha256=ulkGfiY2qMtzyEPdUlP8CZ6w5Bqi2hckuX-sGqpkVeQ,29994
|
|
47
47
|
eodag/plugins/download/creodias_s3.py,sha256=RoEhYHtsPDbfrZhBllYoek0r7YzP8Upf5CPgc-PnlZM,4151
|
|
48
48
|
eodag/plugins/download/http.py,sha256=FhvkCVxj_ENV31Nm2ulT3DRlPQYBM6eQtf2of9M0T2o,56707
|
|
49
49
|
eodag/plugins/download/s3rest.py,sha256=BYkKglGhTVyR0A-8ls5gLhWOPwc_DgB4aydj79wpqoM,14825
|
|
50
50
|
eodag/plugins/search/__init__.py,sha256=bBrl3TffoU1wVpaeXmTEIailoh9W6fla4IP-8SWqA9U,2019
|
|
51
|
-
eodag/plugins/search/base.py,sha256=
|
|
52
|
-
eodag/plugins/search/build_search_result.py,sha256=
|
|
51
|
+
eodag/plugins/search/base.py,sha256=b9zAPLQITBSOJ9n5zBxtiHlPkQwACjjJkD894oYZ7L8,18555
|
|
52
|
+
eodag/plugins/search/build_search_result.py,sha256=FbVJvviyhSU-cuY7ctoJbXR0QKMbUFfTVpt7WsHx4mE,45426
|
|
53
53
|
eodag/plugins/search/cop_marine.py,sha256=pRWNY9MXY-XzlpQjqOI8ImOiNUehv9pwNl6oR9r171w,19720
|
|
54
54
|
eodag/plugins/search/creodias_s3.py,sha256=rBZf3Uza7z3VuBdoUJQ9kuufGgACKVsEvK3phUo7C7M,3379
|
|
55
55
|
eodag/plugins/search/csw.py,sha256=de8CNjz4bjEny27V0RXC7V8LRz0Ik3yqQVjTAc_JlyA,12548
|
|
56
|
-
eodag/plugins/search/data_request_search.py,sha256=
|
|
57
|
-
eodag/plugins/search/qssearch.py,sha256=
|
|
56
|
+
eodag/plugins/search/data_request_search.py,sha256=yrKu3EXhn6Utyai3qv5NPnH-V4EuGIAIxw6XzJA4IIw,26715
|
|
57
|
+
eodag/plugins/search/qssearch.py,sha256=WZYKd0cySgbcF6RKObz-Sc55c3gXRZQCKJXM1sdtR84,91586
|
|
58
58
|
eodag/plugins/search/stac_list_assets.py,sha256=OOCMyjD8XD-m39k0SyKMrRi4K8Ii5mOQsA6zSAeQDGI,3435
|
|
59
|
-
eodag/plugins/search/static_stac_search.py,sha256=
|
|
60
|
-
eodag/resources/ext_product_types.json,sha256=
|
|
59
|
+
eodag/plugins/search/static_stac_search.py,sha256=rfcKBD-0-gDFg6jbR_XCsVH1t9Yf9HIlnFE_Drr0BAs,9259
|
|
60
|
+
eodag/resources/ext_product_types.json,sha256=bXZ3hzLAUgHac5yxff0fQD2hD0KYBu_VoiH5Jpu1EfA,3160813
|
|
61
61
|
eodag/resources/locations_conf_template.yml,sha256=_eBv-QKHYMIKhY0b0kp4Ee33RsayxN8LWH3kDXxfFSk,986
|
|
62
|
-
eodag/resources/product_types.yml,sha256=
|
|
63
|
-
eodag/resources/providers.yml,sha256=
|
|
62
|
+
eodag/resources/product_types.yml,sha256=vN-VNxKmRbMmRfdjMI3Tc3vs66yhU3Oep8_v2AXWH9Y,409966
|
|
63
|
+
eodag/resources/providers.yml,sha256=dHhapMifpnq_Rc85ykGxNWZekP6-tN0QpVehxyoDHrQ,221207
|
|
64
64
|
eodag/resources/stac.yml,sha256=XgQFkJEfu_f2ZiVM5L1flkew7wq55p_PJmDuVkOG3fs,10442
|
|
65
65
|
eodag/resources/stac_api.yml,sha256=2FdQL_qBTIUlu6KH836T4CXBKO9AvVxA_Ub3J1RP81A,68881
|
|
66
66
|
eodag/resources/stac_provider.yml,sha256=2yfdnuhJYV1f5el3aFkunoPqHAcD8oCDzvASbmldIvY,6703
|
|
67
|
-
eodag/resources/user_conf_template.yml,sha256=
|
|
67
|
+
eodag/resources/user_conf_template.yml,sha256=VitU2oHwcWNd7CoONfHabMBGwCPfYjwyU3cX63oJaIs,7765
|
|
68
68
|
eodag/resources/shp/ne_110m_admin_0_map_units.VERSION.txt,sha256=CHSo_jbv-4d4D0MYRbWn2FvmV_K9mYzo7qznF4YNO3g,7
|
|
69
69
|
eodag/resources/shp/ne_110m_admin_0_map_units.cpg,sha256=FG1nif_gM6UpfBrQRuamLuNTGbhrAhRE8FtuoqqKH0o,6
|
|
70
70
|
eodag/resources/shp/ne_110m_admin_0_map_units.dbf,sha256=uEEO22hZ_crWxMNhuQ_ix889c1Us1awYXAglxbf1K-s,393747
|
|
@@ -79,23 +79,23 @@ eodag/rest/core.py,sha256=P4o9Fjb-1xE1mhKMai1m0D2J90pSkw_hxE3XI4iGXBg,26550
|
|
|
79
79
|
eodag/rest/errors.py,sha256=R_zs9NILVnZ5qIpVgPtjprv_BalJxZEqr-LSZ0VVV8k,6192
|
|
80
80
|
eodag/rest/server.py,sha256=dqwP_mf856gPKxZCtdmH5WoYYji7edSab3Q_PzEQuUE,18308
|
|
81
81
|
eodag/rest/server.wsgi,sha256=ssM4JQi8tZpOYj03CTdM0weyUF1b3Lbh38pdD-vBfXs,152
|
|
82
|
-
eodag/rest/stac.py,sha256=
|
|
82
|
+
eodag/rest/stac.py,sha256=t0xuFmJYbPvzBvJBs_8PQLCOJc5fJ8mbV9AbJxbMgVk,35827
|
|
83
83
|
eodag/rest/templates/README,sha256=qFgCBE6XC4YiXkpPoSHkYbMTQr8Zg5Wc5eAKVcooXmw,57
|
|
84
84
|
eodag/rest/types/__init__.py,sha256=Bu0C3dzXHe8kocnz2PIHV0GjQWlAQas6ToIfwusNPQs,742
|
|
85
85
|
eodag/rest/types/collections_search.py,sha256=TRZI72a1W29a2e_mg9cQpFUcTTEG3_SSsfYrZZuXMLA,1527
|
|
86
86
|
eodag/rest/types/eodag_search.py,sha256=uN96xejktaQRojKZm2BGAgxvcWcwBkle4_I2z7jlDzw,14281
|
|
87
|
-
eodag/rest/types/queryables.py,sha256=
|
|
87
|
+
eodag/rest/types/queryables.py,sha256=e3IMM2eIYnUsjrErw54CNZjMLuFDTMxSbLRHDFFvVMw,6470
|
|
88
88
|
eodag/rest/types/stac_search.py,sha256=a_m7ATLPFttvUo9_hfsIAQKtNhBvX3U86lNWv_8_oIM,8765
|
|
89
89
|
eodag/rest/utils/__init__.py,sha256=VRTxZFU15mB4izpYd8e30_xR1iZlJRsoW1jeCZ7bk1o,6560
|
|
90
90
|
eodag/rest/utils/cql_evaluate.py,sha256=aMcdowtYbQpU1H9oX1IM2PMot6XTy49Q6H2k-YBEtco,4087
|
|
91
91
|
eodag/rest/utils/rfc3339.py,sha256=_kaK7_8sxXyCAAs99ltVoinUw02frtZckl72ytI6IjQ,2234
|
|
92
|
-
eodag/types/__init__.py,sha256=
|
|
92
|
+
eodag/types/__init__.py,sha256=FPDFHvjMnHBFNPx-B4TN-6qZhZ8VI5ICort6U6hCTYo,15612
|
|
93
93
|
eodag/types/bbox.py,sha256=jbfX58KOKIl0OoGZc93kAYhG_mEOjuBQGJtR2hl3-_Y,4354
|
|
94
94
|
eodag/types/download_args.py,sha256=urSl5KbLRN1XetMa2XzxYltny8CCFmHpjxU3j3BEGO8,1565
|
|
95
95
|
eodag/types/queryables.py,sha256=9Jllvoq0SgCKQUmnhVNqj55_xdMq2Yw49-1SWFh_nI8,9880
|
|
96
96
|
eodag/types/search_args.py,sha256=EtG8nXnApBnYrFo5FVvsvvEqRlqTxJ0lrmIem9Wtg8c,5649
|
|
97
97
|
eodag/types/whoosh.py,sha256=VXpWAZaXLR_RRnI9gh5iwkqn1n63krVGj2SX0rB2mQo,7225
|
|
98
|
-
eodag/utils/__init__.py,sha256=
|
|
98
|
+
eodag/utils/__init__.py,sha256=bdV7WMU9Zz9c6a7D63bTTNKuZmu7aEIyCm9QoS8rj9Y,52779
|
|
99
99
|
eodag/utils/exceptions.py,sha256=hYeq5GzMqW50o6mSUUlvOpsfU0eRjwhpqXTSE5MFv9Q,4452
|
|
100
100
|
eodag/utils/import_system.py,sha256=1vwcSRlsZwuaP8ssrpRBP5jldZ54eLv2ttNCdLf0TtA,3901
|
|
101
101
|
eodag/utils/logging.py,sha256=KoMsyS1f6O1hr_SMDOIxvt842mOJgmu_yLUk0-0EKFs,3507
|
|
@@ -103,11 +103,11 @@ eodag/utils/notebook.py,sha256=AUxtayvu26qYf3x3Eu3ujRl1XDgy24EfQaETbqmXSZw,2703
|
|
|
103
103
|
eodag/utils/repr.py,sha256=o6NhScogBPI69m83GsHh3hXONb9-byPfuWgJ1U39Kfw,5463
|
|
104
104
|
eodag/utils/requests.py,sha256=avNHKrOZ7Kp6lUA7u4kqupIth9MoirLzDsMrrmQDt4s,4560
|
|
105
105
|
eodag/utils/rest.py,sha256=a9tlG_Y9iQXLeyeLyecxFNbopGHV-8URecMSRs0UXu0,3348
|
|
106
|
-
eodag/utils/s3.py,sha256=
|
|
106
|
+
eodag/utils/s3.py,sha256=2mspYgEYGA1IDbruMMDdJ2DoxyX3riSlV7PDIu7carg,7989
|
|
107
107
|
eodag/utils/stac_reader.py,sha256=d1tv82_E5dEmK9Vlw3TQfU1ndXg_iUGatxMeWMnIWPo,9236
|
|
108
|
-
eodag-3.
|
|
109
|
-
eodag-3.
|
|
110
|
-
eodag-3.
|
|
111
|
-
eodag-3.
|
|
112
|
-
eodag-3.
|
|
113
|
-
eodag-3.
|
|
108
|
+
eodag-3.2.0.dist-info/licenses/LICENSE,sha256=4MAecetnRTQw5DlHtiikDSzKWO1xVLwzM5_DsPMYlnE,10172
|
|
109
|
+
eodag-3.2.0.dist-info/METADATA,sha256=IDnRE0sHZTq6_wB4UCIcScGoRZU1wBkvtjT3RR_oLKA,15476
|
|
110
|
+
eodag-3.2.0.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
|
|
111
|
+
eodag-3.2.0.dist-info/entry_points.txt,sha256=krdrBOQso6kAcSekV9ItEYAkE8syTC4Ev75bI781VgE,2561
|
|
112
|
+
eodag-3.2.0.dist-info/top_level.txt,sha256=025IMTmVe5eDjIPP4KEFQKespOPMQdne4U4jOy8nftM,6
|
|
113
|
+
eodag-3.2.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|