eodag 3.5.0__tar.gz → 3.5.1__tar.gz

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 (263) hide show
  1. {eodag-3.5.0 → eodag-3.5.1}/CHANGES.rst +23 -0
  2. {eodag-3.5.0/eodag.egg-info → eodag-3.5.1}/PKG-INFO +2 -2
  3. {eodag-3.5.0 → eodag-3.5.1}/README.rst +1 -1
  4. {eodag-3.5.0 → eodag-3.5.1}/charts/eodag-server/Chart.yaml +2 -2
  5. {eodag-3.5.0 → eodag-3.5.1}/docs/stac_rest.rst +1 -1
  6. {eodag-3.5.0 → eodag-3.5.1}/eodag/api/core.py +15 -26
  7. {eodag-3.5.0 → eodag-3.5.1}/eodag/api/product/_product.py +33 -0
  8. {eodag-3.5.0 → eodag-3.5.1}/eodag/plugins/search/build_search_result.py +3 -2
  9. eodag-3.5.1/eodag/utils/cache.py +68 -0
  10. {eodag-3.5.0 → eodag-3.5.1/eodag.egg-info}/PKG-INFO +2 -2
  11. {eodag-3.5.0 → eodag-3.5.1}/eodag.egg-info/SOURCES.txt +1 -0
  12. {eodag-3.5.0 → eodag-3.5.1}/pyproject.toml +1 -1
  13. {eodag-3.5.0 → eodag-3.5.1}/.dockerignore +0 -0
  14. {eodag-3.5.0 → eodag-3.5.1}/.editorconfig +0 -0
  15. {eodag-3.5.0 → eodag-3.5.1}/.gitattributes +0 -0
  16. {eodag-3.5.0 → eodag-3.5.1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  17. {eodag-3.5.0 → eodag-3.5.1}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  18. {eodag-3.5.0 → eodag-3.5.1}/.github/pull_request_template.md +0 -0
  19. {eodag-3.5.0 → eodag-3.5.1}/.github/workflows/changelog.yml +0 -0
  20. {eodag-3.5.0 → eodag-3.5.1}/.github/workflows/deploy.yml +0 -0
  21. {eodag-3.5.0 → eodag-3.5.1}/.github/workflows/fetch.yml +0 -0
  22. {eodag-3.5.0 → eodag-3.5.1}/.github/workflows/github-pages.yml +0 -0
  23. {eodag-3.5.0 → eodag-3.5.1}/.github/workflows/lint-pr-title.yml +0 -0
  24. {eodag-3.5.0 → eodag-3.5.1}/.github/workflows/publish.yml +0 -0
  25. {eodag-3.5.0 → eodag-3.5.1}/.github/workflows/test.yml +0 -0
  26. {eodag-3.5.0 → eodag-3.5.1}/.gitignore +0 -0
  27. {eodag-3.5.0 → eodag-3.5.1}/.pre-commit-config.yaml +0 -0
  28. {eodag-3.5.0 → eodag-3.5.1}/BREAKING_CHANGES.rst +0 -0
  29. {eodag-3.5.0 → eodag-3.5.1}/CODE_OF_CONDUCT.md +0 -0
  30. {eodag-3.5.0 → eodag-3.5.1}/CONTRIBUTING.rst +0 -0
  31. {eodag-3.5.0 → eodag-3.5.1}/LICENSE +0 -0
  32. {eodag-3.5.0 → eodag-3.5.1}/MANIFEST.in +0 -0
  33. {eodag-3.5.0 → eodag-3.5.1}/NOTICE +0 -0
  34. {eodag-3.5.0 → eodag-3.5.1}/charts/eodag-server/Chart.lock +0 -0
  35. {eodag-3.5.0 → eodag-3.5.1}/charts/eodag-server/README.md +0 -0
  36. {eodag-3.5.0 → eodag-3.5.1}/charts/eodag-server/templates/NOTES.txt +0 -0
  37. {eodag-3.5.0 → eodag-3.5.1}/charts/eodag-server/templates/_helpers.tpl +0 -0
  38. {eodag-3.5.0 → eodag-3.5.1}/charts/eodag-server/templates/configmap.yaml +0 -0
  39. {eodag-3.5.0 → eodag-3.5.1}/charts/eodag-server/templates/deployment.yaml +0 -0
  40. {eodag-3.5.0 → eodag-3.5.1}/charts/eodag-server/templates/extra-list.yaml +0 -0
  41. {eodag-3.5.0 → eodag-3.5.1}/charts/eodag-server/templates/hpa.yaml +0 -0
  42. {eodag-3.5.0 → eodag-3.5.1}/charts/eodag-server/templates/ingress.yaml +0 -0
  43. {eodag-3.5.0 → eodag-3.5.1}/charts/eodag-server/templates/pv.yaml +0 -0
  44. {eodag-3.5.0 → eodag-3.5.1}/charts/eodag-server/templates/pvc.yaml +0 -0
  45. {eodag-3.5.0 → eodag-3.5.1}/charts/eodag-server/templates/secret.yaml +0 -0
  46. {eodag-3.5.0 → eodag-3.5.1}/charts/eodag-server/templates/service.yaml +0 -0
  47. {eodag-3.5.0 → eodag-3.5.1}/charts/eodag-server/templates/serviceaccount.yaml +0 -0
  48. {eodag-3.5.0 → eodag-3.5.1}/charts/eodag-server/values.yaml +0 -0
  49. {eodag-3.5.0 → eodag-3.5.1}/docker/run-stac-server.sh +0 -0
  50. {eodag-3.5.0 → eodag-3.5.1}/docker/stac-browser.dockerfile +0 -0
  51. {eodag-3.5.0 → eodag-3.5.1}/docker/stac-server.dockerfile +0 -0
  52. {eodag-3.5.0 → eodag-3.5.1}/docker-compose.yml +0 -0
  53. {eodag-3.5.0 → eodag-3.5.1}/docs/Makefile +0 -0
  54. {eodag-3.5.0 → eodag-3.5.1}/docs/_static/custom.css +0 -0
  55. {eodag-3.5.0 → eodag-3.5.1}/docs/_static/download_methods.png +0 -0
  56. {eodag-3.5.0 → eodag-3.5.1}/docs/_static/eodag_advanced_calls_graph.svg +0 -0
  57. {eodag-3.5.0 → eodag-3.5.1}/docs/_static/eodag_bycs.png +0 -0
  58. {eodag-3.5.0 → eodag-3.5.1}/docs/_static/eodag_fetch_product_types.png +0 -0
  59. {eodag-3.5.0 → eodag-3.5.1}/docs/_static/eodag_logo_160.png +0 -0
  60. {eodag-3.5.0 → eodag-3.5.1}/docs/_static/eodag_logo_160r.png +0 -0
  61. {eodag-3.5.0 → eodag-3.5.1}/docs/_static/eodag_main_calls_graph.svg +0 -0
  62. {eodag-3.5.0 → eodag-3.5.1}/docs/_static/eodag_overview.png +0 -0
  63. {eodag-3.5.0 → eodag-3.5.1}/docs/_static/eodag_stac_client.png +0 -0
  64. {eodag-3.5.0 → eodag-3.5.1}/docs/_static/eodag_stac_server.png +0 -0
  65. {eodag-3.5.0 → eodag-3.5.1}/docs/_static/favicon-32x32.png +0 -0
  66. {eodag-3.5.0 → eodag-3.5.1}/docs/_static/params_mapping_extra.csv +0 -0
  67. {eodag-3.5.0 → eodag-3.5.1}/docs/_static/params_mapping_offline_infos.json +0 -0
  68. {eodag-3.5.0 → eodag-3.5.1}/docs/_static/params_mapping_opensearch.csv +0 -0
  69. {eodag-3.5.0 → eodag-3.5.1}/docs/_static/product_types_information.csv +0 -0
  70. {eodag-3.5.0 → eodag-3.5.1}/docs/_static/progress_1.png +0 -0
  71. {eodag-3.5.0 → eodag-3.5.1}/docs/_static/progress_1_none.png +0 -0
  72. {eodag-3.5.0 → eodag-3.5.1}/docs/_static/progress_2.png +0 -0
  73. {eodag-3.5.0 → eodag-3.5.1}/docs/_static/progress_2_none.png +0 -0
  74. {eodag-3.5.0 → eodag-3.5.1}/docs/_static/stac_browser_example.png +0 -0
  75. {eodag-3.5.0 → eodag-3.5.1}/docs/_static/stac_browser_example_600.png +0 -0
  76. {eodag-3.5.0 → eodag-3.5.1}/docs/add_product_type.rst +0 -0
  77. {eodag-3.5.0 → eodag-3.5.1}/docs/add_provider.rst +0 -0
  78. {eodag-3.5.0 → eodag-3.5.1}/docs/api_reference/assets.rst +0 -0
  79. {eodag-3.5.0 → eodag-3.5.1}/docs/api_reference/call_graphs.rst +0 -0
  80. {eodag-3.5.0 → eodag-3.5.1}/docs/api_reference/core.rst +0 -0
  81. {eodag-3.5.0 → eodag-3.5.1}/docs/api_reference/eoproduct.rst +0 -0
  82. {eodag-3.5.0 → eodag-3.5.1}/docs/api_reference/exceptions.rst +0 -0
  83. {eodag-3.5.0 → eodag-3.5.1}/docs/api_reference/index.rst +0 -0
  84. {eodag-3.5.0 → eodag-3.5.1}/docs/api_reference/searchresult.rst +0 -0
  85. {eodag-3.5.0 → eodag-3.5.1}/docs/api_reference/types.rst +0 -0
  86. {eodag-3.5.0 → eodag-3.5.1}/docs/api_reference/utils.rst +0 -0
  87. {eodag-3.5.0 → eodag-3.5.1}/docs/api_user_guide.rst +0 -0
  88. {eodag-3.5.0 → eodag-3.5.1}/docs/breaking_changes.rst +0 -0
  89. {eodag-3.5.0 → eodag-3.5.1}/docs/changelog.rst +0 -0
  90. {eodag-3.5.0 → eodag-3.5.1}/docs/cli_user_guide.rst +0 -0
  91. {eodag-3.5.0 → eodag-3.5.1}/docs/conf.py +0 -0
  92. {eodag-3.5.0 → eodag-3.5.1}/docs/contribute.rst +0 -0
  93. {eodag-3.5.0 → eodag-3.5.1}/docs/drivers.rst +0 -0
  94. {eodag-3.5.0 → eodag-3.5.1}/docs/getting_started_guide/configure.rst +0 -0
  95. {eodag-3.5.0 → eodag-3.5.1}/docs/getting_started_guide/index.rst +0 -0
  96. {eodag-3.5.0 → eodag-3.5.1}/docs/getting_started_guide/install.rst +0 -0
  97. {eodag-3.5.0 → eodag-3.5.1}/docs/getting_started_guide/overview.rst +0 -0
  98. {eodag-3.5.0 → eodag-3.5.1}/docs/getting_started_guide/product_storage_status.rst +0 -0
  99. {eodag-3.5.0 → eodag-3.5.1}/docs/getting_started_guide/product_types.rst +0 -0
  100. {eodag-3.5.0 → eodag-3.5.1}/docs/getting_started_guide/providers.rst +0 -0
  101. {eodag-3.5.0 → eodag-3.5.1}/docs/getting_started_guide/register.rst +0 -0
  102. {eodag-3.5.0 → eodag-3.5.1}/docs/getting_started_guide/side_projects.rst +0 -0
  103. {eodag-3.5.0 → eodag-3.5.1}/docs/index.rst +0 -0
  104. {eodag-3.5.0 → eodag-3.5.1}/docs/make.bat +0 -0
  105. {eodag-3.5.0 → eodag-3.5.1}/docs/notebooks/api_user_guide/1_overview.ipynb +0 -0
  106. {eodag-3.5.0 → eodag-3.5.1}/docs/notebooks/api_user_guide/2_providers_products_available.ipynb +0 -0
  107. {eodag-3.5.0 → eodag-3.5.1}/docs/notebooks/api_user_guide/3_configuration.ipynb +0 -0
  108. {eodag-3.5.0 → eodag-3.5.1}/docs/notebooks/api_user_guide/4_search.ipynb +0 -0
  109. {eodag-3.5.0 → eodag-3.5.1}/docs/notebooks/api_user_guide/5_queryables.ipynb +0 -0
  110. {eodag-3.5.0 → eodag-3.5.1}/docs/notebooks/api_user_guide/6_serialize_deserialize.ipynb +0 -0
  111. {eodag-3.5.0 → eodag-3.5.1}/docs/notebooks/api_user_guide/7_crunch.ipynb +0 -0
  112. {eodag-3.5.0 → eodag-3.5.1}/docs/notebooks/api_user_guide/8_download.ipynb +0 -0
  113. {eodag-3.5.0 → eodag-3.5.1}/docs/notebooks/api_user_guide/9_post_process.ipynb +0 -0
  114. {eodag-3.5.0 → eodag-3.5.1}/docs/notebooks/api_user_guide/data/crunch_search_results.geojson +0 -0
  115. {eodag-3.5.0 → eodag-3.5.1}/docs/notebooks/api_user_guide/data/download_search_results.geojson +0 -0
  116. {eodag-3.5.0 → eodag-3.5.1}/docs/notebooks/intro_notebooks.ipynb +0 -0
  117. {eodag-3.5.0 → eodag-3.5.1}/docs/notebooks/tutos/auxdata/Gulf_of_Trieste_seamask_UTM33.cpg +0 -0
  118. {eodag-3.5.0 → eodag-3.5.1}/docs/notebooks/tutos/auxdata/Gulf_of_Trieste_seamask_UTM33.dbf +0 -0
  119. {eodag-3.5.0 → eodag-3.5.1}/docs/notebooks/tutos/auxdata/Gulf_of_Trieste_seamask_UTM33.prj +0 -0
  120. {eodag-3.5.0 → eodag-3.5.1}/docs/notebooks/tutos/auxdata/Gulf_of_Trieste_seamask_UTM33.qix +0 -0
  121. {eodag-3.5.0 → eodag-3.5.1}/docs/notebooks/tutos/auxdata/Gulf_of_Trieste_seamask_UTM33.qpj +0 -0
  122. {eodag-3.5.0 → eodag-3.5.1}/docs/notebooks/tutos/auxdata/Gulf_of_Trieste_seamask_UTM33.shp +0 -0
  123. {eodag-3.5.0 → eodag-3.5.1}/docs/notebooks/tutos/auxdata/Gulf_of_Trieste_seamask_UTM33.shx +0 -0
  124. {eodag-3.5.0 → eodag-3.5.1}/docs/notebooks/tutos/auxdata/sentinel2_tiling_grid_centroids.zip +0 -0
  125. {eodag-3.5.0 → eodag-3.5.1}/docs/notebooks/tutos/tuto_burnt_areas_snappy.ipynb +0 -0
  126. {eodag-3.5.0 → eodag-3.5.1}/docs/notebooks/tutos/tuto_cds.ipynb +0 -0
  127. {eodag-3.5.0 → eodag-3.5.1}/docs/notebooks/tutos/tuto_cop_dem.ipynb +0 -0
  128. {eodag-3.5.0 → eodag-3.5.1}/docs/notebooks/tutos/tuto_ecmwf.ipynb +0 -0
  129. {eodag-3.5.0 → eodag-3.5.1}/docs/notebooks/tutos/tuto_meteoblue.ipynb +0 -0
  130. {eodag-3.5.0 → eodag-3.5.1}/docs/notebooks/tutos/tuto_search_location_tile.ipynb +0 -0
  131. {eodag-3.5.0 → eodag-3.5.1}/docs/notebooks/tutos/tuto_ship_detection.ipynb +0 -0
  132. {eodag-3.5.0 → eodag-3.5.1}/docs/notebooks/tutos/tuto_stac_client.ipynb +0 -0
  133. {eodag-3.5.0 → eodag-3.5.1}/docs/notebooks/tutos/tuto_wekeo.ipynb +0 -0
  134. {eodag-3.5.0 → eodag-3.5.1}/docs/params_mapping.rst +0 -0
  135. {eodag-3.5.0 → eodag-3.5.1}/docs/plugins.rst +0 -0
  136. {eodag-3.5.0 → eodag-3.5.1}/docs/plugins_reference/api.rst +0 -0
  137. {eodag-3.5.0 → eodag-3.5.1}/docs/plugins_reference/auth.rst +0 -0
  138. {eodag-3.5.0 → eodag-3.5.1}/docs/plugins_reference/crunch.rst +0 -0
  139. {eodag-3.5.0 → eodag-3.5.1}/docs/plugins_reference/download.rst +0 -0
  140. {eodag-3.5.0 → eodag-3.5.1}/docs/plugins_reference/search.rst +0 -0
  141. {eodag-3.5.0 → eodag-3.5.1}/docs/stac.rst +0 -0
  142. {eodag-3.5.0 → eodag-3.5.1}/docs/tutos.rst +0 -0
  143. {eodag-3.5.0 → eodag-3.5.1}/eodag/__init__.py +0 -0
  144. {eodag-3.5.0 → eodag-3.5.1}/eodag/api/__init__.py +0 -0
  145. {eodag-3.5.0 → eodag-3.5.1}/eodag/api/product/__init__.py +0 -0
  146. {eodag-3.5.0 → eodag-3.5.1}/eodag/api/product/_assets.py +0 -0
  147. {eodag-3.5.0 → eodag-3.5.1}/eodag/api/product/drivers/__init__.py +0 -0
  148. {eodag-3.5.0 → eodag-3.5.1}/eodag/api/product/drivers/base.py +0 -0
  149. {eodag-3.5.0 → eodag-3.5.1}/eodag/api/product/drivers/generic.py +0 -0
  150. {eodag-3.5.0 → eodag-3.5.1}/eodag/api/product/drivers/sentinel1.py +0 -0
  151. {eodag-3.5.0 → eodag-3.5.1}/eodag/api/product/drivers/sentinel2.py +0 -0
  152. {eodag-3.5.0 → eodag-3.5.1}/eodag/api/product/metadata_mapping.py +0 -0
  153. {eodag-3.5.0 → eodag-3.5.1}/eodag/api/search_result.py +0 -0
  154. {eodag-3.5.0 → eodag-3.5.1}/eodag/cli.py +0 -0
  155. {eodag-3.5.0 → eodag-3.5.1}/eodag/config.py +0 -0
  156. {eodag-3.5.0 → eodag-3.5.1}/eodag/crunch.py +0 -0
  157. {eodag-3.5.0 → eodag-3.5.1}/eodag/plugins/__init__.py +0 -0
  158. {eodag-3.5.0 → eodag-3.5.1}/eodag/plugins/apis/__init__.py +0 -0
  159. {eodag-3.5.0 → eodag-3.5.1}/eodag/plugins/apis/base.py +0 -0
  160. {eodag-3.5.0 → eodag-3.5.1}/eodag/plugins/apis/ecmwf.py +0 -0
  161. {eodag-3.5.0 → eodag-3.5.1}/eodag/plugins/apis/usgs.py +0 -0
  162. {eodag-3.5.0 → eodag-3.5.1}/eodag/plugins/authentication/__init__.py +0 -0
  163. {eodag-3.5.0 → eodag-3.5.1}/eodag/plugins/authentication/aws_auth.py +0 -0
  164. {eodag-3.5.0 → eodag-3.5.1}/eodag/plugins/authentication/base.py +0 -0
  165. {eodag-3.5.0 → eodag-3.5.1}/eodag/plugins/authentication/generic.py +0 -0
  166. {eodag-3.5.0 → eodag-3.5.1}/eodag/plugins/authentication/header.py +0 -0
  167. {eodag-3.5.0 → eodag-3.5.1}/eodag/plugins/authentication/keycloak.py +0 -0
  168. {eodag-3.5.0 → eodag-3.5.1}/eodag/plugins/authentication/oauth.py +0 -0
  169. {eodag-3.5.0 → eodag-3.5.1}/eodag/plugins/authentication/openid_connect.py +0 -0
  170. {eodag-3.5.0 → eodag-3.5.1}/eodag/plugins/authentication/qsauth.py +0 -0
  171. {eodag-3.5.0 → eodag-3.5.1}/eodag/plugins/authentication/sas_auth.py +0 -0
  172. {eodag-3.5.0 → eodag-3.5.1}/eodag/plugins/authentication/token.py +0 -0
  173. {eodag-3.5.0 → eodag-3.5.1}/eodag/plugins/authentication/token_exchange.py +0 -0
  174. {eodag-3.5.0 → eodag-3.5.1}/eodag/plugins/base.py +0 -0
  175. {eodag-3.5.0 → eodag-3.5.1}/eodag/plugins/crunch/__init__.py +0 -0
  176. {eodag-3.5.0 → eodag-3.5.1}/eodag/plugins/crunch/base.py +0 -0
  177. {eodag-3.5.0 → eodag-3.5.1}/eodag/plugins/crunch/filter_date.py +0 -0
  178. {eodag-3.5.0 → eodag-3.5.1}/eodag/plugins/crunch/filter_latest_intersect.py +0 -0
  179. {eodag-3.5.0 → eodag-3.5.1}/eodag/plugins/crunch/filter_latest_tpl_name.py +0 -0
  180. {eodag-3.5.0 → eodag-3.5.1}/eodag/plugins/crunch/filter_overlap.py +0 -0
  181. {eodag-3.5.0 → eodag-3.5.1}/eodag/plugins/crunch/filter_property.py +0 -0
  182. {eodag-3.5.0 → eodag-3.5.1}/eodag/plugins/download/__init__.py +0 -0
  183. {eodag-3.5.0 → eodag-3.5.1}/eodag/plugins/download/aws.py +0 -0
  184. {eodag-3.5.0 → eodag-3.5.1}/eodag/plugins/download/base.py +0 -0
  185. {eodag-3.5.0 → eodag-3.5.1}/eodag/plugins/download/creodias_s3.py +0 -0
  186. {eodag-3.5.0 → eodag-3.5.1}/eodag/plugins/download/http.py +0 -0
  187. {eodag-3.5.0 → eodag-3.5.1}/eodag/plugins/download/s3rest.py +0 -0
  188. {eodag-3.5.0 → eodag-3.5.1}/eodag/plugins/manager.py +0 -0
  189. {eodag-3.5.0 → eodag-3.5.1}/eodag/plugins/search/__init__.py +0 -0
  190. {eodag-3.5.0 → eodag-3.5.1}/eodag/plugins/search/base.py +0 -0
  191. {eodag-3.5.0 → eodag-3.5.1}/eodag/plugins/search/cop_marine.py +0 -0
  192. {eodag-3.5.0 → eodag-3.5.1}/eodag/plugins/search/creodias_s3.py +0 -0
  193. {eodag-3.5.0 → eodag-3.5.1}/eodag/plugins/search/csw.py +0 -0
  194. {eodag-3.5.0 → eodag-3.5.1}/eodag/plugins/search/data_request_search.py +0 -0
  195. {eodag-3.5.0 → eodag-3.5.1}/eodag/plugins/search/qssearch.py +0 -0
  196. {eodag-3.5.0 → eodag-3.5.1}/eodag/plugins/search/stac_list_assets.py +0 -0
  197. {eodag-3.5.0 → eodag-3.5.1}/eodag/plugins/search/static_stac_search.py +0 -0
  198. {eodag-3.5.0 → eodag-3.5.1}/eodag/py.typed +0 -0
  199. {eodag-3.5.0 → eodag-3.5.1}/eodag/resources/ext_product_types.json +0 -0
  200. {eodag-3.5.0 → eodag-3.5.1}/eodag/resources/locations_conf_template.yml +0 -0
  201. {eodag-3.5.0 → eodag-3.5.1}/eodag/resources/product_types.yml +0 -0
  202. {eodag-3.5.0 → eodag-3.5.1}/eodag/resources/providers.yml +0 -0
  203. {eodag-3.5.0 → eodag-3.5.1}/eodag/resources/shp/ne_110m_admin_0_map_units.VERSION.txt +0 -0
  204. {eodag-3.5.0 → eodag-3.5.1}/eodag/resources/shp/ne_110m_admin_0_map_units.cpg +0 -0
  205. {eodag-3.5.0 → eodag-3.5.1}/eodag/resources/shp/ne_110m_admin_0_map_units.dbf +0 -0
  206. {eodag-3.5.0 → eodag-3.5.1}/eodag/resources/shp/ne_110m_admin_0_map_units.prj +0 -0
  207. {eodag-3.5.0 → eodag-3.5.1}/eodag/resources/shp/ne_110m_admin_0_map_units.shp +0 -0
  208. {eodag-3.5.0 → eodag-3.5.1}/eodag/resources/shp/ne_110m_admin_0_map_units.shx +0 -0
  209. {eodag-3.5.0 → eodag-3.5.1}/eodag/resources/stac.yml +0 -0
  210. {eodag-3.5.0 → eodag-3.5.1}/eodag/resources/stac_api.yml +0 -0
  211. {eodag-3.5.0 → eodag-3.5.1}/eodag/resources/stac_provider.yml +0 -0
  212. {eodag-3.5.0 → eodag-3.5.1}/eodag/resources/user_conf_template.yml +0 -0
  213. {eodag-3.5.0 → eodag-3.5.1}/eodag/rest/__init__.py +0 -0
  214. {eodag-3.5.0 → eodag-3.5.1}/eodag/rest/cache.py +0 -0
  215. {eodag-3.5.0 → eodag-3.5.1}/eodag/rest/config.py +0 -0
  216. {eodag-3.5.0 → eodag-3.5.1}/eodag/rest/constants.py +0 -0
  217. {eodag-3.5.0 → eodag-3.5.1}/eodag/rest/core.py +0 -0
  218. {eodag-3.5.0 → eodag-3.5.1}/eodag/rest/errors.py +0 -0
  219. {eodag-3.5.0 → eodag-3.5.1}/eodag/rest/server.py +0 -0
  220. {eodag-3.5.0 → eodag-3.5.1}/eodag/rest/server.wsgi +0 -0
  221. {eodag-3.5.0 → eodag-3.5.1}/eodag/rest/stac.py +0 -0
  222. {eodag-3.5.0 → eodag-3.5.1}/eodag/rest/templates/README +0 -0
  223. {eodag-3.5.0 → eodag-3.5.1}/eodag/rest/types/__init__.py +0 -0
  224. {eodag-3.5.0 → eodag-3.5.1}/eodag/rest/types/collections_search.py +0 -0
  225. {eodag-3.5.0 → eodag-3.5.1}/eodag/rest/types/eodag_search.py +0 -0
  226. {eodag-3.5.0 → eodag-3.5.1}/eodag/rest/types/queryables.py +0 -0
  227. {eodag-3.5.0 → eodag-3.5.1}/eodag/rest/types/stac_search.py +0 -0
  228. {eodag-3.5.0 → eodag-3.5.1}/eodag/rest/utils/__init__.py +0 -0
  229. {eodag-3.5.0 → eodag-3.5.1}/eodag/rest/utils/cql_evaluate.py +0 -0
  230. {eodag-3.5.0 → eodag-3.5.1}/eodag/rest/utils/rfc3339.py +0 -0
  231. {eodag-3.5.0 → eodag-3.5.1}/eodag/types/__init__.py +0 -0
  232. {eodag-3.5.0 → eodag-3.5.1}/eodag/types/bbox.py +0 -0
  233. {eodag-3.5.0 → eodag-3.5.1}/eodag/types/download_args.py +0 -0
  234. {eodag-3.5.0 → eodag-3.5.1}/eodag/types/queryables.py +0 -0
  235. {eodag-3.5.0 → eodag-3.5.1}/eodag/types/search_args.py +0 -0
  236. {eodag-3.5.0 → eodag-3.5.1}/eodag/types/whoosh.py +0 -0
  237. {eodag-3.5.0 → eodag-3.5.1}/eodag/utils/__init__.py +0 -0
  238. {eodag-3.5.0 → eodag-3.5.1}/eodag/utils/env.py +0 -0
  239. {eodag-3.5.0 → eodag-3.5.1}/eodag/utils/exceptions.py +0 -0
  240. {eodag-3.5.0 → eodag-3.5.1}/eodag/utils/import_system.py +0 -0
  241. {eodag-3.5.0 → eodag-3.5.1}/eodag/utils/logging.py +0 -0
  242. {eodag-3.5.0 → eodag-3.5.1}/eodag/utils/notebook.py +0 -0
  243. {eodag-3.5.0 → eodag-3.5.1}/eodag/utils/repr.py +0 -0
  244. {eodag-3.5.0 → eodag-3.5.1}/eodag/utils/requests.py +0 -0
  245. {eodag-3.5.0 → eodag-3.5.1}/eodag/utils/rest.py +0 -0
  246. {eodag-3.5.0 → eodag-3.5.1}/eodag/utils/s3.py +0 -0
  247. {eodag-3.5.0 → eodag-3.5.1}/eodag/utils/stac_reader.py +0 -0
  248. {eodag-3.5.0 → eodag-3.5.1}/eodag.egg-info/dependency_links.txt +0 -0
  249. {eodag-3.5.0 → eodag-3.5.1}/eodag.egg-info/entry_points.txt +0 -0
  250. {eodag-3.5.0 → eodag-3.5.1}/eodag.egg-info/requires.txt +0 -0
  251. {eodag-3.5.0 → eodag-3.5.1}/eodag.egg-info/top_level.txt +0 -0
  252. {eodag-3.5.0 → eodag-3.5.1}/get_pypi_latest_version.sh +0 -0
  253. {eodag-3.5.0 → eodag-3.5.1}/pytest.ini +0 -0
  254. {eodag-3.5.0 → eodag-3.5.1}/readthedocs.yml +0 -0
  255. {eodag-3.5.0 → eodag-3.5.1}/requirements-dev.txt +0 -0
  256. {eodag-3.5.0 → eodag-3.5.1}/requirements-docs.txt +0 -0
  257. {eodag-3.5.0 → eodag-3.5.1}/requirements-tutorials.txt +0 -0
  258. {eodag-3.5.0 → eodag-3.5.1}/requirements.txt +0 -0
  259. {eodag-3.5.0 → eodag-3.5.1}/setup.cfg +0 -0
  260. {eodag-3.5.0 → eodag-3.5.1}/setup.py +0 -0
  261. {eodag-3.5.0 → eodag-3.5.1}/tox.ini +0 -0
  262. {eodag-3.5.0 → eodag-3.5.1}/utils/params_mapping_to_csv.py +0 -0
  263. {eodag-3.5.0 → eodag-3.5.1}/utils/product_types_information_to_csv.py +0 -0
@@ -3,6 +3,29 @@ Release history
3
3
  ===============
4
4
 
5
5
 
6
+ v3.5.1 (2025-06-23)
7
+ ===================
8
+
9
+ Bug Fixes
10
+ ---------
11
+
12
+ * **core**: Enable count with search iterator (`#1700`_, `bbcc7ba`_)
13
+
14
+ * **plugins**: Lru caching when fetching constraints with ECMWF (`#1698`_, `e23f47e`_)
15
+
16
+ Refactoring
17
+ -----------
18
+
19
+ * **core**: Register downloader using manager from search to EOProduct (`#1699`_, `fd0c149`_)
20
+
21
+ .. _#1698: https://github.com/CS-SI/eodag/pull/1698
22
+ .. _#1699: https://github.com/CS-SI/eodag/pull/1699
23
+ .. _#1700: https://github.com/CS-SI/eodag/pull/1700
24
+ .. _bbcc7ba: https://github.com/CS-SI/eodag/commit/bbcc7ba311fcf25a0231203035166276e704ec8e
25
+ .. _e23f47e: https://github.com/CS-SI/eodag/commit/e23f47ee97a50c0ba1d573801a17177c88f06eae
26
+ .. _fd0c149: https://github.com/CS-SI/eodag/commit/fd0c149277735a3ecdc11588e8ac8e166b591ae8
27
+
28
+
6
29
  v3.5.0 (2025-06-20)
7
30
  ===================
8
31
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: eodag
3
- Version: 3.5.0
3
+ Version: 3.5.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
@@ -317,7 +317,7 @@ An eodag instance can be exposed through a STAC compliant REST api from the comm
317
317
 
318
318
  .. code-block:: bash
319
319
 
320
- docker run -p 5000:5000 --rm csspace/eodag-server:3.5.0
320
+ docker run -p 5000:5000 --rm csspace/eodag-server:3.5.1
321
321
 
322
322
  You can also browse over your STAC API server using `STAC Browser <https://github.com/radiantearth/stac-browser>`_.
323
323
  Simply run:
@@ -187,7 +187,7 @@ An eodag instance can be exposed through a STAC compliant REST api from the comm
187
187
 
188
188
  .. code-block:: bash
189
189
 
190
- docker run -p 5000:5000 --rm csspace/eodag-server:3.5.0
190
+ docker run -p 5000:5000 --rm csspace/eodag-server:3.5.1
191
191
 
192
192
  You can also browse over your STAC API server using `STAC Browser <https://github.com/radiantearth/stac-browser>`_.
193
193
  Simply run:
@@ -1,5 +1,5 @@
1
1
  apiVersion: v2
2
- appVersion: 3.5.0
2
+ appVersion: 3.5.1
3
3
  dependencies:
4
4
  - name: common
5
5
  repository: oci://registry-1.docker.io/bitnamicharts
@@ -15,4 +15,4 @@ name: eodag-server
15
15
  sources:
16
16
  - https://github.com/CS-SI/eodag
17
17
  type: application
18
- version: 3.5.0
18
+ version: 3.5.1
@@ -115,7 +115,7 @@ available on `https://hub.docker.com/r/csspace/eodag-server <https://hub.docker.
115
115
 
116
116
  .. code-block:: bash
117
117
 
118
- $ docker run -p 5000:5000 --rm csspace/eodag-server:3.5.0
118
+ $ docker run -p 5000:5000 --rm csspace/eodag-server:3.5.1
119
119
 
120
120
  Example
121
121
  -------
@@ -37,7 +37,6 @@ from whoosh.qparser import QueryParser
37
37
 
38
38
  from eodag.api.product.metadata_mapping import (
39
39
  NOT_AVAILABLE,
40
- ONLINE_STATUS,
41
40
  mtd_cfg_as_conversion_and_querypath,
42
41
  )
43
42
  from eodag.api.search_result import SearchResult
@@ -1395,7 +1394,11 @@ class EODataAccessGateway:
1395
1394
  prev_product = None
1396
1395
  next_page_url = None
1397
1396
  next_page_query_obj = None
1397
+ number_matched = None
1398
1398
  while True:
1399
+ # if count is enabled, it will only be performed on 1st iteration
1400
+ if iteration == 2:
1401
+ kwargs["count"] = False
1399
1402
  if iteration > 1 and next_page_url:
1400
1403
  pagination_config["next_page_url_tpl"] = next_page_url
1401
1404
  if iteration > 1 and next_page_query_obj:
@@ -1403,11 +1406,13 @@ class EODataAccessGateway:
1403
1406
  logger.info("Iterate search over multiple pages: page #%s", iteration)
1404
1407
  try:
1405
1408
  # remove unwanted kwargs for _do_search
1406
- kwargs.pop("count", None)
1407
1409
  kwargs.pop("raise_errors", None)
1408
1410
  search_result = self._do_search(
1409
- search_plugin, count=False, raise_errors=True, **kwargs
1411
+ search_plugin, raise_errors=True, **kwargs
1410
1412
  )
1413
+ # if count is enabled, it will only be performed on 1st iteration
1414
+ if iteration == 1:
1415
+ number_matched = search_result.number_matched
1411
1416
  except Exception:
1412
1417
  logger.warning(
1413
1418
  "error at retrieval of data from %s, for params: %s",
@@ -1462,6 +1467,8 @@ class EODataAccessGateway:
1462
1467
  )
1463
1468
  last_page_with_products = iteration - 1
1464
1469
  break
1470
+ # use count got from 1st iteration
1471
+ search_result.number_matched = number_matched
1465
1472
  yield search_result
1466
1473
  prev_product = product
1467
1474
  # Prevent a last search if the current one returned less than the
@@ -1549,6 +1556,9 @@ class EODataAccessGateway:
1549
1556
  )
1550
1557
  self.fetch_product_types_list()
1551
1558
 
1559
+ # remove unwanted count
1560
+ kwargs.pop("count", None)
1561
+
1552
1562
  search_plugins, search_kwargs = self._prepare_search(
1553
1563
  start=start, end=end, geom=geom, locations=locations, **kwargs
1554
1564
  )
@@ -1571,6 +1581,7 @@ class EODataAccessGateway:
1571
1581
  for page_results in self.search_iter_page_plugin(
1572
1582
  items_per_page=itp,
1573
1583
  search_plugin=search_plugin,
1584
+ count=False,
1574
1585
  **search_kwargs,
1575
1586
  ):
1576
1587
  all_results.data.extend(page_results.data)
@@ -1981,29 +1992,7 @@ class EODataAccessGateway:
1981
1992
  logger.debug("product type %s not found", eo_product.product_type)
1982
1993
 
1983
1994
  if eo_product.search_intersection is not None:
1984
- download_plugin = self._plugins_manager.get_download_plugin(
1985
- eo_product
1986
- )
1987
- if len(eo_product.assets) > 0:
1988
- matching_url = next(iter(eo_product.assets.values()))["href"]
1989
- elif eo_product.properties.get("storageStatus") != ONLINE_STATUS:
1990
- matching_url = eo_product.properties.get(
1991
- "orderLink"
1992
- ) or eo_product.properties.get("downloadLink")
1993
- else:
1994
- matching_url = eo_product.properties.get("downloadLink")
1995
-
1996
- try:
1997
- auth_plugin = next(
1998
- self._plugins_manager.get_auth_plugins(
1999
- search_plugin.provider,
2000
- matching_url=matching_url,
2001
- matching_conf=download_plugin.config,
2002
- )
2003
- )
2004
- except StopIteration:
2005
- auth_plugin = None
2006
- eo_product.register_downloader(download_plugin, auth_plugin)
1995
+ eo_product._register_downloader_from_manager(self._plugins_manager)
2007
1996
 
2008
1997
  results.extend(res)
2009
1998
  total_results = (
@@ -43,6 +43,7 @@ from eodag.api.product.metadata_mapping import (
43
43
  DEFAULT_GEOMETRY,
44
44
  NOT_AVAILABLE,
45
45
  NOT_MAPPED,
46
+ ONLINE_STATUS,
46
47
  )
47
48
  from eodag.utils import (
48
49
  DEFAULT_DOWNLOAD_TIMEOUT,
@@ -62,6 +63,7 @@ if TYPE_CHECKING:
62
63
  from eodag.plugins.apis.base import Api
63
64
  from eodag.plugins.authentication.base import Authentication
64
65
  from eodag.plugins.download.base import Download
66
+ from eodag.plugins.manager import PluginManager
65
67
  from eodag.types.download_args import DownloadConf
66
68
  from eodag.utils import Unpack
67
69
 
@@ -238,6 +240,37 @@ class EOProduct:
238
240
  f"Unable to get {e.args[0]} key from EOProduct.properties"
239
241
  )
240
242
 
243
+ def _register_downloader_from_manager(self, plugins_manager: PluginManager) -> None:
244
+ """Register the downloader and authenticator for this EOProduct using the
245
+ provided plugins manager.
246
+ This method is typically called after the EOProduct has been created and
247
+ before any download operation is performed.
248
+
249
+ :param plugins_manager: The plugins manager instance to use for retrieving
250
+ the download and authentication plugins.
251
+ """
252
+ download_plugin = plugins_manager.get_download_plugin(self)
253
+ if len(self.assets) > 0:
254
+ matching_url = next(iter(self.assets.values()))["href"]
255
+ elif self.properties.get("storageStatus") != ONLINE_STATUS:
256
+ matching_url = self.properties.get("orderLink") or self.properties.get(
257
+ "downloadLink"
258
+ )
259
+ else:
260
+ matching_url = self.properties.get("downloadLink")
261
+
262
+ try:
263
+ auth_plugin = next(
264
+ plugins_manager.get_auth_plugins(
265
+ self.provider,
266
+ matching_url=matching_url,
267
+ matching_conf=download_plugin.config,
268
+ )
269
+ )
270
+ except StopIteration:
271
+ auth_plugin = None
272
+ self.register_downloader(download_plugin, auth_plugin)
273
+
241
274
  def register_downloader(
242
275
  self, downloader: Union[Api, Download], authenticator: Optional[Authentication]
243
276
  ) -> None:
@@ -17,7 +17,6 @@
17
17
  # limitations under the License.
18
18
  from __future__ import annotations
19
19
 
20
- import functools
21
20
  import hashlib
22
21
  import logging
23
22
  import re
@@ -61,6 +60,7 @@ from eodag.utils import (
61
60
  get_geometry_from_various,
62
61
  is_range_in_range,
63
62
  )
63
+ from eodag.utils.cache import instance_cached_method
64
64
  from eodag.utils.exceptions import DownloadError, NotAvailableError, ValidationError
65
65
  from eodag.utils.requests import fetch_json
66
66
 
@@ -1099,6 +1099,7 @@ class ECMWFSearch(PostJsonSearch):
1099
1099
 
1100
1100
  return qp
1101
1101
 
1102
+ @instance_cached_method()
1102
1103
  def _fetch_data(self, url: str) -> Any:
1103
1104
  """
1104
1105
  fetches from a provider elements like constraints or forms.
@@ -1115,7 +1116,7 @@ class ECMWFSearch(PostJsonSearch):
1115
1116
  else None
1116
1117
  )
1117
1118
  timeout = getattr(self.config, "timeout", DEFAULT_SEARCH_TIMEOUT)
1118
- return functools.lru_cache()(fetch_json)(url, auth=auth, timeout=timeout)
1119
+ return fetch_json(url, auth=auth, timeout=timeout)
1119
1120
 
1120
1121
  def normalize_results(
1121
1122
  self, results: RawSearchResult, **kwargs: Any
@@ -0,0 +1,68 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Copyright 2025, CS GROUP - France, https://www.cs-soprasteria.com/
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 functools
19
+ import logging
20
+ from typing import Any, Callable, TypeVar
21
+
22
+ logger = logging.getLogger("eodag.cache")
23
+
24
+ R = TypeVar("R")
25
+
26
+
27
+ def instance_cached_method(
28
+ maxsize: int = 128,
29
+ ) -> Callable[[Callable[..., R]], Callable[..., R]]:
30
+ """
31
+ Decorator to cache an instance method using functools.lru_cache on a per-instance basis.
32
+
33
+ This decorator creates a separate LRU cache for each instance of the class,
34
+ ensuring that cached results are not shared across instances.
35
+
36
+ The cache stores up to `maxsize` entries (default 128), which matches the
37
+ default cache size of functools.lru_cache. This default provides a good balance
38
+ between memory consumption and cache hit rate for most use cases.
39
+
40
+ :param maxsize: Maximum number of cached calls to store per instance.
41
+ Defaults to 128, consistent with functools.lru_cache.
42
+ :return: Decorated method with per-instance caching enabled.
43
+ """
44
+
45
+ def decorator(method: Callable[..., R]) -> Callable[..., R]:
46
+ @functools.wraps(method)
47
+ def wrapper(self: Any, *args: Any, **kwargs: Any) -> R:
48
+ cache_name = f"_cached_{method.__name__}"
49
+ if not hasattr(self, cache_name):
50
+ cached = functools.lru_cache(maxsize=maxsize)(
51
+ method.__get__(self, type(self))
52
+ )
53
+ setattr(self, cache_name, cached)
54
+
55
+ cached_func = getattr(self, cache_name)
56
+ before_hits = cached_func.cache_info().hits
57
+ result = cached_func(*args, **kwargs)
58
+ after_hits = cached_func.cache_info().hits
59
+
60
+ if after_hits > before_hits:
61
+ logger.debug(
62
+ f"Cache hit for {method.__qualname__} with args={args}, kwargs={kwargs}"
63
+ )
64
+ return result
65
+
66
+ return wrapper
67
+
68
+ return decorator
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: eodag
3
- Version: 3.5.0
3
+ Version: 3.5.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
@@ -317,7 +317,7 @@ An eodag instance can be exposed through a STAC compliant REST api from the comm
317
317
 
318
318
  .. code-block:: bash
319
319
 
320
- docker run -p 5000:5000 --rm csspace/eodag-server:3.5.0
320
+ docker run -p 5000:5000 --rm csspace/eodag-server:3.5.1
321
321
 
322
322
  You can also browse over your STAC API server using `STAC Browser <https://github.com/radiantearth/stac-browser>`_.
323
323
  Simply run:
@@ -247,6 +247,7 @@ eodag/types/queryables.py
247
247
  eodag/types/search_args.py
248
248
  eodag/types/whoosh.py
249
249
  eodag/utils/__init__.py
250
+ eodag/utils/cache.py
250
251
  eodag/utils/env.py
251
252
  eodag/utils/exceptions.py
252
253
  eodag/utils/import_system.py
@@ -3,7 +3,7 @@ requires = ["setuptools>=45", "setuptools_scm[toml]>=6.2"]
3
3
  build-backend = "setuptools.build_meta"
4
4
 
5
5
  [tool.setuptools_scm]
6
- fallback_version = "3.5.1.dev0"
6
+ fallback_version = "3.5.2.dev0"
7
7
 
8
8
  [tool.coverage.report]
9
9
  exclude_lines = [
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes