eodag 3.4.2__tar.gz → 3.5.0__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.2 → eodag-3.5.0}/.github/pull_request_template.md +1 -1
- {eodag-3.4.2 → eodag-3.5.0}/.github/workflows/deploy.yml +6 -0
- {eodag-3.4.2 → eodag-3.5.0}/CHANGES.rst +117 -0
- {eodag-3.4.2/eodag.egg-info → eodag-3.5.0}/PKG-INFO +3 -3
- {eodag-3.4.2 → eodag-3.5.0}/README.rst +1 -1
- {eodag-3.4.2 → eodag-3.5.0}/charts/eodag-server/Chart.yaml +2 -2
- {eodag-3.4.2 → eodag-3.5.0}/charts/eodag-server/templates/ingress.yaml +1 -5
- {eodag-3.4.2 → eodag-3.5.0}/docs/getting_started_guide/configure.rst +29 -4
- {eodag-3.4.2 → eodag-3.5.0}/docs/getting_started_guide/register.rst +1 -1
- {eodag-3.4.2 → eodag-3.5.0}/docs/notebooks/api_user_guide/2_providers_products_available.ipynb +1 -1
- {eodag-3.4.2 → eodag-3.5.0}/docs/stac_rest.rst +1 -1
- {eodag-3.4.2 → eodag-3.5.0}/eodag/api/core.py +87 -12
- {eodag-3.4.2 → eodag-3.5.0}/eodag/api/product/_product.py +6 -6
- {eodag-3.4.2 → eodag-3.5.0}/eodag/api/product/metadata_mapping.py +37 -8
- {eodag-3.4.2 → eodag-3.5.0}/eodag/config.py +58 -12
- {eodag-3.4.2 → eodag-3.5.0}/eodag/plugins/apis/ecmwf.py +5 -7
- {eodag-3.4.2 → eodag-3.5.0}/eodag/plugins/apis/usgs.py +1 -1
- {eodag-3.4.2 → eodag-3.5.0}/eodag/plugins/authentication/generic.py +5 -1
- {eodag-3.4.2 → eodag-3.5.0}/eodag/plugins/authentication/keycloak.py +3 -1
- {eodag-3.4.2 → eodag-3.5.0}/eodag/plugins/authentication/openid_connect.py +89 -33
- {eodag-3.4.2 → eodag-3.5.0}/eodag/plugins/authentication/sas_auth.py +1 -1
- {eodag-3.4.2 → eodag-3.5.0}/eodag/plugins/authentication/token.py +14 -2
- {eodag-3.4.2 → eodag-3.5.0}/eodag/plugins/authentication/token_exchange.py +1 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/plugins/crunch/filter_date.py +4 -8
- {eodag-3.4.2 → eodag-3.5.0}/eodag/plugins/crunch/filter_property.py +1 -1
- {eodag-3.4.2 → eodag-3.5.0}/eodag/plugins/download/aws.py +4 -4
- {eodag-3.4.2 → eodag-3.5.0}/eodag/plugins/download/base.py +14 -7
- {eodag-3.4.2 → eodag-3.5.0}/eodag/plugins/download/http.py +18 -12
- {eodag-3.4.2 → eodag-3.5.0}/eodag/plugins/download/s3rest.py +9 -5
- {eodag-3.4.2 → eodag-3.5.0}/eodag/plugins/manager.py +1 -1
- {eodag-3.4.2 → eodag-3.5.0}/eodag/plugins/search/base.py +6 -5
- {eodag-3.4.2 → eodag-3.5.0}/eodag/plugins/search/build_search_result.py +14 -9
- {eodag-3.4.2 → eodag-3.5.0}/eodag/plugins/search/data_request_search.py +18 -5
- {eodag-3.4.2 → eodag-3.5.0}/eodag/plugins/search/qssearch.py +30 -31
- {eodag-3.4.2 → eodag-3.5.0}/eodag/resources/ext_product_types.json +1 -1
- {eodag-3.4.2 → eodag-3.5.0}/eodag/resources/providers.yml +6 -1
- {eodag-3.4.2 → eodag-3.5.0}/eodag/rest/core.py +3 -1
- {eodag-3.4.2 → eodag-3.5.0}/eodag/rest/errors.py +9 -4
- {eodag-3.4.2 → eodag-3.5.0}/eodag/rest/server.py +6 -4
- {eodag-3.4.2 → eodag-3.5.0}/eodag/rest/stac.py +24 -3
- {eodag-3.4.2 → eodag-3.5.0}/eodag/rest/types/queryables.py +2 -2
- {eodag-3.4.2 → eodag-3.5.0}/eodag/types/__init__.py +27 -14
- {eodag-3.4.2 → eodag-3.5.0}/eodag/types/queryables.py +23 -5
- {eodag-3.4.2 → eodag-3.5.0}/eodag/utils/__init__.py +4 -1
- eodag-3.5.0/eodag/utils/env.py +29 -0
- {eodag-3.4.2 → eodag-3.5.0/eodag.egg-info}/PKG-INFO +3 -3
- {eodag-3.4.2 → eodag-3.5.0}/eodag.egg-info/SOURCES.txt +1 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag.egg-info/requires.txt +1 -1
- {eodag-3.4.2 → eodag-3.5.0}/pyproject.toml +1 -1
- {eodag-3.4.2 → eodag-3.5.0}/setup.cfg +1 -1
- {eodag-3.4.2 → eodag-3.5.0}/.dockerignore +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/.editorconfig +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/.gitattributes +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/.github/workflows/changelog.yml +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/.github/workflows/fetch.yml +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/.github/workflows/github-pages.yml +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/.github/workflows/lint-pr-title.yml +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/.github/workflows/publish.yml +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/.github/workflows/test.yml +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/.gitignore +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/.pre-commit-config.yaml +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/BREAKING_CHANGES.rst +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/CODE_OF_CONDUCT.md +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/CONTRIBUTING.rst +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/LICENSE +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/MANIFEST.in +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/NOTICE +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/charts/eodag-server/Chart.lock +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/charts/eodag-server/README.md +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/charts/eodag-server/templates/NOTES.txt +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/charts/eodag-server/templates/_helpers.tpl +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/charts/eodag-server/templates/configmap.yaml +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/charts/eodag-server/templates/deployment.yaml +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/charts/eodag-server/templates/extra-list.yaml +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/charts/eodag-server/templates/hpa.yaml +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/charts/eodag-server/templates/pv.yaml +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/charts/eodag-server/templates/pvc.yaml +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/charts/eodag-server/templates/secret.yaml +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/charts/eodag-server/templates/service.yaml +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/charts/eodag-server/templates/serviceaccount.yaml +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/charts/eodag-server/values.yaml +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docker/run-stac-server.sh +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docker/stac-browser.dockerfile +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docker/stac-server.dockerfile +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docker-compose.yml +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/Makefile +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/_static/custom.css +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/_static/download_methods.png +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/_static/eodag_advanced_calls_graph.svg +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/_static/eodag_bycs.png +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/_static/eodag_fetch_product_types.png +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/_static/eodag_logo_160.png +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/_static/eodag_logo_160r.png +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/_static/eodag_main_calls_graph.svg +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/_static/eodag_overview.png +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/_static/eodag_stac_client.png +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/_static/eodag_stac_server.png +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/_static/favicon-32x32.png +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/_static/params_mapping_extra.csv +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/_static/params_mapping_offline_infos.json +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/_static/params_mapping_opensearch.csv +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/_static/product_types_information.csv +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/_static/progress_1.png +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/_static/progress_1_none.png +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/_static/progress_2.png +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/_static/progress_2_none.png +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/_static/stac_browser_example.png +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/_static/stac_browser_example_600.png +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/add_product_type.rst +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/add_provider.rst +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/api_reference/assets.rst +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/api_reference/call_graphs.rst +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/api_reference/core.rst +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/api_reference/eoproduct.rst +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/api_reference/exceptions.rst +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/api_reference/index.rst +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/api_reference/searchresult.rst +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/api_reference/types.rst +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/api_reference/utils.rst +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/api_user_guide.rst +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/breaking_changes.rst +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/changelog.rst +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/cli_user_guide.rst +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/conf.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/contribute.rst +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/drivers.rst +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/getting_started_guide/index.rst +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/getting_started_guide/install.rst +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/getting_started_guide/overview.rst +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/getting_started_guide/product_storage_status.rst +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/getting_started_guide/product_types.rst +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/getting_started_guide/providers.rst +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/getting_started_guide/side_projects.rst +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/index.rst +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/make.bat +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/notebooks/api_user_guide/1_overview.ipynb +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/notebooks/api_user_guide/3_configuration.ipynb +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/notebooks/api_user_guide/4_search.ipynb +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/notebooks/api_user_guide/5_queryables.ipynb +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/notebooks/api_user_guide/6_serialize_deserialize.ipynb +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/notebooks/api_user_guide/7_crunch.ipynb +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/notebooks/api_user_guide/8_download.ipynb +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/notebooks/api_user_guide/9_post_process.ipynb +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/notebooks/api_user_guide/data/crunch_search_results.geojson +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/notebooks/api_user_guide/data/download_search_results.geojson +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/notebooks/intro_notebooks.ipynb +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/notebooks/tutos/auxdata/Gulf_of_Trieste_seamask_UTM33.cpg +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/notebooks/tutos/auxdata/Gulf_of_Trieste_seamask_UTM33.dbf +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/notebooks/tutos/auxdata/Gulf_of_Trieste_seamask_UTM33.prj +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/notebooks/tutos/auxdata/Gulf_of_Trieste_seamask_UTM33.qix +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/notebooks/tutos/auxdata/Gulf_of_Trieste_seamask_UTM33.qpj +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/notebooks/tutos/auxdata/Gulf_of_Trieste_seamask_UTM33.shp +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/notebooks/tutos/auxdata/Gulf_of_Trieste_seamask_UTM33.shx +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/notebooks/tutos/auxdata/sentinel2_tiling_grid_centroids.zip +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/notebooks/tutos/tuto_burnt_areas_snappy.ipynb +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/notebooks/tutos/tuto_cds.ipynb +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/notebooks/tutos/tuto_cop_dem.ipynb +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/notebooks/tutos/tuto_ecmwf.ipynb +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/notebooks/tutos/tuto_meteoblue.ipynb +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/notebooks/tutos/tuto_search_location_tile.ipynb +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/notebooks/tutos/tuto_ship_detection.ipynb +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/notebooks/tutos/tuto_stac_client.ipynb +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/notebooks/tutos/tuto_wekeo.ipynb +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/params_mapping.rst +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/plugins.rst +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/plugins_reference/api.rst +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/plugins_reference/auth.rst +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/plugins_reference/crunch.rst +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/plugins_reference/download.rst +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/plugins_reference/search.rst +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/stac.rst +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/docs/tutos.rst +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/__init__.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/api/__init__.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/api/product/__init__.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/api/product/_assets.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/api/product/drivers/__init__.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/api/product/drivers/base.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/api/product/drivers/generic.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/api/product/drivers/sentinel1.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/api/product/drivers/sentinel2.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/api/search_result.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/cli.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/crunch.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/plugins/__init__.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/plugins/apis/__init__.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/plugins/apis/base.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/plugins/authentication/__init__.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/plugins/authentication/aws_auth.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/plugins/authentication/base.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/plugins/authentication/header.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/plugins/authentication/oauth.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/plugins/authentication/qsauth.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/plugins/base.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/plugins/crunch/__init__.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/plugins/crunch/base.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/plugins/crunch/filter_latest_intersect.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/plugins/crunch/filter_latest_tpl_name.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/plugins/crunch/filter_overlap.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/plugins/download/__init__.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/plugins/download/creodias_s3.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/plugins/search/__init__.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/plugins/search/cop_marine.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/plugins/search/creodias_s3.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/plugins/search/csw.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/plugins/search/stac_list_assets.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/plugins/search/static_stac_search.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/py.typed +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/resources/locations_conf_template.yml +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/resources/product_types.yml +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/resources/shp/ne_110m_admin_0_map_units.VERSION.txt +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/resources/shp/ne_110m_admin_0_map_units.cpg +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/resources/shp/ne_110m_admin_0_map_units.dbf +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/resources/shp/ne_110m_admin_0_map_units.prj +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/resources/shp/ne_110m_admin_0_map_units.shp +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/resources/shp/ne_110m_admin_0_map_units.shx +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/resources/stac.yml +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/resources/stac_api.yml +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/resources/stac_provider.yml +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/resources/user_conf_template.yml +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/rest/__init__.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/rest/cache.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/rest/config.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/rest/constants.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/rest/server.wsgi +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/rest/templates/README +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/rest/types/__init__.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/rest/types/collections_search.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/rest/types/eodag_search.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/rest/types/stac_search.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/rest/utils/__init__.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/rest/utils/cql_evaluate.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/rest/utils/rfc3339.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/types/bbox.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/types/download_args.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/types/search_args.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/types/whoosh.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/utils/exceptions.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/utils/import_system.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/utils/logging.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/utils/notebook.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/utils/repr.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/utils/requests.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/utils/rest.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/utils/s3.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag/utils/stac_reader.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag.egg-info/dependency_links.txt +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag.egg-info/entry_points.txt +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/eodag.egg-info/top_level.txt +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/get_pypi_latest_version.sh +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/pytest.ini +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/readthedocs.yml +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/requirements-dev.txt +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/requirements-docs.txt +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/requirements-tutorials.txt +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/requirements.txt +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/setup.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/tox.ini +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/utils/params_mapping_to_csv.py +0 -0
- {eodag-3.4.2 → eodag-3.5.0}/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.
|
|
@@ -33,9 +33,12 @@ jobs:
|
|
|
33
33
|
source .venv/bin/activate
|
|
34
34
|
uv pip install python-semantic-release packaging
|
|
35
35
|
- name: Set Git config
|
|
36
|
+
env:
|
|
37
|
+
TOKEN: ${{ secrets.USER_TOKEN }}
|
|
36
38
|
run: |
|
|
37
39
|
git config user.name "github-actions[bot]"
|
|
38
40
|
git config user.email "'github-actions[bot]@users.noreply.github.com"
|
|
41
|
+
git remote set-url origin https://$TOKEN@github.com/${{ github.repository }}.git
|
|
39
42
|
- name: Git merge develop in master
|
|
40
43
|
run: |
|
|
41
44
|
git checkout master
|
|
@@ -62,9 +65,12 @@ jobs:
|
|
|
62
65
|
# Get history and tags for SCM versioning to work
|
|
63
66
|
fetch-depth: 0
|
|
64
67
|
- name: Set Git config
|
|
68
|
+
env:
|
|
69
|
+
TOKEN: ${{ secrets.USER_TOKEN }}
|
|
65
70
|
run: |
|
|
66
71
|
git config user.name "github-actions[bot]"
|
|
67
72
|
git config user.email "'github-actions[bot]@users.noreply.github.com"
|
|
73
|
+
git remote set-url origin https://$TOKEN@github.com/${{ github.repository }}.git
|
|
68
74
|
- name: Git merge master in develop
|
|
69
75
|
run: |
|
|
70
76
|
git checkout develop
|
|
@@ -3,6 +3,123 @@ Release history
|
|
|
3
3
|
===============
|
|
4
4
|
|
|
5
5
|
|
|
6
|
+
v3.5.0 (2025-06-20)
|
|
7
|
+
===================
|
|
8
|
+
|
|
9
|
+
Bug Fixes
|
|
10
|
+
---------
|
|
11
|
+
|
|
12
|
+
* **core**: Always validate PluginConfig before loading (`#1690`_, `59ac437`_)
|
|
13
|
+
|
|
14
|
+
* **core**: Skip provider empty conf on init (`#1687`_, `0a4104e`_)
|
|
15
|
+
|
|
16
|
+
* **plugins**: Raise errors when metadata discovery is not allowed (`#1534`_, `855ffa3`_)
|
|
17
|
+
|
|
18
|
+
Build System
|
|
19
|
+
------------
|
|
20
|
+
|
|
21
|
+
* Update usgs to 0.3.6 (`#1688`_, `e63cfb1`_)
|
|
22
|
+
|
|
23
|
+
Continuous Integration
|
|
24
|
+
----------------------
|
|
25
|
+
|
|
26
|
+
* Use personal access token for deploy github action (`#1693`_, `ff777d7`_)
|
|
27
|
+
|
|
28
|
+
Documentation
|
|
29
|
+
-------------
|
|
30
|
+
|
|
31
|
+
* Dead-links and out-of-date param fix (`#1692`_, `445a20e`_)
|
|
32
|
+
|
|
33
|
+
Features
|
|
34
|
+
--------
|
|
35
|
+
|
|
36
|
+
* **core**: Add env variable to whitelist providers (`#1672`_, `b93c4c8`_)
|
|
37
|
+
|
|
38
|
+
* **core**: Add strict product types mode (`#1677`_, `5077fa5`_)
|
|
39
|
+
|
|
40
|
+
* **plugins**: Auth token expiration margin (`#1665`_, `ef5fc18`_)
|
|
41
|
+
|
|
42
|
+
* **server**: Added bbox filter support for collections search (`#1671`_, `5717f0d`_)
|
|
43
|
+
|
|
44
|
+
.. _#1534: https://github.com/CS-SI/eodag/pull/1534
|
|
45
|
+
.. _#1665: https://github.com/CS-SI/eodag/pull/1665
|
|
46
|
+
.. _#1671: https://github.com/CS-SI/eodag/pull/1671
|
|
47
|
+
.. _#1672: https://github.com/CS-SI/eodag/pull/1672
|
|
48
|
+
.. _#1677: https://github.com/CS-SI/eodag/pull/1677
|
|
49
|
+
.. _#1687: https://github.com/CS-SI/eodag/pull/1687
|
|
50
|
+
.. _#1688: https://github.com/CS-SI/eodag/pull/1688
|
|
51
|
+
.. _#1690: https://github.com/CS-SI/eodag/pull/1690
|
|
52
|
+
.. _#1692: https://github.com/CS-SI/eodag/pull/1692
|
|
53
|
+
.. _#1693: https://github.com/CS-SI/eodag/pull/1693
|
|
54
|
+
.. _0a4104e: https://github.com/CS-SI/eodag/commit/0a4104e0518abc70e2133ca98472eea87d673a1c
|
|
55
|
+
.. _445a20e: https://github.com/CS-SI/eodag/commit/445a20e060730642e703615c73225c0df3cc84d0
|
|
56
|
+
.. _5077fa5: https://github.com/CS-SI/eodag/commit/5077fa591496811fb100c1e6b6a3e452cbdbe2a5
|
|
57
|
+
.. _5717f0d: https://github.com/CS-SI/eodag/commit/5717f0deddbf022f2c6d5207ade77de6afb0f9d5
|
|
58
|
+
.. _59ac437: https://github.com/CS-SI/eodag/commit/59ac437de01a8996d247b1f8239f332ed5dc5456
|
|
59
|
+
.. _855ffa3: https://github.com/CS-SI/eodag/commit/855ffa39fa9b914eb39cc20d6e5c2cbbc1b2097a
|
|
60
|
+
.. _b93c4c8: https://github.com/CS-SI/eodag/commit/b93c4c88f323af0eecb0950c90c6862ca9a7c3f4
|
|
61
|
+
.. _e63cfb1: https://github.com/CS-SI/eodag/commit/e63cfb19ca64a2ed65f500ae9678e117a2ea4cf8
|
|
62
|
+
.. _ef5fc18: https://github.com/CS-SI/eodag/commit/ef5fc188e515759c9227584b25805db75f537833
|
|
63
|
+
.. _ff777d7: https://github.com/CS-SI/eodag/commit/ff777d7a1e33f612c5227dba4fecfcec55ff18fc
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
v3.4.3 (2025-06-12)
|
|
67
|
+
===================
|
|
68
|
+
|
|
69
|
+
Bug Fixes
|
|
70
|
+
---------
|
|
71
|
+
|
|
72
|
+
* **core**: Queryables mismatch when list of possible values contains a single value (`#1666`_,
|
|
73
|
+
`538331d`_)
|
|
74
|
+
|
|
75
|
+
* **plugins**: GenericAuth missing credentials handle (`#1678`_, `576a2ac`_)
|
|
76
|
+
|
|
77
|
+
* **plugins**: Openid_connect requests error handling (#1320) (`#1663`_, `9926083`_)
|
|
78
|
+
|
|
79
|
+
* **plugins**: Order retry (`#1676`_, `3602426`_)
|
|
80
|
+
|
|
81
|
+
* **providers**: Dedl mapping for CORINE collection (`#1661`_, `4c61b54`_)
|
|
82
|
+
|
|
83
|
+
* **providers**: Wekeo_main orderable products download (`#1670`_, `d573846`_)
|
|
84
|
+
|
|
85
|
+
Chores
|
|
86
|
+
------
|
|
87
|
+
|
|
88
|
+
* **deploy**: Remove deprecated common values (`154ea6d`_)
|
|
89
|
+
|
|
90
|
+
Documentation
|
|
91
|
+
-------------
|
|
92
|
+
|
|
93
|
+
* Configuration environment variables defaults (`#1681`_, `6e8eb6b`_)
|
|
94
|
+
|
|
95
|
+
* Updated contribution guidelines link in PR template (`#1667`_, `e5cd082`_)
|
|
96
|
+
|
|
97
|
+
Refactoring
|
|
98
|
+
-----------
|
|
99
|
+
|
|
100
|
+
* Typing fixes following mypy 1.16.0 (`#1673`_, `ece52c0`_)
|
|
101
|
+
|
|
102
|
+
.. _#1661: https://github.com/CS-SI/eodag/pull/1661
|
|
103
|
+
.. _#1663: https://github.com/CS-SI/eodag/pull/1663
|
|
104
|
+
.. _#1666: https://github.com/CS-SI/eodag/pull/1666
|
|
105
|
+
.. _#1667: https://github.com/CS-SI/eodag/pull/1667
|
|
106
|
+
.. _#1670: https://github.com/CS-SI/eodag/pull/1670
|
|
107
|
+
.. _#1673: https://github.com/CS-SI/eodag/pull/1673
|
|
108
|
+
.. _#1676: https://github.com/CS-SI/eodag/pull/1676
|
|
109
|
+
.. _#1678: https://github.com/CS-SI/eodag/pull/1678
|
|
110
|
+
.. _#1681: https://github.com/CS-SI/eodag/pull/1681
|
|
111
|
+
.. _154ea6d: https://github.com/CS-SI/eodag/commit/154ea6d035572e64c3a434bb41c095c9b4cc76b2
|
|
112
|
+
.. _3602426: https://github.com/CS-SI/eodag/commit/360242653ddc2a5c8587b37b3d91800459f4c243
|
|
113
|
+
.. _4c61b54: https://github.com/CS-SI/eodag/commit/4c61b540ee46a8ae70932d64e9d373653763eb16
|
|
114
|
+
.. _538331d: https://github.com/CS-SI/eodag/commit/538331d30085a814307173913ff831ca5a3397af
|
|
115
|
+
.. _576a2ac: https://github.com/CS-SI/eodag/commit/576a2ac95044d10367e91e5ef843fb33a921f5f5
|
|
116
|
+
.. _6e8eb6b: https://github.com/CS-SI/eodag/commit/6e8eb6b94eaad6294fea45d764a0e7c18a4e6823
|
|
117
|
+
.. _9926083: https://github.com/CS-SI/eodag/commit/99260837837c3b5f2eeac8b95dc2b2feae7a0390
|
|
118
|
+
.. _d573846: https://github.com/CS-SI/eodag/commit/d5738465930e08b24d562af3b7bc040464ff970a
|
|
119
|
+
.. _e5cd082: https://github.com/CS-SI/eodag/commit/e5cd082aa81eedb62cd48b7974362c99a6899d9c
|
|
120
|
+
.. _ece52c0: https://github.com/CS-SI/eodag/commit/ece52c07685e5df21cfda0b6ddc6a7416194406c
|
|
121
|
+
|
|
122
|
+
|
|
6
123
|
v3.4.2 (2025-05-15)
|
|
7
124
|
===================
|
|
8
125
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: eodag
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.5.0
|
|
4
4
|
Summary: Earth Observation Data Access Gateway
|
|
5
5
|
Home-page: https://github.com/CS-SI/eodag
|
|
6
6
|
Author: CS GROUP - France
|
|
@@ -64,7 +64,7 @@ Requires-Dist: OWSLib>=0.27.1; extra == "csw"
|
|
|
64
64
|
Provides-Extra: ecmwf
|
|
65
65
|
Requires-Dist: ecmwf-api-client; extra == "ecmwf"
|
|
66
66
|
Provides-Extra: usgs
|
|
67
|
-
Requires-Dist: usgs>=0.3.
|
|
67
|
+
Requires-Dist: usgs>=0.3.6; extra == "usgs"
|
|
68
68
|
Provides-Extra: server
|
|
69
69
|
Requires-Dist: fastapi>=0.93.0; extra == "server"
|
|
70
70
|
Requires-Dist: pygeofilter; extra == "server"
|
|
@@ -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.
|
|
320
|
+
docker run -p 5000:5000 --rm csspace/eodag-server:3.5.0
|
|
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.
|
|
190
|
+
docker run -p 5000:5000 --rm csspace/eodag-server:3.5.0
|
|
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.
|
|
2
|
+
appVersion: 3.5.0
|
|
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.
|
|
18
|
+
version: 3.5.0
|
|
@@ -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,41 @@ 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.
|
|
160
|
+
* ``EODAG_PROVIDERS_WHITELIST`` to restrict EODAG to only use a specific list of providers.
|
|
161
|
+
|
|
162
|
+
If this environment variable is set (as a comma-separated list of provider names), EODAG will only load and use the specified providers.
|
|
163
|
+
All other providers will be ignored, regardless of their presence in configuration files.
|
|
164
|
+
|
|
165
|
+
This is useful for restricting EODAG to a subset of providers, for example in controlled or production environments.
|
|
166
|
+
* ``EODAG_STRICT_PRODUCT_TYPES`` to control how product types are listed.
|
|
167
|
+
|
|
168
|
+
If this environment variable is set to a truthy value (such as ``1``, ``true``, ``yes``, or ``on``), EODAG will only list product types that are present in the main product types configuration file.
|
|
169
|
+
Product types defined only in provider configurations (but not in the main product types configuration) will be ignored.
|
|
170
|
+
If not set, EODAG will also include product types defined only in provider configurations, with minimal metadata.
|
|
171
|
+
|
|
172
|
+
This is useful if you want to strictly control which product types are available, for example to ensure consistency across environments.
|
|
173
|
+
|
|
174
|
+
Example usage:
|
|
175
|
+
|
|
176
|
+
.. code-block:: bash
|
|
177
|
+
|
|
178
|
+
export EODAG_PROVIDERS_WHITELIST=peps,creodias,theia
|
|
179
|
+
export EODAG_STRICT_PRODUCT_TYPES=true
|
|
155
180
|
|
|
156
181
|
CLI configuration
|
|
157
182
|
^^^^^^^^^^^^^^^^^
|
|
@@ -150,7 +150,7 @@ No authentication needed.
|
|
|
150
150
|
|
|
151
151
|
``ecmwf``
|
|
152
152
|
^^^^^^^^^
|
|
153
|
-
Create an account `here <https://
|
|
153
|
+
Create an account `here <https://www.ecmwf.int/user/login>`__.
|
|
154
154
|
|
|
155
155
|
Then use *email* as ``username`` and *key* as ``password`` from `here <https://api.ecmwf.int/v1/key/>`__ in eodag credentials.
|
|
156
156
|
EODAG can be used to request for public datasets as for operational archive. Please note that for public datasets you
|
{eodag-3.4.2 → eodag-3.5.0}/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.
|
|
118
|
+
$ docker run -p 5000:5000 --rm csspace/eodag-server:3.5.0
|
|
119
119
|
|
|
120
120
|
Example
|
|
121
121
|
-------
|
|
@@ -36,6 +36,7 @@ from whoosh.index import exists_in, open_dir
|
|
|
36
36
|
from whoosh.qparser import QueryParser
|
|
37
37
|
|
|
38
38
|
from eodag.api.product.metadata_mapping import (
|
|
39
|
+
NOT_AVAILABLE,
|
|
39
40
|
ONLINE_STATUS,
|
|
40
41
|
mtd_cfg_as_conversion_and_querypath,
|
|
41
42
|
)
|
|
@@ -79,6 +80,7 @@ from eodag.utils import (
|
|
|
79
80
|
string_to_jsonpath,
|
|
80
81
|
uri_to_path,
|
|
81
82
|
)
|
|
83
|
+
from eodag.utils.env import is_env_var_true
|
|
82
84
|
from eodag.utils.exceptions import (
|
|
83
85
|
AuthenticationError,
|
|
84
86
|
EodagError,
|
|
@@ -175,12 +177,19 @@ class EODataAccessGateway:
|
|
|
175
177
|
share_credentials(self.providers_config)
|
|
176
178
|
|
|
177
179
|
# init updated providers conf
|
|
180
|
+
strict_mode = is_env_var_true("EODAG_STRICT_PRODUCT_TYPES")
|
|
181
|
+
available_product_types = set(self.product_types_config.source.keys())
|
|
182
|
+
|
|
178
183
|
for provider in self.providers_config.keys():
|
|
179
184
|
provider_config_init(
|
|
180
185
|
self.providers_config[provider],
|
|
181
186
|
load_stac_provider_config(),
|
|
182
187
|
)
|
|
183
188
|
|
|
189
|
+
self._sync_provider_product_types(
|
|
190
|
+
provider, available_product_types, strict_mode
|
|
191
|
+
)
|
|
192
|
+
|
|
184
193
|
# re-build _plugins_manager using up-to-date providers_config
|
|
185
194
|
self._plugins_manager.rebuild(self.providers_config)
|
|
186
195
|
|
|
@@ -226,6 +235,61 @@ class EODataAccessGateway:
|
|
|
226
235
|
)
|
|
227
236
|
self.set_locations_conf(locations_conf_path)
|
|
228
237
|
|
|
238
|
+
def _sync_provider_product_types(
|
|
239
|
+
self,
|
|
240
|
+
provider: str,
|
|
241
|
+
available_product_types: set[str],
|
|
242
|
+
strict_mode: bool,
|
|
243
|
+
) -> None:
|
|
244
|
+
"""
|
|
245
|
+
Synchronize product types for a provider based on strict or permissive mode.
|
|
246
|
+
|
|
247
|
+
In strict mode, removes product types not in available_product_types.
|
|
248
|
+
In permissive mode, adds empty product type configs for missing types.
|
|
249
|
+
|
|
250
|
+
:param provider: The provider name whose product types should be synchronized.
|
|
251
|
+
:param available_product_types: The set of available product type IDs.
|
|
252
|
+
:param strict_mode: If True, remove unknown product types; if False, add empty configs for them.
|
|
253
|
+
:returns: None
|
|
254
|
+
"""
|
|
255
|
+
provider_products = self.providers_config[provider].products
|
|
256
|
+
products_to_remove: list[str] = []
|
|
257
|
+
products_to_add: list[str] = []
|
|
258
|
+
|
|
259
|
+
for product_id in provider_products:
|
|
260
|
+
if product_id == GENERIC_PRODUCT_TYPE:
|
|
261
|
+
continue
|
|
262
|
+
|
|
263
|
+
if product_id not in available_product_types:
|
|
264
|
+
if strict_mode:
|
|
265
|
+
products_to_remove.append(product_id)
|
|
266
|
+
continue
|
|
267
|
+
|
|
268
|
+
empty_product = {
|
|
269
|
+
"title": product_id,
|
|
270
|
+
"abstract": NOT_AVAILABLE,
|
|
271
|
+
}
|
|
272
|
+
self.product_types_config.source[
|
|
273
|
+
product_id
|
|
274
|
+
] = empty_product # will update available_product_types
|
|
275
|
+
products_to_add.append(product_id)
|
|
276
|
+
|
|
277
|
+
if products_to_add:
|
|
278
|
+
logger.debug(
|
|
279
|
+
"Product types permissive mode, %s added (provider %s)",
|
|
280
|
+
", ".join(products_to_add),
|
|
281
|
+
provider,
|
|
282
|
+
)
|
|
283
|
+
|
|
284
|
+
if products_to_remove:
|
|
285
|
+
logger.debug(
|
|
286
|
+
"Product types strict mode, ignoring %s (provider %s)",
|
|
287
|
+
", ".join(products_to_remove),
|
|
288
|
+
provider,
|
|
289
|
+
)
|
|
290
|
+
for id in products_to_remove:
|
|
291
|
+
del self.providers_config[provider].products[id]
|
|
292
|
+
|
|
229
293
|
def get_version(self) -> str:
|
|
230
294
|
"""Get eodag package version"""
|
|
231
295
|
return version("eodag")
|
|
@@ -608,11 +672,14 @@ class EODataAccessGateway:
|
|
|
608
672
|
for product_type_id in p.products: # type: ignore
|
|
609
673
|
if product_type_id == GENERIC_PRODUCT_TYPE:
|
|
610
674
|
continue
|
|
675
|
+
|
|
611
676
|
config = self.product_types_config[product_type_id]
|
|
612
677
|
config["_id"] = product_type_id
|
|
678
|
+
|
|
613
679
|
if "alias" in config:
|
|
614
680
|
product_type_id = config["alias"]
|
|
615
681
|
product_type = {"ID": product_type_id, **config}
|
|
682
|
+
|
|
616
683
|
if product_type not in product_types:
|
|
617
684
|
product_types.append(product_type)
|
|
618
685
|
|
|
@@ -620,11 +687,18 @@ class EODataAccessGateway:
|
|
|
620
687
|
return sorted(product_types, key=itemgetter("ID"))
|
|
621
688
|
|
|
622
689
|
def fetch_product_types_list(self, provider: Optional[str] = None) -> None:
|
|
623
|
-
"""Fetch product types list and update if needed
|
|
690
|
+
"""Fetch product types list and update if needed.
|
|
691
|
+
|
|
692
|
+
If strict mode is enabled (by setting the ``EODAG_STRICT_PRODUCT_TYPES`` environment variable
|
|
693
|
+
to a truthy value), this method will not fetch or update product types and will return immediately.
|
|
624
694
|
|
|
625
695
|
:param provider: The name of a provider or provider-group for which product types
|
|
626
696
|
list should be updated. Defaults to all providers (None value).
|
|
627
697
|
"""
|
|
698
|
+
strict_mode = is_env_var_true("EODAG_STRICT_PRODUCT_TYPES")
|
|
699
|
+
if strict_mode:
|
|
700
|
+
return
|
|
701
|
+
|
|
628
702
|
providers_to_fetch = list(self.providers_config.keys())
|
|
629
703
|
# check if some providers are grouped under a group name which is not a provider name
|
|
630
704
|
if provider is not None and provider not in self.providers_config:
|
|
@@ -658,7 +732,7 @@ class EODataAccessGateway:
|
|
|
658
732
|
discovery_conf = getattr(
|
|
659
733
|
provider_search_config, "discover_product_types", {}
|
|
660
734
|
)
|
|
661
|
-
if discovery_conf.get("fetch_url"
|
|
735
|
+
if discovery_conf.get("fetch_url"):
|
|
662
736
|
providers_discovery_configs_fetchable[
|
|
663
737
|
provider_to_fetch
|
|
664
738
|
] = discovery_conf
|
|
@@ -744,7 +818,7 @@ class EODataAccessGateway:
|
|
|
744
818
|
user_discovery_conf == default_discovery_conf
|
|
745
819
|
or user_discovery_conf == default_discovery_conf_parsed
|
|
746
820
|
) and (
|
|
747
|
-
not default_discovery_conf.get("fetch_url"
|
|
821
|
+
not default_discovery_conf.get("fetch_url")
|
|
748
822
|
or "ext_product_types_conf" not in locals()
|
|
749
823
|
or "ext_product_types_conf" in locals()
|
|
750
824
|
and (
|
|
@@ -856,7 +930,7 @@ class EODataAccessGateway:
|
|
|
856
930
|
continue
|
|
857
931
|
if not getattr(
|
|
858
932
|
search_plugin_config, "discover_product_types", {}
|
|
859
|
-
).get("fetch_url"
|
|
933
|
+
).get("fetch_url"):
|
|
860
934
|
# conf has been updated and provider product types are no more discoverable
|
|
861
935
|
continue
|
|
862
936
|
provider_products_config = (
|
|
@@ -980,7 +1054,7 @@ class EODataAccessGateway:
|
|
|
980
1054
|
product_types = [
|
|
981
1055
|
k
|
|
982
1056
|
for k, v in self.product_types_config.items()
|
|
983
|
-
if v.get("alias"
|
|
1057
|
+
if v.get("alias") == alias_or_id
|
|
984
1058
|
]
|
|
985
1059
|
|
|
986
1060
|
if len(product_types) > 1:
|
|
@@ -1310,8 +1384,8 @@ class EODataAccessGateway:
|
|
|
1310
1384
|
# since it might be modified if the next_page_url mechanism is used by the
|
|
1311
1385
|
# plugin. (same thing for next_page_query_obj, next_page_query_obj with POST reqs)
|
|
1312
1386
|
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"
|
|
1387
|
+
prev_next_page_url_tpl = pagination_config.get("next_page_url_tpl")
|
|
1388
|
+
prev_next_page_query_obj = pagination_config.get("next_page_query_obj")
|
|
1315
1389
|
# Page has to be set to a value even if use_next is True, this is required
|
|
1316
1390
|
# internally by the search plugin (see collect_search_urls)
|
|
1317
1391
|
kwargs.update(
|
|
@@ -1549,7 +1623,7 @@ class EODataAccessGateway:
|
|
|
1549
1623
|
:param kwargs: Search criteria to help finding the right product
|
|
1550
1624
|
:returns: A search result with one EO product or None at all
|
|
1551
1625
|
"""
|
|
1552
|
-
product_type = kwargs.get("productType"
|
|
1626
|
+
product_type = kwargs.get("productType")
|
|
1553
1627
|
if product_type is not None:
|
|
1554
1628
|
try:
|
|
1555
1629
|
product_type = self.get_product_type_from_alias(product_type)
|
|
@@ -1686,7 +1760,7 @@ class EODataAccessGateway:
|
|
|
1686
1760
|
* other criteria compatible with the provider
|
|
1687
1761
|
:returns: Search plugins list and the prepared kwargs to make a query.
|
|
1688
1762
|
"""
|
|
1689
|
-
product_type = kwargs.get("productType"
|
|
1763
|
+
product_type: Optional[str] = kwargs.get("productType")
|
|
1690
1764
|
if product_type is None:
|
|
1691
1765
|
try:
|
|
1692
1766
|
guesses = self.guess_product_type(**kwargs)
|
|
@@ -1706,7 +1780,7 @@ class EODataAccessGateway:
|
|
|
1706
1780
|
# By now, only use the best bet
|
|
1707
1781
|
product_type = guesses[0]
|
|
1708
1782
|
except NoMatchingProductType:
|
|
1709
|
-
queried_id = kwargs.get("id"
|
|
1783
|
+
queried_id = kwargs.get("id")
|
|
1710
1784
|
if queried_id is None:
|
|
1711
1785
|
logger.info(
|
|
1712
1786
|
"No product type could be guessed with provided arguments"
|
|
@@ -1750,7 +1824,7 @@ class EODataAccessGateway:
|
|
|
1750
1824
|
product_type
|
|
1751
1825
|
not in self._plugins_manager.product_type_to_provider_config_map.keys()
|
|
1752
1826
|
):
|
|
1753
|
-
if provider:
|
|
1827
|
+
if provider and product_type:
|
|
1754
1828
|
# Try to get specific product type from external provider
|
|
1755
1829
|
logger.debug(f"Fetching {provider} to find {product_type} product type")
|
|
1756
1830
|
self._fetch_external_product_type(provider, product_type)
|
|
@@ -1795,7 +1869,8 @@ class EODataAccessGateway:
|
|
|
1795
1869
|
# Add product_types_config to plugin config. This dict contains product
|
|
1796
1870
|
# type metadata that will also be stored in each product's properties.
|
|
1797
1871
|
for search_plugin in search_plugins:
|
|
1798
|
-
|
|
1872
|
+
if product_type is not None:
|
|
1873
|
+
self._attach_product_type_config(search_plugin, product_type)
|
|
1799
1874
|
|
|
1800
1875
|
return search_plugins, kwargs
|
|
1801
1876
|
|
|
@@ -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(
|