eodag 3.7.0__py3-none-any.whl → 3.8.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.
@@ -575,24 +575,6 @@ S2_MSI_L2A:
575
575
  title: SENTINEL2 Level-2A
576
576
  missionStartDate: "2018-03-26T00:00:00Z"
577
577
 
578
- S2_MSI_L2AP:
579
- abstract: |
580
- The Level-2A product provides Bottom Of Atmosphere (BOA) reflectance images derived from the associated Level-1C
581
- products. Each Level-2A product is composed of 100x100 km2 tiles in cartographic geometry (UTM/WGS84 projection).
582
- SAFE formatted product, see https://sentinel.esa.int/web/sentinel/user-guides/sentinel-2-msi/data-formats.
583
- Level-2AP are the pilot products of Level-2A product generated by ESA until March 2018. After March, they are
584
- operational products
585
- instrument: MSI
586
- platform: SENTINEL2
587
- platformSerialIdentifier: S2A,S2B
588
- processingLevel: L2
589
- keywords: MSI,SENTINEL,SENTINEL2,S2,S2A,S2B,L2,L2A,SAFE, pilot
590
- sensorType: OPTICAL
591
- license: other
592
- title: SENTINEL2 Level-2A pilot
593
- missionStartDate: "2017-05-23T00:00:00Z"
594
- missionEndDate: "2018-03-25T00:00:00Z"
595
-
596
578
  S2_MSI_L2A_JP2:
597
579
  abstract: |
598
580
  The Level-2A product provides Bottom Of Atmosphere (BOA) reflectance images derived from the associated Level-1C
@@ -5443,7 +5443,6 @@
5443
5443
  type: StacSearch
5444
5444
  api_endpoint: https://geodes-portal.cnes.fr/api/stac/search
5445
5445
  need_auth: false
5446
- ssl_verify: false
5447
5446
  asset_key_from_href: false
5448
5447
  discover_queryables:
5449
5448
  fetch_url: null
@@ -5545,7 +5544,6 @@
5545
5544
  productType: '{productType}'
5546
5545
  download: !plugin
5547
5546
  type: HTTPDownload
5548
- ssl_verify: false
5549
5547
  ignore_assets: true
5550
5548
  archive_depth: 2
5551
5549
  auth_error_code:
@@ -5570,7 +5568,6 @@
5570
5568
  api_endpoint: https://geodes-portal.cnes.fr/api/stac/search
5571
5569
  s3_endpoint: https://s3.datalake.cnes.fr
5572
5570
  need_auth: true
5573
- ssl_verify: false
5574
5571
  asset_key_from_href: false
5575
5572
  discover_queryables:
5576
5573
  fetch_url: null
@@ -5931,3 +5928,42 @@
5931
5928
  <<: *day_month_year
5932
5929
  GENERIC_PRODUCT_TYPE:
5933
5930
  dataset: '{productType}'
5931
+ ---
5932
+ !provider # MARK: fedeo_ceda
5933
+ name: fedeo_ceda
5934
+ priority: 0
5935
+ description: CEDA datasets through FedEO Catalog
5936
+ roles:
5937
+ - host
5938
+ url: https://fedeo.ceos.org/
5939
+ search: !plugin
5940
+ type: StacSearch
5941
+ api_endpoint: 'https://fedeo.ceos.org/search'
5942
+ ssl_verify: true
5943
+ timeout: 20
5944
+ discover_product_types:
5945
+ fetch_url: 'https://fedeo.ceos.org/series/eo:organisationName/CEDA/'
5946
+ result_type: json
5947
+ results_entry: '$.links[?(@.rel=="child")]'
5948
+ generic_product_type_id: '{$.href#replace_str(r".*/", "")}'
5949
+ generic_product_type_parsable_properties:
5950
+ productType: '{$.href#replace_str(r".*/", "")}'
5951
+ title: '$.title'
5952
+ single_collection_fetch_url: 'https://fedeo.ceos.org/series/eo:organisationName/CEDA/{productType}'
5953
+ single_product_type_parsable_metadata:
5954
+ ID: '{$.assets.enclosure.href#ceda_collection_name}'
5955
+ abstract: '$.description'
5956
+ instrument: '{$.summaries.instruments#csv_list}'
5957
+ keywords: '{$.keywords#csv_list}'
5958
+ license: '$.license'
5959
+ platform: '{$.summaries.platform#csv_list}'
5960
+ title: '$.title'
5961
+ metadata_mapping:
5962
+ title: '{$.properties.title#remove_extension}'
5963
+ geometry: '$.geometry'
5964
+ assets: '{$.assets#dict_filter($[?(@.href =~ ".*\/thredds\/fileServer\/.*")])}'
5965
+ products:
5966
+ GENERIC_PRODUCT_TYPE:
5967
+ productType: '{productType}'
5968
+ download: !plugin
5969
+ type: HTTPDownload
@@ -46,7 +46,7 @@ search:
46
46
  instrument: '{$.summaries.instruments#csv_list}'
