eodag 3.4.1.post1__tar.gz → 3.4.3__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 (261) hide show
  1. {eodag-3.4.1.post1 → eodag-3.4.3}/.github/pull_request_template.md +1 -1
  2. eodag-3.4.3/.github/workflows/deploy.yml +72 -0
  3. eodag-3.4.1.post1/.github/workflows/deploy.yml → eodag-3.4.3/.github/workflows/publish.yml +4 -3
  4. {eodag-3.4.1.post1 → eodag-3.4.3}/CHANGES.rst +88 -0
  5. {eodag-3.4.1.post1/eodag.egg-info → eodag-3.4.3}/PKG-INFO +2 -2
  6. {eodag-3.4.1.post1 → eodag-3.4.3}/README.rst +1 -1
  7. {eodag-3.4.1.post1 → eodag-3.4.3}/charts/eodag-server/Chart.yaml +2 -2
  8. {eodag-3.4.1.post1 → eodag-3.4.3}/charts/eodag-server/templates/ingress.yaml +1 -5
  9. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/getting_started_guide/configure.rst +9 -4
  10. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/api_user_guide/2_providers_products_available.ipynb +1 -1
  11. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/stac_rest.rst +1 -1
  12. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/api/core.py +12 -11
  13. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/api/product/_product.py +6 -6
  14. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/api/product/metadata_mapping.py +11 -6
  15. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/config.py +2 -2
  16. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/apis/ecmwf.py +5 -7
  17. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/apis/usgs.py +1 -1
  18. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/authentication/generic.py +5 -1
  19. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/authentication/openid_connect.py +68 -30
  20. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/authentication/sas_auth.py +1 -1
  21. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/crunch/filter_date.py +4 -8
  22. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/crunch/filter_property.py +1 -1
  23. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/download/aws.py +3 -3
  24. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/download/base.py +14 -7
  25. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/download/http.py +18 -12
  26. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/download/s3rest.py +9 -5
  27. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/search/base.py +8 -4
  28. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/search/build_search_result.py +14 -6
  29. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/search/cop_marine.py +3 -0
  30. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/search/data_request_search.py +4 -4
  31. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/search/qssearch.py +22 -29
  32. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/resources/ext_product_types.json +1 -1
  33. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/resources/providers.yml +2 -1
  34. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/rest/server.py +3 -3
  35. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/rest/stac.py +2 -2
  36. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/rest/types/queryables.py +2 -2
  37. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/types/__init__.py +27 -14
  38. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/types/queryables.py +23 -5
  39. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/utils/__init__.py +22 -1
  40. {eodag-3.4.1.post1 → eodag-3.4.3/eodag.egg-info}/PKG-INFO +2 -2
  41. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag.egg-info/SOURCES.txt +1 -0
  42. {eodag-3.4.1.post1 → eodag-3.4.3}/pyproject.toml +1 -1
  43. {eodag-3.4.1.post1 → eodag-3.4.3}/.dockerignore +0 -0
  44. {eodag-3.4.1.post1 → eodag-3.4.3}/.editorconfig +0 -0
  45. {eodag-3.4.1.post1 → eodag-3.4.3}/.gitattributes +0 -0
  46. {eodag-3.4.1.post1 → eodag-3.4.3}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  47. {eodag-3.4.1.post1 → eodag-3.4.3}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  48. {eodag-3.4.1.post1 → eodag-3.4.3}/.github/workflows/changelog.yml +0 -0
  49. {eodag-3.4.1.post1 → eodag-3.4.3}/.github/workflows/fetch.yml +0 -0
  50. {eodag-3.4.1.post1 → eodag-3.4.3}/.github/workflows/github-pages.yml +0 -0
  51. {eodag-3.4.1.post1 → eodag-3.4.3}/.github/workflows/lint-pr-title.yml +0 -0
  52. {eodag-3.4.1.post1 → eodag-3.4.3}/.github/workflows/test.yml +0 -0
  53. {eodag-3.4.1.post1 → eodag-3.4.3}/.gitignore +0 -0
  54. {eodag-3.4.1.post1 → eodag-3.4.3}/.pre-commit-config.yaml +0 -0
  55. {eodag-3.4.1.post1 → eodag-3.4.3}/BREAKING_CHANGES.rst +0 -0
  56. {eodag-3.4.1.post1 → eodag-3.4.3}/CODE_OF_CONDUCT.md +0 -0
  57. {eodag-3.4.1.post1 → eodag-3.4.3}/CONTRIBUTING.rst +0 -0
  58. {eodag-3.4.1.post1 → eodag-3.4.3}/LICENSE +0 -0
  59. {eodag-3.4.1.post1 → eodag-3.4.3}/MANIFEST.in +0 -0
  60. {eodag-3.4.1.post1 → eodag-3.4.3}/NOTICE +0 -0
  61. {eodag-3.4.1.post1 → eodag-3.4.3}/charts/eodag-server/Chart.lock +0 -0
  62. {eodag-3.4.1.post1 → eodag-3.4.3}/charts/eodag-server/README.md +0 -0
  63. {eodag-3.4.1.post1 → eodag-3.4.3}/charts/eodag-server/templates/NOTES.txt +0 -0
  64. {eodag-3.4.1.post1 → eodag-3.4.3}/charts/eodag-server/templates/_helpers.tpl +0 -0
  65. {eodag-3.4.1.post1 → eodag-3.4.3}/charts/eodag-server/templates/configmap.yaml +0 -0
  66. {eodag-3.4.1.post1 → eodag-3.4.3}/charts/eodag-server/templates/deployment.yaml +0 -0
  67. {eodag-3.4.1.post1 → eodag-3.4.3}/charts/eodag-server/templates/extra-list.yaml +0 -0
  68. {eodag-3.4.1.post1 → eodag-3.4.3}/charts/eodag-server/templates/hpa.yaml +0 -0
  69. {eodag-3.4.1.post1 → eodag-3.4.3}/charts/eodag-server/templates/pv.yaml +0 -0
  70. {eodag-3.4.1.post1 → eodag-3.4.3}/charts/eodag-server/templates/pvc.yaml +0 -0
  71. {eodag-3.4.1.post1 → eodag-3.4.3}/charts/eodag-server/templates/secret.yaml +0 -0
  72. {eodag-3.4.1.post1 → eodag-3.4.3}/charts/eodag-server/templates/service.yaml +0 -0
  73. {eodag-3.4.1.post1 → eodag-3.4.3}/charts/eodag-server/templates/serviceaccount.yaml +0 -0
  74. {eodag-3.4.1.post1 → eodag-3.4.3}/charts/eodag-server/values.yaml +0 -0
  75. {eodag-3.4.1.post1 → eodag-3.4.3}/docker/run-stac-server.sh +0 -0
  76. {eodag-3.4.1.post1 → eodag-3.4.3}/docker/stac-browser.dockerfile +0 -0
  77. {eodag-3.4.1.post1 → eodag-3.4.3}/docker/stac-server.dockerfile +0 -0
  78. {eodag-3.4.1.post1 → eodag-3.4.3}/docker-compose.yml +0 -0
  79. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/Makefile +0 -0
  80. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/_static/custom.css +0 -0
  81. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/_static/download_methods.png +0 -0
  82. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/_static/eodag_advanced_calls_graph.svg +0 -0
  83. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/_static/eodag_bycs.png +0 -0
  84. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/_static/eodag_fetch_product_types.png +0 -0
  85. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/_static/eodag_logo_160.png +0 -0
  86. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/_static/eodag_logo_160r.png +0 -0
  87. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/_static/eodag_main_calls_graph.svg +0 -0
  88. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/_static/eodag_overview.png +0 -0
  89. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/_static/eodag_stac_client.png +0 -0
  90. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/_static/eodag_stac_server.png +0 -0
  91. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/_static/favicon-32x32.png +0 -0
  92. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/_static/params_mapping_extra.csv +0 -0
  93. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/_static/params_mapping_offline_infos.json +0 -0
  94. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/_static/params_mapping_opensearch.csv +0 -0
  95. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/_static/product_types_information.csv +0 -0
  96. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/_static/progress_1.png +0 -0
  97. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/_static/progress_1_none.png +0 -0
  98. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/_static/progress_2.png +0 -0
  99. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/_static/progress_2_none.png +0 -0
  100. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/_static/stac_browser_example.png +0 -0
  101. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/_static/stac_browser_example_600.png +0 -0
  102. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/add_product_type.rst +0 -0
  103. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/add_provider.rst +0 -0
  104. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/api_reference/assets.rst +0 -0
  105. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/api_reference/call_graphs.rst +0 -0
  106. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/api_reference/core.rst +0 -0
  107. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/api_reference/eoproduct.rst +0 -0
  108. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/api_reference/exceptions.rst +0 -0
  109. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/api_reference/index.rst +0 -0
  110. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/api_reference/searchresult.rst +0 -0
  111. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/api_reference/types.rst +0 -0
  112. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/api_reference/utils.rst +0 -0
  113. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/api_user_guide.rst +0 -0
  114. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/breaking_changes.rst +0 -0
  115. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/changelog.rst +0 -0
  116. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/cli_user_guide.rst +0 -0
  117. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/conf.py +0 -0
  118. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/contribute.rst +0 -0
  119. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/drivers.rst +0 -0
  120. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/getting_started_guide/index.rst +0 -0
  121. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/getting_started_guide/install.rst +0 -0
  122. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/getting_started_guide/overview.rst +0 -0
  123. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/getting_started_guide/product_storage_status.rst +0 -0
  124. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/getting_started_guide/product_types.rst +0 -0
  125. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/getting_started_guide/providers.rst +0 -0
  126. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/getting_started_guide/register.rst +0 -0
  127. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/getting_started_guide/side_projects.rst +0 -0
  128. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/index.rst +0 -0
  129. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/make.bat +0 -0
  130. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/api_user_guide/1_overview.ipynb +0 -0
  131. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/api_user_guide/3_configuration.ipynb +0 -0
  132. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/api_user_guide/4_search.ipynb +0 -0
  133. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/api_user_guide/5_queryables.ipynb +0 -0
  134. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/api_user_guide/6_serialize_deserialize.ipynb +0 -0
  135. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/api_user_guide/7_crunch.ipynb +0 -0
  136. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/api_user_guide/8_download.ipynb +0 -0
  137. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/api_user_guide/9_post_process.ipynb +0 -0
  138. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/api_user_guide/data/crunch_search_results.geojson +0 -0
  139. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/api_user_guide/data/download_search_results.geojson +0 -0
  140. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/intro_notebooks.ipynb +0 -0
  141. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/tutos/auxdata/Gulf_of_Trieste_seamask_UTM33.cpg +0 -0
  142. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/tutos/auxdata/Gulf_of_Trieste_seamask_UTM33.dbf +0 -0
  143. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/tutos/auxdata/Gulf_of_Trieste_seamask_UTM33.prj +0 -0
  144. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/tutos/auxdata/Gulf_of_Trieste_seamask_UTM33.qix +0 -0
  145. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/tutos/auxdata/Gulf_of_Trieste_seamask_UTM33.qpj +0 -0
  146. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/tutos/auxdata/Gulf_of_Trieste_seamask_UTM33.shp +0 -0
  147. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/tutos/auxdata/Gulf_of_Trieste_seamask_UTM33.shx +0 -0
  148. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/tutos/auxdata/sentinel2_tiling_grid_centroids.zip +0 -0
  149. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/tutos/tuto_burnt_areas_snappy.ipynb +0 -0
  150. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/tutos/tuto_cds.ipynb +0 -0
  151. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/tutos/tuto_cop_dem.ipynb +0 -0
  152. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/tutos/tuto_ecmwf.ipynb +0 -0
  153. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/tutos/tuto_meteoblue.ipynb +0 -0
  154. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/tutos/tuto_search_location_tile.ipynb +0 -0
  155. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/tutos/tuto_ship_detection.ipynb +0 -0
  156. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/tutos/tuto_stac_client.ipynb +0 -0
  157. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/tutos/tuto_wekeo.ipynb +0 -0
  158. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/params_mapping.rst +0 -0
  159. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/plugins.rst +0 -0
  160. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/plugins_reference/api.rst +0 -0
  161. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/plugins_reference/auth.rst +0 -0
  162. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/plugins_reference/crunch.rst +0 -0
  163. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/plugins_reference/download.rst +0 -0
  164. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/plugins_reference/search.rst +0 -0
  165. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/stac.rst +0 -0
  166. {eodag-3.4.1.post1 → eodag-3.4.3}/docs/tutos.rst +0 -0
  167. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/__init__.py +0 -0
  168. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/api/__init__.py +0 -0
  169. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/api/product/__init__.py +0 -0
  170. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/api/product/_assets.py +0 -0
  171. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/api/product/drivers/__init__.py +0 -0
  172. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/api/product/drivers/base.py +0 -0
  173. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/api/product/drivers/generic.py +0 -0
  174. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/api/product/drivers/sentinel1.py +0 -0
  175. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/api/product/drivers/sentinel2.py +0 -0
  176. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/api/search_result.py +0 -0
  177. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/cli.py +0 -0
  178. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/crunch.py +0 -0
  179. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/__init__.py +0 -0
  180. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/apis/__init__.py +0 -0
  181. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/apis/base.py +0 -0
  182. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/authentication/__init__.py +0 -0
  183. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/authentication/aws_auth.py +0 -0
  184. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/authentication/base.py +0 -0
  185. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/authentication/header.py +0 -0
  186. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/authentication/keycloak.py +0 -0
  187. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/authentication/oauth.py +0 -0
  188. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/authentication/qsauth.py +0 -0
  189. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/authentication/token.py +0 -0
  190. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/authentication/token_exchange.py +0 -0
  191. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/base.py +0 -0
  192. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/crunch/__init__.py +0 -0
  193. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/crunch/base.py +0 -0
  194. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/crunch/filter_latest_intersect.py +0 -0
  195. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/crunch/filter_latest_tpl_name.py +0 -0
  196. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/crunch/filter_overlap.py +0 -0
  197. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/download/__init__.py +0 -0
  198. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/download/creodias_s3.py +0 -0
  199. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/manager.py +0 -0
  200. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/search/__init__.py +0 -0
  201. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/search/creodias_s3.py +0 -0
  202. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/search/csw.py +0 -0
  203. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/search/stac_list_assets.py +0 -0
  204. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/search/static_stac_search.py +0 -0
  205. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/py.typed +0 -0
  206. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/resources/locations_conf_template.yml +0 -0
  207. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/resources/product_types.yml +0 -0
  208. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/resources/shp/ne_110m_admin_0_map_units.VERSION.txt +0 -0
  209. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/resources/shp/ne_110m_admin_0_map_units.cpg +0 -0
  210. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/resources/shp/ne_110m_admin_0_map_units.dbf +0 -0
  211. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/resources/shp/ne_110m_admin_0_map_units.prj +0 -0
  212. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/resources/shp/ne_110m_admin_0_map_units.shp +0 -0
  213. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/resources/shp/ne_110m_admin_0_map_units.shx +0 -0
  214. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/resources/stac.yml +0 -0
  215. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/resources/stac_api.yml +0 -0
  216. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/resources/stac_provider.yml +0 -0
  217. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/resources/user_conf_template.yml +0 -0
  218. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/rest/__init__.py +0 -0
  219. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/rest/cache.py +0 -0
  220. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/rest/config.py +0 -0
  221. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/rest/constants.py +0 -0
  222. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/rest/core.py +0 -0
  223. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/rest/errors.py +0 -0
  224. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/rest/server.wsgi +0 -0
  225. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/rest/templates/README +0 -0
  226. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/rest/types/__init__.py +0 -0
  227. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/rest/types/collections_search.py +0 -0
  228. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/rest/types/eodag_search.py +0 -0
  229. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/rest/types/stac_search.py +0 -0
  230. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/rest/utils/__init__.py +0 -0
  231. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/rest/utils/cql_evaluate.py +0 -0
  232. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/rest/utils/rfc3339.py +0 -0
  233. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/types/bbox.py +0 -0
  234. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/types/download_args.py +0 -0
  235. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/types/search_args.py +0 -0
  236. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/types/whoosh.py +0 -0
  237. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/utils/exceptions.py +0 -0
  238. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/utils/import_system.py +0 -0
  239. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/utils/logging.py +0 -0
  240. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/utils/notebook.py +0 -0
  241. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/utils/repr.py +0 -0
  242. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/utils/requests.py +0 -0
  243. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/utils/rest.py +0 -0
  244. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/utils/s3.py +0 -0
  245. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/utils/stac_reader.py +0 -0
  246. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag.egg-info/dependency_links.txt +0 -0
  247. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag.egg-info/entry_points.txt +0 -0
  248. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag.egg-info/requires.txt +0 -0
  249. {eodag-3.4.1.post1 → eodag-3.4.3}/eodag.egg-info/top_level.txt +0 -0
  250. {eodag-3.4.1.post1 → eodag-3.4.3}/get_pypi_latest_version.sh +0 -0
  251. {eodag-3.4.1.post1 → eodag-3.4.3}/pytest.ini +0 -0
  252. {eodag-3.4.1.post1 → eodag-3.4.3}/readthedocs.yml +0 -0
  253. {eodag-3.4.1.post1 → eodag-3.4.3}/requirements-dev.txt +0 -0
  254. {eodag-3.4.1.post1 → eodag-3.4.3}/requirements-docs.txt +0 -0
  255. {eodag-3.4.1.post1 → eodag-3.4.3}/requirements-tutorials.txt +0 -0
  256. {eodag-3.4.1.post1 → eodag-3.4.3}/requirements.txt +0 -0
  257. {eodag-3.4.1.post1 → eodag-3.4.3}/setup.cfg +0 -0
  258. {eodag-3.4.1.post1 → eodag-3.4.3}/setup.py +0 -0
  259. {eodag-3.4.1.post1 → eodag-3.4.3}/tox.ini +0 -0
  260. {eodag-3.4.1.post1 → eodag-3.4.3}/utils/params_mapping_to_csv.py +0 -0
  261. {eodag-3.4.1.post1 → eodag-3.4.3}/utils/product_types_information_to_csv.py +0 -0
