MapProxy 6.1.1__tar.gz → 7.0.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-6.1.1 → mapproxy-7.0.0}/CHANGES.txt +18 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/MapProxy.egg-info/PKG-INFO +21 -19
- {mapproxy-6.1.1 → mapproxy-7.0.0}/MapProxy.egg-info/requires.txt +1 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/PKG-INFO +21 -19
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/install_docker.rst +2 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/cache/path.py +8 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/image/__init__.py +8 -4
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/seed/seeder.py +4 -3
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/source/mapnik.py +5 -5
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_cache.py +30 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_file_lock_load.py +2 -2
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_image.py +72 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_seed_cachelock.py +3 -3
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_utils.py +2 -2
- {mapproxy-6.1.1 → mapproxy-7.0.0}/requirements-tests.txt +13 -11
- {mapproxy-6.1.1 → mapproxy-7.0.0}/setup.py +4 -2
- {mapproxy-6.1.1 → mapproxy-7.0.0}/AUTHORS.txt +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/COPYING.txt +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/LICENSE.txt +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/MANIFEST.in +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/MapProxy.egg-info/SOURCES.txt +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/MapProxy.egg-info/dependency_links.txt +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/MapProxy.egg-info/entry_points.txt +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/MapProxy.egg-info/not-zip-safe +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/MapProxy.egg-info/top_level.txt +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/README.md +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/GM.txt +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/_static/logo.png +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/_static/logo_title.png +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/_static/mapproxy.css +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/_templates/versions.html +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/architecture.rst +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/auth.rst +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/caches.rst +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/caching_layer_dimensions.rst +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/conf.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/configuration.rst +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/configuration_examples.rst +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/coverages.rst +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/decorate_img.rst +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/deployment.rst +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/development.rst +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/imgs/bicubic.png +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/imgs/bilinear.png +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/imgs/labeling-dynamic.png +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/imgs/labeling-meta-buffer.png +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/imgs/labeling-metatiling-buffer.png +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/imgs/labeling-metatiling.png +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/imgs/labeling-no-clip.png +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/imgs/labeling-no-placement.png +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/imgs/labeling-partial-false.png +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/imgs/labeling-repeated.png +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/imgs/mapnik-webmerc-hq.png +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/imgs/mapnik-webmerc.png +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/imgs/mapproxy-demo.png +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/imgs/nearest.png +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/index.rst +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/inspire.rst +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/install.rst +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/install_osgeo4w.rst +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/install_windows.rst +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/labeling.rst +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/mapproxy_util.rst +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/mapproxy_util_autoconfig.rst +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/ogc_api.rst +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/plugins.rst +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/seed.rst +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/services.rst +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/sources.rst +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/tutorial.rst +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/tutorial.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/yaml/cache_conf.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/yaml/grid_conf.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/yaml/merged_conf.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/yaml/meta_conf.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/yaml/seed.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/yaml/simple_conf.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/__init__.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/cache/__init__.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/cache/azureblob.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/cache/base.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/cache/compact.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/cache/couchdb.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/cache/dummy.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/cache/file.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/cache/geopackage.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/cache/legend.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/cache/mbtiles.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/cache/meta.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/cache/redis.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/cache/renderd.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/cache/s3.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/cache/tile.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/cache/tile_creator.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/cache/tile_manager.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/client/__init__.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/client/arcgis.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/client/cgi.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/client/http.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/client/log.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/client/tile.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/client/wms.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/config/__init__.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/config/config-schema.json +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/config/config.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/config/configuration/__init__.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/config/configuration/base.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/config/configuration/cache.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/config/configuration/global_conf.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/config/configuration/grid.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/config/configuration/image_options.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/config/configuration/layer.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/config/configuration/proxy.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/config/configuration/service.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/config/configuration/source.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/config/coverage.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/config/defaults.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/config/loader.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/config/spec.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/config/validator.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/config_template/__init__.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/config_template/base_config/config.wsgi +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/config_template/base_config/full_example.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/config_template/base_config/full_seed_example.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/config_template/base_config/log.ini +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/config_template/base_config/mapproxy.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/config_template/base_config/seed.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/exception.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/extent.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/featureinfo.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/grid/__init__.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/grid/meta_grid.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/grid/resolutions.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/grid/tile_grid.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/image/fonts/DejaVuSans.ttf +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/image/fonts/DejaVuSansMono.ttf +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/image/fonts/LICENSE +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/image/fonts/__init__.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/image/mask.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/image/merge.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/image/message.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/image/opts.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/image/tile.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/image/transform.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/layer/__init__.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/layer/cache_map_layer.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/layer/direct_map_layer.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/layer/limited_layer.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/layer/map_layer.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/layer/resolution_conditional.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/layer/srs_conditional.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/multiapp.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/proj.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/query.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/request/__init__.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/request/arcgis.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/request/base.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/request/no_case_multi_dict.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/request/request_params.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/request/tile.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/request/wms/__init__.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/request/wms/exception.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/request/wmts.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/response.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/script/__init__.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/script/conf/__init__.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/script/conf/app.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/script/conf/caches.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/script/conf/geopackage.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/script/conf/layers.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/script/conf/seeds.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/script/conf/sources.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/script/conf/utils.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/script/defrag.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/script/export.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/script/gridconf_from_ogcapitilematrixset.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/script/grids.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/script/scales.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/script/util.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/script/wms_capabilities.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/seed/__init__.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/seed/cachelock.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/seed/cleanup.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/seed/config.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/seed/script.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/seed/spec.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/seed/util.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/__init__.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/base.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/demo.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/kml.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/ogcapi/__init__.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/ogcapi/api.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/ogcapi/collections.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/ogcapi/conformance.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/ogcapi/constants.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/ogcapi/landing_page.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/ogcapi/map.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/ogcapi/map_utils.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/ogcapi/server.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/ogcapi/tile.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/ogcapi/tilematrixsets.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/ogcapi/tilesets.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/ows.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/template_helper.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/demo/capabilities_demo.html +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/demo/demo.html +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/demo/openlayers-demo.cfg +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/demo/static/img/blank.gif +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/demo/static/img/east-mini.png +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/demo/static/img/north-mini.png +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/demo/static/img/south-mini.png +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/demo/static/img/west-mini.png +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/demo/static/img/zoom-minus-mini.png +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/demo/static/img/zoom-plus-mini.png +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/demo/static/img/zoom-world-mini.png +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/demo/static/logo.png +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/demo/static/ol.css +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/demo/static/ol.js +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/demo/static/proj4.min.js +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/demo/static/proj4defs.js +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/demo/static/site.css +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/demo/static/theme/default/framedCloud.css +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/demo/static/theme/default/google.css +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/demo/static/theme/default/ie6-style.css +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/demo/static/theme/default/style.css +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/demo/static.html +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/demo/tms_demo.html +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/demo/wms_demo.html +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/demo/wmts_demo.html +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/_base.html +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/collections/collection.html +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/collections/index.html +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/conformance.html +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/exception.html +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/landing_page.html +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/openapi/redoc.html +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/openapi/swagger.html +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/static/css/bootstrap.min.css +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/static/css/default.css +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/static/fonts_montserra_roboto.css +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/static/img/logo.png +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/static/img/pygeoapi-logo.png +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/static/ol.css +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/static/ol.js +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/static/proj4.min.js +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/static/proj4defs.js +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/static/redoc.standalone.js +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/static/swagger-ui-dist/favicon-16x16.png +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/static/swagger-ui-dist/favicon-32x32.png +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/static/swagger-ui-dist/swagger-ui-bundle.js +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/static/swagger-ui-dist/swagger-ui-standalone-preset.js +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/static/swagger-ui-dist/swagger-ui.css +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/tilematrixsets/index.html +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/tilematrixsets/tilematrixset.html +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/tilesets/index.html +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/tilesets/tileset.html +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ows_exception.xml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/tms_capabilities.xml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/tms_exception.xml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/tms_root_resource.xml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/tms_tilemap_capabilities.xml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/wms100capabilities.xml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/wms100exception.xml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/wms110capabilities.xml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/wms110exception.xml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/wms111capabilities.xml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/wms111exception.xml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/wms130capabilities.xml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/wms130exception.xml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/wmts100capabilities.xml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/wmts100exception.xml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/tile.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/wms.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/wmts.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/source/__init__.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/source/arcgis.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/source/error.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/source/ogcapimaps.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/source/ogcapitiles.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/source/tile.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/source/wms.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/srs.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/template.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/__init__.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/conftest.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/helper.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/http.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/image.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/mocker.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/common/1.0/common.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_bul.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_cze.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_dan.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_dut.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_eng.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_est.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_fin.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_fre.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_ger.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_gle.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_gre.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_hun.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_ita.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_lav.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_lit.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_mlt.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_pol.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_por.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_rum.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_slo.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_slv.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_spa.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_swe.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/common/1.0/network.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/inspire_vs/1.0/inspire_vs.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/kml/2.2.0/ReadMe.txt +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/kml/2.2.0/atom-author-link.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/kml/2.2.0/ogckml22.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/kml/2.2.0/xAL.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/ows/1.1.0/ReadMe.txt +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/ows/1.1.0/ows19115subset.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/ows/1.1.0/owsAll.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/ows/1.1.0/owsCommon.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/ows/1.1.0/owsContents.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/ows/1.1.0/owsDataIdentification.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/ows/1.1.0/owsDomainType.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/ows/1.1.0/owsExceptionReport.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/ows/1.1.0/owsGetCapabilities.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/ows/1.1.0/owsGetResourceByID.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/ows/1.1.0/owsInputOutputData.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/ows/1.1.0/owsManifest.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/ows/1.1.0/owsOperationsMetadata.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/ows/1.1.0/owsServiceIdentification.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/ows/1.1.0/owsServiceProvider.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/sld/1.1.0/sld_capabilities.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wms/1.0.0/capabilities_1_0_0.dtd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wms/1.0.0/capabilities_1_0_0.xml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wms/1.0.7/capabilities_1_0_7.dtd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wms/1.0.7/capabilities_1_0_7.xml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wms/1.1.0/capabilities_1_1_0.dtd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wms/1.1.0/capabilities_1_1_0.xml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wms/1.1.0/exception_1_1_0.dtd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wms/1.1.0/exception_1_1_0.xml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wms/1.1.1/OGC-exception.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wms/1.1.1/WMS_DescribeLayerResponse.dtd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wms/1.1.1/WMS_MS_Capabilities.dtd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wms/1.1.1/WMS_exception_1_1_1.dtd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wms/1.1.1/capabilities_1_1_1.dtd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wms/1.1.1/capabilities_1_1_1.xml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wms/1.1.1/exception_1_1_1.dtd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wms/1.1.1/exception_1_1_1.xml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wms/1.3.0/ReadMe.txt +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wms/1.3.0/capabilities_1_3_0.xml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wms/1.3.0/capabilities_1_3_0.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wms/1.3.0/exceptions_1_3_0.xml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wms/1.3.0/exceptions_1_3_0.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wmsc/1.1.1/OGC-exception.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wmsc/1.1.1/WMS_DescribeLayerResponse.dtd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wmsc/1.1.1/WMS_MS_Capabilities.dtd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wmsc/1.1.1/WMS_exception_1_1_1.dtd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wmsc/1.1.1/capabilities_1_1_1.dtd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wmsc/1.1.1/capabilities_1_1_1.xml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wmsc/1.1.1/exception_1_1_1.dtd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wmsc/1.1.1/exception_1_1_1.xml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wmts/1.0/ReadMe.txt +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wmts/1.0/wmts.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wmts/1.0/wmtsAbstract.wsdl +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wmts/1.0/wmtsGetCapabilities_request.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wmts/1.0/wmtsGetCapabilities_response.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wmts/1.0/wmtsGetFeatureInfo_request.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wmts/1.0/wmtsGetFeatureInfo_response.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wmts/1.0/wmtsGetTile_request.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wmts/1.0/wmtsKVP.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wmts/1.0/wmtsPayload_response.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/xlink/1.0.0/ReadMe.txt +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/xlink/1.0.0/xlinks.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/xml.xsd +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/__init__.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/arcgis.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/auth.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/cache.mbtiles +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/cache_azureblob.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/cache_band_merge.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/cache_bulk_meta_tiles.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/cache_coverage.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/cache_data/dop_cache_EPSG3857/00/000/000/000/000/000/000.png +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/cache_data/wms_cache_EPSG900913/01/000/000/000/000/000/001.jpeg +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/cache_data/wms_cache_transparent_EPSG900913/01/000/000/000/000/000/001.png +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/cache_geopackage.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/cache_grid_names.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/cache_mbtiles.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/cache_s3.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/cache_source.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/combined_sources.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/coverage.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/demo.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/dimension.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/disable_storage.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/empty_ogrdata.geojson +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/formats.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/inspire.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/inspire_full.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/kml_layer.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/layer.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/layergroups.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/layergroups_root.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/legendgraphic.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/mapnik_source.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/mapproxy_export.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/mapserver.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/minimal_cgi.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/mixed_mode.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/multi_cache_layers.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/multiapp1.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/multiapp2.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/ogcapi_maps_and_tiles_non_earth_service.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/ogcapi_maps_and_tiles_service.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/ogcapimaps_non_earth_source.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/ogcapimaps_service.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/ogcapimaps_source.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/ogcapimaps_source_with_supported_srs.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/ogcapitiles_non_earth_source.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/ogcapitiles_service.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/ogcapitiles_source.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/renderd_client.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/scalehints.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/seed.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/seed_mapproxy.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/seed_timeouts.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/seed_timeouts_mapproxy.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/seedonly.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/sld.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/source_errors.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/source_errors_raise.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/tileservice_origin.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/tileservice_refresh.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/tilesource_minmax_res.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/util-conf-base-grids.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/util-conf-overwrite.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/util-conf-wms-111-cap.xml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/util_grids.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/util_wms_capabilities111.xml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/util_wms_capabilities130.xml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/util_wms_capabilities_service_exception.xml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/watermark.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/wms_srs_extent.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/wms_versions.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/wmts.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/wmts_dimensions.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/xslt_featureinfo.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/xslt_featureinfo_input.yaml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_arcgis.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_auth.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_behind_proxy.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_bulk_meta_tiles.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_cache_azureblob.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_cache_band_merge.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_cache_coverage.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_cache_geopackage.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_cache_grid_names.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_cache_mbtiles.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_cache_s3.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_cache_source.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_combined_sources.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_coverage.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_decorate_img.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_demo.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_demo_with_extra_service.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_dimensions.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_disable_storage.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_formats.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_inspire_vs.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_kml.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_layergroups.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_legendgraphic.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_mapnik.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_mapserver.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_mixed_mode_format.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_multi_cache_layers.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_multiapp.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_refresh.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_renderd_client.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_response_headers.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_scalehints.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_seed.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_seed_only.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_service_ogcapi.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_sld.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_source_errors.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_source_ogcapimaps.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_source_ogcapitiles.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_tilesource_minmax_res.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_tms.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_tms_origin.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_util_conf.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_util_export.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_util_gridconf_from_ogcapitilematrixset.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_util_grids.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_util_wms_capabilities.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_watermark.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_wms.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_wms_srs_extent.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_wms_version.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_wmsc.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_wmts.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_wmts_dimensions.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_wmts_restful.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_xslt_featureinfo.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/test_http_helper.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/__init__.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/epsg +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/polygons/polygons.dbf +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/polygons/polygons.shp +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/polygons/polygons.shx +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_async.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_auth.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_cache_azureblob.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_cache_compact.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_cache_couchdb.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_cache_geopackage.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_cache_mbtile.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_cache_redis.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_cache_s3.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_cache_tile.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_client.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_client_arcgis.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_client_cgi.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_collections.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_concat_legends.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_conf_loader.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_conf_validator.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_config.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_decorate_img.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_exceptions.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_featureinfo.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_fs.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_geom.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_grid.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_image_mask.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_image_messages.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_image_options.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_isodate.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_multiapp.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_ogr_reader.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_request.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_request_wmts.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_response.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_seed.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_srs.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_tiled_source.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_tilefilter.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_times.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_timeutils.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_util_conf_utils.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_util_ogcapi.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_wms_capabilities.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_wms_layer.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_yaml.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/tilefilter.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/__init__.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/async_.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/bbox.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/coverage.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/escape.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/ext/__init__.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/ext/dictspec/__init__.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/ext/dictspec/spec.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/ext/dictspec/test/__init__.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/ext/dictspec/test/test_validator.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/ext/dictspec/validator.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/ext/local.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/ext/lockfile.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/ext/serving.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/ext/tempita/__init__.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/ext/tempita/_looper.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/ext/tempita/string_utils.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/ext/wmsparse/__init__.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/ext/wmsparse/duration.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/ext/wmsparse/parse.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/ext/wmsparse/test/__init__.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/ext/wmsparse/test/test_parse.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/ext/wmsparse/test/test_util.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/ext/wmsparse/test/wms-example-111.xml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/ext/wmsparse/test/wms-example-130.xml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/ext/wmsparse/test/wms-large-111.xml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/ext/wmsparse/test/wms_nasa_cap.xml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/ext/wmsparse/util.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/fs.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/geom.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/immutable_dict_list.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/jinja2_templates.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/lib.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/lock.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/lru.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/ogcapi.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/ogr.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/py.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/sqlite3.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/times.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/yaml.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/version.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/wsgiapp.py +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/pyproject.toml +0 -0
- {mapproxy-6.1.1 → mapproxy-7.0.0}/setup.cfg +0 -0
|
@@ -1,3 +1,21 @@
|
|
|
1
|
+
7.0.0 2026-07-17
|
|
2
|
+
~~~~~~~~~~~~~~~~
|
|
3
|
+
|
|
4
|
+
Breaking:
|
|
5
|
+
|
|
6
|
+
- Security Fix: Avoiding path traversals in dimensions parameter.
|
|
7
|
+
In rare cases, existing cache directories will not be reused and created newly with safe directory names
|
|
8
|
+
|
|
9
|
+
Maintenance:
|
|
10
|
+
|
|
11
|
+
- Raising python version in workflows and docker images to 3.14
|
|
12
|
+
- Update dependencies
|
|
13
|
+
|
|
14
|
+
Fixes:
|
|
15
|
+
|
|
16
|
+
- Error with transparent PNGs in mixed format
|
|
17
|
+
|
|
18
|
+
|
|
1
19
|
6.1.1 2026-06-17
|
|
2
20
|
~~~~~~~~~~~~~~~~
|
|
3
21
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: MapProxy
|
|
3
|
-
Version:
|
|
3
|
+
Version: 7.0.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
|
|
@@ -16,6 +16,7 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
16
16
|
Classifier: Programming Language :: Python :: 3.11
|
|
17
17
|
Classifier: Programming Language :: Python :: 3.12
|
|
18
18
|
Classifier: Programming Language :: Python :: 3.13
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
19
20
|
Classifier: Topic :: Internet :: Proxy Servers
|
|
20
21
|
Classifier: Topic :: Internet :: WWW/HTTP :: WSGI
|
|
21
22
|
Classifier: Topic :: Scientific/Engineering :: GIS
|
|
@@ -38,6 +39,7 @@ Requires-Dist: jinja2
|
|
|
38
39
|
Requires-Dist: Babel
|
|
39
40
|
Requires-Dist: python-dateutil
|
|
40
41
|
Requires-Dist: requests
|
|
42
|
+
Requires-Dist: multiprocess
|
|
41
43
|
Dynamic: author
|
|
42
44
|
Dynamic: author-email
|
|
43
45
|
Dynamic: classifier
|
|
@@ -63,6 +65,24 @@ The documentation is available at: http://mapproxy.github.io/mapproxy/latest/
|
|
|
63
65
|
|
|
64
66
|
Changes
|
|
65
67
|
-------
|
|
68
|
+
7.0.0 2026-07-17
|
|
69
|
+
~~~~~~~~~~~~~~~~
|
|
70
|
+
|
|
71
|
+
Breaking:
|
|
72
|
+
|
|
73
|
+
- Security Fix: Avoiding path traversals in dimensions parameter.
|
|
74
|
+
In rare cases, existing cache directories will not be reused and created newly with safe directory names
|
|
75
|
+
|
|
76
|
+
Maintenance:
|
|
77
|
+
|
|
78
|
+
- Raising python version in workflows and docker images to 3.14
|
|
79
|
+
- Update dependencies
|
|
80
|
+
|
|
81
|
+
Fixes:
|
|
82
|
+
|
|
83
|
+
- Error with transparent PNGs in mixed format
|
|
84
|
+
|
|
85
|
+
|
|
66
86
|
6.1.1 2026-06-17
|
|
67
87
|
~~~~~~~~~~~~~~~~
|
|
68
88
|
|
|
@@ -194,24 +214,6 @@ Fixes:
|
|
|
194
214
|
- Fixes an error with merging resolutions of grids
|
|
195
215
|
|
|
196
216
|
|
|
197
|
-
5.0.0 2025-06-18
|
|
198
|
-
~~~~~~~~~~~~~~~~
|
|
199
|
-
|
|
200
|
-
Breaking:
|
|
201
|
-
|
|
202
|
-
- The dependencies lxml, shapely, pyproj, gdal and PyYAML are no longer optional
|
|
203
|
-
|
|
204
|
-
Maintenance:
|
|
205
|
-
|
|
206
|
-
- By default lxml, shapely, pyproj, Pillow and PyYAML are now installed via pip and are not recommended to be installed
|
|
207
|
-
as apt packages anymore
|
|
208
|
-
|
|
209
|
-
Fixes:
|
|
210
|
-
|
|
211
|
-
- The alpine image uses the python3 plugin for uwsgi correctly
|
|
212
|
-
- An lxml encoding error is fixed
|
|
213
|
-
|
|
214
|
-
|
|
215
217
|
|
|
216
218
|
Older changes
|
|
217
219
|
-------------
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: MapProxy
|
|
3
|
-
Version:
|
|
3
|
+
Version: 7.0.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
|
|
@@ -16,6 +16,7 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
16
16
|
Classifier: Programming Language :: Python :: 3.11
|
|
17
17
|
Classifier: Programming Language :: Python :: 3.12
|
|
18
18
|
Classifier: Programming Language :: Python :: 3.13
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
19
20
|
Classifier: Topic :: Internet :: Proxy Servers
|
|
20
21
|
Classifier: Topic :: Internet :: WWW/HTTP :: WSGI
|
|
21
22
|
Classifier: Topic :: Scientific/Engineering :: GIS
|
|
@@ -38,6 +39,7 @@ Requires-Dist: jinja2
|
|
|
38
39
|
Requires-Dist: Babel
|
|
39
40
|
Requires-Dist: python-dateutil
|
|
40
41
|
Requires-Dist: requests
|
|
42
|
+
Requires-Dist: multiprocess
|
|
41
43
|
Dynamic: author
|
|
42
44
|
Dynamic: author-email
|
|
43
45
|
Dynamic: classifier
|
|
@@ -63,6 +65,24 @@ The documentation is available at: http://mapproxy.github.io/mapproxy/latest/
|
|
|
63
65
|
|
|
64
66
|
Changes
|
|
65
67
|
-------
|
|
68
|
+
7.0.0 2026-07-17
|
|
69
|
+
~~~~~~~~~~~~~~~~
|
|
70
|
+
|
|
71
|
+
Breaking:
|
|
72
|
+
|
|
73
|
+
- Security Fix: Avoiding path traversals in dimensions parameter.
|
|
74
|
+
In rare cases, existing cache directories will not be reused and created newly with safe directory names
|
|
75
|
+
|
|
76
|
+
Maintenance:
|
|
77
|
+
|
|
78
|
+
- Raising python version in workflows and docker images to 3.14
|
|
79
|
+
- Update dependencies
|
|
80
|
+
|
|
81
|
+
Fixes:
|
|
82
|
+
|
|
83
|
+
- Error with transparent PNGs in mixed format
|
|
84
|
+
|
|
85
|
+
|
|
66
86
|
6.1.1 2026-06-17
|
|
67
87
|
~~~~~~~~~~~~~~~~
|
|
68
88
|
|
|
@@ -194,24 +214,6 @@ Fixes:
|
|
|
194
214
|
- Fixes an error with merging resolutions of grids
|
|
195
215
|
|
|
196
216
|
|
|
197
|
-
5.0.0 2025-06-18
|
|
198
|
-
~~~~~~~~~~~~~~~~
|
|
199
|
-
|
|
200
|
-
Breaking:
|
|
201
|
-
|
|
202
|
-
- The dependencies lxml, shapely, pyproj, gdal and PyYAML are no longer optional
|
|
203
|
-
|
|
204
|
-
Maintenance:
|
|
205
|
-
|
|
206
|
-
- By default lxml, shapely, pyproj, Pillow and PyYAML are now installed via pip and are not recommended to be installed
|
|
207
|
-
as apt packages anymore
|
|
208
|
-
|
|
209
|
-
Fixes:
|
|
210
|
-
|
|
211
|
-
- The alpine image uses the python3 plugin for uwsgi correctly
|
|
212
|
-
- An lxml encoding error is fixed
|
|
213
|
-
|
|
214
|
-
|
|
215
217
|
|
|
216
218
|
Older changes
|
|
217
219
|
-------------
|
|
@@ -88,6 +88,8 @@ Environment Variables
|
|
|
88
88
|
mode and will run all configurations in the ``/mapproxy/config/apps`` directory as different apps. Default is ``false``.
|
|
89
89
|
- ``MULTIAPP_ALLOW_LISTINGS``: In multi app mode if set to ``true``, MapProxy lists all available apps on the root page.
|
|
90
90
|
Default is ``false``.
|
|
91
|
+
- ``UWSGI_PROCESSES``: **nginx images only.** Number of uWSGI worker processes. Default is ``2``.
|
|
92
|
+
- ``UWSGI_THREADS``: **nginx images only.** Number of threads per uWSGI worker process. Default is ``10``.
|
|
91
93
|
|
|
92
94
|
|
|
93
95
|
Build your own image
|
|
@@ -61,6 +61,14 @@ def dimensions_part(dimensions):
|
|
|
61
61
|
|
|
62
62
|
"""
|
|
63
63
|
if dimensions:
|
|
64
|
+
def checkTraversal(v):
|
|
65
|
+
normalized = os.path.normpath(v)
|
|
66
|
+
parts = normalized.split('/') + normalized.split('\\')
|
|
67
|
+
isNormalized = v != normalized or any(part == ".." for part in parts)
|
|
68
|
+
if isNormalized:
|
|
69
|
+
raise ValueError('Dimension parameter value contains illegal characters')
|
|
70
|
+
for k, v in dimensions.items():
|
|
71
|
+
checkTraversal(v)
|
|
64
72
|
dims = NoCaseMultiDict(dimensions)
|
|
65
73
|
predefined_dims, custom_dims = [], []
|
|
66
74
|
for dim in dims.keys():
|
|
@@ -349,12 +349,12 @@ class ReadBufWrapper(object):
|
|
|
349
349
|
|
|
350
350
|
def img_has_transparency(img: Image.Image) -> bool:
|
|
351
351
|
if img.mode == 'P':
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
#
|
|
352
|
+
# Convert to RGBA and check the actual alpha channel instead of
|
|
353
|
+
# relying on img.info['transparency'], which may reference a color
|
|
354
|
+
# that does not actually appear in the image.
|
|
355
355
|
img = img.convert('RGBA')
|
|
356
356
|
if img.mode == 'RGBA':
|
|
357
|
-
# any alpha except fully opaque
|
|
357
|
+
# any alpha except fully opaque (alpha < 255)
|
|
358
358
|
return any(img.histogram()[-256:-1])
|
|
359
359
|
return False
|
|
360
360
|
|
|
@@ -423,6 +423,10 @@ def img_to_buf(img: Image.Image, image_opts, georef=None) -> BytesIO:
|
|
|
423
423
|
if image_opts.mode is not None and img.mode != image_opts.mode:
|
|
424
424
|
img = img.convert(image_opts.mode)
|
|
425
425
|
|
|
426
|
+
# JPEG must always be RGB
|
|
427
|
+
if format == 'jpeg' and img.mode != 'RGB':
|
|
428
|
+
img = img.convert('RGB')
|
|
429
|
+
|
|
426
430
|
img.save(buf, format, **defaults)
|
|
427
431
|
buf.seek(0)
|
|
428
432
|
return buf
|
|
@@ -52,9 +52,10 @@ if sys.platform == 'win32' or sys.platform == 'darwin':
|
|
|
52
52
|
proc_class = threading.Thread
|
|
53
53
|
queue_class = queue.Queue
|
|
54
54
|
else:
|
|
55
|
-
import
|
|
56
|
-
|
|
57
|
-
|
|
55
|
+
import multiprocess
|
|
56
|
+
from multiprocess import Process
|
|
57
|
+
proc_class: type[Process] = multiprocess.Process
|
|
58
|
+
queue_class = multiprocess.Queue
|
|
58
59
|
|
|
59
60
|
|
|
60
61
|
class TileWorkerPool(object):
|
|
@@ -19,7 +19,7 @@ import logging
|
|
|
19
19
|
import sys
|
|
20
20
|
import time
|
|
21
21
|
import threading
|
|
22
|
-
import
|
|
22
|
+
import multiprocess
|
|
23
23
|
from io import BytesIO
|
|
24
24
|
from typing import Optional
|
|
25
25
|
|
|
@@ -149,7 +149,7 @@ class MapnikSource(MapLayer):
|
|
|
149
149
|
if not self.multithreaded:
|
|
150
150
|
return self._create_map_obj(mapfile, None)
|
|
151
151
|
|
|
152
|
-
process_id =
|
|
152
|
+
process_id = multiprocess.current_process()._identity
|
|
153
153
|
queue_cachekey = (process_id, mapfile)
|
|
154
154
|
if queue_cachekey in _map_objs_queues:
|
|
155
155
|
try:
|
|
@@ -163,7 +163,7 @@ class MapnikSource(MapLayer):
|
|
|
163
163
|
return self._create_map_obj(mapfile, process_id)
|
|
164
164
|
|
|
165
165
|
def _put_unused_map_obj(self, mapfile, m):
|
|
166
|
-
process_id =
|
|
166
|
+
process_id = multiprocess.current_process()._identity
|
|
167
167
|
queue_cachekey = (process_id, mapfile)
|
|
168
168
|
if queue_cachekey not in _map_objs_queues:
|
|
169
169
|
_map_objs_queues[queue_cachekey] = Queue(MAX_UNUSED_MAPS)
|
|
@@ -179,14 +179,14 @@ class MapnikSource(MapLayer):
|
|
|
179
179
|
# all MapnikSources with the same mapfile share the same Mapnik Map.
|
|
180
180
|
return (None, None, mapfile)
|
|
181
181
|
thread_id = threading.current_thread().ident
|
|
182
|
-
process_id =
|
|
182
|
+
process_id = multiprocess.current_process()._identity
|
|
183
183
|
return (process_id, thread_id, mapfile)
|
|
184
184
|
|
|
185
185
|
def _cleanup_unused_cached_maps(self, mapfile):
|
|
186
186
|
if not self.multithreaded:
|
|
187
187
|
return
|
|
188
188
|
# clean up no longer used cached maps
|
|
189
|
-
process_id =
|
|
189
|
+
process_id = multiprocess.current_process()._identity
|
|
190
190
|
process_cache_keys = [k for k in self._map_cache().keys()
|
|
191
191
|
if k[0] == process_id]
|
|
192
192
|
# To avoid time-consuming cleanup whenever one thread in the
|
|
@@ -30,6 +30,7 @@ import pytest
|
|
|
30
30
|
|
|
31
31
|
from mapproxy.cache.base import TileLocker
|
|
32
32
|
from mapproxy.cache.file import FileCache
|
|
33
|
+
from mapproxy.cache.path import dimensions_part
|
|
33
34
|
from mapproxy.cache.tile import Tile
|
|
34
35
|
from mapproxy.cache.tile_manager import TileManager
|
|
35
36
|
from mapproxy.client.http import HTTPClient
|
|
@@ -1404,3 +1405,32 @@ class TestTileManagerCacheGeojsonCoverage(TileCacheTestBase):
|
|
|
1404
1405
|
|
|
1405
1406
|
assert self.cache.stored_tiles == set([])
|
|
1406
1407
|
assert self.cache.loaded_tiles == counting_set([None for _ in coords])
|
|
1408
|
+
|
|
1409
|
+
|
|
1410
|
+
class TestDimensionsPart(TileCacheTestBase):
|
|
1411
|
+
|
|
1412
|
+
def test_dimensions_part_sanitized(self):
|
|
1413
|
+
|
|
1414
|
+
with pytest.raises(ValueError):
|
|
1415
|
+
dimensions_part({"forwardparam": "../"})
|
|
1416
|
+
|
|
1417
|
+
with pytest.raises(ValueError):
|
|
1418
|
+
dimensions_part({"forwardparam": "time/../.."})
|
|
1419
|
+
|
|
1420
|
+
with pytest.raises(ValueError):
|
|
1421
|
+
dimensions_part({"forwardparam": "check/../test"})
|
|
1422
|
+
|
|
1423
|
+
with pytest.raises(ValueError):
|
|
1424
|
+
dimensions_part({"forwardparam": "check\\..\\windoze"})
|
|
1425
|
+
|
|
1426
|
+
retVal = dimensions_part({"forwardparam": "1234-5678"})
|
|
1427
|
+
assert retVal == "forwardparam-1234-5678"
|
|
1428
|
+
|
|
1429
|
+
retVal = dimensions_part({"forwardparam": "2004-10-12T13:55:20Z"})
|
|
1430
|
+
assert retVal == "forwardparam-2004-10-12T13:55:20Z"
|
|
1431
|
+
|
|
1432
|
+
retVal = dimensions_part({"forwardparam": "2020-09-22T11:20:00Z/2020-09-22T14:20:00Z/PT2H"})
|
|
1433
|
+
assert retVal == "forwardparam-2020-09-22T11:20:00Z/2020-09-22T14:20:00Z/PT2H"
|
|
1434
|
+
|
|
1435
|
+
retVal = dimensions_part({"forwardparam": r",;.:-_#'+*~´`?ß=})]([/{}])&%$§!^"})
|
|
1436
|
+
assert retVal == "forwardparam-,;.:-_#'+*~´`?ß=})]([/{}])&%$§!^"
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
# See the License for the specific language governing permissions and
|
|
14
14
|
# limitations under the License.
|
|
15
15
|
|
|
16
|
-
import
|
|
16
|
+
import multiprocess
|
|
17
17
|
import threading
|
|
18
18
|
import time
|
|
19
19
|
|
|
@@ -40,7 +40,7 @@ def test_file_lock_load(tmpdir):
|
|
|
40
40
|
time.sleep(0.01)
|
|
41
41
|
lock((lock_file, count_file))
|
|
42
42
|
threads = [threading.Thread(target=lock_x) for _ in range(20)]
|
|
43
|
-
p =
|
|
43
|
+
p = multiprocess.Pool(5)
|
|
44
44
|
[t.start() for t in threads]
|
|
45
45
|
p.map(lock, [(lock_file, count_file) for _ in range(50)])
|
|
46
46
|
[t.join() for t in threads]
|
|
@@ -219,6 +219,38 @@ class TestImageResult(object):
|
|
|
219
219
|
"Expected RGBA PNG when mode=RGBA requested, got %s" % result.mode
|
|
220
220
|
)
|
|
221
221
|
|
|
222
|
+
def test_rgba_source_image_stored_as_jpeg(self):
|
|
223
|
+
"""
|
|
224
|
+
Regression test: RGBA PNG from transparent WMS source (e.g. basemapde)
|
|
225
|
+
must not raise OSError when stored to a JPEG cache.
|
|
226
|
+
The mode=RGBA from image_opts must not override the JPEG-required RGB conversion.
|
|
227
|
+
"""
|
|
228
|
+
# Simulate what a WMS with transparent=True & format=image/png returns
|
|
229
|
+
rgba_img = Image.new("RGBA", (256, 256), (100, 150, 200, 255))
|
|
230
|
+
source_opts = ImageOptions(format="image/png", transparent=True, mode="RGBA")
|
|
231
|
+
ir = ImageResult(rgba_img, image_opts=source_opts)
|
|
232
|
+
|
|
233
|
+
# Cache is configured as JPEG – mode=RGBA must not override the JPEG conversion
|
|
234
|
+
jpeg_opts = ImageOptions(format="image/jpeg", mode="RGBA")
|
|
235
|
+
buf = ir.as_buffer(jpeg_opts)
|
|
236
|
+
assert is_jpeg(buf), "Expected JPEG output when saving RGBA image with JPEG cache opts"
|
|
237
|
+
|
|
238
|
+
def test_rgba_image_to_jpeg_via_img_to_buf(self):
|
|
239
|
+
"""
|
|
240
|
+
img_to_buf must not raise 'cannot write mode RGBA as JPEG'
|
|
241
|
+
when image_opts.mode='RGBA' and format='jpeg'.
|
|
242
|
+
"""
|
|
243
|
+
from mapproxy.image import img_to_buf
|
|
244
|
+
|
|
245
|
+
rgba_img = Image.new("RGBA", (256, 256), (100, 150, 200, 128))
|
|
246
|
+
# The critical case: mode=RGBA but format=jpeg
|
|
247
|
+
opts = ImageOptions(format="image/jpeg", mode="RGBA", transparent=True)
|
|
248
|
+
|
|
249
|
+
# Must not raise OSError
|
|
250
|
+
buf = img_to_buf(rgba_img, image_opts=opts)
|
|
251
|
+
result = Image.open(buf)
|
|
252
|
+
assert result.mode == "RGB", "JPEG output must be RGB, not RGBA"
|
|
253
|
+
|
|
222
254
|
|
|
223
255
|
class TestSubImageResult(object):
|
|
224
256
|
|
|
@@ -1095,3 +1127,43 @@ class TestBandMerge(object):
|
|
|
1095
1127
|
img = result.as_image()
|
|
1096
1128
|
assert img.mode == "RGBA"
|
|
1097
1129
|
assert img.getpixel((0, 0)) == (200, 100, 0, 255)
|
|
1130
|
+
|
|
1131
|
+
|
|
1132
|
+
class TestImgHasTransparency(object):
|
|
1133
|
+
"""Tests for img_has_transparency"""
|
|
1134
|
+
|
|
1135
|
+
def test_rgb_opaque(self):
|
|
1136
|
+
img = Image.new("RGB", (10, 10), (255, 0, 0))
|
|
1137
|
+
assert not img_has_transparency(img)
|
|
1138
|
+
|
|
1139
|
+
def test_rgba_fully_opaque(self):
|
|
1140
|
+
img = Image.new("RGBA", (10, 10), (255, 0, 0, 255))
|
|
1141
|
+
assert not img_has_transparency(img)
|
|
1142
|
+
|
|
1143
|
+
def test_rgba_with_transparency(self):
|
|
1144
|
+
img = Image.new("RGBA", (10, 10), (255, 0, 0, 255))
|
|
1145
|
+
img.paste((255, 0, 0, 0), (3, 3, 7, 7))
|
|
1146
|
+
assert img_has_transparency(img)
|
|
1147
|
+
|
|
1148
|
+
def test_p_with_transparency_info_but_color_not_used(self):
|
|
1149
|
+
"""
|
|
1150
|
+
Regression: P-mode image with transparency info entry, but the
|
|
1151
|
+
transparent color does not appear in the image at all.
|
|
1152
|
+
img_has_transparency should return False, not True.
|
|
1153
|
+
"""
|
|
1154
|
+
img = Image.new("RGB", (10, 10), (255, 0, 0)).quantize(256)
|
|
1155
|
+
assert img.mode == "P"
|
|
1156
|
+
pixels = list(img.getdata())
|
|
1157
|
+
assert 1 not in pixels, "palette index 1 must not appear in image for this test to be valid"
|
|
1158
|
+
img.info["transparency"] = 1
|
|
1159
|
+
assert not img_has_transparency(img)
|
|
1160
|
+
|
|
1161
|
+
def test_p_with_actual_transparency(self):
|
|
1162
|
+
"""
|
|
1163
|
+
P-mode image where the transparent color actually appears in the image.
|
|
1164
|
+
"""
|
|
1165
|
+
img = Image.new("RGBA", (10, 10), (255, 0, 0, 255))
|
|
1166
|
+
img.paste((255, 0, 0, 0), (3, 3, 7, 7))
|
|
1167
|
+
img_p = img.quantize(256)
|
|
1168
|
+
assert img.mode != "P" or img_has_transparency(img_p)
|
|
1169
|
+
assert img_has_transparency(img_p)
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
# See the License for the specific language governing permissions and
|
|
14
14
|
# limitations under the License.
|
|
15
15
|
|
|
16
|
-
import
|
|
16
|
+
import multiprocess
|
|
17
17
|
import time
|
|
18
18
|
import sys
|
|
19
19
|
|
|
@@ -36,7 +36,7 @@ class TestCacheLock(object):
|
|
|
36
36
|
assert True
|
|
37
37
|
|
|
38
38
|
def test_locked_by_process_no_block(self, lock_file):
|
|
39
|
-
ctx =
|
|
39
|
+
ctx = multiprocess.get_context('fork')
|
|
40
40
|
|
|
41
41
|
proc_is_locked = ctx.Event()
|
|
42
42
|
|
|
@@ -68,7 +68,7 @@ class TestCacheLock(object):
|
|
|
68
68
|
p.join()
|
|
69
69
|
|
|
70
70
|
def test_locked_by_process_waiting(self, lock_file):
|
|
71
|
-
ctx =
|
|
71
|
+
ctx = multiprocess.get_context('fork')
|
|
72
72
|
|
|
73
73
|
proc_is_locked = ctx.Event()
|
|
74
74
|
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
# limitations under the License.
|
|
15
15
|
|
|
16
16
|
import glob
|
|
17
|
-
import
|
|
17
|
+
import multiprocess
|
|
18
18
|
import os
|
|
19
19
|
import random
|
|
20
20
|
import shutil
|
|
@@ -497,7 +497,7 @@ class TestWriteAtomic(object):
|
|
|
497
497
|
num_writes = 800
|
|
498
498
|
concurrent_writes = 8
|
|
499
499
|
|
|
500
|
-
p =
|
|
500
|
+
p = multiprocess.Pool(concurrent_writes)
|
|
501
501
|
p.map(_write_atomic_data, ((i, filename) for i in range(num_writes)))
|
|
502
502
|
p.close()
|
|
503
503
|
p.join()
|
|
@@ -3,14 +3,14 @@ aws-sam-translator==1.91.0
|
|
|
3
3
|
aws-xray-sdk==2.12.1
|
|
4
4
|
azure-storage-blob==12.27.1
|
|
5
5
|
beautifulsoup4==4.14.3
|
|
6
|
-
boto3==1.
|
|
7
|
-
botocore==1.
|
|
8
|
-
certifi==
|
|
6
|
+
boto3==1.43.50
|
|
7
|
+
botocore==1.43.50
|
|
8
|
+
certifi==2026.6.17
|
|
9
9
|
cffi==2.0.0
|
|
10
10
|
cfn-lint==0.80.3
|
|
11
11
|
chardet==5.2.0
|
|
12
12
|
coverage==7.11.3
|
|
13
|
-
cryptography==
|
|
13
|
+
cryptography==49.0.0
|
|
14
14
|
decorator==5.2.1
|
|
15
15
|
docker==7.1.0
|
|
16
16
|
docutils==0.22.4
|
|
@@ -18,7 +18,7 @@ ecdsa==0.18.0
|
|
|
18
18
|
flake8==7.0.0
|
|
19
19
|
flake8-toml-config==1.0.0
|
|
20
20
|
idna==2.9
|
|
21
|
-
iniconfig==2.
|
|
21
|
+
iniconfig==2.3.0
|
|
22
22
|
Jinja2==2.11.3
|
|
23
23
|
jmespath==1.0.1
|
|
24
24
|
jsondiff==1.3.1
|
|
@@ -33,6 +33,7 @@ MarkupSafe==1.1.1
|
|
|
33
33
|
mock==5.1.0
|
|
34
34
|
more-itertools==10.1.0
|
|
35
35
|
moto==5.0.13
|
|
36
|
+
multiprocess==0.70.19
|
|
36
37
|
mypy==1.18.2
|
|
37
38
|
networkx==3.4.2
|
|
38
39
|
numpy==1.26.4
|
|
@@ -43,30 +44,31 @@ py==1.11.0
|
|
|
43
44
|
pyasn1==0.6.3
|
|
44
45
|
pycparser==2.22
|
|
45
46
|
pyparsing==3.3.2
|
|
46
|
-
pyproj==3.7.1
|
|
47
|
+
pyproj==3.7.1;python_version<"3.14"
|
|
48
|
+
pyproj==3.7.2;python_version>"3.13"
|
|
47
49
|
pyrsistent==0.20.0
|
|
48
50
|
pytest-rerunfailures==16.0.1
|
|
49
51
|
pytest==9.0.3
|
|
50
52
|
python-dateutil==2.9.0.post0
|
|
51
53
|
python-jose==3.5.0
|
|
52
54
|
pytz==2024.2
|
|
53
|
-
redis==
|
|
55
|
+
redis==8.0.0
|
|
54
56
|
requests==2.33.0
|
|
55
57
|
responses==0.25.8
|
|
56
58
|
rsa==4.9.1
|
|
57
|
-
Shapely==2.1.
|
|
58
|
-
soupsieve==2.8
|
|
59
|
+
Shapely==2.1.2
|
|
60
|
+
soupsieve==2.8.4
|
|
59
61
|
sshpubkeys==3.3.1
|
|
60
62
|
toml==0.10.2
|
|
61
63
|
types-PyYAML==6.0.12
|
|
62
64
|
types-requests==2.32.4.20250913
|
|
63
|
-
types-shapely==2.1.0.
|
|
65
|
+
types-shapely==2.1.0.20260630
|
|
64
66
|
types-jsonschema==4.25.1.20251009
|
|
65
67
|
types-python-dateutil==2.9.0.20251008
|
|
66
68
|
types-pytz==2025.2.0.20250809
|
|
67
69
|
urllib3==2.5.0
|
|
68
70
|
waitress==3.0.2
|
|
69
|
-
WebOb==1.8.
|
|
71
|
+
WebOb==1.8.10
|
|
70
72
|
websocket-client==1.8.0
|
|
71
73
|
WebTest==3.0.0
|
|
72
74
|
wrapt==1.17.2
|
|
@@ -16,7 +16,8 @@ install_requires = [
|
|
|
16
16
|
'jinja2',
|
|
17
17
|
'Babel', # For jinja2
|
|
18
18
|
'python-dateutil', # For jinja2
|
|
19
|
-
'requests'
|
|
19
|
+
'requests',
|
|
20
|
+
'multiprocess'
|
|
20
21
|
]
|
|
21
22
|
|
|
22
23
|
|
|
@@ -44,7 +45,7 @@ def long_description(changelog_releases=10):
|
|
|
44
45
|
|
|
45
46
|
setup(
|
|
46
47
|
name='MapProxy',
|
|
47
|
-
version="
|
|
48
|
+
version="7.0.0",
|
|
48
49
|
description='An accelerating proxy for tile and web map services',
|
|
49
50
|
long_description=long_description(7),
|
|
50
51
|
long_description_content_type='text/x-rst',
|
|
@@ -73,6 +74,7 @@ setup(
|
|
|
73
74
|
"Programming Language :: Python :: 3.11",
|
|
74
75
|
"Programming Language :: Python :: 3.12",
|
|
75
76
|
"Programming Language :: Python :: 3.13",
|
|
77
|
+
"Programming Language :: Python :: 3.14",
|
|
76
78
|
"Topic :: Internet :: Proxy Servers",
|
|
77
79
|
"Topic :: Internet :: WWW/HTTP :: WSGI",
|
|
78
80
|
"Topic :: Scientific/Engineering :: GIS",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|