MapProxy 4.0.0__tar.gz → 4.0.2__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.
- {mapproxy-4.0.0 → mapproxy-4.0.2}/CHANGES.txt +21 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/MapProxy.egg-info/PKG-INFO +22 -33
- {mapproxy-4.0.0 → mapproxy-4.0.2}/MapProxy.egg-info/SOURCES.txt +2 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/PKG-INFO +22 -33
- {mapproxy-4.0.0 → mapproxy-4.0.2}/doc/deployment.rst +2 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/doc/index.rst +1 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/doc/install_docker.rst +8 -11
- mapproxy-4.0.2/doc/ogc_api.rst +12 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/config/loader.py +6 -6
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/multiapp.py +2 -1
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/service/demo.py +65 -54
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/service/kml.py +2 -1
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/service/templates/demo/capabilities_demo.html +1 -3
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/service/templates/demo/wmts_demo.html +2 -1
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/service/wmts.py +2 -2
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/util_grids.yaml +2 -1
- mapproxy-4.0.2/mapproxy/test/system/test_demo.py +123 -0
- mapproxy-4.0.2/mapproxy/util/escape.py +10 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/wsgiapp.py +2 -1
- {mapproxy-4.0.0 → mapproxy-4.0.2}/setup.py +1 -1
- mapproxy-4.0.0/mapproxy/test/system/test_demo.py +0 -56
- {mapproxy-4.0.0 → mapproxy-4.0.2}/AUTHORS.txt +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/COPYING.txt +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/LICENSE.txt +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/MANIFEST.in +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/MapProxy.egg-info/dependency_links.txt +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/MapProxy.egg-info/entry_points.txt +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/MapProxy.egg-info/not-zip-safe +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/MapProxy.egg-info/requires.txt +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/MapProxy.egg-info/top_level.txt +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/README.md +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/doc/GM.txt +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/doc/_static/logo.png +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/doc/_static/logo_title.png +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/doc/_static/mapproxy.css +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/doc/_templates/versions.html +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/doc/auth.rst +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/doc/caches.rst +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/doc/caching_layer_dimensions.rst +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/doc/conf.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/doc/configuration.rst +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/doc/configuration_examples.rst +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/doc/coverages.rst +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/doc/decorate_img.rst +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/doc/development.rst +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/doc/imgs/bicubic.png +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/doc/imgs/bilinear.png +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/doc/imgs/labeling-dynamic.png +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/doc/imgs/labeling-meta-buffer.png +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/doc/imgs/labeling-metatiling-buffer.png +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/doc/imgs/labeling-metatiling.png +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/doc/imgs/labeling-no-clip.png +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/doc/imgs/labeling-no-placement.png +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/doc/imgs/labeling-partial-false.png +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/doc/imgs/labeling-repeated.png +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/doc/imgs/mapnik-webmerc-hq.png +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/doc/imgs/mapnik-webmerc.png +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/doc/imgs/mapproxy-demo.png +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/doc/imgs/nearest.png +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/doc/inspire.rst +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/doc/install.rst +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/doc/install_osgeo4w.rst +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/doc/install_windows.rst +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/doc/labeling.rst +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/doc/mapproxy_util.rst +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/doc/mapproxy_util_autoconfig.rst +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/doc/plugins.rst +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/doc/seed.rst +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/doc/services.rst +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/doc/sources.rst +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/doc/tutorial.rst +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/doc/tutorial.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/doc/yaml/cache_conf.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/doc/yaml/grid_conf.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/doc/yaml/merged_conf.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/doc/yaml/meta_conf.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/doc/yaml/seed.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/doc/yaml/simple_conf.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/__init__.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/cache/__init__.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/cache/azureblob.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/cache/base.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/cache/compact.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/cache/couchdb.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/cache/dummy.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/cache/file.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/cache/geopackage.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/cache/legend.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/cache/mbtiles.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/cache/meta.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/cache/path.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/cache/redis.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/cache/renderd.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/cache/s3.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/cache/tile.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/client/__init__.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/client/arcgis.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/client/cgi.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/client/http.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/client/log.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/client/tile.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/client/wms.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/compat/__init__.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/compat/image.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/config/__init__.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/config/config-schema.json +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/config/config.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/config/coverage.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/config/defaults.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/config/spec.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/config/validator.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/config_template/__init__.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/config_template/base_config/config.wsgi +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/config_template/base_config/full_example.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/config_template/base_config/full_seed_example.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/config_template/base_config/log.ini +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/config_template/base_config/mapproxy.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/config_template/base_config/seed.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/exception.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/featureinfo.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/grid.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/image/__init__.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/image/fonts/DejaVuSans.ttf +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/image/fonts/DejaVuSansMono.ttf +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/image/fonts/LICENSE +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/image/fonts/__init__.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/image/mask.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/image/merge.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/image/message.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/image/opts.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/image/tile.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/image/transform.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/layer.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/proj.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/request/__init__.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/request/arcgis.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/request/base.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/request/tile.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/request/wms/__init__.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/request/wms/exception.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/request/wmts.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/response.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/script/__init__.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/script/conf/__init__.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/script/conf/app.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/script/conf/caches.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/script/conf/geopackage.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/script/conf/layers.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/script/conf/seeds.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/script/conf/sources.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/script/conf/utils.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/script/defrag.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/script/export.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/script/grids.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/script/scales.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/script/util.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/script/wms_capabilities.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/seed/__init__.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/seed/cachelock.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/seed/cleanup.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/seed/config.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/seed/script.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/seed/seeder.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/seed/spec.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/seed/util.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/service/__init__.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/service/base.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/service/ows.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/service/template_helper.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/service/templates/demo/demo.html +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/service/templates/demo/openlayers-demo.cfg +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/service/templates/demo/static/img/blank.gif +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/service/templates/demo/static/img/east-mini.png +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/service/templates/demo/static/img/north-mini.png +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/service/templates/demo/static/img/south-mini.png +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/service/templates/demo/static/img/west-mini.png +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/service/templates/demo/static/img/zoom-minus-mini.png +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/service/templates/demo/static/img/zoom-plus-mini.png +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/service/templates/demo/static/img/zoom-world-mini.png +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/service/templates/demo/static/logo.png +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/service/templates/demo/static/ol.css +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/service/templates/demo/static/ol.js +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/service/templates/demo/static/proj4.min.js +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/service/templates/demo/static/proj4defs.js +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/service/templates/demo/static/site.css +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/service/templates/demo/static/theme/default/framedCloud.css +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/service/templates/demo/static/theme/default/google.css +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/service/templates/demo/static/theme/default/ie6-style.css +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/service/templates/demo/static/theme/default/style.css +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/service/templates/demo/static.html +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/service/templates/demo/tms_demo.html +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/service/templates/demo/wms_demo.html +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/service/templates/ows_exception.xml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/service/templates/tms_capabilities.xml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/service/templates/tms_exception.xml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/service/templates/tms_root_resource.xml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/service/templates/tms_tilemap_capabilities.xml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/service/templates/wms100capabilities.xml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/service/templates/wms100exception.xml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/service/templates/wms110capabilities.xml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/service/templates/wms110exception.xml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/service/templates/wms111capabilities.xml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/service/templates/wms111exception.xml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/service/templates/wms130capabilities.xml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/service/templates/wms130exception.xml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/service/templates/wmts100capabilities.xml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/service/templates/wmts100exception.xml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/service/tile.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/service/wms.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/source/__init__.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/source/arcgis.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/source/error.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/source/mapnik.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/source/tile.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/source/wms.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/srs.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/template.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/__init__.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/conftest.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/helper.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/http.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/image.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/mocker.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/inspire/common/1.0/common.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_bul.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_cze.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_dan.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_dut.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_eng.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_est.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_fin.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_fre.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_ger.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_gle.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_gre.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_hun.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_ita.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_lav.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_lit.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_mlt.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_pol.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_por.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_rum.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_slo.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_slv.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_spa.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_swe.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/inspire/common/1.0/network.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/inspire/inspire_vs/1.0/inspire_vs.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/kml/2.2.0/ReadMe.txt +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/kml/2.2.0/atom-author-link.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/kml/2.2.0/ogckml22.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/kml/2.2.0/xAL.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/ows/1.1.0/ReadMe.txt +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/ows/1.1.0/ows19115subset.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/ows/1.1.0/owsAll.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/ows/1.1.0/owsCommon.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/ows/1.1.0/owsContents.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/ows/1.1.0/owsDataIdentification.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/ows/1.1.0/owsDomainType.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/ows/1.1.0/owsExceptionReport.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/ows/1.1.0/owsGetCapabilities.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/ows/1.1.0/owsGetResourceByID.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/ows/1.1.0/owsInputOutputData.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/ows/1.1.0/owsManifest.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/ows/1.1.0/owsOperationsMetadata.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/ows/1.1.0/owsServiceIdentification.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/ows/1.1.0/owsServiceProvider.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/sld/1.1.0/sld_capabilities.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/wms/1.0.0/capabilities_1_0_0.dtd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/wms/1.0.0/capabilities_1_0_0.xml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/wms/1.0.7/capabilities_1_0_7.dtd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/wms/1.0.7/capabilities_1_0_7.xml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/wms/1.1.0/capabilities_1_1_0.dtd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/wms/1.1.0/capabilities_1_1_0.xml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/wms/1.1.0/exception_1_1_0.dtd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/wms/1.1.0/exception_1_1_0.xml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/wms/1.1.1/OGC-exception.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/wms/1.1.1/WMS_DescribeLayerResponse.dtd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/wms/1.1.1/WMS_MS_Capabilities.dtd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/wms/1.1.1/WMS_exception_1_1_1.dtd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/wms/1.1.1/capabilities_1_1_1.dtd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/wms/1.1.1/capabilities_1_1_1.xml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/wms/1.1.1/exception_1_1_1.dtd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/wms/1.1.1/exception_1_1_1.xml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/wms/1.3.0/ReadMe.txt +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/wms/1.3.0/capabilities_1_3_0.xml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/wms/1.3.0/capabilities_1_3_0.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/wms/1.3.0/exceptions_1_3_0.xml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/wms/1.3.0/exceptions_1_3_0.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/wmsc/1.1.1/OGC-exception.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/wmsc/1.1.1/WMS_DescribeLayerResponse.dtd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/wmsc/1.1.1/WMS_MS_Capabilities.dtd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/wmsc/1.1.1/WMS_exception_1_1_1.dtd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/wmsc/1.1.1/capabilities_1_1_1.dtd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/wmsc/1.1.1/capabilities_1_1_1.xml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/wmsc/1.1.1/exception_1_1_1.dtd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/wmsc/1.1.1/exception_1_1_1.xml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/wmts/1.0/ReadMe.txt +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/wmts/1.0/wmts.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/wmts/1.0/wmtsAbstract.wsdl +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/wmts/1.0/wmtsGetCapabilities_request.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/wmts/1.0/wmtsGetCapabilities_response.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/wmts/1.0/wmtsGetFeatureInfo_request.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/wmts/1.0/wmtsGetFeatureInfo_response.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/wmts/1.0/wmtsGetTile_request.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/wmts/1.0/wmtsKVP.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/wmts/1.0/wmtsPayload_response.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/xlink/1.0.0/ReadMe.txt +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/xlink/1.0.0/xlinks.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/schemas/xml.xsd +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/__init__.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/arcgis.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/auth.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/cache.mbtiles +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/cache_azureblob.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/cache_band_merge.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/cache_bulk_meta_tiles.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/cache_coverage.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/cache_data/dop_cache_EPSG3857/00/000/000/000/000/000/000.png +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/cache_data/wms_cache_EPSG900913/01/000/000/000/000/000/001.jpeg +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/cache_data/wms_cache_transparent_EPSG900913/01/000/000/000/000/000/001.png +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/cache_geopackage.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/cache_grid_names.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/cache_mbtiles.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/cache_s3.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/cache_source.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/combined_sources.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/coverage.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/demo.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/dimension.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/disable_storage.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/empty_ogrdata.geojson +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/formats.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/inspire.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/inspire_full.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/kml_layer.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/layer.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/layergroups.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/layergroups_root.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/legendgraphic.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/mapnik_source.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/mapproxy_export.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/mapserver.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/minimal_cgi.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/mixed_mode.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/multi_cache_layers.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/multiapp1.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/multiapp2.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/renderd_client.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/scalehints.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/seed.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/seed_mapproxy.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/seed_timeouts.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/seed_timeouts_mapproxy.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/seedonly.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/sld.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/source_errors.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/source_errors_raise.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/tileservice_origin.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/tileservice_refresh.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/tilesource_minmax_res.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/util-conf-base-grids.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/util-conf-overwrite.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/util-conf-wms-111-cap.xml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/util_wms_capabilities111.xml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/util_wms_capabilities130.xml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/util_wms_capabilities_service_exception.xml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/watermark.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/wms_srs_extent.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/wms_versions.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/wmts.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/wmts_dimensions.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/xslt_featureinfo.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/fixture/xslt_featureinfo_input.yaml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_arcgis.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_auth.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_behind_proxy.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_bulk_meta_tiles.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_cache_azureblob.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_cache_band_merge.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_cache_coverage.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_cache_geopackage.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_cache_grid_names.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_cache_mbtiles.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_cache_s3.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_cache_source.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_combined_sources.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_coverage.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_decorate_img.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_demo_with_extra_service.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_dimensions.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_disable_storage.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_formats.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_inspire_vs.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_kml.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_layergroups.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_legendgraphic.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_mapnik.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_mapserver.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_mixed_mode_format.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_multi_cache_layers.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_multiapp.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_refresh.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_renderd_client.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_response_headers.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_scalehints.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_seed.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_seed_only.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_sld.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_source_errors.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_tilesource_minmax_res.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_tms.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_tms_origin.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_util_conf.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_util_export.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_util_grids.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_util_wms_capabilities.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_watermark.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_wms.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_wms_srs_extent.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_wms_version.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_wmsc.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_wmts.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_wmts_dimensions.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_wmts_restful.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/system/test_xslt_featureinfo.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/test_http_helper.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/__init__.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/epsg +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/polygons/polygons.dbf +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/polygons/polygons.shp +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/polygons/polygons.shx +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/test_async.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/test_auth.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/test_cache.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/test_cache_azureblob.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/test_cache_compact.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/test_cache_couchdb.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/test_cache_geopackage.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/test_cache_mbtile.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/test_cache_redis.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/test_cache_s3.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/test_cache_tile.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/test_client.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/test_client_arcgis.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/test_client_cgi.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/test_collections.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/test_concat_legends.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/test_conf_loader.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/test_conf_validator.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/test_config.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/test_decorate_img.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/test_exceptions.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/test_featureinfo.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/test_file_lock_load.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/test_fs.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/test_geom.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/test_grid.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/test_image.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/test_image_mask.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/test_image_messages.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/test_image_options.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/test_isodate.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/test_multiapp.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/test_ogr_reader.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/test_request.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/test_request_wmts.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/test_response.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/test_seed.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/test_seed_cachelock.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/test_srs.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/test_tiled_source.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/test_tilefilter.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/test_times.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/test_timeutils.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/test_util_conf_utils.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/test_utils.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/test_wms_capabilities.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/test_wms_layer.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/test/unit/test_yaml.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/tilefilter.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/util/__init__.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/util/async_.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/util/collections.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/util/coverage.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/util/ext/__init__.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/util/ext/dictspec/__init__.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/util/ext/dictspec/spec.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/util/ext/dictspec/test/__init__.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/util/ext/dictspec/test/test_validator.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/util/ext/dictspec/validator.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/util/ext/local.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/util/ext/lockfile.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/util/ext/odict.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/util/ext/serving.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/util/ext/tempita/__init__.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/util/ext/tempita/_looper.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/util/ext/tempita/string_utils.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/util/ext/wmsparse/__init__.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/util/ext/wmsparse/duration.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/util/ext/wmsparse/parse.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/util/ext/wmsparse/test/__init__.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/util/ext/wmsparse/test/test_parse.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/util/ext/wmsparse/test/test_util.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/util/ext/wmsparse/test/wms-example-111.xml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/util/ext/wmsparse/test/wms-example-130.xml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/util/ext/wmsparse/test/wms-large-111.xml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/util/ext/wmsparse/test/wms_nasa_cap.xml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/util/ext/wmsparse/util.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/util/fs.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/util/geom.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/util/lib.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/util/lock.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/util/ogr.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/util/py.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/util/times.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/util/yaml.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/mapproxy/version.py +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/pyproject.toml +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/requirements-tests.txt +0 -0
- {mapproxy-4.0.0 → mapproxy-4.0.2}/setup.cfg +0 -0
|
@@ -1,3 +1,24 @@
|
|
|
1
|
+
4.0.2 2025-04-10
|
|
2
|
+
~~~~~~~~~~~~~~~~
|
|
3
|
+
|
|
4
|
+
Fixes:
|
|
5
|
+
|
|
6
|
+
- Security fix to prevent XSS injections in demo pages
|
|
7
|
+
- Security fix to prevent reading file urls
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
4.0.1 2025-03-25
|
|
11
|
+
~~~~~~~~~~~~~~~~
|
|
12
|
+
|
|
13
|
+
Improvements:
|
|
14
|
+
|
|
15
|
+
- Added docs regarding OGC API support
|
|
16
|
+
|
|
17
|
+
Fixes:
|
|
18
|
+
|
|
19
|
+
- WMTS Demo now works if kvp is disabled
|
|
20
|
+
|
|
21
|
+
|
|
1
22
|
4.0.0 2025-03-21
|
|
2
23
|
~~~~~~~~~~~~~~~~
|
|
3
24
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: MapProxy
|
|
3
|
-
Version: 4.0.
|
|
3
|
+
Version: 4.0.2
|
|
4
4
|
Summary: An accelerating proxy for tile and web map services
|
|
5
5
|
Home-page: https://mapproxy.org
|
|
6
6
|
Author: Oliver Tonnhofer
|
|
@@ -53,6 +53,27 @@ The documentation is available at: http://mapproxy.github.io/mapproxy/latest/
|
|
|
53
53
|
|
|
54
54
|
Changes
|
|
55
55
|
-------
|
|
56
|
+
4.0.2 2025-04-10
|
|
57
|
+
~~~~~~~~~~~~~~~~
|
|
58
|
+
|
|
59
|
+
Fixes:
|
|
60
|
+
|
|
61
|
+
- Security fix to prevent XSS injections in demo pages
|
|
62
|
+
- Security fix to prevent reading file urls
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
4.0.1 2025-03-25
|
|
66
|
+
~~~~~~~~~~~~~~~~
|
|
67
|
+
|
|
68
|
+
Improvements:
|
|
69
|
+
|
|
70
|
+
- Added docs regarding OGC API support
|
|
71
|
+
|
|
72
|
+
Fixes:
|
|
73
|
+
|
|
74
|
+
- WMTS Demo now works if kvp is disabled
|
|
75
|
+
|
|
76
|
+
|
|
56
77
|
4.0.0 2025-03-21
|
|
57
78
|
~~~~~~~~~~~~~~~~
|
|
58
79
|
|
|
@@ -143,38 +164,6 @@ Fixes:
|
|
|
143
164
|
- Fix transparency in TMS demo page.
|
|
144
165
|
|
|
145
166
|
|
|
146
|
-
3.0.1 2024-08-27
|
|
147
|
-
~~~~~~~~~~~~~~~~
|
|
148
|
-
|
|
149
|
-
Fixes:
|
|
150
|
-
|
|
151
|
-
- Fix capabilities links in demo page and config template
|
|
152
|
-
- Trivy report format
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
3.0.0 2024-08-27
|
|
156
|
-
~~~~~~~~~~~~~~~~
|
|
157
|
-
|
|
158
|
-
Breaking:
|
|
159
|
-
|
|
160
|
-
- Add proper XML Exception when service parameter disabled / invalid or missing
|
|
161
|
-
In the past MapProxy returned WMS Capabilities when no explicit service parameter was given in
|
|
162
|
-
GetCapabilities requests. With this change, an OGC exception will be returned instead.
|
|
163
|
-
Invalid service types now also return a proper exception instead of an `internal error`.
|
|
164
|
-
Besides, the status code of exception responses now have a 400 or 500 code instead of 200
|
|
165
|
-
for better conformity.
|
|
166
|
-
|
|
167
|
-
Maintenance:
|
|
168
|
-
|
|
169
|
-
- Add test for seeding sqlite cache
|
|
170
|
-
- Documentation updates and clarifications
|
|
171
|
-
- Dependency updates
|
|
172
|
-
|
|
173
|
-
Fixes:
|
|
174
|
-
|
|
175
|
-
- Fix gh-pages workflow
|
|
176
|
-
|
|
177
|
-
|
|
178
167
|
|
|
179
168
|
Older changes
|
|
180
169
|
-------------
|
|
@@ -34,6 +34,7 @@ doc/install_windows.rst
|
|
|
34
34
|
doc/labeling.rst
|
|
35
35
|
doc/mapproxy_util.rst
|
|
36
36
|
doc/mapproxy_util_autoconfig.rst
|
|
37
|
+
doc/ogc_api.rst
|
|
37
38
|
doc/plugins.rst
|
|
38
39
|
doc/seed.rst
|
|
39
40
|
doc/services.rst
|
|
@@ -483,6 +484,7 @@ mapproxy/util/__init__.py
|
|
|
483
484
|
mapproxy/util/async_.py
|
|
484
485
|
mapproxy/util/collections.py
|
|
485
486
|
mapproxy/util/coverage.py
|
|
487
|
+
mapproxy/util/escape.py
|
|
486
488
|
mapproxy/util/fs.py
|
|
487
489
|
mapproxy/util/geom.py
|
|
488
490
|
mapproxy/util/lib.py
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: MapProxy
|
|
3
|
-
Version: 4.0.
|
|
3
|
+
Version: 4.0.2
|
|
4
4
|
Summary: An accelerating proxy for tile and web map services
|
|
5
5
|
Home-page: https://mapproxy.org
|
|
6
6
|
Author: Oliver Tonnhofer
|
|
@@ -53,6 +53,27 @@ The documentation is available at: http://mapproxy.github.io/mapproxy/latest/
|
|
|
53
53
|
|
|
54
54
|
Changes
|
|
55
55
|
-------
|
|
56
|
+
4.0.2 2025-04-10
|
|
57
|
+
~~~~~~~~~~~~~~~~
|
|
58
|
+
|
|
59
|
+
Fixes:
|
|
60
|
+
|
|
61
|
+
- Security fix to prevent XSS injections in demo pages
|
|
62
|
+
- Security fix to prevent reading file urls
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
4.0.1 2025-03-25
|
|
66
|
+
~~~~~~~~~~~~~~~~
|
|
67
|
+
|
|
68
|
+
Improvements:
|
|
69
|
+
|
|
70
|
+
- Added docs regarding OGC API support
|
|
71
|
+
|
|
72
|
+
Fixes:
|
|
73
|
+
|
|
74
|
+
- WMTS Demo now works if kvp is disabled
|
|
75
|
+
|
|
76
|
+
|
|
56
77
|
4.0.0 2025-03-21
|
|
57
78
|
~~~~~~~~~~~~~~~~
|
|
58
79
|
|
|
@@ -143,38 +164,6 @@ Fixes:
|
|
|
143
164
|
- Fix transparency in TMS demo page.
|
|
144
165
|
|
|
145
166
|
|
|
146
|
-
3.0.1 2024-08-27
|
|
147
|
-
~~~~~~~~~~~~~~~~
|
|
148
|
-
|
|
149
|
-
Fixes:
|
|
150
|
-
|
|
151
|
-
- Fix capabilities links in demo page and config template
|
|
152
|
-
- Trivy report format
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
3.0.0 2024-08-27
|
|
156
|
-
~~~~~~~~~~~~~~~~
|
|
157
|
-
|
|
158
|
-
Breaking:
|
|
159
|
-
|
|
160
|
-
- Add proper XML Exception when service parameter disabled / invalid or missing
|
|
161
|
-
In the past MapProxy returned WMS Capabilities when no explicit service parameter was given in
|
|
162
|
-
GetCapabilities requests. With this change, an OGC exception will be returned instead.
|
|
163
|
-
Invalid service types now also return a proper exception instead of an `internal error`.
|
|
164
|
-
Besides, the status code of exception responses now have a 400 or 500 code instead of 200
|
|
165
|
-
for better conformity.
|
|
166
|
-
|
|
167
|
-
Maintenance:
|
|
168
|
-
|
|
169
|
-
- Add test for seeding sqlite cache
|
|
170
|
-
- Documentation updates and clarifications
|
|
171
|
-
- Dependency updates
|
|
172
|
-
|
|
173
|
-
Fixes:
|
|
174
|
-
|
|
175
|
-
- Fix gh-pages workflow
|
|
176
|
-
|
|
177
|
-
|
|
178
167
|
|
|
179
168
|
Older changes
|
|
180
169
|
-------------
|
|
@@ -49,6 +49,8 @@ Behind an HTTP server or proxy
|
|
|
49
49
|
|
|
50
50
|
Both approaches require a configuration that maps your MapProxy configuration with the MapProxy application. You can write a small script file for that.
|
|
51
51
|
|
|
52
|
+
.. note:: In production mode it is recommended to disable the demo service.
|
|
53
|
+
|
|
52
54
|
.. _server_script:
|
|
53
55
|
|
|
54
56
|
Server script
|
|
@@ -25,15 +25,13 @@ base images for implementing custom setups. As they have no WebServer running th
|
|
|
25
25
|
The images ending with ``-dev``, start the integrated webserver mapproxy provides through
|
|
26
26
|
``mapproxy-util serve-develop``. These should not be used in a production environment!
|
|
27
27
|
|
|
28
|
-
The images ending with ``-nginx``, come bundled with a preconfigured `nginx
|
|
29
|
-
instantly in a production environment.
|
|
28
|
+
The images ending with ``-nginx``, come bundled with a preconfigured `nginx <https://nginx.org/>`_ HTTP Server, that
|
|
29
|
+
lets you use MapProxy instantly in a production environment.
|
|
30
30
|
|
|
31
31
|
See the quickstart section below for a configuration / example on how to use those images.
|
|
32
32
|
|
|
33
|
-
There are also several unofficial Docker images available on `Docker Hub
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
.. _`Docker Hub`: https://hub.docker.com/search?q=mapproxy
|
|
33
|
+
There are also several unofficial Docker images available on `Docker Hub <https://hub.docker.com/search?q=mapproxy>`_
|
|
34
|
+
that provide ready-to-use containers forMapProxy.
|
|
37
35
|
|
|
38
36
|
The community has very good experiences with the following ones:
|
|
39
37
|
|
|
@@ -50,7 +48,7 @@ Quickstart
|
|
|
50
48
|
----------
|
|
51
49
|
|
|
52
50
|
The mapproxy repository includes an `example docker compose file <https://github.com/mapproxy/mapproxy/blob/master/docker-compose.yaml>`_
|
|
53
|
-
|
|
51
|
+
that you can use to run one of the images or as a reference for the most commonly used options.
|
|
54
52
|
|
|
55
53
|
Create a directory (e.g. `mapproxyconfig`) for your configuration files. Put your configs into that folder.
|
|
56
54
|
If you do not supply a mapproxy config file the image will create a default seed.yaml and mapproxy.yaml for you.
|
|
@@ -80,17 +78,16 @@ Volume-Mounts
|
|
|
80
78
|
- ``/mapproxy/config/mapproxy.yaml``: MapProxy Config
|
|
81
79
|
- ``/mapproxy/config/logging.ini``: Logging-Configuration
|
|
82
80
|
- ``/mapproxy/config/cache_data``: Cache Data dir. Make sure that this directory is writable for the mapproxy image.
|
|
83
|
-
|
|
81
|
+
This can be achieved with `chmod -R a+r cache_data`
|
|
84
82
|
|
|
85
83
|
|
|
86
84
|
Environment Variables
|
|
87
85
|
~~~~~~~~~~~~~~~~~~~~~
|
|
88
86
|
|
|
89
87
|
- ``MULTIAPP_MAPPROXY``: **This can only be used in nginx images.** If set to ``true``, MapProxy will start in multi app
|
|
90
|
-
|
|
91
|
-
is ``false``.
|
|
88
|
+
mode and will run all configurations in the ``/mapproxy/config/apps`` directory as different apps. Default is ``false``.
|
|
92
89
|
- ``MULTIAPP_ALLOW_LISTINGS``: In multi app mode if set to ``true``, MapProxy lists all available apps on the root page.
|
|
93
|
-
|
|
90
|
+
Default is ``false``.
|
|
94
91
|
|
|
95
92
|
|
|
96
93
|
Build your own image
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
OGC API Support
|
|
2
|
+
===============
|
|
3
|
+
|
|
4
|
+
MapProxy does not support the OGC APIs natively. There are ways to combine MapProxy with pygeoapi via docker to be able
|
|
5
|
+
to use MapProxy through the OGC API of pygeoapi. An example project exists here:
|
|
6
|
+
https://github.com/mapproxy/mapproxy-pygeoapi-example.
|
|
7
|
+
|
|
8
|
+
Call for sponsors
|
|
9
|
+
-----------------
|
|
10
|
+
|
|
11
|
+
This feature is important to make MapProxy future-proof and it is desirable to integrate OGC APIs directly into
|
|
12
|
+
MapProxy. If you are interested in sponsoring this feature please contact sales@terrestris.de.
|
|
@@ -2159,7 +2159,6 @@ class ServiceConfiguration(ConfigurationBase):
|
|
|
2159
2159
|
creator = getattr(self, service_name + '_service', None)
|
|
2160
2160
|
if not creator:
|
|
2161
2161
|
# If not a known service, try to use the plugin mechanism
|
|
2162
|
-
global plugin_services
|
|
2163
2162
|
creator = plugin_services.get(service_name, None)
|
|
2164
2163
|
if not creator:
|
|
2165
2164
|
raise ValueError('unknown service: %s' % service_name)
|
|
@@ -2349,12 +2348,9 @@ class ServiceConfiguration(ConfigurationBase):
|
|
|
2349
2348
|
kvp = wmts_conf.get('kvp')
|
|
2350
2349
|
restful = wmts_conf.get('restful')
|
|
2351
2350
|
|
|
2352
|
-
if kvp
|
|
2353
|
-
kvp = restful = True
|
|
2354
|
-
|
|
2355
|
-
if kvp:
|
|
2351
|
+
if kvp or kvp is None:
|
|
2356
2352
|
services.append('wmts_kvp')
|
|
2357
|
-
if restful:
|
|
2353
|
+
if restful or restful is None:
|
|
2358
2354
|
services.append('wmts_restful')
|
|
2359
2355
|
|
|
2360
2356
|
if 'wms' in self.context.services.conf:
|
|
@@ -2412,6 +2408,10 @@ def load_configuration(mapproxy_conf, seed=False, ignore_warnings=True, renderd=
|
|
|
2412
2408
|
for error in errors:
|
|
2413
2409
|
log.warning(error)
|
|
2414
2410
|
|
|
2411
|
+
services = conf_dict.get('services')
|
|
2412
|
+
if services is not None and 'demo' in services:
|
|
2413
|
+
log.warning('Application has demo page enabled. It is recommended to disable this in production.')
|
|
2414
|
+
|
|
2415
2415
|
return ProxyConfiguration(conf_dict, conf_base_dir=conf_base_dir, seed=seed,
|
|
2416
2416
|
renderd=renderd)
|
|
2417
2417
|
|
|
@@ -20,6 +20,7 @@ from mapproxy.request import Request
|
|
|
20
20
|
from mapproxy.response import Response
|
|
21
21
|
from mapproxy.util.collections import LRU
|
|
22
22
|
from mapproxy.wsgiapp import make_wsgi_app as make_mapproxy_wsgi_app
|
|
23
|
+
from mapproxy.util.escape import escape_html
|
|
23
24
|
|
|
24
25
|
from threading import Lock
|
|
25
26
|
|
|
@@ -95,7 +96,7 @@ class MultiMapProxy(object):
|
|
|
95
96
|
import mapproxy.version
|
|
96
97
|
html = "<html><body><h1>Welcome to MapProxy %s</h1>" % mapproxy.version.version
|
|
97
98
|
|
|
98
|
-
url = req.script_url
|
|
99
|
+
url = escape_html(req.script_url)
|
|
99
100
|
if self.list_apps:
|
|
100
101
|
html += "<h2>available instances:</h2><ul>"
|
|
101
102
|
html += '\n'.join('<li><a href="%(url)s/%(name)s/">%(name)s</a></li>' % {'url': url, 'name': app}
|
|
@@ -18,6 +18,9 @@ Demo service handler
|
|
|
18
18
|
"""
|
|
19
19
|
from __future__ import division
|
|
20
20
|
|
|
21
|
+
import logging
|
|
22
|
+
import re
|
|
23
|
+
|
|
21
24
|
try:
|
|
22
25
|
import importlib_resources
|
|
23
26
|
except ImportError:
|
|
@@ -30,10 +33,12 @@ from mapproxy.config.config import base_config
|
|
|
30
33
|
from mapproxy.util.ext.odict import odict
|
|
31
34
|
from mapproxy.exception import RequestError
|
|
32
35
|
from mapproxy.service.base import Server
|
|
36
|
+
from mapproxy.request.base import Request
|
|
33
37
|
from mapproxy.response import Response
|
|
34
38
|
from mapproxy.srs import SRS, get_epsg_num
|
|
35
39
|
from mapproxy.layer import SRSConditional, CacheMapLayer, ResolutionConditional
|
|
36
40
|
from mapproxy.source.wms import WMSSource
|
|
41
|
+
from mapproxy.util.escape import escape_html
|
|
37
42
|
|
|
38
43
|
from urllib import request as urllib2
|
|
39
44
|
|
|
@@ -44,6 +49,8 @@ get_template = template_loader(__package__, 'templates', namespace=env)
|
|
|
44
49
|
# Used by plugins
|
|
45
50
|
extra_demo_server_handlers = set()
|
|
46
51
|
|
|
52
|
+
logger = logging.getLogger("demo")
|
|
53
|
+
|
|
47
54
|
|
|
48
55
|
def register_extra_demo_server_handler(handler):
|
|
49
56
|
""" Method used by plugins to register a new handler for the demo service.
|
|
@@ -106,7 +113,29 @@ class DemoServer(Server):
|
|
|
106
113
|
self.restful_template = restful_template
|
|
107
114
|
self.background = background
|
|
108
115
|
|
|
109
|
-
|
|
116
|
+
@staticmethod
|
|
117
|
+
def get_capabilities_url(service_path: str, req: Request) -> str:
|
|
118
|
+
if 'type' in req.args and req.args['type'] == 'external':
|
|
119
|
+
url = escape_html(req.script_url) + service_path
|
|
120
|
+
else:
|
|
121
|
+
url = req.server_script_url + service_path
|
|
122
|
+
return url
|
|
123
|
+
|
|
124
|
+
@staticmethod
|
|
125
|
+
def valid_url(url: str) -> bool:
|
|
126
|
+
pattern = re.compile("^https?://")
|
|
127
|
+
if pattern.match(url):
|
|
128
|
+
return True
|
|
129
|
+
else:
|
|
130
|
+
logging.warn(f"A request was blocked that was trying to access a non-http resource: {url}")
|
|
131
|
+
return False
|
|
132
|
+
|
|
133
|
+
@staticmethod
|
|
134
|
+
def read_capabilities(url: str) -> str:
|
|
135
|
+
resp = urllib2.urlopen(url)
|
|
136
|
+
return escape_html(resp.read().decode())
|
|
137
|
+
|
|
138
|
+
def handle(self, req: Request):
|
|
110
139
|
if req.path.startswith('/demo/static/'):
|
|
111
140
|
if '..' in req.path:
|
|
112
141
|
return Response('file not found', content_type='text/plain', status=404)
|
|
@@ -138,56 +167,47 @@ class DemoServer(Server):
|
|
|
138
167
|
elif 'wmts_layer' in req.args:
|
|
139
168
|
demo = self._render_wmts_template('demo/wmts_demo.html', req)
|
|
140
169
|
elif 'wms_capabilities' in req.args:
|
|
141
|
-
|
|
142
|
-
if
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
url = internal_url
|
|
146
|
-
capabilities = urllib2.urlopen(url)
|
|
170
|
+
url = self.get_capabilities_url('/service?REQUEST=GetCapabilities&SERVICE=WMS', req)
|
|
171
|
+
if not self.valid_url(url):
|
|
172
|
+
return Response('bad request', content_type='text/plain', status=400)
|
|
173
|
+
capabilities = self.read_capabilities(url)
|
|
147
174
|
demo = self._render_capabilities_template('demo/capabilities_demo.html', capabilities, 'WMS', url)
|
|
148
175
|
elif 'wmsc_capabilities' in req.args:
|
|
149
|
-
|
|
150
|
-
if
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
url = internal_url
|
|
154
|
-
capabilities = urllib2.urlopen(url)
|
|
176
|
+
url = self.get_capabilities_url('/service?REQUEST=GetCapabilities&SERVICE=WMS&tiled=true', req)
|
|
177
|
+
if not self.valid_url(url):
|
|
178
|
+
return Response('bad request', content_type='text/plain', status=400)
|
|
179
|
+
capabilities = self.read_capabilities(url)
|
|
155
180
|
demo = self._render_capabilities_template('demo/capabilities_demo.html', capabilities, 'WMS-C', url)
|
|
156
181
|
elif 'wmts_capabilities_kvp' in req.args:
|
|
157
|
-
|
|
158
|
-
if
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
url = internal_url
|
|
162
|
-
capabilities = urllib2.urlopen(url)
|
|
182
|
+
url = self.get_capabilities_url('/service?REQUEST=GetCapabilities&SERVICE=WMTS', req)
|
|
183
|
+
if not self.valid_url(url):
|
|
184
|
+
return Response('bad request', content_type='text/plain', status=400)
|
|
185
|
+
capabilities = self.read_capabilities(url)
|
|
163
186
|
demo = self._render_capabilities_template('demo/capabilities_demo.html', capabilities, 'WMTS', url)
|
|
164
187
|
elif 'wmts_capabilities' in req.args:
|
|
165
|
-
|
|
166
|
-
if
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
url = internal_url
|
|
170
|
-
capabilities = urllib2.urlopen(url)
|
|
188
|
+
url = self.get_capabilities_url('/wmts/1.0.0/WMTSCapabilities.xml', req)
|
|
189
|
+
if not self.valid_url(url):
|
|
190
|
+
return Response('bad request', content_type='text/plain', status=400)
|
|
191
|
+
capabilities = self.read_capabilities(url)
|
|
171
192
|
demo = self._render_capabilities_template('demo/capabilities_demo.html', capabilities, 'WMTS', url)
|
|
172
193
|
elif 'tms_capabilities' in req.args:
|
|
173
194
|
if 'layer' in req.args and 'srs' in req.args:
|
|
174
|
-
# prevent dir traversal (seems it's not possible with urllib2, but better safe
|
|
175
|
-
layer = req.args['layer'].replace('..', '')
|
|
176
|
-
srs = req.args['srs'].replace('..', '')
|
|
177
|
-
|
|
195
|
+
# prevent dir traversal (seems it's not possible with urllib2, but better safe than sorry)
|
|
196
|
+
layer = escape_html(req.args['layer'].replace('..', ''))
|
|
197
|
+
srs = escape_html(req.args['srs'].replace('..', ''))
|
|
198
|
+
service_path = f'/tms/1.0.0/{layer}/{srs}'
|
|
178
199
|
else:
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
capabilities = urllib2.urlopen(url)
|
|
200
|
+
service_path = '/tms/1.0.0/'
|
|
201
|
+
url = self.get_capabilities_url(service_path, req)
|
|
202
|
+
if not self.valid_url(url):
|
|
203
|
+
return Response('bad request', content_type='text/plain', status=400)
|
|
204
|
+
capabilities = self.read_capabilities(url)
|
|
185
205
|
demo = self._render_capabilities_template('demo/capabilities_demo.html', capabilities, 'TMS', url)
|
|
186
206
|
elif req.path == '/demo/':
|
|
187
207
|
demo = self._render_template(req, 'demo/demo.html')
|
|
188
208
|
else:
|
|
189
209
|
resp = Response('', status=301)
|
|
190
|
-
resp.headers['Location'] = req.script_url.rstrip('/') + '/demo/'
|
|
210
|
+
resp.headers['Location'] = escape_html(req.script_url).rstrip('/') + '/demo/'
|
|
191
211
|
return resp
|
|
192
212
|
return Response(demo, content_type='text/html')
|
|
193
213
|
|
|
@@ -258,7 +278,7 @@ class DemoServer(Server):
|
|
|
258
278
|
def _render_wms_template(self, template, req):
|
|
259
279
|
template = get_template(template, default_inherit="demo/static.html")
|
|
260
280
|
layer = self.layers[req.args['wms_layer']]
|
|
261
|
-
srs =
|
|
281
|
+
srs = escape_html(req.args['srs'])
|
|
262
282
|
bbox = layer.extent.bbox_for(SRS(srs))
|
|
263
283
|
width = bbox[2] - bbox[0]
|
|
264
284
|
height = bbox[3] - bbox[1]
|
|
@@ -268,7 +288,7 @@ class DemoServer(Server):
|
|
|
268
288
|
background_url = self.background["url"]
|
|
269
289
|
return template.substitute(layer=layer,
|
|
270
290
|
image_formats=self.image_formats,
|
|
271
|
-
format=
|
|
291
|
+
format=escape_html(req.args['format']),
|
|
272
292
|
srs=srs,
|
|
273
293
|
layer_srs=self.layer_srs,
|
|
274
294
|
bbox=bbox,
|
|
@@ -301,8 +321,8 @@ class DemoServer(Server):
|
|
|
301
321
|
if self.background:
|
|
302
322
|
background_url = self.background["url"]
|
|
303
323
|
return template.substitute(layer=tile_layer,
|
|
304
|
-
srs=
|
|
305
|
-
format=
|
|
324
|
+
srs=escape_html(req.args['srs']),
|
|
325
|
+
format=escape_html(req.args['format']),
|
|
306
326
|
resolutions=res,
|
|
307
327
|
units=units,
|
|
308
328
|
add_res_to_options=add_res_to_options,
|
|
@@ -317,6 +337,8 @@ class DemoServer(Server):
|
|
|
317
337
|
wmts_layer = layer
|
|
318
338
|
break
|
|
319
339
|
|
|
340
|
+
rest_enabled = 'wmts_restful' in self.services
|
|
341
|
+
|
|
320
342
|
restful_url = self.restful_template.replace('{Layer}', wmts_layer.name, 1)
|
|
321
343
|
if '{Format}' in restful_url:
|
|
322
344
|
restful_url = restful_url.replace('{Format}', wmts_layer.format)
|
|
@@ -330,11 +352,12 @@ class DemoServer(Server):
|
|
|
330
352
|
background_url = self.background["url"]
|
|
331
353
|
return template.substitute(layer=wmts_layer,
|
|
332
354
|
matrix_set=wmts_layer.grid.name,
|
|
333
|
-
format=
|
|
334
|
-
srs=
|
|
355
|
+
format=escape_html(req.args['format']),
|
|
356
|
+
srs=escape_html(req.args['srs']),
|
|
335
357
|
resolutions=wmts_layer.grid.resolutions,
|
|
336
358
|
units=units,
|
|
337
359
|
all_tile_layers=self.tile_layers,
|
|
360
|
+
rest_enabled=rest_enabled,
|
|
338
361
|
restful_url=restful_url,
|
|
339
362
|
background_url=background_url)
|
|
340
363
|
|
|
@@ -353,15 +376,3 @@ class DemoServer(Server):
|
|
|
353
376
|
return True
|
|
354
377
|
return False
|
|
355
378
|
return True
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
def escape(data):
|
|
359
|
-
"""
|
|
360
|
-
Escape user-provided input data for safe inclusion in HTML _and_ JS to prevent XSS.
|
|
361
|
-
"""
|
|
362
|
-
data = data.replace('&', '&')
|
|
363
|
-
data = data.replace('>', '>')
|
|
364
|
-
data = data.replace('<', '<')
|
|
365
|
-
data = data.replace("'", '')
|
|
366
|
-
data = data.replace('"', '')
|
|
367
|
-
return data
|
|
@@ -21,6 +21,7 @@ from mapproxy.service.base import Server
|
|
|
21
21
|
from mapproxy.request.tile import TileRequest
|
|
22
22
|
from mapproxy.srs import SRS
|
|
23
23
|
from mapproxy.util.coverage import load_limited_to
|
|
24
|
+
from mapproxy.util.escape import escape_html
|
|
24
25
|
|
|
25
26
|
|
|
26
27
|
class KMLRequest(TileRequest):
|
|
@@ -182,7 +183,7 @@ class KMLServer(Server):
|
|
|
182
183
|
|
|
183
184
|
subtiles = self._get_subtiles(map_request, layer)
|
|
184
185
|
tile_size = layer.grid.tile_size[0]
|
|
185
|
-
url = map_request.http.script_url.rstrip('/')
|
|
186
|
+
url = escape_html(map_request.http.script_url.rstrip('/'))
|
|
186
187
|
result = KMLRenderer().render(
|
|
187
188
|
tile=tile, subtiles=subtiles, layer=layer, url=url, name=map_request.layer, format=layer.format,
|
|
188
189
|
name_path=layer.md['name_path'], initial_level=initial_level, tile_size=tile_size)
|
|
@@ -46,13 +46,14 @@ jscript_functions=None
|
|
|
46
46
|
const projection = ol.proj.get(srs);
|
|
47
47
|
|
|
48
48
|
const source = new ol.source.WMTS({
|
|
49
|
-
url: '../service?',
|
|
49
|
+
url: {{if rest_enabled}}'../wmts{{restful_url}}'{{else}}'../service?'{{endif}},
|
|
50
50
|
layer: "{{layer.name}}",
|
|
51
51
|
matrixSet: '{{matrix_set}}',
|
|
52
52
|
format: "{{format}}",
|
|
53
53
|
projection: "{{srs}}",
|
|
54
54
|
transparent: transparent,
|
|
55
55
|
style: '',
|
|
56
|
+
{{if rest_enabled}}requestEncoding: 'REST',{{endif}}
|
|
56
57
|
tileGrid: new ol.tilegrid.WMTS({
|
|
57
58
|
origin: ol.extent.getTopLeft(grid_extent),
|
|
58
59
|
resolutions: resolutions,
|
|
@@ -184,7 +184,7 @@ class WMTSServer(Server):
|
|
|
184
184
|
if result['authorized'] == 'unauthenticated':
|
|
185
185
|
raise RequestError('unauthorized', status=401)
|
|
186
186
|
if result['authorized'] == 'full':
|
|
187
|
-
return self.layers.values()
|
|
187
|
+
return list(self.layers.values())
|
|
188
188
|
if result['authorized'] == 'none':
|
|
189
189
|
raise RequestError('forbidden', status=403)
|
|
190
190
|
allowed_layers = []
|
|
@@ -193,7 +193,7 @@ class WMTSServer(Server):
|
|
|
193
193
|
allowed_layers.append(layer)
|
|
194
194
|
return allowed_layers
|
|
195
195
|
else:
|
|
196
|
-
return self.layers.values()
|
|
196
|
+
return list(self.layers.values())
|
|
197
197
|
|
|
198
198
|
def check_request(self, request, info_formats=None):
|
|
199
199
|
request.make_request()
|