MapProxy 3.1.0__tar.gz → 3.1.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {MapProxy-3.1.0 → MapProxy-3.1.2}/CHANGES.txt +27 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/MapProxy.egg-info/PKG-INFO +31 -36
- {MapProxy-3.1.0 → MapProxy-3.1.2}/MapProxy.egg-info/requires.txt +1 -1
- {MapProxy-3.1.0 → MapProxy-3.1.2}/PKG-INFO +31 -36
- {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/coverages.rst +1 -1
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/cache/base.py +4 -2
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/cache/compact.py +8 -4
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/cache/file.py +3 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/cache/geopackage.py +2 -2
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/cache/mbtiles.py +2 -2
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/config/config-schema.json +20 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/config/loader.py +48 -4
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/config/validator.py +1 -1
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/seed/config.py +3 -1
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_utils.py +30 -2
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/ext/lockfile.py +4 -1
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/lock.py +12 -10
- {MapProxy-3.1.0 → MapProxy-3.1.2}/requirements-tests.txt +9 -6
- {MapProxy-3.1.0 → MapProxy-3.1.2}/setup.py +5 -2
- {MapProxy-3.1.0 → MapProxy-3.1.2}/AUTHORS.txt +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/COPYING.txt +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/LICENSE.txt +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/MANIFEST.in +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/MapProxy.egg-info/SOURCES.txt +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/MapProxy.egg-info/dependency_links.txt +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/MapProxy.egg-info/entry_points.txt +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/MapProxy.egg-info/not-zip-safe +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/MapProxy.egg-info/top_level.txt +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/README.md +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/GM.txt +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/_static/logo.png +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/_static/logo_title.png +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/_static/mapproxy.css +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/_templates/versions.html +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/auth.rst +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/caches.rst +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/caching_layer_dimensions.rst +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/conf.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/configuration.rst +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/configuration_examples.rst +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/decorate_img.rst +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/deployment.rst +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/development.rst +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/imgs/bicubic.png +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/imgs/bilinear.png +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/imgs/labeling-dynamic.png +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/imgs/labeling-meta-buffer.png +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/imgs/labeling-metatiling-buffer.png +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/imgs/labeling-metatiling.png +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/imgs/labeling-no-clip.png +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/imgs/labeling-no-placement.png +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/imgs/labeling-partial-false.png +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/imgs/labeling-repeated.png +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/imgs/mapnik-webmerc-hq.png +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/imgs/mapnik-webmerc.png +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/imgs/mapproxy-demo.png +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/imgs/nearest.png +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/index.rst +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/inspire.rst +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/install.rst +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/install_docker.rst +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/install_osgeo4w.rst +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/install_windows.rst +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/labeling.rst +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/mapproxy_util.rst +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/mapproxy_util_autoconfig.rst +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/plugins.rst +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/seed.rst +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/services.rst +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/sources.rst +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/tutorial.rst +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/tutorial.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/yaml/cache_conf.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/yaml/grid_conf.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/yaml/merged_conf.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/yaml/meta_conf.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/yaml/seed.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/yaml/simple_conf.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/__init__.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/cache/__init__.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/cache/azureblob.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/cache/couchdb.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/cache/dummy.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/cache/legend.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/cache/meta.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/cache/path.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/cache/redis.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/cache/renderd.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/cache/riak.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/cache/s3.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/cache/tile.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/client/__init__.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/client/arcgis.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/client/cgi.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/client/http.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/client/log.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/client/tile.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/client/wms.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/compat/__init__.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/compat/image.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/config/__init__.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/config/config.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/config/coverage.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/config/defaults.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/config/spec.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/config_template/__init__.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/config_template/base_config/config.wsgi +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/config_template/base_config/full_example.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/config_template/base_config/full_seed_example.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/config_template/base_config/log.ini +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/config_template/base_config/mapproxy.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/config_template/base_config/seed.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/exception.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/featureinfo.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/grid.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/image/__init__.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/image/fonts/DejaVuSans.ttf +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/image/fonts/DejaVuSansMono.ttf +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/image/fonts/LICENSE +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/image/fonts/__init__.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/image/mask.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/image/merge.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/image/message.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/image/opts.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/image/tile.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/image/transform.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/layer.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/multiapp.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/proj.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/request/__init__.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/request/arcgis.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/request/base.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/request/tile.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/request/wms/__init__.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/request/wms/exception.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/request/wmts.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/response.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/script/__init__.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/script/conf/__init__.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/script/conf/app.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/script/conf/caches.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/script/conf/geopackage.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/script/conf/layers.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/script/conf/seeds.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/script/conf/sources.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/script/conf/utils.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/script/defrag.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/script/export.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/script/grids.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/script/scales.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/script/util.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/script/wms_capabilities.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/seed/__init__.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/seed/cachelock.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/seed/cleanup.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/seed/script.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/seed/seeder.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/seed/spec.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/seed/util.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/__init__.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/base.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/demo.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/kml.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/ows.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/template_helper.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/demo/capabilities_demo.html +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/demo/demo.html +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/demo/openlayers-demo.cfg +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/demo/static/img/blank.gif +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/demo/static/img/east-mini.png +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/demo/static/img/north-mini.png +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/demo/static/img/south-mini.png +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/demo/static/img/west-mini.png +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/demo/static/img/zoom-minus-mini.png +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/demo/static/img/zoom-plus-mini.png +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/demo/static/img/zoom-world-mini.png +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/demo/static/logo.png +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/demo/static/ol.css +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/demo/static/ol.js +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/demo/static/proj4.min.js +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/demo/static/proj4defs.js +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/demo/static/site.css +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/demo/static/theme/default/framedCloud.css +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/demo/static/theme/default/google.css +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/demo/static/theme/default/ie6-style.css +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/demo/static/theme/default/style.css +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/demo/static.html +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/demo/tms_demo.html +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/demo/wms_demo.html +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/demo/wmts_demo.html +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/ows_exception.xml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/tms_capabilities.xml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/tms_exception.xml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/tms_root_resource.xml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/tms_tilemap_capabilities.xml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/wms100capabilities.xml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/wms100exception.xml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/wms110capabilities.xml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/wms110exception.xml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/wms111capabilities.xml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/wms111exception.xml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/wms130capabilities.xml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/wms130exception.xml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/wmts100capabilities.xml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/wmts100exception.xml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/tile.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/wms.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/wmts.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/source/__init__.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/source/arcgis.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/source/error.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/source/mapnik.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/source/tile.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/source/wms.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/srs.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/template.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/__init__.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/conftest.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/helper.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/http.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/image.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/mocker.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/common/1.0/common.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_bul.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_cze.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_dan.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_dut.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_eng.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_est.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_fin.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_fre.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_ger.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_gle.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_gre.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_hun.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_ita.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_lav.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_lit.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_mlt.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_pol.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_por.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_rum.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_slo.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_slv.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_spa.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_swe.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/common/1.0/network.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/inspire_vs/1.0/inspire_vs.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/kml/2.2.0/ReadMe.txt +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/kml/2.2.0/atom-author-link.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/kml/2.2.0/ogckml22.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/kml/2.2.0/xAL.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/ows/1.1.0/ReadMe.txt +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/ows/1.1.0/ows19115subset.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/ows/1.1.0/owsAll.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/ows/1.1.0/owsCommon.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/ows/1.1.0/owsContents.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/ows/1.1.0/owsDataIdentification.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/ows/1.1.0/owsDomainType.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/ows/1.1.0/owsExceptionReport.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/ows/1.1.0/owsGetCapabilities.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/ows/1.1.0/owsGetResourceByID.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/ows/1.1.0/owsInputOutputData.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/ows/1.1.0/owsManifest.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/ows/1.1.0/owsOperationsMetadata.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/ows/1.1.0/owsServiceIdentification.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/ows/1.1.0/owsServiceProvider.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/sld/1.1.0/sld_capabilities.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wms/1.0.0/capabilities_1_0_0.dtd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wms/1.0.0/capabilities_1_0_0.xml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wms/1.0.7/capabilities_1_0_7.dtd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wms/1.0.7/capabilities_1_0_7.xml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wms/1.1.0/capabilities_1_1_0.dtd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wms/1.1.0/capabilities_1_1_0.xml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wms/1.1.0/exception_1_1_0.dtd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wms/1.1.0/exception_1_1_0.xml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wms/1.1.1/OGC-exception.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wms/1.1.1/WMS_DescribeLayerResponse.dtd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wms/1.1.1/WMS_MS_Capabilities.dtd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wms/1.1.1/WMS_exception_1_1_1.dtd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wms/1.1.1/capabilities_1_1_1.dtd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wms/1.1.1/capabilities_1_1_1.xml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wms/1.1.1/exception_1_1_1.dtd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wms/1.1.1/exception_1_1_1.xml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wms/1.3.0/ReadMe.txt +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wms/1.3.0/capabilities_1_3_0.xml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wms/1.3.0/capabilities_1_3_0.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wms/1.3.0/exceptions_1_3_0.xml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wms/1.3.0/exceptions_1_3_0.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wmsc/1.1.1/OGC-exception.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wmsc/1.1.1/WMS_DescribeLayerResponse.dtd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wmsc/1.1.1/WMS_MS_Capabilities.dtd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wmsc/1.1.1/WMS_exception_1_1_1.dtd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wmsc/1.1.1/capabilities_1_1_1.dtd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wmsc/1.1.1/capabilities_1_1_1.xml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wmsc/1.1.1/exception_1_1_1.dtd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wmsc/1.1.1/exception_1_1_1.xml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wmts/1.0/ReadMe.txt +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wmts/1.0/wmts.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wmts/1.0/wmtsAbstract.wsdl +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wmts/1.0/wmtsGetCapabilities_request.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wmts/1.0/wmtsGetCapabilities_response.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wmts/1.0/wmtsGetFeatureInfo_request.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wmts/1.0/wmtsGetFeatureInfo_response.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wmts/1.0/wmtsGetTile_request.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wmts/1.0/wmtsKVP.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wmts/1.0/wmtsPayload_response.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/xlink/1.0.0/ReadMe.txt +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/xlink/1.0.0/xlinks.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/xml.xsd +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/__init__.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/arcgis.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/auth.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/cache.mbtiles +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/cache_azureblob.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/cache_band_merge.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/cache_bulk_meta_tiles.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/cache_coverage.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/cache_data/dop_cache_EPSG3857/00/000/000/000/000/000/000.png +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/cache_data/wms_cache_EPSG900913/01/000/000/000/000/000/001.jpeg +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/cache_data/wms_cache_transparent_EPSG900913/01/000/000/000/000/000/001.png +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/cache_geopackage.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/cache_grid_names.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/cache_mbtiles.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/cache_s3.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/cache_source.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/combined_sources.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/coverage.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/demo.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/dimension.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/disable_storage.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/empty_ogrdata.geojson +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/formats.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/inspire.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/inspire_full.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/kml_layer.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/layer.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/layergroups.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/layergroups_root.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/legendgraphic.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/mapnik_source.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/mapproxy_export.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/mapserver.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/minimal_cgi.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/mixed_mode.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/multi_cache_layers.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/multiapp1.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/multiapp2.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/renderd_client.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/scalehints.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/seed.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/seed_mapproxy.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/seed_old.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/seed_timeouts.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/seed_timeouts_mapproxy.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/seedonly.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/sld.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/source_errors.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/source_errors_raise.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/tileservice_origin.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/tileservice_refresh.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/tilesource_minmax_res.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/util-conf-base-grids.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/util-conf-overwrite.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/util-conf-wms-111-cap.xml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/util_grids.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/util_wms_capabilities111.xml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/util_wms_capabilities130.xml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/util_wms_capabilities_service_exception.xml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/watermark.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/wms_srs_extent.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/wms_versions.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/wmts.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/wmts_dimensions.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/xslt_featureinfo.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/xslt_featureinfo_input.yaml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_arcgis.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_auth.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_behind_proxy.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_bulk_meta_tiles.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_cache_azureblob.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_cache_band_merge.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_cache_coverage.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_cache_geopackage.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_cache_grid_names.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_cache_mbtiles.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_cache_s3.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_cache_source.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_combined_sources.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_coverage.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_decorate_img.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_demo.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_demo_with_extra_service.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_dimensions.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_disable_storage.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_formats.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_inspire_vs.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_kml.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_layergroups.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_legendgraphic.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_mapnik.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_mapserver.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_mixed_mode_format.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_multi_cache_layers.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_multiapp.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_refresh.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_renderd_client.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_response_headers.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_scalehints.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_seed.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_seed_only.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_sld.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_source_errors.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_tilesource_minmax_res.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_tms.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_tms_origin.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_util_conf.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_util_export.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_util_grids.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_util_wms_capabilities.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_watermark.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_wms.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_wms_srs_extent.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_wms_version.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_wmsc.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_wmts.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_wmts_dimensions.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_wmts_restful.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_xslt_featureinfo.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/test_http_helper.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/__init__.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/epsg +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/polygons/polygons.dbf +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/polygons/polygons.shp +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/polygons/polygons.shx +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_async.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_auth.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_cache.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_cache_azureblob.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_cache_compact.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_cache_couchdb.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_cache_geopackage.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_cache_mbtile.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_cache_redis.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_cache_riak.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_cache_s3.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_cache_tile.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_client.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_client_arcgis.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_client_cgi.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_collections.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_concat_legends.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_conf_loader.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_conf_validator.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_config.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_decorate_img.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_exceptions.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_featureinfo.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_file_lock_load.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_fs.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_geom.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_grid.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_image.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_image_mask.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_image_messages.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_image_options.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_isodate.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_multiapp.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_ogr_reader.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_request.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_request_wmts.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_response.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_seed.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_seed_cachelock.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_srs.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_tiled_source.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_tilefilter.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_times.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_timeutils.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_util_conf_utils.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_wms_capabilities.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_wms_layer.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_yaml.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/tilefilter.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/__init__.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/async_.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/collections.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/coverage.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/ext/__init__.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/ext/dictspec/__init__.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/ext/dictspec/spec.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/ext/dictspec/test/__init__.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/ext/dictspec/test/test_validator.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/ext/dictspec/validator.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/ext/local.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/ext/odict.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/ext/serving.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/ext/tempita/__init__.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/ext/tempita/_looper.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/ext/tempita/string_utils.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/ext/wmsparse/__init__.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/ext/wmsparse/duration.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/ext/wmsparse/parse.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/ext/wmsparse/test/__init__.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/ext/wmsparse/test/test_parse.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/ext/wmsparse/test/test_util.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/ext/wmsparse/test/wms-example-111.xml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/ext/wmsparse/test/wms-example-130.xml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/ext/wmsparse/test/wms-large-111.xml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/ext/wmsparse/test/wms_nasa_cap.xml +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/ext/wmsparse/util.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/fs.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/geom.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/lib.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/ogr.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/py.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/times.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/yaml.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/version.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/wsgiapp.py +0 -0
- {MapProxy-3.1.0 → MapProxy-3.1.2}/setup.cfg +0 -0
|
@@ -1,3 +1,30 @@
|
|
|
1
|
+
3.1.2 2024-11-20
|
|
2
|
+
~~~~~~~~~~~~~~~~
|
|
3
|
+
|
|
4
|
+
Maintenance:
|
|
5
|
+
|
|
6
|
+
- Several dependencies for the tests and github actions have been updated
|
|
7
|
+
|
|
8
|
+
Fixes:
|
|
9
|
+
|
|
10
|
+
- Metadata URLs are now required to have a `url`, `type` and `format`
|
|
11
|
+
- The layers of a wms `req` are now correctly splitted at `,` for validation
|
|
12
|
+
- The validation for seeding configs is fixed
|
|
13
|
+
- Single color tiles are now created with configured file_permissions
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
3.1.1 2024-11-15
|
|
17
|
+
~~~~~~~~~~~~~~~~
|
|
18
|
+
|
|
19
|
+
Maintenance:
|
|
20
|
+
|
|
21
|
+
- Werkzeug version is no longer pinned and can be chosen freely.
|
|
22
|
+
|
|
23
|
+
Fixes:
|
|
24
|
+
|
|
25
|
+
- The permission handling for file locks now also sets permissions on the files not just on the directories.
|
|
26
|
+
|
|
27
|
+
|
|
1
28
|
3.1.0 2024-10-22
|
|
2
29
|
~~~~~~~~~~~~~~~~
|
|
3
30
|
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: MapProxy
|
|
3
|
-
Version: 3.1.
|
|
3
|
+
Version: 3.1.2
|
|
4
4
|
Summary: An accelerating proxy for tile and web map services
|
|
5
5
|
Home-page: https://mapproxy.org
|
|
6
6
|
Author: Oliver Tonnhofer
|
|
7
7
|
Author-email: olt@omniscale.de
|
|
8
|
+
Maintainer: terrestris GmbH & Co. KG
|
|
9
|
+
Maintainer-email: info@terrestris.de
|
|
8
10
|
License: Apache Software License 2.0
|
|
9
11
|
Platform: UNKNOWN
|
|
10
12
|
Classifier: Development Status :: 5 - Production/Stable
|
|
@@ -18,6 +20,7 @@ Classifier: Programming Language :: Python :: 3.12
|
|
|
18
20
|
Classifier: Topic :: Internet :: Proxy Servers
|
|
19
21
|
Classifier: Topic :: Internet :: WWW/HTTP :: WSGI
|
|
20
22
|
Classifier: Topic :: Scientific/Engineering :: GIS
|
|
23
|
+
Description-Content-Type: text/x-rst
|
|
21
24
|
License-File: LICENSE.txt
|
|
22
25
|
License-File: COPYING.txt
|
|
23
26
|
License-File: AUTHORS.txt
|
|
@@ -34,6 +37,33 @@ The documentation is available at: http://mapproxy.github.io/mapproxy/latest/
|
|
|
34
37
|
|
|
35
38
|
Changes
|
|
36
39
|
-------
|
|
40
|
+
3.1.2 2024-11-20
|
|
41
|
+
~~~~~~~~~~~~~~~~
|
|
42
|
+
|
|
43
|
+
Maintenance:
|
|
44
|
+
|
|
45
|
+
- Several dependencies for the tests and github actions have been updated
|
|
46
|
+
|
|
47
|
+
Fixes:
|
|
48
|
+
|
|
49
|
+
- Metadata URLs are now required to have a `url`, `type` and `format`
|
|
50
|
+
- The layers of a wms `req` are now correctly splitted at `,` for validation
|
|
51
|
+
- The validation for seeding configs is fixed
|
|
52
|
+
- Single color tiles are now created with configured file_permissions
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
3.1.1 2024-11-15
|
|
56
|
+
~~~~~~~~~~~~~~~~
|
|
57
|
+
|
|
58
|
+
Maintenance:
|
|
59
|
+
|
|
60
|
+
- Werkzeug version is no longer pinned and can be chosen freely.
|
|
61
|
+
|
|
62
|
+
Fixes:
|
|
63
|
+
|
|
64
|
+
- The permission handling for file locks now also sets permissions on the files not just on the directories.
|
|
65
|
+
|
|
66
|
+
|
|
37
67
|
3.1.0 2024-10-22
|
|
38
68
|
~~~~~~~~~~~~~~~~
|
|
39
69
|
|
|
@@ -114,41 +144,6 @@ Fixes:
|
|
|
114
144
|
- Fix doc generation workflow
|
|
115
145
|
|
|
116
146
|
|
|
117
|
-
2.1.0 2024-07-16
|
|
118
|
-
~~~~~~~~~~~~~~~~
|
|
119
|
-
Improvements:
|
|
120
|
-
|
|
121
|
-
- Configuration files can no be splitted into multiple files
|
|
122
|
-
- Added jsonschema to validate configuration files
|
|
123
|
-
- New theme for documentation, overall improvement of the documentation and github workflow for automatic creation
|
|
124
|
-
- Improved docker images with better entrypoint and workflow to build docker images with a builder image
|
|
125
|
-
- Added release workflow for automatic publishing on pypi and github
|
|
126
|
-
|
|
127
|
-
Maintenance:
|
|
128
|
-
|
|
129
|
-
- Dependency updates
|
|
130
|
-
- Remove python 2 compatibility functions
|
|
131
|
-
- Added flake8 linting
|
|
132
|
-
- setup.py contains now required libraries
|
|
133
|
-
- Remove depracated `pkg_resources` in favor of `importlib_resources`
|
|
134
|
-
- Addressed shapely deprecations
|
|
135
|
-
|
|
136
|
-
Fixes:
|
|
137
|
-
|
|
138
|
-
- Ensure make_app always returns MapProxyApp instance
|
|
139
|
-
- Allow feature info responses of combined sources to be empty
|
|
140
|
-
- Fix broken TMS demo
|
|
141
|
-
- Fix problem with dimensions in load_tile_metadata
|
|
142
|
-
- Fix GeoTIFF Headers
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
2.0.2 2024-01-10
|
|
146
|
-
~~~~~~~~~~~~~~~~
|
|
147
|
-
|
|
148
|
-
Fixes:
|
|
149
|
-
|
|
150
|
-
- Revert PR "Fix mixed image format for file, S3 and azureblob caches"
|
|
151
|
-
|
|
152
147
|
|
|
153
148
|
Older changes
|
|
154
149
|
-------------
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: MapProxy
|
|
3
|
-
Version: 3.1.
|
|
3
|
+
Version: 3.1.2
|
|
4
4
|
Summary: An accelerating proxy for tile and web map services
|
|
5
5
|
Home-page: https://mapproxy.org
|
|
6
6
|
Author: Oliver Tonnhofer
|
|
7
7
|
Author-email: olt@omniscale.de
|
|
8
|
+
Maintainer: terrestris GmbH & Co. KG
|
|
9
|
+
Maintainer-email: info@terrestris.de
|
|
8
10
|
License: Apache Software License 2.0
|
|
9
11
|
Platform: UNKNOWN
|
|
10
12
|
Classifier: Development Status :: 5 - Production/Stable
|
|
@@ -18,6 +20,7 @@ Classifier: Programming Language :: Python :: 3.12
|
|
|
18
20
|
Classifier: Topic :: Internet :: Proxy Servers
|
|
19
21
|
Classifier: Topic :: Internet :: WWW/HTTP :: WSGI
|
|
20
22
|
Classifier: Topic :: Scientific/Engineering :: GIS
|
|
23
|
+
Description-Content-Type: text/x-rst
|
|
21
24
|
License-File: LICENSE.txt
|
|
22
25
|
License-File: COPYING.txt
|
|
23
26
|
License-File: AUTHORS.txt
|
|
@@ -34,6 +37,33 @@ The documentation is available at: http://mapproxy.github.io/mapproxy/latest/
|
|
|
34
37
|
|
|
35
38
|
Changes
|
|
36
39
|
-------
|
|
40
|
+
3.1.2 2024-11-20
|
|
41
|
+
~~~~~~~~~~~~~~~~
|
|
42
|
+
|
|
43
|
+
Maintenance:
|
|
44
|
+
|
|
45
|
+
- Several dependencies for the tests and github actions have been updated
|
|
46
|
+
|
|
47
|
+
Fixes:
|
|
48
|
+
|
|
49
|
+
- Metadata URLs are now required to have a `url`, `type` and `format`
|
|
50
|
+
- The layers of a wms `req` are now correctly splitted at `,` for validation
|
|
51
|
+
- The validation for seeding configs is fixed
|
|
52
|
+
- Single color tiles are now created with configured file_permissions
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
3.1.1 2024-11-15
|
|
56
|
+
~~~~~~~~~~~~~~~~
|
|
57
|
+
|
|
58
|
+
Maintenance:
|
|
59
|
+
|
|
60
|
+
- Werkzeug version is no longer pinned and can be chosen freely.
|
|
61
|
+
|
|
62
|
+
Fixes:
|
|
63
|
+
|
|
64
|
+
- The permission handling for file locks now also sets permissions on the files not just on the directories.
|
|
65
|
+
|
|
66
|
+
|
|
37
67
|
3.1.0 2024-10-22
|
|
38
68
|
~~~~~~~~~~~~~~~~
|
|
39
69
|
|
|
@@ -114,41 +144,6 @@ Fixes:
|
|
|
114
144
|
- Fix doc generation workflow
|
|
115
145
|
|
|
116
146
|
|
|
117
|
-
2.1.0 2024-07-16
|
|
118
|
-
~~~~~~~~~~~~~~~~
|
|
119
|
-
Improvements:
|
|
120
|
-
|
|
121
|
-
- Configuration files can no be splitted into multiple files
|
|
122
|
-
- Added jsonschema to validate configuration files
|
|
123
|
-
- New theme for documentation, overall improvement of the documentation and github workflow for automatic creation
|
|
124
|
-
- Improved docker images with better entrypoint and workflow to build docker images with a builder image
|
|
125
|
-
- Added release workflow for automatic publishing on pypi and github
|
|
126
|
-
|
|
127
|
-
Maintenance:
|
|
128
|
-
|
|
129
|
-
- Dependency updates
|
|
130
|
-
- Remove python 2 compatibility functions
|
|
131
|
-
- Added flake8 linting
|
|
132
|
-
- setup.py contains now required libraries
|
|
133
|
-
- Remove depracated `pkg_resources` in favor of `importlib_resources`
|
|
134
|
-
- Addressed shapely deprecations
|
|
135
|
-
|
|
136
|
-
Fixes:
|
|
137
|
-
|
|
138
|
-
- Ensure make_app always returns MapProxyApp instance
|
|
139
|
-
- Allow feature info responses of combined sources to be empty
|
|
140
|
-
- Fix broken TMS demo
|
|
141
|
-
- Fix problem with dimensions in load_tile_metadata
|
|
142
|
-
- Fix GeoTIFF Headers
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
2.0.2 2024-01-10
|
|
146
|
-
~~~~~~~~~~~~~~~~
|
|
147
|
-
|
|
148
|
-
Fixes:
|
|
149
|
-
|
|
150
|
-
- Revert PR "Fix mixed image format for file, S3 and azureblob caches"
|
|
151
|
-
|
|
152
147
|
|
|
153
148
|
Older changes
|
|
154
149
|
-------------
|
|
@@ -41,7 +41,7 @@ All coverages are configured by defining the source of the coverage and the SRS.
|
|
|
41
41
|
The configuration of the coverage depends on the type. The SRS can allways be configured with the ``srs`` option.
|
|
42
42
|
|
|
43
43
|
.. versionadded:: 1.5.0
|
|
44
|
-
MapProxy can autodetect the type of the coverage. You can now use ``
|
|
44
|
+
MapProxy can autodetect the type of the coverage. You can now use ``datasource`` instead of the ``bbox``, ``polygons`` or ``ogr_datasource`` option.
|
|
45
45
|
The old options are still supported.
|
|
46
46
|
|
|
47
47
|
Coverage Types
|
|
@@ -98,11 +98,12 @@ if sys.platform == 'win32':
|
|
|
98
98
|
|
|
99
99
|
|
|
100
100
|
class TileLocker(object):
|
|
101
|
-
def __init__(self, lock_dir, lock_timeout, lock_cache_id, directory_permissions=None):
|
|
101
|
+
def __init__(self, lock_dir, lock_timeout, lock_cache_id, directory_permissions=None, file_permissions=None):
|
|
102
102
|
self.lock_dir = lock_dir
|
|
103
103
|
self.lock_timeout = lock_timeout
|
|
104
104
|
self.lock_cache_id = lock_cache_id
|
|
105
105
|
self.directory_permissions = directory_permissions
|
|
106
|
+
self.file_permissions = file_permissions
|
|
106
107
|
|
|
107
108
|
def lock_filename(self, tile):
|
|
108
109
|
return os.path.join(self.lock_dir, self.lock_cache_id + '-' +
|
|
@@ -118,4 +119,5 @@ class TileLocker(object):
|
|
|
118
119
|
cleanup_lockdir(self.lock_dir, max_lock_time=self.lock_timeout + 10,
|
|
119
120
|
force=False)
|
|
120
121
|
return FileLock(lock_filename, timeout=self.lock_timeout,
|
|
121
|
-
remove_on_unlock=REMOVE_ON_UNLOCK, directory_permissions=self.directory_permissions
|
|
122
|
+
remove_on_unlock=REMOVE_ON_UNLOCK, directory_permissions=self.directory_permissions,
|
|
123
|
+
file_permissions=self.file_permissions)
|
|
@@ -192,7 +192,8 @@ class BundleV1(object):
|
|
|
192
192
|
data = buf.read()
|
|
193
193
|
tiles_data.append((t.coord, data))
|
|
194
194
|
|
|
195
|
-
with FileLock(self.lock_filename, directory_permissions=self.directory_permissions,
|
|
195
|
+
with FileLock(self.lock_filename, directory_permissions=self.directory_permissions,
|
|
196
|
+
file_permissions=self.file_permissions, remove_on_unlock=True):
|
|
196
197
|
with self.data().readwrite() as bundle:
|
|
197
198
|
with self.index().readwrite() as idx:
|
|
198
199
|
for tile_coord, data in tiles_data:
|
|
@@ -236,7 +237,8 @@ class BundleV1(object):
|
|
|
236
237
|
if tile.coord is None:
|
|
237
238
|
return True
|
|
238
239
|
|
|
239
|
-
with FileLock(self.lock_filename, directory_permissions=self.directory_permissions,
|
|
240
|
+
with FileLock(self.lock_filename, directory_permissions=self.directory_permissions,
|
|
241
|
+
file_permissions=self.file_permissions, remove_on_unlock=True):
|
|
240
242
|
with self.index().readwrite() as idx:
|
|
241
243
|
x, y = self._rel_tile_coord(tile.coord)
|
|
242
244
|
idx.remove_tile_offset(x, y)
|
|
@@ -634,7 +636,8 @@ class BundleV2(object):
|
|
|
634
636
|
data = buf.read()
|
|
635
637
|
tiles_data.append((t.coord, data))
|
|
636
638
|
|
|
637
|
-
with FileLock(self.lock_filename, directory_permissions=self.directory_permissions,
|
|
639
|
+
with FileLock(self.lock_filename, directory_permissions=self.directory_permissions,
|
|
640
|
+
file_permissions=self.file_permissions, remove_on_unlock=True):
|
|
638
641
|
with self._readwrite() as fh:
|
|
639
642
|
for tile_coord, data in tiles_data:
|
|
640
643
|
self._store_tile(fh, tile_coord, data, dimensions=dimensions)
|
|
@@ -646,7 +649,8 @@ class BundleV2(object):
|
|
|
646
649
|
return True
|
|
647
650
|
|
|
648
651
|
self._init_index()
|
|
649
|
-
with FileLock(self.lock_filename, directory_permissions=self.directory_permissions,
|
|
652
|
+
with FileLock(self.lock_filename, directory_permissions=self.directory_permissions,
|
|
653
|
+
file_permissions=self.file_permissions, remove_on_unlock=True):
|
|
650
654
|
with self._readwrite() as fh:
|
|
651
655
|
x, y = self._rel_tile_coord(tile.coord)
|
|
652
656
|
self._update_tile_offset(fh, x, y, 0, 0)
|
|
@@ -165,6 +165,9 @@ class FileCache(TileCacheBase):
|
|
|
165
165
|
with tile_buffer(tile) as buf:
|
|
166
166
|
log.debug('writing %r to %s' % (tile.coord, location))
|
|
167
167
|
write_atomic(location, buf.read())
|
|
168
|
+
if self.file_permissions:
|
|
169
|
+
permission = int(self.file_permissions, base=8)
|
|
170
|
+
os.chmod(location, permission)
|
|
168
171
|
|
|
169
172
|
def _store_single_color_tile(self, tile, tile_loc, color):
|
|
170
173
|
real_tile_loc = self._single_color_tile_location(color, create_dir=True)
|
|
@@ -112,8 +112,8 @@ class GeopackageCache(TileCacheBase):
|
|
|
112
112
|
|
|
113
113
|
def ensure_gpkg(self):
|
|
114
114
|
if not os.path.isfile(self.geopackage_file):
|
|
115
|
-
with FileLock(self.geopackage_file + '.init.lck',
|
|
116
|
-
|
|
115
|
+
with FileLock(self.geopackage_file + '.init.lck', remove_on_unlock=REMOVE_ON_UNLOCK,
|
|
116
|
+
directory_permissions=self.directory_permissions, file_permissions=self.file_permissions):
|
|
117
117
|
ensure_directory(self.geopackage_file, self.directory_permissions)
|
|
118
118
|
self._initialize_gpkg()
|
|
119
119
|
else:
|
|
@@ -77,8 +77,8 @@ class MBTilesCache(TileCacheBase):
|
|
|
77
77
|
|
|
78
78
|
def ensure_mbtile(self):
|
|
79
79
|
if not os.path.exists(self.mbtile_file):
|
|
80
|
-
with FileLock(self.mbtile_file + '.init.lck',
|
|
81
|
-
|
|
80
|
+
with FileLock(self.mbtile_file + '.init.lck', remove_on_unlock=REMOVE_ON_UNLOCK,
|
|
81
|
+
directory_permissions=self.directory_permissions, file_permissions=self.file_permissions):
|
|
82
82
|
if not os.path.exists(self.mbtile_file):
|
|
83
83
|
ensure_directory(self.mbtile_file, self.directory_permissions)
|
|
84
84
|
self._initialize_mbtile()
|
|
@@ -769,6 +769,26 @@
|
|
|
769
769
|
}
|
|
770
770
|
}
|
|
771
771
|
}
|
|
772
|
+
},
|
|
773
|
+
"metadata": {
|
|
774
|
+
"type": "array",
|
|
775
|
+
"minItems": 1,
|
|
776
|
+
"items": {
|
|
777
|
+
"type": "object",
|
|
778
|
+
"additionalProperties": false,
|
|
779
|
+
"properties": {
|
|
780
|
+
"url": {
|
|
781
|
+
"type": "string"
|
|
782
|
+
},
|
|
783
|
+
"type": {
|
|
784
|
+
"type": "string"
|
|
785
|
+
},
|
|
786
|
+
"format": {
|
|
787
|
+
"type": "string"
|
|
788
|
+
}
|
|
789
|
+
},
|
|
790
|
+
"required": ["url", "type", "format"]
|
|
791
|
+
}
|
|
772
792
|
}
|
|
773
793
|
}
|
|
774
794
|
},
|
|
@@ -802,9 +802,24 @@ class WMSSourceConfiguration(SourceConfiguration):
|
|
|
802
802
|
lock_dir = self.context.globals.get_path('cache.lock_dir', self.conf)
|
|
803
803
|
lock_timeout = self.context.globals.get_value('http.client_timeout', self.conf)
|
|
804
804
|
url = urlparse(self.conf['req']['url'])
|
|
805
|
+
|
|
806
|
+
global_directory_permissions = self.context.globals.get_value('directory_permissions', self.conf,
|
|
807
|
+
global_key='cache.directory_permissions')
|
|
808
|
+
if global_directory_permissions:
|
|
809
|
+
log.info(f'Using global directory permission configuration for concurrent file locks:'
|
|
810
|
+
f' {global_directory_permissions}')
|
|
811
|
+
|
|
812
|
+
global_file_permissions = self.context.globals.get_value('file_permissions', self.conf,
|
|
813
|
+
global_key='cache.file_permissions')
|
|
814
|
+
if global_file_permissions:
|
|
815
|
+
log.info(f'Using global file permission configuration for concurrent file locks:'
|
|
816
|
+
f' {global_file_permissions}')
|
|
817
|
+
|
|
805
818
|
md5 = hashlib.new('md5', url.netloc.encode('ascii'), usedforsecurity=False)
|
|
806
819
|
lock_file = os.path.join(lock_dir, md5.hexdigest() + '.lck')
|
|
807
|
-
lock = lambda: SemLock(lock_file, concurrent_requests, timeout=lock_timeout
|
|
820
|
+
lock = lambda: SemLock(lock_file, concurrent_requests, timeout=lock_timeout, # noqa
|
|
821
|
+
directory_permissions=global_directory_permissions,
|
|
822
|
+
file_permissions=global_file_permissions)
|
|
808
823
|
|
|
809
824
|
coverage = self.coverage()
|
|
810
825
|
res_range = resolution_range(self.conf)
|
|
@@ -963,9 +978,24 @@ class MapnikSourceConfiguration(SourceConfiguration):
|
|
|
963
978
|
from mapproxy.util.lock import SemLock
|
|
964
979
|
lock_dir = self.context.globals.get_path('cache.lock_dir', self.conf)
|
|
965
980
|
mapfile = self.conf['mapfile']
|
|
981
|
+
|
|
982
|
+
global_directory_permissions = self.context.globals.get_value('directory_permissions', self.conf,
|
|
983
|
+
global_key='cache.directory_permissions')
|
|
984
|
+
if global_directory_permissions:
|
|
985
|
+
log.info(f'Using global directory permission configuration for concurrent file locks:'
|
|
986
|
+
f' {global_directory_permissions}')
|
|
987
|
+
|
|
988
|
+
global_file_permissions = self.context.globals.get_value('file_permissions', self.conf,
|
|
989
|
+
global_key='cache.file_permissions')
|
|
990
|
+
if global_file_permissions:
|
|
991
|
+
log.info(f'Using global file permission configuration for concurrent file locks:'
|
|
992
|
+
f' {global_file_permissions}')
|
|
993
|
+
|
|
966
994
|
md5 = hashlib.new('md5', mapfile.encode('utf-8'), usedforsecurity=False)
|
|
967
995
|
lock_file = os.path.join(lock_dir, md5.hexdigest() + '.lck')
|
|
968
|
-
lock = lambda: SemLock(lock_file, concurrent_requests
|
|
996
|
+
lock = lambda: SemLock(lock_file, concurrent_requests, # noqa
|
|
997
|
+
directory_permissions=global_directory_permissions,
|
|
998
|
+
file_permissions=global_file_permissions)
|
|
969
999
|
|
|
970
1000
|
coverage = self.coverage()
|
|
971
1001
|
res_range = resolution_range(self.conf)
|
|
@@ -1761,9 +1791,16 @@ class CacheConfiguration(ConfigurationBase):
|
|
|
1761
1791
|
log.info(f'Using global directory permission configuration for tile locks:'
|
|
1762
1792
|
f' {global_directory_permissions}')
|
|
1763
1793
|
|
|
1794
|
+
global_file_permissions = self.context.globals.get_value('file_permissions', self.conf,
|
|
1795
|
+
global_key='cache.file_permissions')
|
|
1796
|
+
if global_file_permissions:
|
|
1797
|
+
log.info(f'Using global file permission configuration for tile locks:'
|
|
1798
|
+
f' {global_file_permissions}')
|
|
1799
|
+
|
|
1764
1800
|
lock_timeout = self.context.globals.get_value('http.client_timeout', {})
|
|
1765
1801
|
locker = TileLocker(lock_dir, lock_timeout, identifier + '_renderd',
|
|
1766
|
-
global_directory_permissions
|
|
1802
|
+
directory_permissions=global_directory_permissions,
|
|
1803
|
+
file_permissions=global_file_permissions)
|
|
1767
1804
|
# TODO band_merger
|
|
1768
1805
|
tile_creator_class = partial(RenderdTileCreator, renderd_address,
|
|
1769
1806
|
priority=priority, tile_locker=locker)
|
|
@@ -1781,11 +1818,18 @@ class CacheConfiguration(ConfigurationBase):
|
|
|
1781
1818
|
log.info(f'Using global directory permission configuration for tile locks:'
|
|
1782
1819
|
f' {global_directory_permissions}')
|
|
1783
1820
|
|
|
1821
|
+
global_file_permissions = self.context.globals.get_value('file_permissions', self.conf,
|
|
1822
|
+
global_key='cache.file_permissions')
|
|
1823
|
+
if global_file_permissions:
|
|
1824
|
+
log.info(f'Using global file permission configuration for tile locks:'
|
|
1825
|
+
f' {global_file_permissions}')
|
|
1826
|
+
|
|
1784
1827
|
locker = TileLocker(
|
|
1785
1828
|
lock_dir=self.lock_dir(),
|
|
1786
1829
|
lock_timeout=self.context.globals.get_value('http.client_timeout', {}),
|
|
1787
1830
|
lock_cache_id=cache.lock_cache_id,
|
|
1788
|
-
directory_permissions=global_directory_permissions
|
|
1831
|
+
directory_permissions=global_directory_permissions,
|
|
1832
|
+
file_permissions=global_file_permissions
|
|
1789
1833
|
)
|
|
1790
1834
|
|
|
1791
1835
|
mgr = TileManager(tile_grid, cache, sources, image_opts.format.ext,
|
|
@@ -172,7 +172,7 @@ def _validate_tagged_layer_source(
|
|
|
172
172
|
name: str, supported_layers: Union[str, List[str]], requested_layers: List[str]) -> List[str]:
|
|
173
173
|
errors = []
|
|
174
174
|
if isinstance(supported_layers, str):
|
|
175
|
-
supported_layers =
|
|
175
|
+
supported_layers = supported_layers.split(',')
|
|
176
176
|
if not set(requested_layers).issubset(set(supported_layers)):
|
|
177
177
|
return [
|
|
178
178
|
f"Supported layers for source '{name}' are '{', '.join(supported_layers)}' but tagged source requested"
|
|
@@ -163,6 +163,8 @@ class SeedingConfiguration(object):
|
|
|
163
163
|
raise SeedConfigurationError("invalid geometry in coverage '%s'. %s" % (name, ex))
|
|
164
164
|
except EmptyGeometryError as ex:
|
|
165
165
|
raise EmptyCoverageError("coverage '%s' contains no geometries. %s" % (name, ex))
|
|
166
|
+
except Exception:
|
|
167
|
+
raise Exception(f"can't load coverage '{name}'")
|
|
166
168
|
|
|
167
169
|
# without extend we have an empty coverage
|
|
168
170
|
if not coverage.extent.llbbox:
|
|
@@ -262,7 +264,7 @@ class ConfigurationBase(object):
|
|
|
262
264
|
else:
|
|
263
265
|
# check that all caches have the same grids configured
|
|
264
266
|
last = []
|
|
265
|
-
for cache_grids in
|
|
267
|
+
for cache_grids in [cache.keys() for cache in caches.values()]:
|
|
266
268
|
if not last:
|
|
267
269
|
last = cache_grids
|
|
268
270
|
else:
|
|
@@ -32,8 +32,7 @@ from mapproxy.util.fs import (
|
|
|
32
32
|
)
|
|
33
33
|
from mapproxy.util.py import reraise_exception
|
|
34
34
|
from mapproxy.util.times import timestamp_before
|
|
35
|
-
from mapproxy.test.helper import Mocker
|
|
36
|
-
|
|
35
|
+
from mapproxy.test.helper import Mocker, assert_permissions
|
|
37
36
|
|
|
38
37
|
is_win = sys.platform == "win32"
|
|
39
38
|
|
|
@@ -156,6 +155,35 @@ class TestFileLock(Mocker):
|
|
|
156
155
|
x.unlock()
|
|
157
156
|
assert not os.path.exists(self.lock_file)
|
|
158
157
|
|
|
158
|
+
def test_file_lock_permissions(self):
|
|
159
|
+
file_permissions = '775'
|
|
160
|
+
|
|
161
|
+
# Test a lock that becomes free during a waiting lock() call.
|
|
162
|
+
class Lock(threading.Thread):
|
|
163
|
+
|
|
164
|
+
def __init__(self, lock_file):
|
|
165
|
+
threading.Thread.__init__(self)
|
|
166
|
+
self.lock_file = lock_file
|
|
167
|
+
self.lock = FileLock(self.lock_file, file_permissions=file_permissions)
|
|
168
|
+
|
|
169
|
+
def run(self):
|
|
170
|
+
self.lock.lock()
|
|
171
|
+
time.sleep(0.2)
|
|
172
|
+
self.lock.unlock()
|
|
173
|
+
|
|
174
|
+
lock_thread = Lock(self.lock_file)
|
|
175
|
+
lock_thread.start()
|
|
176
|
+
|
|
177
|
+
# wait until thread got the locked
|
|
178
|
+
while not lock_thread.lock._locked:
|
|
179
|
+
time.sleep(0.001)
|
|
180
|
+
|
|
181
|
+
# one lock that times out
|
|
182
|
+
assert_locked(self.lock_file)
|
|
183
|
+
assert_permissions(self.lock_file, file_permissions)
|
|
184
|
+
|
|
185
|
+
lock_thread.join()
|
|
186
|
+
|
|
159
187
|
def _create_lock(self):
|
|
160
188
|
lock = FileLock(self.lock_file)
|
|
161
189
|
lock.lock()
|
|
@@ -115,10 +115,13 @@ class LockFile:
|
|
|
115
115
|
|
|
116
116
|
_fp = None
|
|
117
117
|
|
|
118
|
-
def __init__(self, path):
|
|
118
|
+
def __init__(self, path, file_permissions):
|
|
119
119
|
self._path = path
|
|
120
120
|
try:
|
|
121
121
|
fp = open(path, 'w+')
|
|
122
|
+
if file_permissions:
|
|
123
|
+
permission = int(file_permissions, base=8)
|
|
124
|
+
os.chmod(path, permission)
|
|
122
125
|
except IOError:
|
|
123
126
|
raise Exception('Could not create Lock-file, wrong permissions on lock directory?')
|
|
124
127
|
|
|
@@ -36,13 +36,15 @@ class LockTimeout(Exception):
|
|
|
36
36
|
|
|
37
37
|
|
|
38
38
|
class FileLock(object):
|
|
39
|
-
def __init__(self, lock_file, timeout=60.0, step=0.01, remove_on_unlock=False, directory_permissions=None
|
|
39
|
+
def __init__(self, lock_file, timeout=60.0, step=0.01, remove_on_unlock=False, directory_permissions=None,
|
|
40
|
+
file_permissions=None):
|
|
40
41
|
self.lock_file = lock_file
|
|
41
42
|
self.timeout = timeout
|
|
42
43
|
self.step = step
|
|
43
44
|
self.remove_on_unlock = remove_on_unlock
|
|
44
45
|
self._locked = False
|
|
45
46
|
self.directory_permissions = directory_permissions
|
|
47
|
+
self.file_permissions = file_permissions
|
|
46
48
|
|
|
47
49
|
def __enter__(self):
|
|
48
50
|
self.lock()
|
|
@@ -51,7 +53,7 @@ class FileLock(object):
|
|
|
51
53
|
self.unlock()
|
|
52
54
|
|
|
53
55
|
def _try_lock(self):
|
|
54
|
-
return LockFile(self.lock_file)
|
|
56
|
+
return LockFile(self.lock_file, self.file_permissions)
|
|
55
57
|
|
|
56
58
|
def lock(self):
|
|
57
59
|
ensure_directory(self.lock_file, self.directory_permissions)
|
|
@@ -116,11 +118,10 @@ def cleanup_lockdir(lockdir, suffix='.lck', max_lock_time=300, force=True):
|
|
|
116
118
|
try:
|
|
117
119
|
if os.path.isfile(name) and name.endswith(suffix):
|
|
118
120
|
if os.path.getmtime(name) < expire_time:
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
log.warning('could not remove old lock file %s: %s', name, ex)
|
|
121
|
+
try:
|
|
122
|
+
os.unlink(name)
|
|
123
|
+
except IOError as ex:
|
|
124
|
+
log.warning('could not remove old lock file %s: %s', name, ex)
|
|
124
125
|
except OSError as e:
|
|
125
126
|
# some one might have removed the file (ENOENT)
|
|
126
127
|
# or we don't have permissions to remove it (EACCES)
|
|
@@ -136,8 +137,9 @@ class SemLock(FileLock):
|
|
|
136
137
|
File-lock-based counting semaphore (i.e. this lock can be locked n-times).
|
|
137
138
|
"""
|
|
138
139
|
|
|
139
|
-
def __init__(self, lock_file, n, timeout=60.0, step=0.01):
|
|
140
|
-
FileLock.__init__(self, lock_file, timeout=timeout, step=step
|
|
140
|
+
def __init__(self, lock_file, n, timeout=60.0, step=0.01, directory_permissions=None, file_permissions=None):
|
|
141
|
+
FileLock.__init__(self, lock_file, timeout=timeout, step=step, directory_permissions=directory_permissions,
|
|
142
|
+
file_permissions=file_permissions)
|
|
141
143
|
self.n = n
|
|
142
144
|
|
|
143
145
|
def _try_lock(self):
|
|
@@ -146,7 +148,7 @@ class SemLock(FileLock):
|
|
|
146
148
|
while True:
|
|
147
149
|
tries += 1
|
|
148
150
|
try:
|
|
149
|
-
return LockFile(self.lock_file + str(i))
|
|
151
|
+
return LockFile(self.lock_file + str(i), self.file_permissions)
|
|
150
152
|
except LockError:
|
|
151
153
|
if tries >= self.n:
|
|
152
154
|
raise
|
|
@@ -20,7 +20,8 @@ chardet==5.2.0
|
|
|
20
20
|
cryptography==43.0.1
|
|
21
21
|
decorator==5.1.1
|
|
22
22
|
docker==7.0.0
|
|
23
|
-
docutils==0.20.1
|
|
23
|
+
docutils==0.20.1;python_version<"3.9"
|
|
24
|
+
docutils==0.21.2;python_version>="3.9"
|
|
24
25
|
ecdsa==0.18.0
|
|
25
26
|
flake8==7.0.0
|
|
26
27
|
idna==2.9
|
|
@@ -37,10 +38,11 @@ lxml==5.3.0
|
|
|
37
38
|
mock==5.1.0
|
|
38
39
|
more-itertools==10.1.0
|
|
39
40
|
moto==5.0.13
|
|
40
|
-
networkx==3.1
|
|
41
|
+
networkx==3.1;python_version<"3.10"
|
|
42
|
+
networkx==3.4.2;python_version>="3.10"
|
|
41
43
|
numpy==1.26.0;python_version>="3.9"
|
|
42
44
|
numpy==1.24.0;python_version=="3.8"
|
|
43
|
-
packaging==
|
|
45
|
+
packaging==24.2
|
|
44
46
|
pluggy==1.5.0
|
|
45
47
|
py==1.11.0
|
|
46
48
|
pyasn1==0.5.1
|
|
@@ -55,8 +57,8 @@ python-dateutil==2.8.2
|
|
|
55
57
|
python-jose==3.3.0
|
|
56
58
|
pytz==2023.3.post1
|
|
57
59
|
redis==5.0.1
|
|
58
|
-
requests==2.32.
|
|
59
|
-
responses==0.
|
|
60
|
+
requests==2.32.3
|
|
61
|
+
responses==0.25.3
|
|
60
62
|
riak==2.7.0
|
|
61
63
|
rsa==4.9
|
|
62
64
|
s3transfer==0.10.2
|
|
@@ -65,7 +67,8 @@ soupsieve==2.6
|
|
|
65
67
|
sshpubkeys==3.3.1
|
|
66
68
|
toml==0.10.2
|
|
67
69
|
urllib3==1.26.19
|
|
68
|
-
waitress==2.1.2
|
|
70
|
+
waitress==2.1.2;python_version<"3.10"
|
|
71
|
+
waitress==3.0.1;python_version>="3.10"
|
|
69
72
|
websocket-client==1.8.0
|
|
70
73
|
wrapt==1.16.0
|
|
71
74
|
xmltodict==0.13.0
|