47
47
  platform: '{$.summaries.constellation#csv_list}'
48
48
  platformSerialIdentifier: '{$.summaries.platform#csv_list}'
49
- processingLevel: '$.summaries."processing:level"'
49
+ processingLevel: '{$.summaries."processing:level"#csv_list}'
50
50
  keywords: '{$.keywords#csv_list}'
51
51
  license: '$.license'
52
52
  title: '$.title'
@@ -83,7 +83,7 @@ search:
83
83
  instrument:
84
84
  # to test
85
85
  - '{{"query":{{"instruments":{{"eq":"{instrument}"}}}}}}'
86
- - '$.properties.instruments'
86
+ - '{$.properties.instruments#csv_list}'
87
87
  # INSPIRE obligated OpenSearch Parameters for Collection Search (Table 4)
88
88
  title: '$.id'
89
89
  abstract: '$.properties.description'
eodag/rest/core.py CHANGED
@@ -68,7 +68,6 @@ from eodag.utils import (
68
68
  deepcopy,
69
69
  dict_items_recursive_apply,
70
70
  format_dict_items,
71
- obj_md5sum,
72
71
  )
73
72
  from eodag.utils.exceptions import (
74
73
  MisconfiguredError,
@@ -752,12 +751,6 @@ def eodag_api_init() -> None:
752
751
  clean = {k: v for k, v in update_fields.items() if v}
753
752
  p_f.update(clean)
754
753
 
755
- eodag_api.product_types_config_md5 = obj_md5sum(
756
- eodag_api.product_types_config.source
757
- )
758
-
759
- eodag_api.build_index()
760
-
761
754
  # pre-build search plugins
762
755
  for provider in eodag_api.available_providers():
763
756
  next(eodag_api._plugins_manager.get_search_plugins(provider=provider))
eodag/rest/stac.py CHANGED
@@ -790,10 +790,6 @@ class StacCollection(StacCommon):
790
790
  f"Product type keywords: {str(product_type_collection['keywords'])}",
791
791
  )
792
792
 
793
- # merge providers
794
- if "providers" in ext_stac_collection:
795
- ext_stac_collection["providers"] += product_type_collection["providers"]
796
-
797
793
  product_type_collection.update(ext_stac_collection)
798
794
 
799
795
  # parse f-strings
