MapProxy 4.0.2__tar.gz → 4.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {mapproxy-4.0.2 → mapproxy-4.1.0}/CHANGES.txt +28 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/COPYING.txt +0 -5
- {mapproxy-4.0.2 → mapproxy-4.1.0}/MapProxy.egg-info/PKG-INFO +30 -18
- {mapproxy-4.0.2 → mapproxy-4.1.0}/MapProxy.egg-info/SOURCES.txt +6 -2
- {mapproxy-4.0.2 → mapproxy-4.1.0}/PKG-INFO +30 -18
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/caches.rst +3 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/cache/couchdb.py +2 -2
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/cache/geopackage.py +5 -4
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/cache/mbtiles.py +1 -1
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/cache/tile.py +1 -1
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/client/http.py +13 -10
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/client/tile.py +1 -1
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/client/wms.py +3 -1
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/config/loader.py +20 -13
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/config/spec.py +1 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/featureinfo.py +26 -33
- mapproxy-4.1.0/mapproxy/grid/__init__.py +92 -0
- mapproxy-4.1.0/mapproxy/grid/meta_grid.py +312 -0
- mapproxy-4.1.0/mapproxy/grid/resolutions.py +214 -0
- mapproxy-4.1.0/mapproxy/grid/tile_grid.py +514 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/image/merge.py +4 -1
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/image/transform.py +2 -1
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/layer.py +8 -3
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/script/conf/geopackage.py +2 -1
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/seed/cachelock.py +2 -1
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/seed/config.py +9 -13
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/seed/seeder.py +1 -1
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/service/demo.py +3 -4
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/service/tile.py +2 -2
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/service/wms.py +16 -13
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/service/wmts.py +6 -6
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/source/mapnik.py +1 -1
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/srs.py +3 -69
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/http.py +1 -1
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/mocker.py +2 -2
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/cache_s3.yaml +17 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_auth.py +1 -1
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_cache_geopackage.py +2 -2
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_cache_s3.py +26 -7
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_dimensions.py +4 -4
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_kml.py +1 -1
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_legendgraphic.py +2 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_seed.py +18 -12
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_wms.py +43 -76
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/test_auth.py +1 -1
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/test_cache.py +54 -53
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/test_cache_couchdb.py +1 -1
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/test_cache_geopackage.py +2 -2
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/test_cache_mbtile.py +1 -1
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/test_cache_s3.py +4 -4
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/test_cache_tile.py +3 -2
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/test_client.py +3 -3
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/test_conf_loader.py +7 -7
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/test_decorate_img.py +4 -3
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/test_featureinfo.py +18 -17
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/test_geom.py +2 -1
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/test_grid.py +6 -15
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/test_request_wmts.py +3 -3
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/test_seed.py +1 -2
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/test_tiled_source.py +1 -1
- mapproxy-4.1.0/mapproxy/util/bbox.py +141 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/util/coverage.py +1 -1
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/util/geom.py +1 -1
- mapproxy-4.1.0/mapproxy/util/sqlite3.py +28 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/requirements-tests.txt +13 -12
- {mapproxy-4.0.2 → mapproxy-4.1.0}/setup.py +2 -1
- mapproxy-4.0.2/mapproxy/grid.py +0 -1199
- mapproxy-4.0.2/mapproxy/util/ext/odict.py +0 -321
- {mapproxy-4.0.2 → mapproxy-4.1.0}/AUTHORS.txt +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/LICENSE.txt +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/MANIFEST.in +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/MapProxy.egg-info/dependency_links.txt +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/MapProxy.egg-info/entry_points.txt +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/MapProxy.egg-info/not-zip-safe +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/MapProxy.egg-info/requires.txt +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/MapProxy.egg-info/top_level.txt +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/README.md +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/GM.txt +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/_static/logo.png +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/_static/logo_title.png +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/_static/mapproxy.css +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/_templates/versions.html +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/auth.rst +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/caching_layer_dimensions.rst +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/conf.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/configuration.rst +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/configuration_examples.rst +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/coverages.rst +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/decorate_img.rst +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/deployment.rst +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/development.rst +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/imgs/bicubic.png +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/imgs/bilinear.png +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/imgs/labeling-dynamic.png +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/imgs/labeling-meta-buffer.png +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/imgs/labeling-metatiling-buffer.png +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/imgs/labeling-metatiling.png +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/imgs/labeling-no-clip.png +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/imgs/labeling-no-placement.png +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/imgs/labeling-partial-false.png +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/imgs/labeling-repeated.png +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/imgs/mapnik-webmerc-hq.png +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/imgs/mapnik-webmerc.png +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/imgs/mapproxy-demo.png +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/imgs/nearest.png +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/index.rst +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/inspire.rst +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/install.rst +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/install_docker.rst +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/install_osgeo4w.rst +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/install_windows.rst +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/labeling.rst +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/mapproxy_util.rst +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/mapproxy_util_autoconfig.rst +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/ogc_api.rst +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/plugins.rst +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/seed.rst +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/services.rst +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/sources.rst +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/tutorial.rst +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/tutorial.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/yaml/cache_conf.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/yaml/grid_conf.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/yaml/merged_conf.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/yaml/meta_conf.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/yaml/seed.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/doc/yaml/simple_conf.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/__init__.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/cache/__init__.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/cache/azureblob.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/cache/base.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/cache/compact.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/cache/dummy.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/cache/file.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/cache/legend.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/cache/meta.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/cache/path.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/cache/redis.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/cache/renderd.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/cache/s3.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/client/__init__.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/client/arcgis.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/client/cgi.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/client/log.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/compat/__init__.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/compat/image.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/config/__init__.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/config/config-schema.json +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/config/config.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/config/coverage.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/config/defaults.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/config/validator.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/config_template/__init__.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/config_template/base_config/config.wsgi +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/config_template/base_config/full_example.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/config_template/base_config/full_seed_example.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/config_template/base_config/log.ini +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/config_template/base_config/mapproxy.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/config_template/base_config/seed.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/exception.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/image/__init__.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/image/fonts/DejaVuSans.ttf +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/image/fonts/DejaVuSansMono.ttf +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/image/fonts/LICENSE +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/image/fonts/__init__.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/image/mask.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/image/message.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/image/opts.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/image/tile.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/multiapp.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/proj.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/request/__init__.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/request/arcgis.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/request/base.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/request/tile.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/request/wms/__init__.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/request/wms/exception.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/request/wmts.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/response.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/script/__init__.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/script/conf/__init__.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/script/conf/app.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/script/conf/caches.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/script/conf/layers.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/script/conf/seeds.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/script/conf/sources.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/script/conf/utils.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/script/defrag.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/script/export.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/script/grids.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/script/scales.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/script/util.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/script/wms_capabilities.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/seed/__init__.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/seed/cleanup.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/seed/script.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/seed/spec.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/seed/util.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/service/__init__.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/service/base.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/service/kml.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/service/ows.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/service/template_helper.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/service/templates/demo/capabilities_demo.html +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/service/templates/demo/demo.html +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/service/templates/demo/openlayers-demo.cfg +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/service/templates/demo/static/img/blank.gif +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/service/templates/demo/static/img/east-mini.png +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/service/templates/demo/static/img/north-mini.png +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/service/templates/demo/static/img/south-mini.png +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/service/templates/demo/static/img/west-mini.png +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/service/templates/demo/static/img/zoom-minus-mini.png +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/service/templates/demo/static/img/zoom-plus-mini.png +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/service/templates/demo/static/img/zoom-world-mini.png +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/service/templates/demo/static/logo.png +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/service/templates/demo/static/ol.css +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/service/templates/demo/static/ol.js +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/service/templates/demo/static/proj4.min.js +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/service/templates/demo/static/proj4defs.js +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/service/templates/demo/static/site.css +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/service/templates/demo/static/theme/default/framedCloud.css +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/service/templates/demo/static/theme/default/google.css +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/service/templates/demo/static/theme/default/ie6-style.css +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/service/templates/demo/static/theme/default/style.css +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/service/templates/demo/static.html +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/service/templates/demo/tms_demo.html +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/service/templates/demo/wms_demo.html +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/service/templates/demo/wmts_demo.html +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/service/templates/ows_exception.xml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/service/templates/tms_capabilities.xml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/service/templates/tms_exception.xml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/service/templates/tms_root_resource.xml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/service/templates/tms_tilemap_capabilities.xml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/service/templates/wms100capabilities.xml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/service/templates/wms100exception.xml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/service/templates/wms110capabilities.xml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/service/templates/wms110exception.xml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/service/templates/wms111capabilities.xml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/service/templates/wms111exception.xml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/service/templates/wms130capabilities.xml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/service/templates/wms130exception.xml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/service/templates/wmts100capabilities.xml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/service/templates/wmts100exception.xml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/source/__init__.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/source/arcgis.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/source/error.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/source/tile.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/source/wms.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/template.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/__init__.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/conftest.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/helper.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/image.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/inspire/common/1.0/common.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_bul.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_cze.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_dan.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_dut.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_eng.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_est.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_fin.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_fre.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_ger.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_gle.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_gre.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_hun.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_ita.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_lav.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_lit.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_mlt.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_pol.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_por.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_rum.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_slo.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_slv.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_spa.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_swe.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/inspire/common/1.0/network.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/inspire/inspire_vs/1.0/inspire_vs.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/kml/2.2.0/ReadMe.txt +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/kml/2.2.0/atom-author-link.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/kml/2.2.0/ogckml22.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/kml/2.2.0/xAL.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/ows/1.1.0/ReadMe.txt +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/ows/1.1.0/ows19115subset.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/ows/1.1.0/owsAll.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/ows/1.1.0/owsCommon.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/ows/1.1.0/owsContents.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/ows/1.1.0/owsDataIdentification.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/ows/1.1.0/owsDomainType.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/ows/1.1.0/owsExceptionReport.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/ows/1.1.0/owsGetCapabilities.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/ows/1.1.0/owsGetResourceByID.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/ows/1.1.0/owsInputOutputData.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/ows/1.1.0/owsManifest.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/ows/1.1.0/owsOperationsMetadata.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/ows/1.1.0/owsServiceIdentification.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/ows/1.1.0/owsServiceProvider.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/sld/1.1.0/sld_capabilities.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/wms/1.0.0/capabilities_1_0_0.dtd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/wms/1.0.0/capabilities_1_0_0.xml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/wms/1.0.7/capabilities_1_0_7.dtd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/wms/1.0.7/capabilities_1_0_7.xml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/wms/1.1.0/capabilities_1_1_0.dtd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/wms/1.1.0/capabilities_1_1_0.xml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/wms/1.1.0/exception_1_1_0.dtd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/wms/1.1.0/exception_1_1_0.xml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/wms/1.1.1/OGC-exception.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/wms/1.1.1/WMS_DescribeLayerResponse.dtd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/wms/1.1.1/WMS_MS_Capabilities.dtd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/wms/1.1.1/WMS_exception_1_1_1.dtd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/wms/1.1.1/capabilities_1_1_1.dtd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/wms/1.1.1/capabilities_1_1_1.xml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/wms/1.1.1/exception_1_1_1.dtd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/wms/1.1.1/exception_1_1_1.xml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/wms/1.3.0/ReadMe.txt +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/wms/1.3.0/capabilities_1_3_0.xml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/wms/1.3.0/capabilities_1_3_0.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/wms/1.3.0/exceptions_1_3_0.xml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/wms/1.3.0/exceptions_1_3_0.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/wmsc/1.1.1/OGC-exception.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/wmsc/1.1.1/WMS_DescribeLayerResponse.dtd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/wmsc/1.1.1/WMS_MS_Capabilities.dtd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/wmsc/1.1.1/WMS_exception_1_1_1.dtd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/wmsc/1.1.1/capabilities_1_1_1.dtd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/wmsc/1.1.1/capabilities_1_1_1.xml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/wmsc/1.1.1/exception_1_1_1.dtd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/wmsc/1.1.1/exception_1_1_1.xml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/wmts/1.0/ReadMe.txt +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/wmts/1.0/wmts.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/wmts/1.0/wmtsAbstract.wsdl +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/wmts/1.0/wmtsGetCapabilities_request.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/wmts/1.0/wmtsGetCapabilities_response.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/wmts/1.0/wmtsGetFeatureInfo_request.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/wmts/1.0/wmtsGetFeatureInfo_response.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/wmts/1.0/wmtsGetTile_request.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/wmts/1.0/wmtsKVP.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/wmts/1.0/wmtsPayload_response.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/xlink/1.0.0/ReadMe.txt +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/xlink/1.0.0/xlinks.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/schemas/xml.xsd +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/__init__.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/arcgis.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/auth.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/cache.mbtiles +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/cache_azureblob.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/cache_band_merge.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/cache_bulk_meta_tiles.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/cache_coverage.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/cache_data/dop_cache_EPSG3857/00/000/000/000/000/000/000.png +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/cache_data/wms_cache_EPSG900913/01/000/000/000/000/000/001.jpeg +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/cache_data/wms_cache_transparent_EPSG900913/01/000/000/000/000/000/001.png +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/cache_geopackage.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/cache_grid_names.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/cache_mbtiles.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/cache_source.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/combined_sources.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/coverage.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/demo.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/dimension.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/disable_storage.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/empty_ogrdata.geojson +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/formats.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/inspire.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/inspire_full.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/kml_layer.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/layer.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/layergroups.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/layergroups_root.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/legendgraphic.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/mapnik_source.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/mapproxy_export.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/mapserver.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/minimal_cgi.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/mixed_mode.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/multi_cache_layers.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/multiapp1.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/multiapp2.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/renderd_client.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/scalehints.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/seed.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/seed_mapproxy.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/seed_timeouts.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/seed_timeouts_mapproxy.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/seedonly.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/sld.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/source_errors.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/source_errors_raise.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/tileservice_origin.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/tileservice_refresh.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/tilesource_minmax_res.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/util-conf-base-grids.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/util-conf-overwrite.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/util-conf-wms-111-cap.xml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/util_grids.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/util_wms_capabilities111.xml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/util_wms_capabilities130.xml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/util_wms_capabilities_service_exception.xml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/watermark.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/wms_srs_extent.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/wms_versions.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/wmts.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/wmts_dimensions.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/xslt_featureinfo.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/fixture/xslt_featureinfo_input.yaml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_arcgis.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_behind_proxy.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_bulk_meta_tiles.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_cache_azureblob.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_cache_band_merge.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_cache_coverage.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_cache_grid_names.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_cache_mbtiles.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_cache_source.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_combined_sources.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_coverage.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_decorate_img.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_demo.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_demo_with_extra_service.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_disable_storage.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_formats.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_inspire_vs.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_layergroups.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_mapnik.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_mapserver.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_mixed_mode_format.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_multi_cache_layers.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_multiapp.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_refresh.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_renderd_client.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_response_headers.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_scalehints.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_seed_only.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_sld.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_source_errors.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_tilesource_minmax_res.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_tms.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_tms_origin.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_util_conf.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_util_export.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_util_grids.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_util_wms_capabilities.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_watermark.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_wms_srs_extent.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_wms_version.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_wmsc.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_wmts.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_wmts_dimensions.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_wmts_restful.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/system/test_xslt_featureinfo.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/test_http_helper.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/__init__.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/epsg +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/polygons/polygons.dbf +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/polygons/polygons.shp +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/polygons/polygons.shx +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/test_async.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/test_cache_azureblob.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/test_cache_compact.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/test_cache_redis.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/test_client_arcgis.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/test_client_cgi.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/test_collections.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/test_concat_legends.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/test_conf_validator.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/test_config.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/test_exceptions.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/test_file_lock_load.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/test_fs.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/test_image.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/test_image_mask.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/test_image_messages.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/test_image_options.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/test_isodate.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/test_multiapp.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/test_ogr_reader.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/test_request.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/test_response.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/test_seed_cachelock.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/test_srs.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/test_tilefilter.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/test_times.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/test_timeutils.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/test_util_conf_utils.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/test_utils.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/test_wms_capabilities.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/test_wms_layer.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/test/unit/test_yaml.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/tilefilter.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/util/__init__.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/util/async_.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/util/collections.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/util/escape.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/util/ext/__init__.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/util/ext/dictspec/__init__.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/util/ext/dictspec/spec.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/util/ext/dictspec/test/__init__.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/util/ext/dictspec/test/test_validator.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/util/ext/dictspec/validator.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/util/ext/local.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/util/ext/lockfile.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/util/ext/serving.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/util/ext/tempita/__init__.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/util/ext/tempita/_looper.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/util/ext/tempita/string_utils.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/util/ext/wmsparse/__init__.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/util/ext/wmsparse/duration.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/util/ext/wmsparse/parse.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/util/ext/wmsparse/test/__init__.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/util/ext/wmsparse/test/test_parse.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/util/ext/wmsparse/test/test_util.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/util/ext/wmsparse/test/wms-example-111.xml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/util/ext/wmsparse/test/wms-example-130.xml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/util/ext/wmsparse/test/wms-large-111.xml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/util/ext/wmsparse/test/wms_nasa_cap.xml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/util/ext/wmsparse/util.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/util/fs.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/util/lib.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/util/lock.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/util/ogr.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/util/py.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/util/times.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/util/yaml.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/version.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/mapproxy/wsgiapp.py +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/pyproject.toml +0 -0
- {mapproxy-4.0.2 → mapproxy-4.1.0}/setup.cfg +0 -0
|
@@ -1,3 +1,31 @@
|
|
|
1
|
+
4.1.0 2025-04-29
|
|
2
|
+
~~~~~~~~~~~~~~~~
|
|
3
|
+
|
|
4
|
+
Improvements:
|
|
5
|
+
|
|
6
|
+
- It is now possible to integrate the grid name into paths for AWS buckets. This allows storage of tiles for multiple
|
|
7
|
+
grids in the same bucket.
|
|
8
|
+
- We are returning a 404 http status code instead of a 500 if no legend graphic is found for a service.
|
|
9
|
+
- We are using utf-8 in GetFeatureInfo requests now.
|
|
10
|
+
|
|
11
|
+
Maintenance:
|
|
12
|
+
|
|
13
|
+
- Updated some dependencies.
|
|
14
|
+
- Updated the GitHub runner versions.
|
|
15
|
+
- Refactored the grid.py file into multiple files.
|
|
16
|
+
- Removed the implementation of odict in favour of the builtin OrderedDict class.
|
|
17
|
+
- Added support for python 3.13.
|
|
18
|
+
- Skipping permissions tests if tests are run with root user. This is necessary to build and test MapProxy in a chroot
|
|
19
|
+
environment which is used to package MapProxy for Debian. Normal testing is not affected.
|
|
20
|
+
|
|
21
|
+
Fixes:
|
|
22
|
+
|
|
23
|
+
- Fixed deprecation warnings for utctime, sqlite, ImageMath.eval, mock_s3.
|
|
24
|
+
- Fix entrypoint.sh to create default MapProxy configurations if none are found.
|
|
25
|
+
- Allowed the trivy security scan workflow to write the results to the GitHub security tab.
|
|
26
|
+
- We are not allowing the deprecated TLS Versions 1.1 or lower for connections to servers anymore.
|
|
27
|
+
|
|
28
|
+
|
|
1
29
|
4.0.2 2025-04-10
|
|
2
30
|
~~~~~~~~~~~~~~~~
|
|
3
31
|
|
|
@@ -23,11 +23,6 @@ Glyphs imported from Arev fonts are (c) Tavmjong Bah (see below)
|
|
|
23
23
|
|
|
24
24
|
See mapproxy/image/fonts/LICENSE
|
|
25
25
|
|
|
26
|
-
mapproxy/util/ext/odict.py
|
|
27
|
-
--------------------------
|
|
28
|
-
(c) 2008 by Armin Ronacher and PEP 273 authors.
|
|
29
|
-
Modified "3-clause" BSD license.
|
|
30
|
-
|
|
31
26
|
mapproxy/util/ext/tempita/*.py
|
|
32
27
|
------------------------------
|
|
33
28
|
(c) 2009 by Ian Bicking.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: MapProxy
|
|
3
|
-
Version: 4.0
|
|
3
|
+
Version: 4.1.0
|
|
4
4
|
Summary: An accelerating proxy for tile and web map services
|
|
5
5
|
Home-page: https://mapproxy.org
|
|
6
6
|
Author: Oliver Tonnhofer
|
|
@@ -15,6 +15,7 @@ Classifier: Programming Language :: Python :: 3.9
|
|
|
15
15
|
Classifier: Programming Language :: Python :: 3.10
|
|
16
16
|
Classifier: Programming Language :: Python :: 3.11
|
|
17
17
|
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
18
19
|
Classifier: Topic :: Internet :: Proxy Servers
|
|
19
20
|
Classifier: Topic :: Internet :: WWW/HTTP :: WSGI
|
|
20
21
|
Classifier: Topic :: Scientific/Engineering :: GIS
|
|
@@ -53,6 +54,34 @@ The documentation is available at: http://mapproxy.github.io/mapproxy/latest/
|
|
|
53
54
|
|
|
54
55
|
Changes
|
|
55
56
|
-------
|
|
57
|
+
4.1.0 2025-04-29
|
|
58
|
+
~~~~~~~~~~~~~~~~
|
|
59
|
+
|
|
60
|
+
Improvements:
|
|
61
|
+
|
|
62
|
+
- It is now possible to integrate the grid name into paths for AWS buckets. This allows storage of tiles for multiple
|
|
63
|
+
grids in the same bucket.
|
|
64
|
+
- We are returning a 404 http status code instead of a 500 if no legend graphic is found for a service.
|
|
65
|
+
- We are using utf-8 in GetFeatureInfo requests now.
|
|
66
|
+
|
|
67
|
+
Maintenance:
|
|
68
|
+
|
|
69
|
+
- Updated some dependencies.
|
|
70
|
+
- Updated the GitHub runner versions.
|
|
71
|
+
- Refactored the grid.py file into multiple files.
|
|
72
|
+
- Removed the implementation of odict in favour of the builtin OrderedDict class.
|
|
73
|
+
- Added support for python 3.13.
|
|
74
|
+
- Skipping permissions tests if tests are run with root user. This is necessary to build and test MapProxy in a chroot
|
|
75
|
+
environment which is used to package MapProxy for Debian. Normal testing is not affected.
|
|
76
|
+
|
|
77
|
+
Fixes:
|
|
78
|
+
|
|
79
|
+
- Fixed deprecation warnings for utctime, sqlite, ImageMath.eval, mock_s3.
|
|
80
|
+
- Fix entrypoint.sh to create default MapProxy configurations if none are found.
|
|
81
|
+
- Allowed the trivy security scan workflow to write the results to the GitHub security tab.
|
|
82
|
+
- We are not allowing the deprecated TLS Versions 1.1 or lower for connections to servers anymore.
|
|
83
|
+
|
|
84
|
+
|
|
56
85
|
4.0.2 2025-04-10
|
|
57
86
|
~~~~~~~~~~~~~~~~
|
|
58
87
|
|
|
@@ -147,23 +176,6 @@ Fixes:
|
|
|
147
176
|
- The permission handling for file locks now also sets permissions on the files not just on the directories.
|
|
148
177
|
|
|
149
178
|
|
|
150
|
-
3.1.0 2024-10-22
|
|
151
|
-
~~~~~~~~~~~~~~~~
|
|
152
|
-
|
|
153
|
-
Improvements:
|
|
154
|
-
|
|
155
|
-
- Add new config parameters `file_permissions` and `directory_permissions` to set file and directory
|
|
156
|
-
permissions on newly created cache files and directories.
|
|
157
|
-
|
|
158
|
-
Maintenance:
|
|
159
|
-
|
|
160
|
-
- Dependency updates
|
|
161
|
-
|
|
162
|
-
Fixes:
|
|
163
|
-
|
|
164
|
-
- Fix transparency in TMS demo page.
|
|
165
|
-
|
|
166
|
-
|
|
167
179
|
|
|
168
180
|
Older changes
|
|
169
181
|
-------------
|
|
@@ -68,7 +68,6 @@ doc/yaml/simple_conf.yaml
|
|
|
68
68
|
mapproxy/__init__.py
|
|
69
69
|
mapproxy/exception.py
|
|
70
70
|
mapproxy/featureinfo.py
|
|
71
|
-
mapproxy/grid.py
|
|
72
71
|
mapproxy/layer.py
|
|
73
72
|
mapproxy/multiapp.py
|
|
74
73
|
mapproxy/proj.py
|
|
@@ -118,6 +117,10 @@ mapproxy/config_template/base_config/full_seed_example.yaml
|
|
|
118
117
|
mapproxy/config_template/base_config/log.ini
|
|
119
118
|
mapproxy/config_template/base_config/mapproxy.yaml
|
|
120
119
|
mapproxy/config_template/base_config/seed.yaml
|
|
120
|
+
mapproxy/grid/__init__.py
|
|
121
|
+
mapproxy/grid/meta_grid.py
|
|
122
|
+
mapproxy/grid/resolutions.py
|
|
123
|
+
mapproxy/grid/tile_grid.py
|
|
121
124
|
mapproxy/image/__init__.py
|
|
122
125
|
mapproxy/image/mask.py
|
|
123
126
|
mapproxy/image/merge.py
|
|
@@ -482,6 +485,7 @@ mapproxy/test/unit/polygons/polygons.shp
|
|
|
482
485
|
mapproxy/test/unit/polygons/polygons.shx
|
|
483
486
|
mapproxy/util/__init__.py
|
|
484
487
|
mapproxy/util/async_.py
|
|
488
|
+
mapproxy/util/bbox.py
|
|
485
489
|
mapproxy/util/collections.py
|
|
486
490
|
mapproxy/util/coverage.py
|
|
487
491
|
mapproxy/util/escape.py
|
|
@@ -491,12 +495,12 @@ mapproxy/util/lib.py
|
|
|
491
495
|
mapproxy/util/lock.py
|
|
492
496
|
mapproxy/util/ogr.py
|
|
493
497
|
mapproxy/util/py.py
|
|
498
|
+
mapproxy/util/sqlite3.py
|
|
494
499
|
mapproxy/util/times.py
|
|
495
500
|
mapproxy/util/yaml.py
|
|
496
501
|
mapproxy/util/ext/__init__.py
|
|
497
502
|
mapproxy/util/ext/local.py
|
|
498
503
|
mapproxy/util/ext/lockfile.py
|
|
499
|
-
mapproxy/util/ext/odict.py
|
|
500
504
|
mapproxy/util/ext/serving.py
|
|
501
505
|
mapproxy/util/ext/dictspec/__init__.py
|
|
502
506
|
mapproxy/util/ext/dictspec/spec.py
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: MapProxy
|
|
3
|
-
Version: 4.0
|
|
3
|
+
Version: 4.1.0
|
|
4
4
|
Summary: An accelerating proxy for tile and web map services
|
|
5
5
|
Home-page: https://mapproxy.org
|
|
6
6
|
Author: Oliver Tonnhofer
|
|
@@ -15,6 +15,7 @@ Classifier: Programming Language :: Python :: 3.9
|
|
|
15
15
|
Classifier: Programming Language :: Python :: 3.10
|
|
16
16
|
Classifier: Programming Language :: Python :: 3.11
|
|
17
17
|
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
18
19
|
Classifier: Topic :: Internet :: Proxy Servers
|
|
19
20
|
Classifier: Topic :: Internet :: WWW/HTTP :: WSGI
|
|
20
21
|
Classifier: Topic :: Scientific/Engineering :: GIS
|
|
@@ -53,6 +54,34 @@ The documentation is available at: http://mapproxy.github.io/mapproxy/latest/
|
|
|
53
54
|
|
|
54
55
|
Changes
|
|
55
56
|
-------
|
|
57
|
+
4.1.0 2025-04-29
|
|
58
|
+
~~~~~~~~~~~~~~~~
|
|
59
|
+
|
|
60
|
+
Improvements:
|
|
61
|
+
|
|
62
|
+
- It is now possible to integrate the grid name into paths for AWS buckets. This allows storage of tiles for multiple
|
|
63
|
+
grids in the same bucket.
|
|
64
|
+
- We are returning a 404 http status code instead of a 500 if no legend graphic is found for a service.
|
|
65
|
+
- We are using utf-8 in GetFeatureInfo requests now.
|
|
66
|
+
|
|
67
|
+
Maintenance:
|
|
68
|
+
|
|
69
|
+
- Updated some dependencies.
|
|
70
|
+
- Updated the GitHub runner versions.
|
|
71
|
+
- Refactored the grid.py file into multiple files.
|
|
72
|
+
- Removed the implementation of odict in favour of the builtin OrderedDict class.
|
|
73
|
+
- Added support for python 3.13.
|
|
74
|
+
- Skipping permissions tests if tests are run with root user. This is necessary to build and test MapProxy in a chroot
|
|
75
|
+
environment which is used to package MapProxy for Debian. Normal testing is not affected.
|
|
76
|
+
|
|
77
|
+
Fixes:
|
|
78
|
+
|
|
79
|
+
- Fixed deprecation warnings for utctime, sqlite, ImageMath.eval, mock_s3.
|
|
80
|
+
- Fix entrypoint.sh to create default MapProxy configurations if none are found.
|
|
81
|
+
- Allowed the trivy security scan workflow to write the results to the GitHub security tab.
|
|
82
|
+
- We are not allowing the deprecated TLS Versions 1.1 or lower for connections to servers anymore.
|
|
83
|
+
|
|
84
|
+
|
|
56
85
|
4.0.2 2025-04-10
|
|
57
86
|
~~~~~~~~~~~~~~~~
|
|
58
87
|
|
|
@@ -147,23 +176,6 @@ Fixes:
|
|
|
147
176
|
- The permission handling for file locks now also sets permissions on the files not just on the directories.
|
|
148
177
|
|
|
149
178
|
|
|
150
|
-
3.1.0 2024-10-22
|
|
151
|
-
~~~~~~~~~~~~~~~~
|
|
152
|
-
|
|
153
|
-
Improvements:
|
|
154
|
-
|
|
155
|
-
- Add new config parameters `file_permissions` and `directory_permissions` to set file and directory
|
|
156
|
-
permissions on newly created cache files and directories.
|
|
157
|
-
|
|
158
|
-
Maintenance:
|
|
159
|
-
|
|
160
|
-
- Dependency updates
|
|
161
|
-
|
|
162
|
-
Fixes:
|
|
163
|
-
|
|
164
|
-
- Fix transparency in TMS demo page.
|
|
165
|
-
|
|
166
|
-
|
|
167
179
|
|
|
168
180
|
Older changes
|
|
169
181
|
-------------
|
|
@@ -480,6 +480,9 @@ Available options:
|
|
|
480
480
|
``use_http_get``:
|
|
481
481
|
When set to ``true``, requests to S3 ``GetObject`` will be fetched via urllib2 instead of boto, which decreases response times. Defaults to ``false``.
|
|
482
482
|
|
|
483
|
+
``include_grid_name``:
|
|
484
|
+
When set to ``true``, the grid name will be included in the path in the bucket (``[directory]/[grid.name]/[z]/...``). Defaults to ``false``.
|
|
485
|
+
|
|
483
486
|
.. note::
|
|
484
487
|
The hierarchical ``directory_layouts`` can hit limitations of AWS S3 if you are routinely processing 3500 or more requests per second. ``directory_layout: reverse_tms`` can work around this limitation. Please read `S3 Request Rate and Performance Considerations <http://docs.aws.amazon.com/AmazonS3/latest/dev/request-rate-perf-considerations.html>`_ for more information on this issue.
|
|
485
488
|
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
import codecs
|
|
18
|
-
import datetime
|
|
18
|
+
from datetime import timezone, datetime
|
|
19
19
|
import json
|
|
20
20
|
import socket
|
|
21
21
|
import time
|
|
@@ -245,7 +245,7 @@ class CouchDBCache(TileCacheBase):
|
|
|
245
245
|
|
|
246
246
|
|
|
247
247
|
def utc_now_isoformat():
|
|
248
|
-
now = datetime.
|
|
248
|
+
now = datetime.now(timezone.utc)
|
|
249
249
|
now = now.isoformat()
|
|
250
250
|
# remove milliseconds, add Zulu timezone
|
|
251
251
|
now = now.rsplit('.', 1)[0] + 'Z'
|
|
@@ -14,12 +14,11 @@
|
|
|
14
14
|
# limitations under the License.
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
import datetime
|
|
17
|
+
from datetime import timezone, datetime
|
|
18
18
|
import hashlib
|
|
19
19
|
import logging
|
|
20
20
|
import os
|
|
21
21
|
import re
|
|
22
|
-
import sqlite3
|
|
23
22
|
import threading
|
|
24
23
|
import time
|
|
25
24
|
from io import BytesIO
|
|
@@ -30,6 +29,7 @@ from mapproxy.image import ImageSource
|
|
|
30
29
|
from mapproxy.srs import get_epsg_num
|
|
31
30
|
from mapproxy.util.fs import ensure_directory
|
|
32
31
|
from mapproxy.util.lock import FileLock
|
|
32
|
+
from mapproxy.util.sqlite3 import sqlite3
|
|
33
33
|
|
|
34
34
|
|
|
35
35
|
log = logging.getLogger(__name__)
|
|
@@ -246,8 +246,9 @@ class GeopackageCache(TileCacheBase):
|
|
|
246
246
|
log.info("srs_id already exists.")
|
|
247
247
|
db.commit()
|
|
248
248
|
|
|
249
|
-
last_change = datetime.
|
|
250
|
-
int(os.environ.get('SOURCE_DATE_EPOCH', time.time()))
|
|
249
|
+
last_change = datetime.fromtimestamp(
|
|
250
|
+
int(os.environ.get('SOURCE_DATE_EPOCH', time.time())),
|
|
251
|
+
timezone.utc
|
|
251
252
|
)
|
|
252
253
|
|
|
253
254
|
# Ensure that tile table exists here, don't overwrite a valid entry.
|
|
@@ -16,7 +16,6 @@
|
|
|
16
16
|
import glob
|
|
17
17
|
import hashlib
|
|
18
18
|
import os
|
|
19
|
-
import sqlite3
|
|
20
19
|
import threading
|
|
21
20
|
import time
|
|
22
21
|
from io import BytesIO
|
|
@@ -26,6 +25,7 @@ from mapproxy.image import ImageSource
|
|
|
26
25
|
from mapproxy.cache.base import TileCacheBase, tile_buffer, REMOVE_ON_UNLOCK
|
|
27
26
|
from mapproxy.util.fs import ensure_directory
|
|
28
27
|
from mapproxy.util.lock import FileLock
|
|
28
|
+
from mapproxy.util.sqlite3 import sqlite3
|
|
29
29
|
|
|
30
30
|
import logging
|
|
31
31
|
log = logging.getLogger(__name__)
|
|
@@ -36,7 +36,7 @@ Tile caching (creation, caching and retrieval of tiles).
|
|
|
36
36
|
"""
|
|
37
37
|
from functools import partial
|
|
38
38
|
from contextlib import contextmanager
|
|
39
|
-
from mapproxy.grid import MetaGrid
|
|
39
|
+
from mapproxy.grid.meta_grid import MetaGrid
|
|
40
40
|
from mapproxy.image import BlankImageSource
|
|
41
41
|
from mapproxy.image.mask import mask_image_source_from_coverage
|
|
42
42
|
from mapproxy.image.opts import ImageOptions
|
|
@@ -18,6 +18,7 @@ Tile retrieval (WMS, TMS, etc.).
|
|
|
18
18
|
"""
|
|
19
19
|
import sys
|
|
20
20
|
import time
|
|
21
|
+
from typing import Any
|
|
21
22
|
|
|
22
23
|
from mapproxy.version import version
|
|
23
24
|
from mapproxy.image import ImageSource
|
|
@@ -76,11 +77,13 @@ class VerifiedHTTPSConnection(httplib.HTTPSConnection):
|
|
|
76
77
|
|
|
77
78
|
# wrap the socket using verification with the root
|
|
78
79
|
# certs in self.ca_certs_path
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
80
|
+
context = ssl.create_default_context(ssl.Purpose.SERVER_AUTH)
|
|
81
|
+
context.verify_mode = ssl.CERT_REQUIRED
|
|
82
|
+
context.load_cert_chain(certfile=self.cert_file, keyfile=self.key_file)
|
|
83
|
+
context.load_verify_locations(cafile=self._ca_certs)
|
|
84
|
+
context.minimum_version = ssl.TLSVersion.TLSv1_2
|
|
85
|
+
|
|
86
|
+
self.sock = context.wrap_socket(sock, server_hostname=self.host)
|
|
84
87
|
|
|
85
88
|
|
|
86
89
|
def verified_https_connection_with_ca_certs(ca_certs):
|
|
@@ -151,18 +154,19 @@ class HTTPClient(object):
|
|
|
151
154
|
ssl_ca_certs=None, timeout=None, headers=None, hide_error_details=False,
|
|
152
155
|
manage_cookies=False):
|
|
153
156
|
self._timeout = timeout
|
|
154
|
-
if url and url.startswith('https'):
|
|
155
|
-
|
|
156
|
-
ssl_ca_certs = None
|
|
157
|
+
if url and url.startswith('https') and insecure:
|
|
158
|
+
ssl_ca_certs = None
|
|
157
159
|
|
|
158
160
|
self.opener = create_url_opener(ssl_ca_certs, url, username, password,
|
|
159
161
|
insecure=insecure, manage_cookies=manage_cookies)
|
|
160
162
|
self.header_list = headers.items() if headers else []
|
|
161
163
|
self.hide_error_details = hide_error_details
|
|
162
164
|
|
|
163
|
-
def open(self, url, data=None, method=None):
|
|
165
|
+
def open(self, url, data=None, method=None) -> Any:
|
|
164
166
|
code = None
|
|
165
167
|
result = None
|
|
168
|
+
start_time = time.time()
|
|
169
|
+
req = None
|
|
166
170
|
try:
|
|
167
171
|
req = urllib2.Request(url, data=data)
|
|
168
172
|
except ValueError as e:
|
|
@@ -173,7 +177,6 @@ class HTTPClient(object):
|
|
|
173
177
|
if method:
|
|
174
178
|
req.method = method
|
|
175
179
|
try:
|
|
176
|
-
start_time = time.time()
|
|
177
180
|
if self._timeout is not None:
|
|
178
181
|
result = self.opener.open(req, timeout=self._timeout)
|
|
179
182
|
else:
|
|
@@ -144,7 +144,7 @@ def arcgiscache_path(tile_coord):
|
|
|
144
144
|
|
|
145
145
|
def bbox(tile_coord, grid):
|
|
146
146
|
"""
|
|
147
|
-
>>> from mapproxy.grid import tile_grid
|
|
147
|
+
>>> from mapproxy.grid.tile_grid import tile_grid
|
|
148
148
|
>>> grid = tile_grid(4326, bbox=(0, -15, 10, -5))
|
|
149
149
|
>>> bbox((0, 0, 0), grid)
|
|
150
150
|
'0.00000000,-15.00000000,10.00000000,-5.00000000'
|
|
@@ -16,6 +16,8 @@
|
|
|
16
16
|
"""
|
|
17
17
|
WMS clients for maps and information.
|
|
18
18
|
"""
|
|
19
|
+
from codecs import decode
|
|
20
|
+
|
|
19
21
|
from mapproxy.request.base import split_mime_type
|
|
20
22
|
from mapproxy.layer import InfoQuery
|
|
21
23
|
from mapproxy.source import SourceError
|
|
@@ -137,7 +139,7 @@ class WMSInfoClient(object):
|
|
|
137
139
|
if not info_format:
|
|
138
140
|
# otherwise from query
|
|
139
141
|
info_format = query.info_format
|
|
140
|
-
return create_featureinfo_doc(resp.read(), info_format)
|
|
142
|
+
return create_featureinfo_doc(decode(resp.read()), info_format)
|
|
141
143
|
|
|
142
144
|
def _get_transformed_query(self, query):
|
|
143
145
|
"""
|
|
@@ -19,7 +19,6 @@ Configuration loading and system initializing.
|
|
|
19
19
|
from __future__ import division
|
|
20
20
|
from mapproxy.util.fs import find_exec
|
|
21
21
|
from mapproxy.util.yaml import load_yaml_file, YAMLError
|
|
22
|
-
from mapproxy.util.ext.odict import odict
|
|
23
22
|
from mapproxy.util.py import memoize
|
|
24
23
|
from mapproxy.config.spec import validate_options, add_source_to_mapproxy_yaml_spec, add_service_to_mapproxy_yaml_spec
|
|
25
24
|
from mapproxy.config.validator import validate
|
|
@@ -32,6 +31,7 @@ import hashlib
|
|
|
32
31
|
import warnings
|
|
33
32
|
from copy import deepcopy, copy
|
|
34
33
|
from functools import partial
|
|
34
|
+
from collections import OrderedDict
|
|
35
35
|
|
|
36
36
|
import logging
|
|
37
37
|
from urllib.parse import urlparse
|
|
@@ -74,7 +74,7 @@ class ProxyConfiguration(object):
|
|
|
74
74
|
self.grids[grid_name] = GridConfiguration(grid_conf, context=self)
|
|
75
75
|
|
|
76
76
|
def load_caches(self):
|
|
77
|
-
self.caches =
|
|
77
|
+
self.caches = OrderedDict()
|
|
78
78
|
caches_conf = self.configuration.get('caches')
|
|
79
79
|
if not caches_conf:
|
|
80
80
|
return
|
|
@@ -91,7 +91,7 @@ class ProxyConfiguration(object):
|
|
|
91
91
|
self.sources[source_name] = SourceConfiguration.load(conf=source_conf, context=self)
|
|
92
92
|
|
|
93
93
|
def load_tile_layers(self):
|
|
94
|
-
self.layers =
|
|
94
|
+
self.layers = OrderedDict()
|
|
95
95
|
layers_conf = deepcopy(self._layers_conf_dict())
|
|
96
96
|
if layers_conf is None:
|
|
97
97
|
return
|
|
@@ -178,7 +178,7 @@ class ProxyConfiguration(object):
|
|
|
178
178
|
# layer list without root -> wrap in root layer
|
|
179
179
|
layers_conf = dict(title=None, layers=layers_conf)
|
|
180
180
|
|
|
181
|
-
if len(
|
|
181
|
+
if len(layers_conf.keys() &
|
|
182
182
|
set('layers name title sources'.split())) < 2:
|
|
183
183
|
# looks like unordered legacy config
|
|
184
184
|
layers_conf = self._legacy_layers_conf_dict()
|
|
@@ -190,7 +190,7 @@ class ProxyConfiguration(object):
|
|
|
190
190
|
Returns a dictionary with all layers that have a name and sources.
|
|
191
191
|
Flattens the layer tree.
|
|
192
192
|
"""
|
|
193
|
-
layers = _layers if _layers is not None else
|
|
193
|
+
layers = _layers if _layers is not None else OrderedDict()
|
|
194
194
|
|
|
195
195
|
if 'layers' in layers_conf:
|
|
196
196
|
for layer in layers_conf.pop('layers'):
|
|
@@ -245,7 +245,7 @@ def list_of_dicts_to_ordered_dict(dictlist):
|
|
|
245
245
|
[('a', 1), ('b', 2), ('c', 3)]
|
|
246
246
|
"""
|
|
247
247
|
|
|
248
|
-
result =
|
|
248
|
+
result = OrderedDict()
|
|
249
249
|
for d in dictlist:
|
|
250
250
|
for k, v in d.items():
|
|
251
251
|
result[k] = v
|
|
@@ -274,7 +274,7 @@ class ConfigurationBase(object):
|
|
|
274
274
|
class GridConfiguration(ConfigurationBase):
|
|
275
275
|
@memoize
|
|
276
276
|
def tile_grid(self):
|
|
277
|
-
from mapproxy.grid import tile_grid
|
|
277
|
+
from mapproxy.grid.tile_grid import tile_grid
|
|
278
278
|
|
|
279
279
|
if 'base' in self.conf:
|
|
280
280
|
base_grid_name = self.conf['base']
|
|
@@ -637,7 +637,7 @@ class SourceConfiguration(ConfigurationBase):
|
|
|
637
637
|
|
|
638
638
|
|
|
639
639
|
def resolution_range(conf):
|
|
640
|
-
from mapproxy.grid import resolution_range as _resolution_range
|
|
640
|
+
from mapproxy.grid.resolutions import resolution_range as _resolution_range
|
|
641
641
|
if 'min_res' in conf or 'max_res' in conf:
|
|
642
642
|
return _resolution_range(min_res=conf.get('min_res'),
|
|
643
643
|
max_res=conf.get('max_res'))
|
|
@@ -1355,9 +1355,16 @@ class CacheConfiguration(ConfigurationBase):
|
|
|
1355
1355
|
global_key='cache.s3.use_http_get'
|
|
1356
1356
|
)
|
|
1357
1357
|
|
|
1358
|
+
include_grid_name = self.context.globals.get_value('cache.include_grid_name', self.conf,
|
|
1359
|
+
global_key='cache.s3.include_grid_name')
|
|
1360
|
+
|
|
1358
1361
|
directory_layout = self.conf['cache'].get('directory_layout', 'tms')
|
|
1359
1362
|
|
|
1360
1363
|
base_path = self.conf['cache'].get('directory', None)
|
|
1364
|
+
|
|
1365
|
+
if include_grid_name and base_path:
|
|
1366
|
+
base_path = os.path.join(base_path, grid_conf.tile_grid().name)
|
|
1367
|
+
|
|
1361
1368
|
if base_path is None:
|
|
1362
1369
|
base_path = os.path.join(self.conf['name'], grid_conf.tile_grid().name)
|
|
1363
1370
|
|
|
@@ -2180,7 +2187,7 @@ class ServiceConfiguration(ConfigurationBase):
|
|
|
2180
2187
|
return services
|
|
2181
2188
|
|
|
2182
2189
|
def tile_layers(self, conf, use_grid_names=False):
|
|
2183
|
-
layers =
|
|
2190
|
+
layers = OrderedDict()
|
|
2184
2191
|
for layer_name, layer_conf in self.context.layers.items():
|
|
2185
2192
|
for tile_layer in layer_conf.tile_layers(grid_name_as_path=use_grid_names):
|
|
2186
2193
|
if not tile_layer:
|
|
@@ -2230,7 +2237,7 @@ class ServiceConfiguration(ConfigurationBase):
|
|
|
2230
2237
|
max_tile_age *= 60 * 60 # seconds
|
|
2231
2238
|
|
|
2232
2239
|
info_formats = conf.get('featureinfo_formats', [])
|
|
2233
|
-
info_formats =
|
|
2240
|
+
info_formats = OrderedDict((f['suffix'], f['mimetype']) for f in info_formats)
|
|
2234
2241
|
|
|
2235
2242
|
if kvp is None and restful is None:
|
|
2236
2243
|
kvp = restful = True
|
|
@@ -2283,7 +2290,7 @@ class ServiceConfiguration(ConfigurationBase):
|
|
|
2283
2290
|
global_key='wms.concurrent_layer_renderer')
|
|
2284
2291
|
image_formats_names = self.context.globals.get_value('image_formats', conf,
|
|
2285
2292
|
global_key='wms.image_formats')
|
|
2286
|
-
image_formats =
|
|
2293
|
+
image_formats = OrderedDict()
|
|
2287
2294
|
for format in image_formats_names:
|
|
2288
2295
|
opts = self.context.globals.image_options.image_opts({}, format)
|
|
2289
2296
|
if opts.format in image_formats:
|
|
@@ -2325,7 +2332,7 @@ class ServiceConfiguration(ConfigurationBase):
|
|
|
2325
2332
|
services = list(self.context.services.conf.keys())
|
|
2326
2333
|
md = self.context.services.conf.get('wms', {}).get('md', {}).copy()
|
|
2327
2334
|
md.update(conf.get('md', {}))
|
|
2328
|
-
layers =
|
|
2335
|
+
layers = OrderedDict()
|
|
2329
2336
|
for layer_name, layer_conf in self.context.layers.items():
|
|
2330
2337
|
lyr = layer_conf.wms_layer()
|
|
2331
2338
|
if lyr:
|
|
@@ -2359,7 +2366,7 @@ class ServiceConfiguration(ConfigurationBase):
|
|
|
2359
2366
|
# demo service only supports 1.1.1, use wms_111 as an indicator
|
|
2360
2367
|
services.append('wms_111')
|
|
2361
2368
|
|
|
2362
|
-
layers =
|
|
2369
|
+
layers = OrderedDict(sorted(layers.items(), key=lambda x: x[1].name))
|
|
2363
2370
|
background = self.context.globals.get_value('background', conf)
|
|
2364
2371
|
|
|
2365
2372
|
return DemoServer(
|