eodag 3.0.0b1__tar.gz → 3.0.0b2__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.0.0b1 → eodag-3.0.0b2}/CHANGES.rst +21 -1
- {eodag-3.0.0b1/eodag.egg-info → eodag-3.0.0b2}/PKG-INFO +3 -2
- {eodag-3.0.0b1 → eodag-3.0.0b2}/README.rst +1 -1
- {eodag-3.0.0b1 → eodag-3.0.0b2}/charts/eodag-server/Chart.yaml +2 -2
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/conf.py +1 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/plugins.rst +99 -19
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/stac_rest.rst +1 -1
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/api/core.py +6 -2
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/api/product/_assets.py +50 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/api/product/_product.py +43 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/api/search_result.py +27 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/plugins/manager.py +1 -0
- eodag-3.0.0b2/eodag/resources/ext_product_types.json +1 -0
- eodag-3.0.0b2/eodag/utils/repr.py +113 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2/eodag.egg-info}/PKG-INFO +3 -2
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag.egg-info/SOURCES.txt +1 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag.egg-info/requires.txt +1 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/pyproject.toml +1 -1
- {eodag-3.0.0b1 → eodag-3.0.0b2}/setup.cfg +1 -0
- eodag-3.0.0b1/eodag/resources/ext_product_types.json +0 -1
- {eodag-3.0.0b1 → eodag-3.0.0b2}/.dockerignore +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/.editorconfig +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/.gitattributes +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/.github/pull_request_template.md +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/.github/workflows/deploy.yml +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/.github/workflows/fetch.yml +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/.github/workflows/test.yml +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/.gitignore +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/.pre-commit-config.yaml +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/CODE_OF_CONDUCT.md +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/CONTRIBUTING.rst +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/LICENSE +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/MANIFEST.in +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/NOTICE +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/charts/eodag-server/Chart.lock +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/charts/eodag-server/README.md +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/charts/eodag-server/templates/NOTES.txt +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/charts/eodag-server/templates/_helpers.tpl +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/charts/eodag-server/templates/configmap.yaml +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/charts/eodag-server/templates/deployment.yaml +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/charts/eodag-server/templates/extra-list.yaml +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/charts/eodag-server/templates/hpa.yaml +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/charts/eodag-server/templates/ingress.yaml +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/charts/eodag-server/templates/pv.yaml +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/charts/eodag-server/templates/pvc.yaml +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/charts/eodag-server/templates/secret.yaml +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/charts/eodag-server/templates/service.yaml +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/charts/eodag-server/templates/serviceaccount.yaml +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/charts/eodag-server/values.yaml +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docker/run-stac-server.sh +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docker/stac-browser.dockerfile +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docker/stac-server.dockerfile +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docker-compose.yml +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/Makefile +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/_static/custom.css +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/_static/download_methods.png +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/_static/eodag_advanced_calls_graph.svg +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/_static/eodag_bycs.png +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/_static/eodag_fetch_product_types.png +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/_static/eodag_logo_160.png +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/_static/eodag_logo_160r.png +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/_static/eodag_main_calls_graph.svg +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/_static/eodag_overview.png +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/_static/eodag_stac_client.png +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/_static/eodag_stac_server.png +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/_static/favicon-32x32.png +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/_static/params_mapping_extra.csv +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/_static/params_mapping_offline_infos.json +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/_static/params_mapping_opensearch.csv +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/_static/product_types_information.csv +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/_static/progress_1.png +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/_static/progress_1_none.png +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/_static/progress_2.png +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/_static/progress_2_none.png +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/_static/stac_browser_example.png +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/_static/stac_browser_example_600.png +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/add_provider.rst +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/api_reference/call_graphs.rst +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/api_reference/core.rst +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/api_reference/eoproduct.rst +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/api_reference/exceptions.rst +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/api_reference/index.rst +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/api_reference/searchresult.rst +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/api_reference/types.rst +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/api_reference/utils.rst +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/api_user_guide.rst +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/changelog.rst +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/cli_user_guide.rst +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/contribute.rst +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/getting_started_guide/configure.rst +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/getting_started_guide/index.rst +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/getting_started_guide/install.rst +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/getting_started_guide/overview.rst +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/getting_started_guide/product_storage_status.rst +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/getting_started_guide/product_types.rst +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/getting_started_guide/providers.rst +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/getting_started_guide/register.rst +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/getting_started_guide/side_projects.rst +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/index.rst +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/make.bat +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/notebooks/api_user_guide/1_overview.ipynb +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/notebooks/api_user_guide/2_providers_products_available.ipynb +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/notebooks/api_user_guide/3_configuration.ipynb +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/notebooks/api_user_guide/4_search.ipynb +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/notebooks/api_user_guide/5_serialize_deserialize.ipynb +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/notebooks/api_user_guide/6_crunch.ipynb +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/notebooks/api_user_guide/7_download.ipynb +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/notebooks/api_user_guide/8_post_process.ipynb +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/notebooks/api_user_guide/data/crunch_search_results.geojson +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/notebooks/api_user_guide/data/download_search_results.geojson +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/notebooks/intro_notebooks.ipynb +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/notebooks/tutos/auxdata/Gulf_of_Trieste_seamask_UTM33.cpg +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/notebooks/tutos/auxdata/Gulf_of_Trieste_seamask_UTM33.dbf +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/notebooks/tutos/auxdata/Gulf_of_Trieste_seamask_UTM33.prj +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/notebooks/tutos/auxdata/Gulf_of_Trieste_seamask_UTM33.qix +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/notebooks/tutos/auxdata/Gulf_of_Trieste_seamask_UTM33.qpj +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/notebooks/tutos/auxdata/Gulf_of_Trieste_seamask_UTM33.shp +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/notebooks/tutos/auxdata/Gulf_of_Trieste_seamask_UTM33.shx +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/notebooks/tutos/auxdata/sentinel2_tiling_grid_centroids.zip +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/notebooks/tutos/tuto_burnt_areas_snappy.ipynb +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/notebooks/tutos/tuto_cds.ipynb +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/notebooks/tutos/tuto_cop_dem.ipynb +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/notebooks/tutos/tuto_ecmwf.ipynb +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/notebooks/tutos/tuto_meteoblue.ipynb +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/notebooks/tutos/tuto_search_location_tile.ipynb +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/notebooks/tutos/tuto_ship_detection.ipynb +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/notebooks/tutos/tuto_stac_client.ipynb +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/notebooks/tutos/tuto_wekeo.ipynb +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/plugins_reference/api.rst +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/plugins_reference/auth.rst +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/plugins_reference/crunch.rst +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/plugins_reference/download.rst +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/plugins_reference/search.rst +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/stac.rst +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/docs/tutos.rst +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/__init__.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/api/__init__.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/api/product/__init__.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/api/product/drivers/__init__.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/api/product/drivers/base.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/api/product/metadata_mapping.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/cli.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/config.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/crunch.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/plugins/__init__.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/plugins/apis/__init__.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/plugins/apis/base.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/plugins/apis/ecmwf.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/plugins/apis/usgs.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/plugins/authentication/__init__.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/plugins/authentication/aws_auth.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/plugins/authentication/base.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/plugins/authentication/generic.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/plugins/authentication/header.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/plugins/authentication/keycloak.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/plugins/authentication/oauth.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/plugins/authentication/openid_connect.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/plugins/authentication/qsauth.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/plugins/authentication/sas_auth.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/plugins/authentication/token.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/plugins/authentication/token_exchange.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/plugins/base.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/plugins/crunch/__init__.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/plugins/crunch/base.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/plugins/crunch/filter_date.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/plugins/crunch/filter_latest_intersect.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/plugins/crunch/filter_latest_tpl_name.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/plugins/crunch/filter_overlap.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/plugins/crunch/filter_property.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/plugins/download/__init__.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/plugins/download/aws.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/plugins/download/base.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/plugins/download/creodias_s3.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/plugins/download/http.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/plugins/download/s3rest.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/plugins/search/__init__.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/plugins/search/base.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/plugins/search/build_search_result.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/plugins/search/cop_marine.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/plugins/search/creodias_s3.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/plugins/search/csw.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/plugins/search/data_request_search.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/plugins/search/qssearch.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/plugins/search/static_stac_search.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/py.typed +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/resources/constraints/climate-dt.json +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/resources/constraints/extremes-dt.json +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/resources/locations_conf_template.yml +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/resources/product_types.yml +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/resources/providers.yml +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/resources/shp/ne_110m_admin_0_map_units.VERSION.txt +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/resources/shp/ne_110m_admin_0_map_units.cpg +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/resources/shp/ne_110m_admin_0_map_units.dbf +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/resources/shp/ne_110m_admin_0_map_units.prj +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/resources/shp/ne_110m_admin_0_map_units.shp +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/resources/shp/ne_110m_admin_0_map_units.shx +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/resources/stac.yml +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/resources/stac_api.yml +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/resources/stac_provider.yml +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/resources/user_conf_template.yml +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/rest/__init__.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/rest/cache.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/rest/config.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/rest/constants.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/rest/core.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/rest/server.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/rest/server.wsgi +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/rest/stac.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/rest/templates/README +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/rest/types/__init__.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/rest/types/collections_search.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/rest/types/eodag_search.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/rest/types/queryables.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/rest/types/stac_search.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/rest/utils/__init__.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/rest/utils/cql_evaluate.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/rest/utils/rfc3339.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/types/__init__.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/types/bbox.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/types/download_args.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/types/queryables.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/types/search_args.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/types/whoosh.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/utils/__init__.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/utils/constraints.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/utils/exceptions.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/utils/import_system.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/utils/logging.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/utils/notebook.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/utils/requests.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/utils/rest.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag/utils/stac_reader.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag.egg-info/dependency_links.txt +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag.egg-info/entry_points.txt +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/eodag.egg-info/top_level.txt +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/get_pypi_latest_version.sh +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/pytest.ini +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/readthedocs.yml +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/requirements-dev.txt +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/requirements-docs.txt +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/requirements-tutorials.txt +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/requirements.txt +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/setup.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/tox.ini +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/utils/params_mapping_to_csv.py +0 -0
- {eodag-3.0.0b1 → eodag-3.0.0b2}/utils/product_types_information_to_csv.py +0 -0
|
@@ -1,6 +1,26 @@
|
|
|
1
1
|
Release history
|
|
2
2
|
---------------
|
|
3
3
|
|
|
4
|
+
3.0.0b2 (2024-06-29)
|
|
5
|
+
++++++++++++++++++++
|
|
6
|
+
|
|
7
|
+
Core features and fixes
|
|
8
|
+
^^^^^^^^^^^^^^^^^^^^^^^
|
|
9
|
+
|
|
10
|
+
* New :class:`~eodag.api.search_result.SearchResult` HTML representation for notebooks (:pull:`1243`)
|
|
11
|
+
|
|
12
|
+
Plugins new features and fixes
|
|
13
|
+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
14
|
+
|
|
15
|
+
* Fixed missing ``products`` configuration in ``Api`` plugin download (:pull:`1241`)
|
|
16
|
+
* Fixed ``pagination`` configuration to be not allways mandatory (:pull:`1240`)
|
|
17
|
+
|
|
18
|
+
Miscellaneous
|
|
19
|
+
^^^^^^^^^^^^^
|
|
20
|
+
|
|
21
|
+
* **[docs]** Custom mock search plugin example (:pull:`1242`)
|
|
22
|
+
* External product types reference updates (:pull:`1234`)
|
|
23
|
+
|
|
4
24
|
3.0.0b1 (2024-06-24)
|
|
5
25
|
++++++++++++++++++++
|
|
6
26
|
|
|
@@ -63,7 +83,7 @@ Plugins new features and fixes
|
|
|
63
83
|
* Refresh token for :class:`~eodag.plugins.authentication.openid_connect.OIDCAuthorizationCodeFlowAuth` plugin
|
|
64
84
|
(:pull:`1138`), tests (:pull:`1135`), and fix (:pull:`1232`)
|
|
65
85
|
* :class:`~eodag.plugins.authentication.header.HTTPHeaderAuth` accepts headers definition in credentials (:pull:`1215`)
|
|
66
|
-
* ``flatten_top_dirs`` download plugins option set to true by default (
|
|
86
|
+
* ``flatten_top_dirs`` download plugins option set to true by default (:pull:`1220`)
|
|
67
87
|
* ``base_uri`` download plugins setting is not systematically mandatory any more (:pull:`1230`)
|
|
68
88
|
* Re-login in :class:`~eodag.plugins.apis.usgs.UsgsApi` plugin on api file error (:pull:`1046`)
|
|
69
89
|
* Allow no auth for :class:`~eodag.plugins.download.http.HTTPDownload` download requests (:pull:`1196`)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: eodag
|
|
3
|
-
Version: 3.0.
|
|
3
|
+
Version: 3.0.0b2
|
|
4
4
|
Summary: Earth Observation Data Access Gateway
|
|
5
5
|
Home-page: https://github.com/CS-SI/eodag
|
|
6
6
|
Author: CS GROUP - France
|
|
@@ -110,6 +110,7 @@ Requires-Dist: eodag[all]; extra == "docs"
|
|
|
110
110
|
Requires-Dist: sphinx; extra == "docs"
|
|
111
111
|
Requires-Dist: sphinx-book-theme; extra == "docs"
|
|
112
112
|
Requires-Dist: sphinx-copybutton; extra == "docs"
|
|
113
|
+
Requires-Dist: sphinx-tabs; extra == "docs"
|
|
113
114
|
Requires-Dist: nbsphinx; extra == "docs"
|
|
114
115
|
|
|
115
116
|
.. image:: https://eodag.readthedocs.io/en/latest/_static/eodag_bycs.png
|
|
@@ -297,7 +298,7 @@ An eodag instance can be exposed through a STAC compliant REST api from the comm
|
|
|
297
298
|
|
|
298
299
|
.. code-block:: bash
|
|
299
300
|
|
|
300
|
-
docker run -p 5000:5000 --rm csspace/eodag-server:3.0.
|
|
301
|
+
docker run -p 5000:5000 --rm csspace/eodag-server:3.0.0b2
|
|
301
302
|
|
|
302
303
|
You can also browse over your STAC API server using `STAC Browser <https://github.com/radiantearth/stac-browser>`_.
|
|
303
304
|
Simply run:
|
|
@@ -183,7 +183,7 @@ An eodag instance can be exposed through a STAC compliant REST api from the comm
|
|
|
183
183
|
|
|
184
184
|
.. code-block:: bash
|
|
185
185
|
|
|
186
|
-
docker run -p 5000:5000 --rm csspace/eodag-server:3.0.
|
|
186
|
+
docker run -p 5000:5000 --rm csspace/eodag-server:3.0.0b2
|
|
187
187
|
|
|
188
188
|
You can also browse over your STAC API server using `STAC Browser <https://github.com/radiantearth/stac-browser>`_.
|
|
189
189
|
Simply run:
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
apiVersion: v2
|
|
2
|
-
appVersion: 3.0.
|
|
2
|
+
appVersion: 3.0.0b2
|
|
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.0.
|
|
18
|
+
version: 3.0.0b2
|
|
@@ -108,31 +108,37 @@ named ``your_package.your_module``:
|
|
|
108
108
|
def download(self):
|
|
109
109
|
pass
|
|
110
110
|
|
|
111
|
-
Then, in the `
|
|
111
|
+
Then, in the `configuration file <https://setuptools.readthedocs.io/en/latest/userguide/quickstart.html#id2>`_ of your Python project,
|
|
112
112
|
add this:
|
|
113
113
|
|
|
114
|
-
.. code-block:: python
|
|
115
114
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
115
|
+
.. tabs::
|
|
116
|
+
.. tab:: pyproject.toml
|
|
117
|
+
.. code-block:: toml
|
|
118
|
+
|
|
119
|
+
[project.entry-points."eodag.plugins.api"]
|
|
120
|
+
SampleApiPlugin = "your_package.your_module:SampleApiPlugin"
|
|
121
|
+
|
|
122
|
+
.. tab:: setup.py
|
|
123
|
+
.. code-block:: python
|
|
124
|
+
|
|
125
|
+
setup(
|
|
126
|
+
# ...
|
|
127
|
+
entry_points={
|
|
128
|
+
'eodag.plugins.api': [
|
|
129
|
+
'SampleApiPlugin = your_package.your_module:SampleApiPlugin'
|
|
130
|
+
]
|
|
131
|
+
}
|
|
132
|
+
)
|
|
127
133
|
|
|
128
134
|
See `what the PyPa explains <https://packaging.python.org/guides/creating-and-discovering-plugins/#using-package-metadata>`_ to better
|
|
129
135
|
understand this concept. In EODAG, the name you give to your plugin in the
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
+
entry point doesn't matter, but we prefer it to be the same as the class
|
|
137
|
+
name of the plugin. What matters is that the entry point must be a class
|
|
138
|
+
deriving from one of the 5 plugin topics supported. Be particularly careful
|
|
139
|
+
with consistency between the entry point name and the super class of you
|
|
140
|
+
plugin class. Here is a list of entry point names and the plugin topic to
|
|
141
|
+
which they map:
|
|
136
142
|
|
|
137
143
|
* 'eodag.plugins.api' : :class:`~eodag.plugins.apis.base.Api`
|
|
138
144
|
* 'eodag.plugins.auth' : :class:`~eodag.plugins.auth.base.Authentication`
|
|
@@ -140,9 +146,83 @@ plugin topic to which they map:
|
|
|
140
146
|
* 'eodag.plugins.download' : :class:`~eodag.plugins.download.base.Download`
|
|
141
147
|
* 'eodag.plugins.search' : :class:`~eodag.plugins.search.base.Search`
|
|
142
148
|
|
|
149
|
+
|
|
150
|
+
Read the :ref:`mock search plugin` section to get an example of how to build a search
|
|
151
|
+
plugin.
|
|
152
|
+
|
|
143
153
|
As an example of external plugin, you can have a look to
|
|
144
154
|
`eodag-sentinelsat <https://github.com/CS-SI/eodag-sentinelsat>`_.
|
|
145
155
|
|
|
156
|
+
.. _mock search plugin:
|
|
157
|
+
|
|
158
|
+
A sample mock search plugin
|
|
159
|
+
"""""""""""""""""""""""""""
|
|
160
|
+
|
|
161
|
+
In this section, we demonstrate the creation of custom search plugin. This plugin will
|
|
162
|
+
return a list of mocked EOProducts on search requests.
|
|
163
|
+
|
|
164
|
+
1. Create a folder called `eodag_search_mock`. It will be the name of our package.
|
|
165
|
+
|
|
166
|
+
2. Make an empty `__init.py__` file in the package folder.
|
|
167
|
+
|
|
168
|
+
3. Make a `mock_search.py` file and paste in it the following class
|
|
169
|
+
definition.
|
|
170
|
+
|
|
171
|
+
It is our search plugin. The `query()` function is the one called by EODAG when
|
|
172
|
+
searching for products.
|
|
173
|
+
|
|
174
|
+
.. code-block:: python
|
|
175
|
+
|
|
176
|
+
# mock_search.py
|
|
177
|
+
from typing import Any, List, Optional, Tuple
|
|
178
|
+
from eodag.plugins.search import PreparedSearch
|
|
179
|
+
from eodag.plugins.search.base import Search
|
|
180
|
+
from eodag.api.product import EOProduct
|
|
181
|
+
|
|
182
|
+
class MockSearch(Search):
|
|
183
|
+
"""Implement a Mock search plugin"""
|
|
184
|
+
|
|
185
|
+
def query(
|
|
186
|
+
self,
|
|
187
|
+
prep: PreparedSearch = PreparedSearch(),
|
|
188
|
+
**kwargs: Any,
|
|
189
|
+
) -> Tuple[List[EOProduct], Optional[int]]:
|
|
190
|
+
"""Generate EOProduct from the request"""
|
|
191
|
+
return ([EOProduct(
|
|
192
|
+
provider=self.provider,
|
|
193
|
+
properties={
|
|
194
|
+
**{
|
|
195
|
+
"id": f"mock_{kwargs.get('productType')}_{i}"
|
|
196
|
+
},
|
|
197
|
+
**kwargs
|
|
198
|
+
}
|
|
199
|
+
) for i in range(0, prep.items_per_page)],
|
|
200
|
+
prep.items_per_page if prep.count else None
|
|
201
|
+
)
|
|
202
|
+
|
|
203
|
+
4. Create a `pyproject.toml` file in the package folder and paste in it the following
|
|
204
|
+
content.
|
|
205
|
+
|
|
206
|
+
The `projects.entry-points` is crucial for EODAG to detect this new plugin.
|
|
207
|
+
|
|
208
|
+
.. code-block:: toml
|
|
209
|
+
|
|
210
|
+
[project]
|
|
211
|
+
name = "eodag-search-mock"
|
|
212
|
+
version = "0.0.1"
|
|
213
|
+
description = "Mock Search plugin for EODAG"
|
|
214
|
+
requires-python = ">=3.8"
|
|
215
|
+
dependencies = [ "eodag" ]
|
|
216
|
+
|
|
217
|
+
[project.entry-points."eodag.plugins.search"]
|
|
218
|
+
MockSearch = "mock_search:MockSearch"
|
|
219
|
+
|
|
220
|
+
5. Your plugin is now ready. You need to install it for EODAG to be able to use it.
|
|
221
|
+
|
|
222
|
+
.. code-block:: shell
|
|
223
|
+
|
|
224
|
+
pip install eodag_search_mock
|
|
225
|
+
|
|
146
226
|
Provider configuration
|
|
147
227
|
^^^^^^^^^^^^^^^^^^^^^^
|
|
148
228
|
|
|
@@ -120,7 +120,7 @@ available on `https://hub.docker.com/r/csspace/eodag-server <https://hub.docker.
|
|
|
120
120
|
|
|
121
121
|
.. code-block:: bash
|
|
122
122
|
|
|
123
|
-
$ docker run -p 5000:5000 --rm csspace/eodag-server:3.0.
|
|
123
|
+
$ docker run -p 5000:5000 --rm csspace/eodag-server:3.0.0b2
|
|
124
124
|
|
|
125
125
|
Example
|
|
126
126
|
-------
|
|
@@ -1445,8 +1445,12 @@ class EODataAccessGateway:
|
|
|
1445
1445
|
start=start, end=end, geom=geom, locations=locations, **kwargs
|
|
1446
1446
|
)
|
|
1447
1447
|
for i, search_plugin in enumerate(search_plugins):
|
|
1448
|
-
itp =
|
|
1449
|
-
|
|
1448
|
+
itp = (
|
|
1449
|
+
items_per_page
|
|
1450
|
+
or getattr(search_plugin.config, "pagination", {}).get(
|
|
1451
|
+
"max_items_per_page"
|
|
1452
|
+
)
|
|
1453
|
+
or DEFAULT_MAX_ITEMS_PER_PAGE
|
|
1450
1454
|
)
|
|
1451
1455
|
logger.debug(
|
|
1452
1456
|
"Searching for all the products with provider %s and a maximum of %s "
|
|
@@ -22,6 +22,7 @@ from collections import UserDict
|
|
|
22
22
|
from typing import TYPE_CHECKING, Any, Dict, List, Optional
|
|
23
23
|
|
|
24
24
|
from eodag.utils.exceptions import NotAvailableError
|
|
25
|
+
from eodag.utils.repr import dict_to_html_table
|
|
25
26
|
|
|
26
27
|
if TYPE_CHECKING:
|
|
27
28
|
from eodag.api.product import EOProduct
|
|
@@ -84,6 +85,43 @@ class AssetsDict(UserDict):
|
|
|
84
85
|
else:
|
|
85
86
|
return [a for a in self.values() if "href" in a]
|
|
86
87
|
|
|
88
|
+
def _repr_html_(self, embeded=False):
|
|
89
|
+
thead = (
|
|
90
|
+
f"""<thead><tr><td style='text-align: left; color: grey;'>
|
|
91
|
+
{type(self).__name__} ({len(self)})
|
|
92
|
+
</td></tr></thead>
|
|
93
|
+
"""
|
|
94
|
+
if not embeded
|
|
95
|
+
else ""
|
|
96
|
+
)
|
|
97
|
+
tr_style = "style='background-color: transparent;'" if embeded else ""
|
|
98
|
+
return (
|
|
99
|
+
f"<table>{thead}"
|
|
100
|
+
+ "".join(
|
|
101
|
+
[
|
|
102
|
+
f"""<tr {tr_style}><td style='text-align: left;'>
|
|
103
|
+
<details><summary style='color: grey;'>
|
|
104
|
+
<span style='color: black'>'{k}'</span>: 
|
|
105
|
+
{{
|
|
106
|
+
{"'roles': '<span style='color: black'>"+str(v['roles'])+"</span>', "
|
|
107
|
+
if v.get("roles") else ""}
|
|
108
|
+
{"'type': '"+str(v['type'])+"', "
|
|
109
|
+
if v.get("type") else ""}
|
|
110
|
+
{"'title': '<span style='color: black'>"+str(v['title'])+"</span>', "
|
|
111
|
+
if v.get("title") else ""}
|
|
112
|
+
...
|
|
113
|
+
}}
|
|
114
|
+
</summary>
|
|
115
|
+
{dict_to_html_table(v, depth=1)}
|
|
116
|
+
</details>
|
|
117
|
+
</td></tr>
|
|
118
|
+
"""
|
|
119
|
+
for k, v in self.items()
|
|
120
|
+
]
|
|
121
|
+
)
|
|
122
|
+
+ "</table>"
|
|
123
|
+
)
|
|
124
|
+
|
|
87
125
|
|
|
88
126
|
class Asset(UserDict):
|
|
89
127
|
"""A UserDict object containg one of the assets of a
|
|
@@ -127,3 +165,15 @@ class Asset(UserDict):
|
|
|
127
165
|
:rtype: str
|
|
128
166
|
"""
|
|
129
167
|
return self.product.download(asset=self.key, **kwargs)
|
|
168
|
+
|
|
169
|
+
def _repr_html_(self):
|
|
170
|
+
thead = f"""<thead><tr><td style='text-align: left; color: grey;'>
|
|
171
|
+
{type(self).__name__} - {self.key}
|
|
172
|
+
</td></tr></thead>
|
|
173
|
+
"""
|
|
174
|
+
return f"""<table>{thead}
|
|
175
|
+
<tr><td style='text-align: left;'>
|
|
176
|
+
{dict_to_html_table(self)}
|
|
177
|
+
</details>
|
|
178
|
+
</td></tr>
|
|
179
|
+
</table>"""
|
|
@@ -51,6 +51,7 @@ from eodag.utils import (
|
|
|
51
51
|
get_geometry_from_various,
|
|
52
52
|
)
|
|
53
53
|
from eodag.utils.exceptions import DownloadError, MisconfiguredError
|
|
54
|
+
from eodag.utils.repr import dict_to_html_table
|
|
54
55
|
|
|
55
56
|
if TYPE_CHECKING:
|
|
56
57
|
from shapely.geometry.base import BaseGeometry
|
|
@@ -517,3 +518,45 @@ class EOProduct:
|
|
|
517
518
|
)
|
|
518
519
|
pass
|
|
519
520
|
return NoDriver()
|
|
521
|
+
|
|
522
|
+
def _repr_html_(self):
|
|
523
|
+
thumbnail = self.properties.get("thumbnail", None)
|
|
524
|
+
thumbnail_html = (
|
|
525
|
+
f"<img src='{thumbnail}' width=100 alt='thumbnail'/>"
|
|
526
|
+
if thumbnail and not thumbnail.startswith("s3")
|
|
527
|
+
else ""
|
|
528
|
+
)
|
|
529
|
+
geom_style = "style='color: grey; text-align: center; min-width:100px; vertical-align: top;'"
|
|
530
|
+
thumbnail_style = (
|
|
531
|
+
"style='padding-top: 1.5em; min-width:100px; vertical-align: top;'"
|
|
532
|
+
)
|
|
533
|
+
|
|
534
|
+
return f"""<table>
|
|
535
|
+
<thead><tr style='background-color: transparent;'><td style='text-align: left; color: grey;'>
|
|
536
|
+
{type(self).__name__}
|
|
537
|
+
</td></tr></thead>
|
|
538
|
+
|
|
539
|
+
<tr style='background-color: transparent;'>
|
|
540
|
+
<td style='text-align: left; vertical-align: top;'>
|
|
541
|
+
{dict_to_html_table({
|
|
542
|
+
"provider": self.provider,
|
|
543
|
+
"product_type": self.product_type,
|
|
544
|
+
"properties["id"]": self.properties.get('id', None),
|
|
545
|
+
"properties["startTimeFromAscendingNode"]": self.properties.get(
|
|
546
|
+
'startTimeFromAscendingNode', None
|
|
547
|
+
),
|
|
548
|
+
"properties["completionTimeFromAscendingNode"]": self.properties.get(
|
|
549
|
+
'completionTimeFromAscendingNode', None
|
|
550
|
+
),
|
|
551
|
+
}, brackets=False)}
|
|
552
|
+
<details><summary style='color: grey; margin-top: 10px;'>properties: ({
|
|
553
|
+
len(self.properties)
|
|
554
|
+
})</summary>{dict_to_html_table(self.properties, depth=1)}</details>
|
|
555
|
+
<details><summary style='color: grey; margin-top: 10px;'>assets: ({
|
|
556
|
+
len(self.assets)
|
|
557
|
+
})</summary>{self.assets._repr_html_(embeded=True)}</details>
|
|
558
|
+
</td>
|
|
559
|
+
<td {geom_style} title='geometry'>geometry<br />{self.geometry._repr_svg_()}</td>
|
|
560
|
+
<td {thumbnail_style} title='properties["thumbnail"]'>{thumbnail_html}</td>
|
|
561
|
+
</tr>
|
|
562
|
+
</table>"""
|
|
@@ -174,6 +174,33 @@ class SearchResult(UserList):
|
|
|
174
174
|
"""
|
|
175
175
|
return self.as_geojson_object()
|
|
176
176
|
|
|
177
|
+
def _repr_html_(self):
|
|
178
|
+
total_count = f"/{self.number_matched}" if self.number_matched else ""
|
|
179
|
+
return (
|
|
180
|
+
f"""<table>
|
|
181
|
+
<thead><tr><td style='text-align: left; color: grey;'>
|
|
182
|
+
{type(self).__name__} ({len(self)}{total_count})
|
|
183
|
+
</td></tr></thead>
|
|
184
|
+
"""
|
|
185
|
+
+ "".join(
|
|
186
|
+
[
|
|
187
|
+
f"""<tr><td style='text-align: left;'>
|
|
188
|
+
<details><summary style='color: grey; font-family: monospace;'>
|
|
189
|
+
{i} 
|
|
190
|
+
{type(p).__name__}(id=<span style='color: black;'>{
|
|
191
|
+
p.properties['id']
|
|
192
|
+
}</span>, provider={p.provider})
|
|
193
|
+
</summary>
|
|
194
|
+
{p._repr_html_()}
|
|
195
|
+
</details>
|
|
196
|
+
</td></tr>
|
|
197
|
+
"""
|
|
198
|
+
for i, p in enumerate(self)
|
|
199
|
+
]
|
|
200
|
+
)
|
|
201
|
+
+ "</table>"
|
|
202
|
+
)
|
|
203
|
+
|
|
177
204
|
|
|
178
205
|
class RawSearchResult(UserList):
|
|
179
206
|
"""An object representing a collection of raw/unparsed search results obtained from a provider.
|
|
@@ -242,6 +242,7 @@ class PluginManager:
|
|
|
242
242
|
self._build_plugin(product.provider, download, Download),
|
|
243
243
|
)
|
|
244
244
|
elif api := getattr(plugin_conf, "api", None):
|
|
245
|
+
plugin_conf.api.products = plugin_conf.products
|
|
245
246
|
plugin_conf.api.priority = plugin_conf.priority
|
|
246
247
|
plugin = cast(Api, self._build_plugin(product.provider, api, Api))
|
|
247
248
|
else:
|