@@ -0,0 +1,229 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Copyright 2025, CS GROUP - France, https://www.csgroup.eu/
3
+ #
4
+ # This file is part of EODAG project
5
+ # https://www.github.com/CS-SI/EODAG
6
+ #
7
+ # Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ # See the License for the specific language governing permissions and
17
+ # limitations under the License.
18
+ import re
19
+ from typing import Callable
20
+
21
+ from eodag.utils.exceptions import ValidationError
22
+
23
+
24
+ def _tokenize(expr: str) -> list[str]:
25
+ """
26
+ Tokenizes a search expression into words, logical operators, and quoted phrases.
27
+
28
+ Handles:
29
+ - Logical operators: AND, OR, NOT
30
+ - Quoted phrases: "exact phrase"
31
+ - Wildcards: * and ? inside words
32
+ - Parentheses: (, )
33
+
34
+ :param expr: The search string (e.g., '("foo" OR bar) AND baz')
35
+ :return: A list of tokens (e.g., ['(', '"foo"', 'OR', 'BAR', ')', 'AND', 'BAZ'])
36
+
37
+ >>> _tokenize('("foo* bar?" OR baz) AND qux')
38
+ ['(', '"foo* bar?"', 'OR', 'BAZ', ')', 'AND', 'QUX']
39
+ """
40
+ # Match quoted phrases or unquoted tokens (including * and ?), or parentheses
41
+ pattern = r'"[^"]*"|AND|OR|NOT|\(|\)|[^\s()"]+'
42
+ raw_tokens = re.findall(pattern, expr)
43
+
44
+ tokens = []
45
+ for token in raw_tokens:
46
+ if token.startswith('"') and token.endswith('"'):
47
+ tokens.append(token)
48
+ elif token.upper() in {"AND", "OR", "NOT"}:
49
+ tokens.append(token.upper())
50
+ else:
51
+ tokens.append(token.upper())
52
+ return tokens
53
+
54
+
55
+ def _to_postfix(tokens: list[str]) -> list[str]:
56
+ """
57
+ Converts infix tokens to postfix (Reverse Polish Notation) using the Shunting Yard algorithm.
58
+
59
+ :param tokens: List of tokens in infix order.
60
+ :return: List of tokens in postfix order.
61
+
62
+ :raises ValidationError: If parentheses are unbalanced.
63
+
64
+ >>> _to_postfix(['FOO', 'AND', '(', 'BAR', 'OR', 'BAZ', ')'])
65
+ ['FOO', 'BAR', 'BAZ', 'OR', 'AND']
66
+
67
+ >>> _to_postfix(['(', 'FOO', 'AND', 'BAR'])
68
+ Traceback (most recent call last):
69
+ ...
70
+ eodag.utils.exceptions.ValidationError: Mismatched parentheses in expression
71
+ """
72
+ precedence = {"NOT": 3, "AND": 2, "OR": 1}
73
+ output: list[str] = []
74
+ stack: list[str] = []
75
+
76
+ for token in tokens:
77
+ if token in precedence:
78
+ while (
79
+ stack
80
+ and stack[-1] != "("
81
+ and precedence.get(stack[-1], 0) >= precedence[token]
82
+ ):
83
+ output.append(stack.pop())
84
+ stack.append(token)
85
+ elif token == "(":
86
+ stack.append(token)
87
+ elif token == ")":
88
+ while stack and stack[-1] != "(":
89
+ output.append(stack.pop())
90
+ if not stack:
91
+ raise ValidationError("Mismatched parentheses in expression")
92
+ # Remove '('
93
+ stack.pop()
94
+ else:
95
+ output.append(token)
96
+
97
+ while stack:
98
+ if stack[-1] == "(":
99
+ raise ValidationError("Mismatched parentheses in expression")
100
+ output.append(stack.pop())
101
+
102
+ return output
103
+
104
+
105
+ def _make_evaluator(postfix_expr: list[str]) -> Callable[[dict[str, str]], bool]:
106
+ """
107
+ Returns a function that evaluates a postfix expression on a dictionary of string fields.
108
+
109
+ Quoted phrases are matched exactly (case-insensitive).
110
+ Unquoted tokens are matched as case-insensitive full words (unless they contain wildcards).
111
+
112
+ :param postfix_expr: List of tokens in postfix order.
113
+ :return: A function that returns True if the dict matches.
114
+
115
+ >>> evaluator = _make_evaluator(['FOO', 'BAR', 'OR'])
116
+ >>> evaluator({'title': 'some foo text'})
117
+ True
118
+ >>> evaluator({'title': 'some bar text'})
119
+ True
120
+ >>> evaluator({'title': 'nothing'})
121
+ False
122
+ >>> evaluator2 = _make_evaluator(['"foo text"', 'NOT'])
123
+ >>> evaluator2({'title': 'some foo text'})
124
+ False
125
+ >>> evaluator2({'title': 'some bar'})
126
+ True
127
+ """
128
+
129
+ def evaluate(entry: dict[str, str]) -> bool:
130
+ stack: list[bool] = []
131
+ text = " ".join(str(v) for v in entry.values()).lower()
132
+
133
+ for token in postfix_expr:
134
+ if token == "AND":
135
+ b, a = stack.pop(), stack.pop()
136
+ stack.append(a and b)
137
+ elif token == "OR":
138
+ b, a = stack.pop(), stack.pop()
139
+ stack.append(a or b)
140
+ elif token == "NOT":
141
+ a = stack.pop()
142
+ stack.append(not a)
143
+ else:
144
+ if token.startswith('"') and token.endswith('"'):
145
+ phrase = token[1:-1].lower()
146
+ stack.append(phrase in text)
147
+ else:
148
+ # Wildcard tokens → regex with .* and .
149
+ if "*" in token or "?" in token:
150
+ wildcard_pattern = (
151
+ re.escape(token.lower())
152
+ .replace(r"\*", ".*")
153
+ .replace(r"\?", ".")
154
+ )
155
+ regex = re.compile(wildcard_pattern, flags=re.IGNORECASE)
156
+ else:
157
+ # Plain token → must match as a whole word
158
+ regex = re.compile(
159
+ rf"\b{re.escape(token.lower())}\b", flags=re.IGNORECASE
160
+ )
161
+
162
+ stack.append(bool(regex.search(text)))
163
+
164
+ return stack[0]
165
+
166
+ return evaluate
167
+
168
+
169
+ def compile_free_text_query(query: str) -> Callable[[dict[str, str]], bool]:
170
+ """
171
+ Compiles a free-text logical search query into a dictionary evaluator function.
172
+
173
+ The evaluator checks whether the concatenated string values of a dictionary
174
+ (case-insensitive) satisfy the given logical expression.
175
+
176
+ Processing steps:
177
+ 1. Tokenize the query into words, quoted phrases, wildcards, and operators.
178
+ 2. Convert infix tokens into postfix notation using the Shunting Yard algorithm.
179
+ 3. Build an evaluator function that applies the expression to dictionary fields.
180
+
181
+ Supported features:
182
+ - Logical operators: ``AND``, ``OR``, ``NOT``
183
+ - Grouping with parentheses: ``(``, ``)``
184
+ - Exact phrases in quotes: ``"foo bar"`` (case-insensitive substring match)
185
+ - Wildcards inside tokens:
186
+ - ``*`` → matches zero or more characters
187
+ - ``?`` → matches exactly one character
188
+ - Plain tokens without wildcards → matched as whole words (word boundary aware)
189
+ - Case-insensitive matching across all tokens and phrases
190
+
191
+ :param query: A logical search expression
192
+ (e.g., ``'("foo bar" OR baz*) AND NOT qux'``).
193
+ :return: A function that takes a ``dict[str, str]`` and returns ``True`` if it matches.
194
+
195
+ :Example:
196
+
197
+ >>> evaluator = compile_free_text_query('("FooAndBar" OR BAR) AND "FOOBAR collection"')
198
+ >>> evaluator({
199
+ ... "title": "titleFOOBAR - Lorem FOOBAR collection",
200
+ ... "abstract": "abstract FOOBAR - This is FOOBAR. FooAndBar"
201
+ ... })
202
+ True
203
+ >>> evaluator({
204
+ ... "title": "collection FOOBAR",
205
+ ... "abstract": "abstract FOOBAR - This is FOOBAR. FooAndBar"
206
+ ... })
207
+ False
208
+ >>> evaluator({
209
+ ... "title": "titleFOOBAR - Lorem FOOBAR ",
210
+ ... "abstract": "abstract FOOBAR - This is FOOBAR."
211
+ ... })
212
+ False
213
+ >>> evaluator({"title": "Only Bar here"})
214
+ False
215
+
216
+ Wildcard example:
217
+
218
+ >>> evaluator = compile_free_text_query('foo*')
219
+ >>> evaluator({"title": "this is foobar"})
220
+ True
221
+ >>> evaluator({"title": "something with fooo"})
222
+ True
223
+ >>> evaluator({"title": "bar only"})
224
+ False
225
+ """
226
+
227
+ tokens = _tokenize(query)
228
+ postfix = _to_postfix(tokens)
229
+ return _make_evaluator(postfix)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: eodag
3
- Version: 3.7.0
3
+ Version: 3.8.1
4
4
  Summary: Earth Observation Data Access Gateway
