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.
- {eodag-3.4.1.post1 → eodag-3.4.3}/.github/pull_request_template.md +1 -1
- eodag-3.4.3/.github/workflows/deploy.yml +72 -0
- eodag-3.4.1.post1/.github/workflows/deploy.yml → eodag-3.4.3/.github/workflows/publish.yml +4 -3
- {eodag-3.4.1.post1 → eodag-3.4.3}/CHANGES.rst +88 -0
- {eodag-3.4.1.post1/eodag.egg-info → eodag-3.4.3}/PKG-INFO +2 -2
- {eodag-3.4.1.post1 → eodag-3.4.3}/README.rst +1 -1
- {eodag-3.4.1.post1 → eodag-3.4.3}/charts/eodag-server/Chart.yaml +2 -2
- {eodag-3.4.1.post1 → eodag-3.4.3}/charts/eodag-server/templates/ingress.yaml +1 -5
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/getting_started_guide/configure.rst +9 -4
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/api_user_guide/2_providers_products_available.ipynb +1 -1
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/stac_rest.rst +1 -1
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/api/core.py +12 -11
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/api/product/_product.py +6 -6
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/api/product/metadata_mapping.py +11 -6
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/config.py +2 -2
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/apis/ecmwf.py +5 -7
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/apis/usgs.py +1 -1
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/authentication/generic.py +5 -1
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/authentication/openid_connect.py +68 -30
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/authentication/sas_auth.py +1 -1
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/crunch/filter_date.py +4 -8
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/crunch/filter_property.py +1 -1
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/download/aws.py +3 -3
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/download/base.py +14 -7
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/download/http.py +18 -12
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/download/s3rest.py +9 -5
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/search/base.py +8 -4
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/search/build_search_result.py +14 -6
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/search/cop_marine.py +3 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/search/data_request_search.py +4 -4
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/search/qssearch.py +22 -29
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/resources/ext_product_types.json +1 -1
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/resources/providers.yml +2 -1
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/rest/server.py +3 -3
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/rest/stac.py +2 -2
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/rest/types/queryables.py +2 -2
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/types/__init__.py +27 -14
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/types/queryables.py +23 -5
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/utils/__init__.py +22 -1
- {eodag-3.4.1.post1 → eodag-3.4.3/eodag.egg-info}/PKG-INFO +2 -2
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag.egg-info/SOURCES.txt +1 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/pyproject.toml +1 -1
- {eodag-3.4.1.post1 → eodag-3.4.3}/.dockerignore +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/.editorconfig +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/.gitattributes +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/.github/workflows/changelog.yml +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/.github/workflows/fetch.yml +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/.github/workflows/github-pages.yml +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/.github/workflows/lint-pr-title.yml +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/.github/workflows/test.yml +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/.gitignore +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/.pre-commit-config.yaml +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/BREAKING_CHANGES.rst +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/CODE_OF_CONDUCT.md +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/CONTRIBUTING.rst +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/LICENSE +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/MANIFEST.in +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/NOTICE +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/charts/eodag-server/Chart.lock +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/charts/eodag-server/README.md +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/charts/eodag-server/templates/NOTES.txt +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/charts/eodag-server/templates/_helpers.tpl +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/charts/eodag-server/templates/configmap.yaml +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/charts/eodag-server/templates/deployment.yaml +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/charts/eodag-server/templates/extra-list.yaml +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/charts/eodag-server/templates/hpa.yaml +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/charts/eodag-server/templates/pv.yaml +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/charts/eodag-server/templates/pvc.yaml +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/charts/eodag-server/templates/secret.yaml +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/charts/eodag-server/templates/service.yaml +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/charts/eodag-server/templates/serviceaccount.yaml +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/charts/eodag-server/values.yaml +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docker/run-stac-server.sh +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docker/stac-browser.dockerfile +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docker/stac-server.dockerfile +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docker-compose.yml +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/Makefile +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/_static/custom.css +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/_static/download_methods.png +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/_static/eodag_advanced_calls_graph.svg +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/_static/eodag_bycs.png +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/_static/eodag_fetch_product_types.png +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/_static/eodag_logo_160.png +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/_static/eodag_logo_160r.png +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/_static/eodag_main_calls_graph.svg +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/_static/eodag_overview.png +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/_static/eodag_stac_client.png +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/_static/eodag_stac_server.png +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/_static/favicon-32x32.png +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/_static/params_mapping_extra.csv +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/_static/params_mapping_offline_infos.json +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/_static/params_mapping_opensearch.csv +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/_static/product_types_information.csv +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/_static/progress_1.png +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/_static/progress_1_none.png +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/_static/progress_2.png +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/_static/progress_2_none.png +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/_static/stac_browser_example.png +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/_static/stac_browser_example_600.png +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/add_product_type.rst +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/add_provider.rst +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/api_reference/assets.rst +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/api_reference/call_graphs.rst +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/api_reference/core.rst +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/api_reference/eoproduct.rst +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/api_reference/exceptions.rst +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/api_reference/index.rst +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/api_reference/searchresult.rst +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/api_reference/types.rst +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/api_reference/utils.rst +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/api_user_guide.rst +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/breaking_changes.rst +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/changelog.rst +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/cli_user_guide.rst +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/conf.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/contribute.rst +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/drivers.rst +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/getting_started_guide/index.rst +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/getting_started_guide/install.rst +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/getting_started_guide/overview.rst +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/getting_started_guide/product_storage_status.rst +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/getting_started_guide/product_types.rst +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/getting_started_guide/providers.rst +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/getting_started_guide/register.rst +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/getting_started_guide/side_projects.rst +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/index.rst +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/make.bat +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/api_user_guide/1_overview.ipynb +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/api_user_guide/3_configuration.ipynb +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/api_user_guide/4_search.ipynb +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/api_user_guide/5_queryables.ipynb +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/api_user_guide/6_serialize_deserialize.ipynb +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/api_user_guide/7_crunch.ipynb +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/api_user_guide/8_download.ipynb +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/api_user_guide/9_post_process.ipynb +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/api_user_guide/data/crunch_search_results.geojson +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/api_user_guide/data/download_search_results.geojson +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/intro_notebooks.ipynb +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/tutos/auxdata/Gulf_of_Trieste_seamask_UTM33.cpg +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/tutos/auxdata/Gulf_of_Trieste_seamask_UTM33.dbf +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/tutos/auxdata/Gulf_of_Trieste_seamask_UTM33.prj +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/tutos/auxdata/Gulf_of_Trieste_seamask_UTM33.qix +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/tutos/auxdata/Gulf_of_Trieste_seamask_UTM33.qpj +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/tutos/auxdata/Gulf_of_Trieste_seamask_UTM33.shp +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/tutos/auxdata/Gulf_of_Trieste_seamask_UTM33.shx +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/tutos/auxdata/sentinel2_tiling_grid_centroids.zip +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/tutos/tuto_burnt_areas_snappy.ipynb +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/tutos/tuto_cds.ipynb +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/tutos/tuto_cop_dem.ipynb +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/tutos/tuto_ecmwf.ipynb +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/tutos/tuto_meteoblue.ipynb +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/tutos/tuto_search_location_tile.ipynb +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/tutos/tuto_ship_detection.ipynb +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/tutos/tuto_stac_client.ipynb +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/tutos/tuto_wekeo.ipynb +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/params_mapping.rst +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/plugins.rst +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/plugins_reference/api.rst +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/plugins_reference/auth.rst +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/plugins_reference/crunch.rst +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/plugins_reference/download.rst +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/plugins_reference/search.rst +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/stac.rst +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/docs/tutos.rst +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/__init__.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/api/__init__.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/api/product/__init__.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/api/product/_assets.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/api/product/drivers/__init__.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/api/product/drivers/base.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/api/product/drivers/generic.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/api/product/drivers/sentinel1.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/api/product/drivers/sentinel2.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/api/search_result.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/cli.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/crunch.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/__init__.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/apis/__init__.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/apis/base.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/authentication/__init__.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/authentication/aws_auth.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/authentication/base.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/authentication/header.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/authentication/keycloak.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/authentication/oauth.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/authentication/qsauth.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/authentication/token.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/authentication/token_exchange.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/base.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/crunch/__init__.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/crunch/base.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/crunch/filter_latest_intersect.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/crunch/filter_latest_tpl_name.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/crunch/filter_overlap.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/download/__init__.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/download/creodias_s3.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/manager.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/search/__init__.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/search/creodias_s3.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/search/csw.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/search/stac_list_assets.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/plugins/search/static_stac_search.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/py.typed +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/resources/locations_conf_template.yml +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/resources/product_types.yml +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/resources/shp/ne_110m_admin_0_map_units.VERSION.txt +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/resources/shp/ne_110m_admin_0_map_units.cpg +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/resources/shp/ne_110m_admin_0_map_units.dbf +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/resources/shp/ne_110m_admin_0_map_units.prj +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/resources/shp/ne_110m_admin_0_map_units.shp +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/resources/shp/ne_110m_admin_0_map_units.shx +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/resources/stac.yml +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/resources/stac_api.yml +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/resources/stac_provider.yml +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/resources/user_conf_template.yml +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/rest/__init__.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/rest/cache.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/rest/config.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/rest/constants.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/rest/core.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/rest/errors.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/rest/server.wsgi +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/rest/templates/README +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/rest/types/__init__.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/rest/types/collections_search.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/rest/types/eodag_search.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/rest/types/stac_search.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/rest/utils/__init__.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/rest/utils/cql_evaluate.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/rest/utils/rfc3339.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/types/bbox.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/types/download_args.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/types/search_args.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/types/whoosh.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/utils/exceptions.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/utils/import_system.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/utils/logging.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/utils/notebook.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/utils/repr.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/utils/requests.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/utils/rest.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/utils/s3.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag/utils/stac_reader.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag.egg-info/dependency_links.txt +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag.egg-info/entry_points.txt +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag.egg-info/requires.txt +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/eodag.egg-info/top_level.txt +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/get_pypi_latest_version.sh +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/pytest.ini +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/readthedocs.yml +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/requirements-dev.txt +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/requirements-docs.txt +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/requirements-tutorials.txt +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/requirements.txt +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/setup.cfg +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/setup.py +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/tox.ini +0 -0
- {eodag-3.4.1.post1 → eodag-3.4.3}/utils/params_mapping_to_csv.py +0 -0
- {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](
|
|
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
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
18
|
+
version: 3.4.3
|
|
@@ -18,7 +18,7 @@ metadata:
|
|
|
18
18
|
{{- end }}
|
|
19
19
|
{{- end }}
|
|
20
20
|
spec:
|
|
21
|
-
{{- if
|
|
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
|
|
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
|
-
|
|
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
|
^^^^^^^^^^^^^^^^^
|
{eodag-3.4.1.post1 → eodag-3.4.3}/docs/notebooks/api_user_guide/2_providers_products_available.ipynb
RENAMED
|
@@ -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://
|
|
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.
|
|
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"
|
|
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"
|
|
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"
|
|
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"
|
|
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"
|
|
1314
|
-
prev_next_page_query_obj = pagination_config.get("next_page_query_obj"
|
|
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"
|
|
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"
|
|
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"
|
|
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
|
-
|
|
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'
|
|
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"
|
|
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"
|
|
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["id"]": self.properties.get('id'
|
|
579
|
+
"properties["id"]": self.properties.get('id'),
|
|
580
580
|
"properties["startTimeFromAscendingNode"]": self.properties.get(
|
|
581
|
-
'startTimeFromAscendingNode'
|
|
581
|
+
'startTimeFromAscendingNode'
|
|
582
582
|
),
|
|
583
583
|
"properties["completionTimeFromAscendingNode"]": self.properties.get(
|
|
584
|
-
'completionTimeFromAscendingNode'
|
|
584
|
+
'completionTimeFromAscendingNode'
|
|
585
585
|
),
|
|
586
586
|
}, brackets=False)}
|
|
587
587
|
<details><summary style='color: grey; margin-top: 10px;'>properties: ({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"
|
|
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"
|
|
1033
|
-
discovery_path = discovery_config.get("metadata_path"
|
|
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"
|
|
1218
|
-
discovery_path = discovery_config.get("metadata_path"
|
|
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
|
|
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, "")
|
|
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
|
|
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"
|
|
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"
|
|
153
|
-
key = getattr(self.config, "credentials", {}).get("password"
|
|
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"
|
|
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"
|
|
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"],
|