@@ -1,5 +1,5 @@
1
1
  ### Your checklist for this pull request
2
- Please review the [guidelines for contributing](../CONTRIBUTING.md) to this repository.
2
+ Please review the [guidelines for contributing](https://eodag.readthedocs.io/en/latest/contribute.html) to this repository.
3
3
 
4
4
  - [ ] Make sure you are making a pull request against the **develop branch** (left side). Also you should start *your branch* off *our develop*.
5
5
  - [ ] Check the commit's or even all commits' message styles matches our requested structure.
@@ -0,0 +1,72 @@
1
+ name: Deploy if ready
2
+
3
+ on:
4
+ pull_request:
5
+ types: [closed]
6
+ branches: [develop]
7
+ workflow_dispatch:
8
+
9
+ jobs:
10
+ # job will be executed when 'new-release' branch is merged in 'develop', or manually
11
+ merge-and-tag:
12
+ if: ${{ (github.event.pull_request.merged == true && github.head_ref == 'new-release') || github.event_name == 'workflow_dispatch' }}
13
+ runs-on: ubuntu-latest
14
+ steps:
15
+ - name: Dump GitHub context
16
+ env:
17
+ GITHUB_CONTEXT: ${{ toJson(github) }}
18
+ run: echo "$GITHUB_CONTEXT"
19
+ - name: Checkout the repo
20
+ uses: actions/checkout@v4
21
+ with:
22
+ # Get history and tags for SCM versioning to work
23
+ fetch-depth: 0
24
+ - name: Install the latest version of uv with cache enabled
25
+ uses: astral-sh/setup-uv@v3
26
+ with:
27
+ version: "latest"
28
+ enable-cache: true
29
+ cache-dependency-glob: ""
30
+ - name: Install python-semantic-release in venv
31
+ run: |
32
+ uv venv
33
+ source .venv/bin/activate
34
+ uv pip install python-semantic-release packaging
35
+ - name: Set Git config
36
+ run: |
37
+ git config user.name "github-actions[bot]"
38
+ git config user.email "'github-actions[bot]@users.noreply.github.com"
39
+ - name: Git merge develop in master
40
+ run: |
41
+ git checkout master
42
+ git merge --no-ff origin/develop
43
+ git push origin master
44
+ - name: Git tag
45
+ run: |
46
+ source .venv/bin/activate
47
+ NEW_TAG=$(semantic-release --noop version --print-tag)
48
+ git tag "$NEW_TAG"
49
+ git push origin tag "$NEW_TAG"
50
+
51
+ publish:
52
+ needs: merge-and-tag
53
+ uses: CS-SI/eodag/.github/workflows/publish.yml@develop
54
+
55
+ post-deploy:
56
+ needs: publish
57
+ runs-on: ubuntu-latest
58
+ steps:
59
+ - name: Checkout the repo
60
+ uses: actions/checkout@v4
61
+ with:
62
+ # Get history and tags for SCM versioning to work
63
+ fetch-depth: 0
64
+ - name: Set Git config
65
+ run: |
66
+ git config user.name "github-actions[bot]"
67
+ git config user.email "'github-actions[bot]@users.noreply.github.com"
68
+ - name: Git merge master in develop
69
+ run: |
70
+ git checkout develop
71
+ git merge --no-ff origin/master
72
+ git push origin develop
@@ -1,12 +1,13 @@
1
1
  name: Publish to PyPI
2
2
 
3
3
  on:
4
- push:
5
- tags:
6
- - "v*"
4
+ # reusable workflow
5
+ workflow_call:
6
+ # manually triggerable
7
7
  workflow_dispatch:
8
8
 
9
9
  jobs:
10
+ # job will be executed when 'Pre-deploy' workflow succeeds, or manually
10
11
  build-n-publish:
11
12
  name: Build and publish to PyPI
12
13
  runs-on: ubuntu-latest
@@ -3,6 +3,94 @@ Release history
3
3
  ===============
4
4
 
5
5
 
6
+ v3.4.3 (2025-06-12)
7
+ ===================
8
+
9
+ Bug Fixes
10
+ ---------
11
+
12
+ * **core**: Queryables mismatch when list of possible values contains a single value (`#1666`_,
13
+ `538331d`_)
14
+
15
+ * **plugins**: GenericAuth missing credentials handle (`#1678`_, `576a2ac`_)
16
+
17
+ * **plugins**: Openid_connect requests error handling (#1320) (`#1663`_, `9926083`_)
18
+
19
+ * **plugins**: Order retry (`#1676`_, `3602426`_)
20
+
21
+ * **providers**: Dedl mapping for CORINE collection (`#1661`_, `4c61b54`_)
22
+
23
+ * **providers**: Wekeo_main orderable products download (`#1670`_, `d573846`_)
24
+
25
+ Chores
26
+ ------
27
+
28
+ * **deploy**: Remove deprecated common values (`154ea6d`_)
29
+
30
+ Documentation
31
+ -------------
32
+
33
+ * Configuration environment variables defaults (`#1681`_, `6e8eb6b`_)
34
+
35
+ * Updated contribution guidelines link in PR template (`#1667`_, `e5cd082`_)
36
+
37
+ Refactoring
38
+ -----------
39
+
40
+ * Typing fixes following mypy 1.16.0 (`#1673`_, `ece52c0`_)
41
+
42
+ .. _#1661: https://github.com/CS-SI/eodag/pull/1661
43
+ .. _#1663: https://github.com/CS-SI/eodag/pull/1663
44
+ .. _#1666: https://github.com/CS-SI/eodag/pull/1666
45
+ .. _#1667: https://github.com/CS-SI/eodag/pull/1667
46
+ .. _#1670: https://github.com/CS-SI/eodag/pull/1670
47
+ .. _#1673: https://github.com/CS-SI/eodag/pull/1673
48
+ .. _#1676: https://github.com/CS-SI/eodag/pull/1676
49
+ .. _#1678: https://github.com/CS-SI/eodag/pull/1678
50
+ .. _#1681: https://github.com/CS-SI/eodag/pull/1681
51
+ .. _154ea6d: https://github.com/CS-SI/eodag/commit/154ea6d035572e64c3a434bb41c095c9b4cc76b2
52
+ .. _3602426: https://github.com/CS-SI/eodag/commit/360242653ddc2a5c8587b37b3d91800459f4c243
53
+ .. _4c61b54: https://github.com/CS-SI/eodag/commit/4c61b540ee46a8ae70932d64e9d373653763eb16
54
+ .. _538331d: https://github.com/CS-SI/eodag/commit/538331d30085a814307173913ff831ca5a3397af
55
+ .. _576a2ac: https://github.com/CS-SI/eodag/commit/576a2ac95044d10367e91e5ef843fb33a921f5f5
56
+ .. _6e8eb6b: https://github.com/CS-SI/eodag/commit/6e8eb6b94eaad6294fea45d764a0e7c18a4e6823
57
+ .. _9926083: https://github.com/CS-SI/eodag/commit/99260837837c3b5f2eeac8b95dc2b2feae7a0390
58
+ .. _d573846: https://github.com/CS-SI/eodag/commit/d5738465930e08b24d562af3b7bc040464ff970a
59
+ .. _e5cd082: https://github.com/CS-SI/eodag/commit/e5cd082aa81eedb62cd48b7974362c99a6899d9c
60
+ .. _ece52c0: https://github.com/CS-SI/eodag/commit/ece52c07685e5df21cfda0b6ddc6a7416194406c
61
+
62
+
63
+ v3.4.2 (2025-05-15)
64
+ ===================
65
+
66
+ Bug Fixes
67
+ ---------
68
+
69
+ * **core**: Remove quotes around arrays in query param (`#1657`_, `b717e45`_)
70
+
71
+ * **plugins**: Adapt queryables additional_properties to providers config (`#1646`_, `cc6ecc9`_)
72
+
73
+ * **plugins**: Add alias to properties in cop_marine and EcmwfSearch plugins (`#1649`_, `ae93d5a`_)
74
+
75
+ * **plugins**: Ecmwfsearch orderable products search (`#1656`_, `a399a5b`_)
76
+
77
+ Continuous Integration
78
+ ----------------------
79
+
80
+ * Automatic deployment (`#1655`_, `4fbdf8b`_)
81
+
82
+ .. _#1646: https://github.com/CS-SI/eodag/pull/1646
83
+ .. _#1649: https://github.com/CS-SI/eodag/pull/1649
84
+ .. _#1655: https://github.com/CS-SI/eodag/pull/1655
85
+ .. _#1656: https://github.com/CS-SI/eodag/pull/1656
86
+ .. _#1657: https://github.com/CS-SI/eodag/pull/1657
87
+ .. _4fbdf8b: https://github.com/CS-SI/eodag/commit/4fbdf8ba4d2cece05bede65e18438ecdc8029a69
88
+ .. _a399a5b: https://github.com/CS-SI/eodag/commit/a399a5b1d5457cdfcab355f8e2b4c440982ba65f
89
+ .. _ae93d5a: https://github.com/CS-SI/eodag/commit/ae93d5a6c58476dad2461d9dde663aa31356dff9
90
+ .. _b717e45: https://github.com/CS-SI/eodag/commit/b717e456fb23e59e9dfb6a99b5e30b697be73232
91
+ .. _cc6ecc9: https://github.com/CS-SI/eodag/commit/cc6ecc9979bfee420ff75cd919c3f90ae73689bb
92
+
93
+
6
94
  v3.4.1 (2025-05-12)
7
95
  ===================
8
96
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: eodag
3
- Version: 3.4.1.post1
3
+ Version: 3.4.3
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.4.1
320
+ docker run -p 5000:5000 --rm csspace/eodag-server:3.4.3
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.4.1
190
+ docker run -p 5000:5000 --rm csspace/eodag-server:3.4.3
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.4.1
2
+ appVersion: 3.4.3
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.4.1
18
+ version: 3.4.3
@@ -18,7 +18,7 @@ metadata:
18
18
  {{- end }}
19
19
  {{- end }}
20
20
  spec:
21
- {{- if and .Values.ingress.ingressClassName (eq "true" (include "common.ingress.supportsIngressClassname" .)) }}
21
+ {{- if .Values.ingress.ingressClassName }}
22
22
  ingressClassName: {{ .Values.ingress.ingressClassName | quote }}
23
23
  {{- end }}
24
24
  rules:
@@ -30,9 +30,7 @@ spec:
30
30
  {{- toYaml .Values.ingress.extraPaths | nindent 10 }}
31
31
  {{- end }}
32
32
  - path: {{ .Values.ingress.path }}
33
- {{- if eq "true" (include "common.ingress.supportsPathType" .) }}
34
33
  pathType: {{ .Values.ingress.pathType }}
35
- {{- end }}
36
34
  backend: {{- include "common.ingress.backend" (dict "serviceName" (include "common.names.fullname" .) "servicePort" .Values.ingress.servicePort "context" $) | nindent 14 }}
37
35
  {{- end }}
38
36
  {{- range .Values.ingress.extraHosts }}
@@ -40,9 +38,7 @@ spec:
40
38
  http:
41
39
  paths:
42
40
  - path: {{ default "/" .path }}
43
- {{- if eq "true" (include "common.ingress.supportsPathType" $) }}
44
41
  pathType: {{ default "ImplementationSpecific" .pathType }}
45
- {{- end }}
46
42
  backend: {{- include "common.ingress.backend" (dict "serviceName" (include "common.names.fullname" $) "servicePort" .Values.ingress.servicePort "context" $) | nindent 14 }}
47
43
  {{- end }}
48
44
  {{- if .Values.ingress.extraRules }}
@@ -142,16 +142,21 @@ Core configuration using environment variables
142
142
 
143
143
  Some EODAG core settings can be overriden using environment variables:
144
144
 
145
- * ``EODAG_CFG_DIR`` customized configuration directory in place of ``~/.config/eodag``
145
+ * ``EODAG_CFG_DIR`` customized configuration directory in place of `~/.config/eodag`.
146
146
  * ``EODAG_CFG_FILE`` for defining the desired path to the `user configuration file\
147
147
  <https://eodag.readthedocs.io/en/stable/getting_started_guide/configure.html#yaml-user-configuration-file>`_
148
+ in place of `~/.config/eodag/eodag.yml`.
148
149
  * ``EODAG_LOCS_CFG_FILE`` for defining the desired path to the
149
150
  `locations <https://eodag.readthedocs.io/en/stable/notebooks/api_user_guide/4_search.html#Locations-search>`_
150
- configuration file
151
- * ``EODAG_PROVIDERS_CFG_FILE`` for defining the desired path to the providers configuration file
152
- * ``EODAG_PRODUCT_TYPES_CFG_FILE`` for defining the desired path to the product types configuration file
151
+ configuration file in place of `~/.config/eodag/locations.yml`.
152
+ * ``EODAG_PROVIDERS_CFG_FILE`` for defining the desired path to the providers configuration file in place of
153
+ `<python-site-packages>/eodag/resources/providers.yml`.
154
+ * ``EODAG_PRODUCT_TYPES_CFG_FILE`` for defining the desired path to the product types configuration file in place of
155
+ `<python-site-packages>/eodag/resources/product_types.yml`.
153
156
  * ``EODAG_EXT_PRODUCT_TYPES_CFG_FILE`` for defining the desired path to the `external product types configuration file\
154
157
  <https://eodag.readthedocs.io/en/stable/notebooks/api_user_guide/2_providers_products_available.html#Product-types-discovery>`_
158
+ in place of https://cs-si.github.io/eodag/eodag/resources/ext_product_types.json.
159
+ If the file is not readable, only user-modified providers will be fetched.
155
160
 
156
161
  CLI configuration
157
162
  ^^^^^^^^^^^^^^^^^
@@ -702,7 +702,7 @@
702
702
  "\n",
703
703
  "In EODAG, the discovered *EODAG external product types configuration file* can be set to:\n",
704
704
  "\n",
705
- "* a file automatically built from github actions and stored in [eodag/resources/ext_product_types.json](https://raw.githubusercontent.com/CS-SI/eodag/develop/eodag/resources/ext_product_types.json) (default settings)\n",
705
+ "* a file automatically built from github actions and stored in [eodag/resources/ext_product_types.json](https://cs-si.github.io/eodag/eodag/resources/ext_product_types.json) (default settings)\n",
706
706
  "* a custom remote or local file by setting its path in `EODAG_EXT_PRODUCT_TYPES_CFG_FILE` environment variable (if the file is not readable, only user-modified providers will be fetched).\n",
707
707
  "\n",
708
708
  "Then, when listing product types using [list_product_types(fetch_providers=True)](../../api_reference/core.rst#eodag.api.core.EODataAccessGateway.list_product_types), EODAG will first read the content of the *EODAG external product types configuration file* using [fetch_product_types_list()](../../api_reference/core.rst#eodag.api.core.EODataAccessGateway.fetch_product_types_list) \n",
@@ -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.4.1
118
+ $ docker run -p 5000:5000 --rm csspace/eodag-server:3.4.3
119
119
 
120
120
  Example
121
121
  -------
@@ -658,7 +658,7 @@ class EODataAccessGateway:
658
658
  discovery_conf = getattr(
659
659
  provider_search_config, "discover_product_types", {}
660
660
  )
661
- if discovery_conf.get("fetch_url", None):
661
+ if discovery_conf.get("fetch_url"):
662
662
  providers_discovery_configs_fetchable[
663
663
  provider_to_fetch
664
664
  ] = discovery_conf
@@ -744,7 +744,7 @@ class EODataAccessGateway:
744
744
  user_discovery_conf == default_discovery_conf
745
745
  or user_discovery_conf == default_discovery_conf_parsed
746
746
  ) and (
747
- not default_discovery_conf.get("fetch_url", None)
747
+ not default_discovery_conf.get("fetch_url")
748
748
  or "ext_product_types_conf" not in locals()
749
749
  or "ext_product_types_conf" in locals()
750
750
  and (
@@ -856,7 +856,7 @@ class EODataAccessGateway:
856
856
  continue
857
857
  if not getattr(
858
858
  search_plugin_config, "discover_product_types", {}
859
- ).get("fetch_url", None):
859
+ ).get("fetch_url"):
860
860
  # conf has been updated and provider product types are no more discoverable
861
861
  continue
862
862
  provider_products_config = (
@@ -980,7 +980,7 @@ class EODataAccessGateway:
980
980
  product_types = [
981
981
  k
982
982
  for k, v in self.product_types_config.items()
983
- if v.get("alias", None) == alias_or_id
983
+ if v.get("alias") == alias_or_id
984
984
  ]
985
985
 
986
986
  if len(product_types) > 1:
@@ -1310,8 +1310,8 @@ class EODataAccessGateway:
1310
1310
  # since it might be modified if the next_page_url mechanism is used by the
1311
1311
  # plugin. (same thing for next_page_query_obj, next_page_query_obj with POST reqs)
1312
1312
  pagination_config = getattr(search_plugin.config, "pagination", {})
1313
- prev_next_page_url_tpl = pagination_config.get("next_page_url_tpl", None)
1314
- prev_next_page_query_obj = pagination_config.get("next_page_query_obj", None)
1313
+ prev_next_page_url_tpl = pagination_config.get("next_page_url_tpl")
1314
+ prev_next_page_query_obj = pagination_config.get("next_page_query_obj")
1315
1315
  # Page has to be set to a value even if use_next is True, this is required
1316
1316
  # internally by the search plugin (see collect_search_urls)
1317
1317
  kwargs.update(
@@ -1549,7 +1549,7 @@ class EODataAccessGateway:
1549
1549
  :param kwargs: Search criteria to help finding the right product
1550
1550
  :returns: A search result with one EO product or None at all
1551
1551
  """
1552
- product_type = kwargs.get("productType", None)
1552
+ product_type = kwargs.get("productType")
1553
1553
  if product_type is not None:
1554
1554
  try:
1555
1555
  product_type = self.get_product_type_from_alias(product_type)
@@ -1686,7 +1686,7 @@ class EODataAccessGateway:
1686
1686
  * other criteria compatible with the provider
1687
1687
  :returns: Search plugins list and the prepared kwargs to make a query.
1688
1688
  """
1689
- product_type = kwargs.get("productType", None)
1689
+ product_type: Optional[str] = kwargs.get("productType")
1690
1690
  if product_type is None:
1691
1691
  try:
1692
1692
  guesses = self.guess_product_type(**kwargs)
@@ -1706,7 +1706,7 @@ class EODataAccessGateway:
1706
1706
  # By now, only use the best bet
1707
1707
  product_type = guesses[0]
1708
1708
  except NoMatchingProductType:
1709
- queried_id = kwargs.get("id", None)
1709
+ queried_id = kwargs.get("id")
1710
1710
  if queried_id is None:
1711
1711
  logger.info(
1712
1712
  "No product type could be guessed with provided arguments"
@@ -1750,7 +1750,7 @@ class EODataAccessGateway:
1750
1750
  product_type
1751
1751
  not in self._plugins_manager.product_type_to_provider_config_map.keys()
1752
1752
  ):
1753
- if provider:
1753
+ if provider and product_type:
1754
1754
  # Try to get specific product type from external provider
1755
1755
  logger.debug(f"Fetching {provider} to find {product_type} product type")
1756
1756
  self._fetch_external_product_type(provider, product_type)
@@ -1795,7 +1795,8 @@ class EODataAccessGateway:
1795
1795
  # Add product_types_config to plugin config. This dict contains product
1796
1796
  # type metadata that will also be stored in each product's properties.
1797
1797
  for search_plugin in search_plugins:
1798
- self._attach_product_type_config(search_plugin, product_type)
1798
+ if product_type is not None:
1799
+ self._attach_product_type_config(search_plugin, product_type)
1799
1800
 
1800
1801
  return search_plugins, kwargs
1801
1802
 
@@ -143,7 +143,7 @@ class EOProduct:
143
143
  and "defaultGeometry" not in properties
144
144
  ):
145
145
  raise MisconfiguredError(
146
- f"No geometry available to build EOProduct(id={properties.get('id', None)}, provider={provider})"
146
+ f"No geometry available to build EOProduct(id={properties.get('id')}, provider={provider})"
147
147
  )
148
148
  elif not properties["geometry"] or properties["geometry"] == NOT_AVAILABLE:
149
149
  product_geometry = properties.pop("defaultGeometry", DEFAULT_GEOMETRY)
@@ -445,7 +445,7 @@ class EOProduct:
445
445
  }
446
446
  )
447
447
 
448
- if self.properties.get("quicklook", None) is None:
448
+ if self.properties.get("quicklook") is None:
449
449
  logger.warning(
450
450
  "Missing information to retrieve quicklook for EO product: %s",
451
451
  self.properties["id"],
@@ -555,7 +555,7 @@ class EOProduct:
555
555
  return NoDriver()
556
556
 
557
557
  def _repr_html_(self):
558
- thumbnail = self.properties.get("thumbnail", None)
558
+ thumbnail = self.properties.get("thumbnail")
559
559
  thumbnail_html = (
560
560
  f"<img src='{thumbnail}' width=100 alt='thumbnail'/>"
561
561
  if thumbnail and not thumbnail.startswith("s3")
@@ -576,12 +576,12 @@ class EOProduct:
576
576
  {dict_to_html_table({
577
577
  "provider": self.provider,
578
578
  "product_type": self.product_type,
579
- "properties[&quot;id&quot;]": self.properties.get('id', None),
579
+ "properties[&quot;id&quot;]": self.properties.get('id'),
580
580
  "properties[&quot;startTimeFromAscendingNode&quot;]": self.properties.get(
581
- 'startTimeFromAscendingNode', None
581
+ 'startTimeFromAscendingNode'
582
582
  ),
583
583
  "properties[&quot;completionTimeFromAscendingNode&quot;]": self.properties.get(
584
- 'completionTimeFromAscendingNode', None
584
+ 'completionTimeFromAscendingNode'
585
585
  ),
586
586
  }, brackets=False)}
587
587
  <details><summary style='color: grey; margin-top: 10px;'>properties:&ensp;({len(
@@ -49,6 +49,7 @@ from eodag.utils import (
49
49
  get_timestamp,
50
50
  items_recursive_apply,
51
51
  nested_pairs2dict,
52
+ remove_str_array_quotes,
52
53
  sanitize,
53
54
  string_to_jsonpath,
54
55
  update_nested_dict,
@@ -423,7 +424,7 @@ def format_metadata(search_param: str, *args: Any, **kwargs: Any) -> str:
423
424
  return Polygon(polygon_args)
424
425
  elif len(georss) == 1 and "multisurface" in georss[0].tag.lower():
425
426
  # Multipolygon
426
- from_proj = getattr(georss[0], "attrib", {}).get("srsName", None)
427
+ from_proj = getattr(georss[0], "attrib", {}).get("srsName")
427
428
  if from_proj:
428
429
  from_proj = pyproj.CRS(from_proj)
429
430
  to_proj = pyproj.CRS(DEFAULT_PROJ)
@@ -1029,8 +1030,8 @@ def properties_from_json(
1029
1030
  if not discovery_config:
1030
1031
  discovery_config = {}
1031
1032
 
1032
- discovery_pattern = discovery_config.get("metadata_pattern", None)
1033
- discovery_path = discovery_config.get("metadata_path", None)
1033
+ discovery_pattern = discovery_config.get("metadata_pattern")
1034
+ discovery_path = discovery_config.get("metadata_path")
1034
1035
  if discovery_pattern and discovery_path:
1035
1036
  discovery_jsonpath = string_to_jsonpath(discovery_path)
1036
1037
  discovered_properties = (
@@ -1214,8 +1215,8 @@ def properties_from_xml(
1214
1215
  # adds missing discovered properties
1215
1216
  if not discovery_config:
1216
1217
  discovery_config = {}
1217
- discovery_pattern = discovery_config.get("metadata_pattern", None)
1218
- discovery_path = discovery_config.get("metadata_path", None)
1218
+ discovery_pattern = discovery_config.get("metadata_pattern")
1219
+ discovery_path = discovery_config.get("metadata_path")
1219
1220
  if discovery_pattern and discovery_path:
1220
1221
  discovered_properties = root.xpath(
1221
1222
  discovery_path,
@@ -1317,6 +1318,10 @@ def format_query_params(
1317
1318
  # retrieve values from hashes where keys are given in the param
1318
1319
  if "}[" in formatted_query_param:
1319
1320
  formatted_query_param = _resolve_hashes(formatted_query_param)
1321
+ # remove quotes around arrays
1322
+ formatted_query_param = remove_str_array_quotes(
1323
+ formatted_query_param
1324
+ )
1320
1325
  # json query string (for POST request)
1321
1326
  update_nested_dict(
1322
1327
  query_params,
@@ -1519,7 +1524,7 @@ def get_provider_queryable_path(
1519
1524
  :param metadata_mapping: metadata-mapping configuration
1520
1525
  :returns: EODAG configured queryable path or None
1521
1526
  """
1522
- parameter_conf = metadata_mapping.get(queryable, None)
1527
+ parameter_conf = metadata_mapping.get(queryable)
1523
1528
  if isinstance(parameter_conf, list):
1524
1529
  return parameter_conf[0]
1525
1530
  else:
@@ -851,7 +851,7 @@ def override_config_from_env(config: dict[str, Any]) -> None:
851
851
  iter_parts = iter(parts)
852
852
  env_type = get_type_hints(PluginConfig).get(next(iter_parts, ""), str)
853
853
  child_env_type = (
854
- get_type_hints(env_type).get(next(iter_parts, ""), None)
854
+ get_type_hints(env_type).get(next(iter_parts, ""))
855
855
  if isclass(env_type)
856
856
  else None
857
857
  )
@@ -961,7 +961,7 @@ def merge_configs(config: dict[str, Any], other_config: dict[str, Any]) -> None:
961
961
  other_config = dict(config, **other_config)
962
962
 
963
963
  for provider, new_conf in other_config.items():
964
- old_conf = config.get(provider, None)
964
+ old_conf = config.get(provider)
965
965
 
966
966
  if old_conf:
967
967
  # update non-objects values
@@ -123,16 +123,14 @@ class EcmwfApi(Api, ECMWFSearch):
123
123
  # start date
124
124
  if "startTimeFromAscendingNode" not in kwargs:
125
125
  kwargs["startTimeFromAscendingNode"] = (
126
- getattr(self.config, "product_type_config", {}).get(
127
- "missionStartDate", None
128
- )
126
+ getattr(self.config, "product_type_config", {}).get("missionStartDate")
129
127
  or DEFAULT_MISSION_START_DATE
130
128
  )
131
129
  # end date
132
130
  if "completionTimeFromAscendingNode" not in kwargs:
133
131
  kwargs["completionTimeFromAscendingNode"] = getattr(
134
132
  self.config, "product_type_config", {}
135
- ).get("missionEndDate", None) or datetime.now(timezone.utc).isoformat(
133
+ ).get("missionEndDate") or datetime.now(timezone.utc).isoformat(
136
134
  timespec="seconds"
137
135
  )
138
136
 
@@ -149,8 +147,8 @@ class EcmwfApi(Api, ECMWFSearch):
149
147
  :raises: :class:`~eodag.utils.exceptions.AuthenticationError`
150
148
  """
151
149
  # Get credentials from eodag or using ecmwf conf
152
- email = getattr(self.config, "credentials", {}).get("username", None)
153
- key = getattr(self.config, "credentials", {}).get("password", None)
150
+ email = getattr(self.config, "credentials", {}).get("username")
151
+ key = getattr(self.config, "credentials", {}).get("password")
154
152
  url = getattr(self.config, "auth_endpoint", None)
155
153
  if not all([email, key, url]):
156
154
  key, url, email = get_apikey_values()
@@ -295,5 +293,5 @@ class EcmwfApi(Api, ECMWFSearch):
295
293
  arguments)
296
294
  :returns: fetched queryable parameters dict
297
295
  """
298
- product_type = kwargs.get("productType", None)
296
+ product_type = kwargs.get("productType")
299
297
  return self.queryables_from_metadata_mapping(product_type)
@@ -241,7 +241,7 @@ class UsgsApi(Api):
241
241
  download_options = api.download_options(
242
242
  usgs_dataset, list(results_by_entity_id.keys())
243
243
  )
244
- if download_options.get("data", None) is not None:
244
+ if download_options.get("data") is not None:
245
245
  for download_option in download_options["data"]:
246
246
  # update results with available downloadSystem
247
247
  if (
@@ -46,7 +46,11 @@ class GenericAuth(Authentication):
46
46
  """Authenticate"""
47
47
  self.validate_config_credentials()
48
48
  method = getattr(self.config, "method", "basic")
49
-
49
+ if not all(x in self.config.credentials for x in ["username", "password"]):
50
+ raise MisconfiguredError(
51
+ f"Missing credentials for provider {self.provider}",
52
+ "You must provide 'username' and 'password' in the configuration.",
53
+ )
50
54
  if method == "digest":
51
55
  return HTTPDigestAuth(
52
56
  self.config.credentials["username"],