5
5
  Home-page: https://github.com/CS-SI/eodag
6
6
  Author: CS GROUP - France
@@ -54,7 +54,6 @@ Requires-Dist: stream-zip
54
54
  Requires-Dist: tqdm
55
55
  Requires-Dist: typing_extensions>=4.8.0
56
56
  Requires-Dist: urllib3
57
- Requires-Dist: Whoosh
58
57
  Provides-Extra: all
59
58
  Requires-Dist: eodag[all-providers,csw,server,tutorials]; extra == "all"
60
59
  Provides-Extra: all-providers
@@ -317,7 +316,7 @@ An eodag instance can be exposed through a STAC compliant REST api from the comm
317
316
 
318
317
  .. code-block:: bash
319
318
 
320
- docker run -p 5000:5000 --rm csspace/eodag-server:3.7.0
319
+ docker run -p 5000:5000 --rm csspace/eodag-server:3.8.1
321
320
 
322
321
  You can also browse over your STAC API server using `STAC Browser <https://github.com/radiantearth/stac-browser>`_.
323
322
  Simply run:
@@ -1,15 +1,15 @@
1
1
  eodag/__init__.py,sha256=qADIO6H3KR0CMs0qePdJROjSzcGnHaYpv-RFIk18WGQ,1608
2
2
  eodag/cli.py,sha256=XCa5Q1rt5ZCq4QNm8SGknNyadYlS9TIEZRukMvcEgH4,30326
3
- eodag/config.py,sha256=WO6NtTPl4cSr1dxg9gz398Bkb_YgYc0y7XcMLYUIr88,48336
3
+ eodag/config.py,sha256=Y_2WBjeLZz7aHMBouCDKWNtsqCWAUstVjOylbNNl4f0,48438
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=kQshgKVh2gHJ4MDmQfbB5ctGWxK-S72Pki2b8uIKGlc,111838
7
+ eodag/api/core.py,sha256=tidXxfT40JLrXtSPlqKTYcUIETTHNlXU_ymznxF9Zm4,109125
8
8
  eodag/api/search_result.py,sha256=2Y2W3xDUyainwcyYBQljGRi6oyOqTTspgCgIlNG4kCc,14383
9
9
  eodag/api/product/__init__.py,sha256=k5iNHxXX6wDLsUo725W4U_Jz8CVbZTbfE8R9s1YQwKA,2508
10
10
  eodag/api/product/_assets.py,sha256=9bWIe_SYvsQO-q_lQFd7SxhUIWv7feze2-wnXOe8hhs,7570
11
11
  eodag/api/product/_product.py,sha256=UXCaWUtkAGWVCfF68zWCYDoEUUfxAdC0RGaNLZ3vUQ8,26794
12
- eodag/api/product/metadata_mapping.py,sha256=XJhsh33Xpo0-ns73yp96agIgBaDmnumeWOYPMZj9gsg,74245
12
+ eodag/api/product/metadata_mapping.py,sha256=p8RxWEiZfyMJlxHCGkOmrCJ-2zcD1f8eY8PlurgEgD0,75172
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
@@ -31,7 +31,7 @@ eodag/plugins/authentication/keycloak.py,sha256=m5c6Os_T8UGfdXS9SemhuUBhwsC4foxm
31
31
  eodag/plugins/authentication/oauth.py,sha256=fCMx7OxS3JNO9lLZhQNnL9lsBB9nFwZJLEYXI49QRtw,1952
32
32
  eodag/plugins/authentication/openid_connect.py,sha256=lj-9RPz2BADU-1ckawLmuSi3TSexABsDDPCHLp8Frsc,27084
33
33
  eodag/plugins/authentication/qsauth.py,sha256=bkepO_sFRIhYm3Dzecx3VJP0Ap37vUuJSRmEY8HrV1U,3947
34
- eodag/plugins/authentication/sas_auth.py,sha256=bDqMgcteUH15Vs8vBoYCeA0hxCrCHIPwFYRrEtMtp9Y,4767
34
+ eodag/plugins/authentication/sas_auth.py,sha256=IKsaQMk5rfevMKJMoPVQ1cwzkBV89T54cbzOA34oNa8,5294
35
35
  eodag/plugins/authentication/token.py,sha256=f2SossIJ_XlnBuOw_OprLNrF1p-uolL_KEX71_BhzKw,15798
36
36
  eodag/plugins/authentication/token_exchange.py,sha256=raFIN8UnO9MpqQukDJg4Pog-LJLzq8Bk54_6k9cCwFc,4963
37
37
  eodag/plugins/crunch/__init__.py,sha256=58D7kJhEpHJWobIKaNFPynfbSqAWgS90BiHzitqS5Ds,746
@@ -46,24 +46,24 @@ eodag/plugins/download/aws.py,sha256=9TdWseGib-sLWivfI0w4l-9O-ZlppgMsbzLSuirYzXE
46
46
  eodag/plugins/download/base.py,sha256=hllNFdDMWnTq0zjiTQPr-p4iX_OksCJ6PAt0a35qX1A,30813
47
47
  eodag/plugins/download/creodias_s3.py,sha256=9YrBwb7FiLnREVcaJB5ktlrDeIHPRAC-tH1qDjkwCMs,4350
48
48
  eodag/plugins/download/http.py,sha256=CBr7x0KLsQb3X6QqZ7FZvQEm0z-MN9BfKVWyZKudRSE,58354
49
- eodag/plugins/download/s3rest.py,sha256=rIG1BAGsU0OVbv6iEardQ5bdWmj_qBiVRanP5f6qxSA,15015
49
+ eodag/plugins/download/s3rest.py,sha256=RoMFpy7HPXFwK_gpy8tkZG1coNITvRj2D9hAmdrAnv0,15147
50
50
  eodag/plugins/search/__init__.py,sha256=bBrl3TffoU1wVpaeXmTEIailoh9W6fla4IP-8SWqA9U,2019
51
51
  eodag/plugins/search/base.py,sha256=tqn1JB2JV4Z_yRXFHUiAfMGjcJqr90_QYyevV0DoGLE,20017
52
52
  eodag/plugins/search/build_search_result.py,sha256=9a2HZijHvQWplyJav1vr_dDgoOPQeI1MIttSf3rBYBA,57652
53
53
  eodag/plugins/search/cop_marine.py,sha256=-GrFQjVZb7SfS6BbI0wnGc2VuRcQu7aqtWg3EWjQhE0,20485
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=IN6sgQqx5fedQI6jxOkUdUk_mRLAKmCRW8S7pHgOOnA,27332
57
- eodag/plugins/search/qssearch.py,sha256=lKZ2Pm5mXOZTueaE-dgnmI5AyvqFGPe0ZRBL-YMUC7s,93561
56
+ eodag/plugins/search/data_request_search.py,sha256=m38kpTXJT2fC8Mk894KlxKb14dz-nhAs_71-5kpnehU,27461
57
+ eodag/plugins/search/qssearch.py,sha256=qAqpgeUGytxRi6s1oVnw3fw7EsyNOtW_nFxF1Tb1g0M,94795
58
58
  eodag/plugins/search/stac_list_assets.py,sha256=OOCMyjD8XD-m39k0SyKMrRi4K8Ii5mOQsA6zSAeQDGI,3435
59
59
  eodag/plugins/search/static_stac_search.py,sha256=CPynjpNw0gXa6g6hA2zSkbwhfgU-9IBCmJtknuhnFKk,10515
60
- eodag/resources/ext_product_types.json,sha256=MbUf18X1cW7GPcdXXj1pEEEv-Fzr6VA5oWNn8eC7310,3235091
60
+ eodag/resources/ext_product_types.json,sha256=2WGKVm0TbixQ1WZS54IqJzzTEVyj-cNNMToUp-LUhZg,2474095
61
61
  eodag/resources/locations_conf_template.yml,sha256=_eBv-QKHYMIKhY0b0kp4Ee33RsayxN8LWH3kDXxfFSk,986
62
- eodag/resources/product_types.yml,sha256=nanmUoWgWp6tvFOaoyH3hJHHyG3ym1GIpAIK_35PdpM,413543
63
- eodag/resources/providers.yml,sha256=yOABB3pae_SW8DUROhb73E8ye1-SefCC1_JfVyi8p80,211582
62
+ eodag/resources/product_types.yml,sha256=GWtWBa0MvoWfD1ZuBR3IQYt6GcZvCTvGwqVFxoE0U2k,412710
63
+ eodag/resources/providers.yml,sha256=Ue0M7gEmOQQGFU3bqlU7LmfPegR_lj1cLr9Ok0zTGaI,212939
64
64
  eodag/resources/stac.yml,sha256=QnrBulL2pHZrPH4pI7rQtKDxmgP2ZbBcufFqFJPCL7A,10473
65
65
  eodag/resources/stac_api.yml,sha256=2FdQL_qBTIUlu6KH836T4CXBKO9AvVxA_Ub3J1RP81A,68881
66
- eodag/resources/stac_provider.yml,sha256=2yfdnuhJYV1f5el3aFkunoPqHAcD8oCDzvASbmldIvY,6703
66
+ eodag/resources/stac_provider.yml,sha256=AsQny2BhC0aZN31yCQ_3b-TvbD5tLlfddQRkfKODCqE,6725
67
67
  eodag/resources/user_conf_template.yml,sha256=rjgc-gp4Ufw9dLV-D9lQFBm-YLApZtGTybq3cHT48as,7508
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
@@ -75,11 +75,11 @@ eodag/rest/__init__.py,sha256=v4SI9gLuFP81YXi5_k98lvVNGzz6h8YZ_aUdhKAbE2M,916
75
75
  eodag/rest/cache.py,sha256=dSgpw6uWDq45qxfD25LXkB-9Qk0OEb5L8UOl7yuMPEU,2097
76
76
  eodag/rest/config.py,sha256=qWXukdSB6cSpkZszkPSGPGn5oiVfKEC3rPGp0q-2c4E,2112
77
77
  eodag/rest/constants.py,sha256=XsNgjzv0Qvw1hhjeuscDuyQpCm99g3O-hEyslPSiFzQ,945
78
- eodag/rest/core.py,sha256=ZMJxIPM8-0sdmQa3Gjtm_VOBy3Dhgau1vAtm6uHVgo0,26583
78
+ eodag/rest/core.py,sha256=rZD6AFxCORvnNFeYSR8eab3UuVymEnDQJBouVGKNUA4,26432
79
79
  eodag/rest/errors.py,sha256=ShYTl_cQej3H20jRtX_HLNKpnB6J4mbl0uhJTifzDj0,6736
80
80
  eodag/rest/server.py,sha256=yssir9bumRwoEibgTTKOgXBli3uwTJkhbVW7Q7F2Uqc,18253
81
81
  eodag/rest/server.wsgi,sha256=ssM4JQi8tZpOYj03CTdM0weyUF1b3Lbh38pdD-vBfXs,152
82
- eodag/rest/stac.py,sha256=5t7qsSr4qVINHhjebW2SyYZVE0yzSyD1xa9zOcIuvNs,36655
82
+ eodag/rest/stac.py,sha256=aBAoJ0hneBPej-n4e7TXlPBix7cm2IaDnVCY0dDL548,36496
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
@@ -94,11 +94,11 @@ 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=1Bb-n05YKSUq-rsVm-_2HoYaCBWp4SFHI4uWngpRmiw,10551
96
96
  eodag/types/search_args.py,sha256=EtG8nXnApBnYrFo5FVvsvvEqRlqTxJ0lrmIem9Wtg8c,5649
97
- eodag/types/whoosh.py,sha256=VXpWAZaXLR_RRnI9gh5iwkqn1n63krVGj2SX0rB2mQo,7225
98
97
  eodag/utils/__init__.py,sha256=xpFPjYZdMBhaWV4M5wTBv7_FY16K1mge-8V2soiTZ5U,54187
99
98
  eodag/utils/cache.py,sha256=UNvnzhJnNBuKLdH_0KnhuTMlBvz4GS3nr2IH2Lj6Swc,2580
100
99
  eodag/utils/env.py,sha256=_sgCzDmaJnMnCv1qk9xe9jBhBKqqXbEYmsyGYwYw4NI,1085
101
100
  eodag/utils/exceptions.py,sha256=64M6xNsWWThEspIrZvxPYCS47wBH4PL7YXXw8fcPCbo,4588
101
+ eodag/utils/free_text_search.py,sha256=et6nn5qmzbUq0T9tup6M2kMCwn2CvQgwVq6M6XOKEpg,8057
102
102
  eodag/utils/import_system.py,sha256=1vwcSRlsZwuaP8ssrpRBP5jldZ54eLv2ttNCdLf0TtA,3901
103
103
  eodag/utils/logging.py,sha256=KoMsyS1f6O1hr_SMDOIxvt842mOJgmu_yLUk0-0EKFs,3507
104
104
  eodag/utils/notebook.py,sha256=AUxtayvu26qYf3x3Eu3ujRl1XDgy24EfQaETbqmXSZw,2703
@@ -107,9 +107,9 @@ eodag/utils/requests.py,sha256=avNHKrOZ7Kp6lUA7u4kqupIth9MoirLzDsMrrmQDt4s,4560
107
107
  eodag/utils/rest.py,sha256=a9tlG_Y9iQXLeyeLyecxFNbopGHV-8URecMSRs0UXu0,3348
108
108
  eodag/utils/s3.py,sha256=hHlliahIJjQQP8VnRAhbw17_FFa4E6gFo52HchgarVU,29553
109
109
  eodag/utils/stac_reader.py,sha256=8r6amio5EtwGF9iu9zHaGDz4oUPKKeXRuyTzPNakrO4,9406
110
- eodag-3.7.0.dist-info/licenses/LICENSE,sha256=4MAecetnRTQw5DlHtiikDSzKWO1xVLwzM5_DsPMYlnE,10172
111
- eodag-3.7.0.dist-info/METADATA,sha256=-u3gkodXdq0wNhmk_pOy794pPyWifY2qE1nYBLu72sM,15494
112
- eodag-3.7.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
113
- eodag-3.7.0.dist-info/entry_points.txt,sha256=krdrBOQso6kAcSekV9ItEYAkE8syTC4Ev75bI781VgE,2561
114
- eodag-3.7.0.dist-info/top_level.txt,sha256=025IMTmVe5eDjIPP4KEFQKespOPMQdne4U4jOy8nftM,6
115
- eodag-3.7.0.dist-info/RECORD,,
110
+ eodag-3.8.1.dist-info/licenses/LICENSE,sha256=4MAecetnRTQw5DlHtiikDSzKWO1xVLwzM5_DsPMYlnE,10172
111
+ eodag-3.8.1.dist-info/METADATA,sha256=laQ1HziMFtCDTTx2CRnKgmc2snpQeYAVFjtFQWNtRVU,15472
112
+ eodag-3.8.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
113
+ eodag-3.8.1.dist-info/entry_points.txt,sha256=krdrBOQso6kAcSekV9ItEYAkE8syTC4Ev75bI781VgE,2561
114
+ eodag-3.8.1.dist-info/top_level.txt,sha256=025IMTmVe5eDjIPP4KEFQKespOPMQdne4U4jOy8nftM,6
115
+ eodag-3.8.1.dist-info/RECORD,,