MapProxy 2.1.0__py3-none-any.whl
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-2.1.0.dist-info/AUTHORS.txt +33 -0
- MapProxy-2.1.0.dist-info/COPYING.txt +60 -0
- MapProxy-2.1.0.dist-info/LICENSE.txt +202 -0
- MapProxy-2.1.0.dist-info/METADATA +165 -0
- MapProxy-2.1.0.dist-info/RECORD +459 -0
- MapProxy-2.1.0.dist-info/WHEEL +5 -0
- MapProxy-2.1.0.dist-info/entry_points.txt +4 -0
- MapProxy-2.1.0.dist-info/top_level.txt +1 -0
- mapproxy/__init__.py +0 -0
- mapproxy/cache/__init__.py +36 -0
- mapproxy/cache/azureblob.py +145 -0
- mapproxy/cache/base.py +120 -0
- mapproxy/cache/compact.py +665 -0
- mapproxy/cache/couchdb.py +301 -0
- mapproxy/cache/dummy.py +36 -0
- mapproxy/cache/file.py +200 -0
- mapproxy/cache/geopackage.py +647 -0
- mapproxy/cache/legend.py +87 -0
- mapproxy/cache/mbtiles.py +411 -0
- mapproxy/cache/meta.py +80 -0
- mapproxy/cache/path.py +261 -0
- mapproxy/cache/redis.py +152 -0
- mapproxy/cache/renderd.py +100 -0
- mapproxy/cache/riak.py +206 -0
- mapproxy/cache/s3.py +209 -0
- mapproxy/cache/tile.py +736 -0
- mapproxy/client/__init__.py +0 -0
- mapproxy/client/arcgis.py +82 -0
- mapproxy/client/cgi.py +141 -0
- mapproxy/client/http.py +295 -0
- mapproxy/client/log.py +33 -0
- mapproxy/client/tile.py +158 -0
- mapproxy/client/wms.py +255 -0
- mapproxy/compat/__init__.py +0 -0
- mapproxy/compat/image.py +86 -0
- mapproxy/config/__init__.py +22 -0
- mapproxy/config/config-schema.json +813 -0
- mapproxy/config/config.py +213 -0
- mapproxy/config/coverage.py +108 -0
- mapproxy/config/defaults.py +102 -0
- mapproxy/config/loader.py +2399 -0
- mapproxy/config/spec.py +657 -0
- mapproxy/config/validator.py +242 -0
- mapproxy/config_template/__init__.py +0 -0
- mapproxy/config_template/base_config/config.wsgi +10 -0
- mapproxy/config_template/base_config/full_example.yaml +598 -0
- mapproxy/config_template/base_config/full_seed_example.yaml +79 -0
- mapproxy/config_template/base_config/log.ini +35 -0
- mapproxy/config_template/base_config/mapproxy.yaml +60 -0
- mapproxy/config_template/base_config/seed.yaml +27 -0
- mapproxy/exception.py +149 -0
- mapproxy/featureinfo.py +251 -0
- mapproxy/grid.py +1199 -0
- mapproxy/image/__init__.py +549 -0
- mapproxy/image/fonts/DejaVuSans.ttf +0 -0
- mapproxy/image/fonts/DejaVuSansMono.ttf +0 -0
- mapproxy/image/fonts/LICENSE +99 -0
- mapproxy/image/fonts/__init__.py +0 -0
- mapproxy/image/mask.py +79 -0
- mapproxy/image/merge.py +323 -0
- mapproxy/image/message.py +357 -0
- mapproxy/image/opts.py +185 -0
- mapproxy/image/tile.py +171 -0
- mapproxy/image/transform.py +350 -0
- mapproxy/layer.py +489 -0
- mapproxy/multiapp.py +230 -0
- mapproxy/proj.py +309 -0
- mapproxy/request/__init__.py +18 -0
- mapproxy/request/arcgis.py +268 -0
- mapproxy/request/base.py +466 -0
- mapproxy/request/tile.py +131 -0
- mapproxy/request/wms/__init__.py +829 -0
- mapproxy/request/wms/exception.py +107 -0
- mapproxy/request/wmts.py +442 -0
- mapproxy/response.py +237 -0
- mapproxy/script/__init__.py +0 -0
- mapproxy/script/conf/__init__.py +0 -0
- mapproxy/script/conf/app.py +222 -0
- mapproxy/script/conf/caches.py +44 -0
- mapproxy/script/conf/geopackage.py +136 -0
- mapproxy/script/conf/layers.py +54 -0
- mapproxy/script/conf/seeds.py +36 -0
- mapproxy/script/conf/sources.py +88 -0
- mapproxy/script/conf/utils.py +148 -0
- mapproxy/script/defrag.py +187 -0
- mapproxy/script/export.py +337 -0
- mapproxy/script/grids.py +198 -0
- mapproxy/script/scales.py +134 -0
- mapproxy/script/util.py +410 -0
- mapproxy/script/wms_capabilities.py +160 -0
- mapproxy/seed/__init__.py +0 -0
- mapproxy/seed/cachelock.py +127 -0
- mapproxy/seed/cleanup.py +191 -0
- mapproxy/seed/config.py +481 -0
- mapproxy/seed/script.py +391 -0
- mapproxy/seed/seeder.py +551 -0
- mapproxy/seed/spec.py +66 -0
- mapproxy/seed/util.py +266 -0
- mapproxy/service/__init__.py +14 -0
- mapproxy/service/base.py +45 -0
- mapproxy/service/demo.py +364 -0
- mapproxy/service/kml.py +333 -0
- mapproxy/service/ows.py +39 -0
- mapproxy/service/template_helper.py +55 -0
- mapproxy/service/templates/demo/capabilities_demo.html +18 -0
- mapproxy/service/templates/demo/demo.html +181 -0
- mapproxy/service/templates/demo/openlayers-demo.cfg +16 -0
- mapproxy/service/templates/demo/static/img/blank.gif +0 -0
- mapproxy/service/templates/demo/static/img/east-mini.png +0 -0
- mapproxy/service/templates/demo/static/img/north-mini.png +0 -0
- mapproxy/service/templates/demo/static/img/south-mini.png +0 -0
- mapproxy/service/templates/demo/static/img/west-mini.png +0 -0
- mapproxy/service/templates/demo/static/img/zoom-minus-mini.png +0 -0
- mapproxy/service/templates/demo/static/img/zoom-plus-mini.png +0 -0
- mapproxy/service/templates/demo/static/img/zoom-world-mini.png +0 -0
- mapproxy/service/templates/demo/static/logo.png +0 -0
- mapproxy/service/templates/demo/static/ol.css +345 -0
- mapproxy/service/templates/demo/static/ol.js +4 -0
- mapproxy/service/templates/demo/static/proj4.min.js +1 -0
- mapproxy/service/templates/demo/static/proj4defs.js +1 -0
- mapproxy/service/templates/demo/static/site.css +137 -0
- mapproxy/service/templates/demo/static/theme/default/framedCloud.css +0 -0
- mapproxy/service/templates/demo/static/theme/default/google.css +17 -0
- mapproxy/service/templates/demo/static/theme/default/ie6-style.css +10 -0
- mapproxy/service/templates/demo/static/theme/default/style.css +482 -0
- mapproxy/service/templates/demo/static.html +34 -0
- mapproxy/service/templates/demo/tms_demo.html +117 -0
- mapproxy/service/templates/demo/wms_demo.html +144 -0
- mapproxy/service/templates/demo/wmts_demo.html +118 -0
- mapproxy/service/templates/tms_capabilities.xml +13 -0
- mapproxy/service/templates/tms_exception.xml +4 -0
- mapproxy/service/templates/tms_root_resource.xml +7 -0
- mapproxy/service/templates/tms_tilemap_capabilities.xml +14 -0
- mapproxy/service/templates/wms100capabilities.xml +112 -0
- mapproxy/service/templates/wms100exception.xml +4 -0
- mapproxy/service/templates/wms110capabilities.xml +152 -0
- mapproxy/service/templates/wms110exception.xml +5 -0
- mapproxy/service/templates/wms111capabilities.xml +183 -0
- mapproxy/service/templates/wms111exception.xml +5 -0
- mapproxy/service/templates/wms130capabilities.xml +326 -0
- mapproxy/service/templates/wms130exception.xml +8 -0
- mapproxy/service/templates/wmts100capabilities.xml +155 -0
- mapproxy/service/templates/wmts100exception.xml +9 -0
- mapproxy/service/tile.py +540 -0
- mapproxy/service/wms.py +868 -0
- mapproxy/service/wmts.py +387 -0
- mapproxy/source/__init__.py +83 -0
- mapproxy/source/arcgis.py +39 -0
- mapproxy/source/error.py +40 -0
- mapproxy/source/mapnik.py +262 -0
- mapproxy/source/tile.py +97 -0
- mapproxy/source/wms.py +273 -0
- mapproxy/srs.py +734 -0
- mapproxy/template.py +54 -0
- mapproxy/test/__init__.py +0 -0
- mapproxy/test/conftest.py +8 -0
- mapproxy/test/helper.py +255 -0
- mapproxy/test/http.py +511 -0
- mapproxy/test/image.py +219 -0
- mapproxy/test/mocker.py +2291 -0
- mapproxy/test/schemas/inspire/common/1.0/common.xsd +1461 -0
- mapproxy/test/schemas/inspire/common/1.0/enums/enum_bul.xsd +108 -0
- mapproxy/test/schemas/inspire/common/1.0/enums/enum_cze.xsd +108 -0
- mapproxy/test/schemas/inspire/common/1.0/enums/enum_dan.xsd +108 -0
- mapproxy/test/schemas/inspire/common/1.0/enums/enum_dut.xsd +108 -0
- mapproxy/test/schemas/inspire/common/1.0/enums/enum_eng.xsd +155 -0
- mapproxy/test/schemas/inspire/common/1.0/enums/enum_est.xsd +108 -0
- mapproxy/test/schemas/inspire/common/1.0/enums/enum_fin.xsd +108 -0
- mapproxy/test/schemas/inspire/common/1.0/enums/enum_fre.xsd +108 -0
- mapproxy/test/schemas/inspire/common/1.0/enums/enum_ger.xsd +108 -0
- mapproxy/test/schemas/inspire/common/1.0/enums/enum_gle.xsd +109 -0
- mapproxy/test/schemas/inspire/common/1.0/enums/enum_gre.xsd +108 -0
- mapproxy/test/schemas/inspire/common/1.0/enums/enum_hun.xsd +108 -0
- mapproxy/test/schemas/inspire/common/1.0/enums/enum_ita.xsd +108 -0
- mapproxy/test/schemas/inspire/common/1.0/enums/enum_lav.xsd +108 -0
- mapproxy/test/schemas/inspire/common/1.0/enums/enum_lit.xsd +108 -0
- mapproxy/test/schemas/inspire/common/1.0/enums/enum_mlt.xsd +108 -0
- mapproxy/test/schemas/inspire/common/1.0/enums/enum_pol.xsd +108 -0
- mapproxy/test/schemas/inspire/common/1.0/enums/enum_por.xsd +108 -0
- mapproxy/test/schemas/inspire/common/1.0/enums/enum_rum.xsd +108 -0
- mapproxy/test/schemas/inspire/common/1.0/enums/enum_slo.xsd +108 -0
- mapproxy/test/schemas/inspire/common/1.0/enums/enum_slv.xsd +108 -0
- mapproxy/test/schemas/inspire/common/1.0/enums/enum_spa.xsd +108 -0
- mapproxy/test/schemas/inspire/common/1.0/enums/enum_swe.xsd +108 -0
- mapproxy/test/schemas/inspire/common/1.0/network.xsd +521 -0
- mapproxy/test/schemas/inspire/inspire_vs/1.0/inspire_vs.xsd +19 -0
- mapproxy/test/schemas/kml/2.2.0/ReadMe.txt +14 -0
- mapproxy/test/schemas/kml/2.2.0/atom-author-link.xsd +66 -0
- mapproxy/test/schemas/kml/2.2.0/ogckml22.xsd +1646 -0
- mapproxy/test/schemas/kml/2.2.0/xAL.xsd +1680 -0
- mapproxy/test/schemas/ows/1.1.0/ReadMe.txt +87 -0
- mapproxy/test/schemas/ows/1.1.0/ows19115subset.xsd +235 -0
- mapproxy/test/schemas/ows/1.1.0/owsAll.xsd +23 -0
- mapproxy/test/schemas/ows/1.1.0/owsCommon.xsd +157 -0
- mapproxy/test/schemas/ows/1.1.0/owsContents.xsd +86 -0
- mapproxy/test/schemas/ows/1.1.0/owsDataIdentification.xsd +127 -0
- mapproxy/test/schemas/ows/1.1.0/owsDomainType.xsd +279 -0
- mapproxy/test/schemas/ows/1.1.0/owsExceptionReport.xsd +76 -0
- mapproxy/test/schemas/ows/1.1.0/owsGetCapabilities.xsd +112 -0
- mapproxy/test/schemas/ows/1.1.0/owsGetResourceByID.xsd +51 -0
- mapproxy/test/schemas/ows/1.1.0/owsInputOutputData.xsd +59 -0
- mapproxy/test/schemas/ows/1.1.0/owsManifest.xsd +125 -0
- mapproxy/test/schemas/ows/1.1.0/owsOperationsMetadata.xsd +140 -0
- mapproxy/test/schemas/ows/1.1.0/owsServiceIdentification.xsd +60 -0
- mapproxy/test/schemas/ows/1.1.0/owsServiceProvider.xsd +47 -0
- mapproxy/test/schemas/sld/1.1.0/sld_capabilities.xsd +27 -0
- mapproxy/test/schemas/wms/1.0.0/capabilities_1_0_0.dtd +353 -0
- mapproxy/test/schemas/wms/1.0.0/capabilities_1_0_0.xml +188 -0
- mapproxy/test/schemas/wms/1.0.7/capabilities_1_0_7.dtd +524 -0
- mapproxy/test/schemas/wms/1.0.7/capabilities_1_0_7.xml +260 -0
- mapproxy/test/schemas/wms/1.1.0/capabilities_1_1_0.dtd +273 -0
- mapproxy/test/schemas/wms/1.1.0/capabilities_1_1_0.xml +303 -0
- mapproxy/test/schemas/wms/1.1.0/exception_1_1_0.dtd +6 -0
- mapproxy/test/schemas/wms/1.1.0/exception_1_1_0.xml +33 -0
- mapproxy/test/schemas/wms/1.1.1/OGC-exception.xsd +68 -0
- mapproxy/test/schemas/wms/1.1.1/WMS_DescribeLayerResponse.dtd +22 -0
- mapproxy/test/schemas/wms/1.1.1/WMS_MS_Capabilities.dtd +274 -0
- mapproxy/test/schemas/wms/1.1.1/WMS_exception_1_1_1.dtd +5 -0
- mapproxy/test/schemas/wms/1.1.1/capabilities_1_1_1.dtd +276 -0
- mapproxy/test/schemas/wms/1.1.1/capabilities_1_1_1.xml +303 -0
- mapproxy/test/schemas/wms/1.1.1/exception_1_1_1.dtd +6 -0
- mapproxy/test/schemas/wms/1.1.1/exception_1_1_1.xml +33 -0
- mapproxy/test/schemas/wms/1.3.0/ReadMe.txt +8 -0
- mapproxy/test/schemas/wms/1.3.0/capabilities_1_3_0.xml +277 -0
- mapproxy/test/schemas/wms/1.3.0/capabilities_1_3_0.xsd +611 -0
- mapproxy/test/schemas/wms/1.3.0/exceptions_1_3_0.xml +34 -0
- mapproxy/test/schemas/wms/1.3.0/exceptions_1_3_0.xsd +28 -0
- mapproxy/test/schemas/wmsc/1.1.1/OGC-exception.xsd +68 -0
- mapproxy/test/schemas/wmsc/1.1.1/WMS_DescribeLayerResponse.dtd +22 -0
- mapproxy/test/schemas/wmsc/1.1.1/WMS_MS_Capabilities.dtd +283 -0
- mapproxy/test/schemas/wmsc/1.1.1/WMS_exception_1_1_1.dtd +5 -0
- mapproxy/test/schemas/wmsc/1.1.1/capabilities_1_1_1.dtd +276 -0
- mapproxy/test/schemas/wmsc/1.1.1/capabilities_1_1_1.xml +303 -0
- mapproxy/test/schemas/wmsc/1.1.1/exception_1_1_1.dtd +6 -0
- mapproxy/test/schemas/wmsc/1.1.1/exception_1_1_1.xml +33 -0
- mapproxy/test/schemas/wmts/1.0/ReadMe.txt +32 -0
- mapproxy/test/schemas/wmts/1.0/wmts.xsd +28 -0
- mapproxy/test/schemas/wmts/1.0/wmtsAbstract.wsdl +151 -0
- mapproxy/test/schemas/wmts/1.0/wmtsGetCapabilities_request.xsd +38 -0
- mapproxy/test/schemas/wmts/1.0/wmtsGetCapabilities_response.xsd +564 -0
- mapproxy/test/schemas/wmts/1.0/wmtsGetFeatureInfo_request.xsd +57 -0
- mapproxy/test/schemas/wmts/1.0/wmtsGetFeatureInfo_response.xsd +72 -0
- mapproxy/test/schemas/wmts/1.0/wmtsGetTile_request.xsd +91 -0
- mapproxy/test/schemas/wmts/1.0/wmtsKVP.xsd +76 -0
- mapproxy/test/schemas/wmts/1.0/wmtsPayload_response.xsd +70 -0
- mapproxy/test/schemas/xlink/1.0.0/ReadMe.txt +6 -0
- mapproxy/test/schemas/xlink/1.0.0/xlinks.xsd +122 -0
- mapproxy/test/schemas/xml.xsd +287 -0
- mapproxy/test/system/__init__.py +98 -0
- mapproxy/test/system/fixture/arcgis.yaml +57 -0
- mapproxy/test/system/fixture/auth.yaml +70 -0
- mapproxy/test/system/fixture/cache.mbtiles +0 -0
- mapproxy/test/system/fixture/cache_azureblob.yaml +59 -0
- mapproxy/test/system/fixture/cache_band_merge.yaml +73 -0
- mapproxy/test/system/fixture/cache_bulk_meta_tiles.yaml +24 -0
- mapproxy/test/system/fixture/cache_coverage.yaml +84 -0
- mapproxy/test/system/fixture/cache_data/dop_cache_EPSG3857/00/000/000/000/000/000/000.png +0 -0
- mapproxy/test/system/fixture/cache_data/wms_cache_EPSG900913/01/000/000/000/000/000/001.jpeg +0 -0
- mapproxy/test/system/fixture/cache_data/wms_cache_transparent_EPSG900913/01/000/000/000/000/000/001.png +0 -0
- mapproxy/test/system/fixture/cache_geopackage.yaml +56 -0
- mapproxy/test/system/fixture/cache_grid_names.yaml +50 -0
- mapproxy/test/system/fixture/cache_mbtiles.yaml +28 -0
- mapproxy/test/system/fixture/cache_s3.yaml +58 -0
- mapproxy/test/system/fixture/cache_source.yaml +81 -0
- mapproxy/test/system/fixture/combined_sources.yaml +130 -0
- mapproxy/test/system/fixture/coverage.yaml +77 -0
- mapproxy/test/system/fixture/demo.yaml +135 -0
- mapproxy/test/system/fixture/dimension.yaml +59 -0
- mapproxy/test/system/fixture/disable_storage.yaml +25 -0
- mapproxy/test/system/fixture/empty_ogrdata.geojson +1 -0
- mapproxy/test/system/fixture/formats.yaml +72 -0
- mapproxy/test/system/fixture/inspire.yaml +101 -0
- mapproxy/test/system/fixture/inspire_full.yaml +124 -0
- mapproxy/test/system/fixture/kml_layer.yaml +66 -0
- mapproxy/test/system/fixture/layer.yaml +260 -0
- mapproxy/test/system/fixture/layergroups.yaml +57 -0
- mapproxy/test/system/fixture/layergroups_root.yaml +106 -0
- mapproxy/test/system/fixture/legendgraphic.yaml +93 -0
- mapproxy/test/system/fixture/mapnik_source.yaml +66 -0
- mapproxy/test/system/fixture/mapproxy_export.yaml +12 -0
- mapproxy/test/system/fixture/mapserver.yaml +23 -0
- mapproxy/test/system/fixture/minimal_cgi.py +16 -0
- mapproxy/test/system/fixture/mixed_mode.yaml +49 -0
- mapproxy/test/system/fixture/multi_cache_layers.yaml +111 -0
- mapproxy/test/system/fixture/multiapp1.yaml +20 -0
- mapproxy/test/system/fixture/multiapp2.yaml +19 -0
- mapproxy/test/system/fixture/renderd_client.yaml +55 -0
- mapproxy/test/system/fixture/scalehints.yaml +70 -0
- mapproxy/test/system/fixture/seed.yaml +94 -0
- mapproxy/test/system/fixture/seed_mapproxy.yaml +39 -0
- mapproxy/test/system/fixture/seed_old.yaml +12 -0
- mapproxy/test/system/fixture/seed_timeouts.yaml +12 -0
- mapproxy/test/system/fixture/seed_timeouts_mapproxy.yaml +27 -0
- mapproxy/test/system/fixture/seedonly.yaml +51 -0
- mapproxy/test/system/fixture/sld.yaml +35 -0
- mapproxy/test/system/fixture/source_errors.yaml +84 -0
- mapproxy/test/system/fixture/source_errors_raise.yaml +82 -0
- mapproxy/test/system/fixture/tileservice_origin.yaml +26 -0
- mapproxy/test/system/fixture/tileservice_refresh.yaml +59 -0
- mapproxy/test/system/fixture/tilesource_minmax_res.yaml +22 -0
- mapproxy/test/system/fixture/util-conf-base-grids.yaml +5 -0
- mapproxy/test/system/fixture/util-conf-overwrite.yaml +13 -0
- mapproxy/test/system/fixture/util-conf-wms-111-cap.xml +90 -0
- mapproxy/test/system/fixture/util_grids.yaml +29 -0
- mapproxy/test/system/fixture/util_wms_capabilities111.xml +130 -0
- mapproxy/test/system/fixture/util_wms_capabilities130.xml +100 -0
- mapproxy/test/system/fixture/util_wms_capabilities_service_exception.xml +5 -0
- mapproxy/test/system/fixture/watermark.yaml +50 -0
- mapproxy/test/system/fixture/wms_srs_extent.yaml +39 -0
- mapproxy/test/system/fixture/wms_versions.yaml +38 -0
- mapproxy/test/system/fixture/wmts.yaml +134 -0
- mapproxy/test/system/fixture/wmts_dimensions.yaml +57 -0
- mapproxy/test/system/fixture/xslt_featureinfo.yaml +54 -0
- mapproxy/test/system/fixture/xslt_featureinfo_input.yaml +51 -0
- mapproxy/test/system/test_arcgis.py +156 -0
- mapproxy/test/system/test_auth.py +1133 -0
- mapproxy/test/system/test_behind_proxy.py +75 -0
- mapproxy/test/system/test_bulk_meta_tiles.py +106 -0
- mapproxy/test/system/test_cache_azureblob.py +127 -0
- mapproxy/test/system/test_cache_band_merge.py +103 -0
- mapproxy/test/system/test_cache_coverage.py +168 -0
- mapproxy/test/system/test_cache_geopackage.py +144 -0
- mapproxy/test/system/test_cache_grid_names.py +89 -0
- mapproxy/test/system/test_cache_mbtiles.py +85 -0
- mapproxy/test/system/test_cache_s3.py +115 -0
- mapproxy/test/system/test_cache_source.py +146 -0
- mapproxy/test/system/test_combined_sources.py +335 -0
- mapproxy/test/system/test_coverage.py +140 -0
- mapproxy/test/system/test_decorate_img.py +214 -0
- mapproxy/test/system/test_demo.py +56 -0
- mapproxy/test/system/test_demo_with_extra_service.py +57 -0
- mapproxy/test/system/test_dimensions.py +279 -0
- mapproxy/test/system/test_disable_storage.py +42 -0
- mapproxy/test/system/test_formats.py +219 -0
- mapproxy/test/system/test_inspire_vs.py +173 -0
- mapproxy/test/system/test_kml.py +264 -0
- mapproxy/test/system/test_layergroups.py +160 -0
- mapproxy/test/system/test_legendgraphic.py +308 -0
- mapproxy/test/system/test_mapnik.py +162 -0
- mapproxy/test/system/test_mapserver.py +83 -0
- mapproxy/test/system/test_mixed_mode_format.py +201 -0
- mapproxy/test/system/test_multi_cache_layers.py +169 -0
- mapproxy/test/system/test_multiapp.py +92 -0
- mapproxy/test/system/test_refresh.py +206 -0
- mapproxy/test/system/test_renderd_client.py +304 -0
- mapproxy/test/system/test_response_headers.py +54 -0
- mapproxy/test/system/test_scalehints.py +140 -0
- mapproxy/test/system/test_seed.py +425 -0
- mapproxy/test/system/test_seed_only.py +93 -0
- mapproxy/test/system/test_sld.py +120 -0
- mapproxy/test/system/test_source_errors.py +377 -0
- mapproxy/test/system/test_tilesource_minmax_res.py +54 -0
- mapproxy/test/system/test_tms.py +277 -0
- mapproxy/test/system/test_tms_origin.py +46 -0
- mapproxy/test/system/test_util_conf.py +434 -0
- mapproxy/test/system/test_util_export.py +210 -0
- mapproxy/test/system/test_util_grids.py +88 -0
- mapproxy/test/system/test_util_wms_capabilities.py +182 -0
- mapproxy/test/system/test_watermark.py +91 -0
- mapproxy/test/system/test_wms.py +1616 -0
- mapproxy/test/system/test_wms_srs_extent.py +165 -0
- mapproxy/test/system/test_wms_version.py +85 -0
- mapproxy/test/system/test_wmsc.py +116 -0
- mapproxy/test/system/test_wmts.py +334 -0
- mapproxy/test/system/test_wmts_dimensions.py +206 -0
- mapproxy/test/system/test_wmts_restful.py +198 -0
- mapproxy/test/system/test_xslt_featureinfo.py +423 -0
- mapproxy/test/test_http_helper.py +217 -0
- mapproxy/test/unit/__init__.py +0 -0
- mapproxy/test/unit/epsg +2 -0
- mapproxy/test/unit/polygons/polygons.dbf +0 -0
- mapproxy/test/unit/polygons/polygons.shp +0 -0
- mapproxy/test/unit/polygons/polygons.shx +0 -0
- mapproxy/test/unit/test_async.py +242 -0
- mapproxy/test/unit/test_auth.py +430 -0
- mapproxy/test/unit/test_cache.py +1356 -0
- mapproxy/test/unit/test_cache_azureblob.py +97 -0
- mapproxy/test/unit/test_cache_compact.py +324 -0
- mapproxy/test/unit/test_cache_couchdb.py +118 -0
- mapproxy/test/unit/test_cache_geopackage.py +256 -0
- mapproxy/test/unit/test_cache_redis.py +123 -0
- mapproxy/test/unit/test_cache_riak.py +80 -0
- mapproxy/test/unit/test_cache_s3.py +93 -0
- mapproxy/test/unit/test_cache_tile.py +477 -0
- mapproxy/test/unit/test_client.py +488 -0
- mapproxy/test/unit/test_client_arcgis.py +74 -0
- mapproxy/test/unit/test_client_cgi.py +140 -0
- mapproxy/test/unit/test_collections.py +116 -0
- mapproxy/test/unit/test_concat_legends.py +37 -0
- mapproxy/test/unit/test_conf_loader.py +1267 -0
- mapproxy/test/unit/test_conf_validator.py +427 -0
- mapproxy/test/unit/test_config.py +118 -0
- mapproxy/test/unit/test_decorate_img.py +185 -0
- mapproxy/test/unit/test_exceptions.py +270 -0
- mapproxy/test/unit/test_featureinfo.py +313 -0
- mapproxy/test/unit/test_file_lock_load.py +49 -0
- mapproxy/test/unit/test_geom.py +512 -0
- mapproxy/test/unit/test_grid.py +1279 -0
- mapproxy/test/unit/test_image.py +1051 -0
- mapproxy/test/unit/test_image_mask.py +181 -0
- mapproxy/test/unit/test_image_messages.py +209 -0
- mapproxy/test/unit/test_image_options.py +160 -0
- mapproxy/test/unit/test_isodate.py +118 -0
- mapproxy/test/unit/test_multiapp.py +163 -0
- mapproxy/test/unit/test_ogr_reader.py +51 -0
- mapproxy/test/unit/test_request.py +745 -0
- mapproxy/test/unit/test_request_wmts.py +178 -0
- mapproxy/test/unit/test_response.py +78 -0
- mapproxy/test/unit/test_seed.py +365 -0
- mapproxy/test/unit/test_seed_cachelock.py +91 -0
- mapproxy/test/unit/test_srs.py +215 -0
- mapproxy/test/unit/test_tiled_source.py +122 -0
- mapproxy/test/unit/test_tilefilter.py +31 -0
- mapproxy/test/unit/test_times.py +25 -0
- mapproxy/test/unit/test_timeutils.py +50 -0
- mapproxy/test/unit/test_util_conf_utils.py +75 -0
- mapproxy/test/unit/test_utils.py +476 -0
- mapproxy/test/unit/test_wms_capabilities.py +44 -0
- mapproxy/test/unit/test_wms_layer.py +113 -0
- mapproxy/test/unit/test_yaml.py +68 -0
- mapproxy/tilefilter.py +61 -0
- mapproxy/util/__init__.py +0 -0
- mapproxy/util/async_.py +229 -0
- mapproxy/util/collections.py +134 -0
- mapproxy/util/coverage.py +337 -0
- mapproxy/util/ext/__init__.py +14 -0
- mapproxy/util/ext/dictspec/__init__.py +1 -0
- mapproxy/util/ext/dictspec/spec.py +131 -0
- mapproxy/util/ext/dictspec/test/__init__.py +0 -0
- mapproxy/util/ext/dictspec/test/test_validator.py +278 -0
- mapproxy/util/ext/dictspec/validator.py +194 -0
- mapproxy/util/ext/local.py +198 -0
- mapproxy/util/ext/lockfile.py +140 -0
- mapproxy/util/ext/odict.py +321 -0
- mapproxy/util/ext/serving.py +491 -0
- mapproxy/util/ext/tempita/__init__.py +1093 -0
- mapproxy/util/ext/tempita/_looper.py +163 -0
- mapproxy/util/ext/tempita/string_utils.py +24 -0
- mapproxy/util/ext/wmsparse/__init__.py +3 -0
- mapproxy/util/ext/wmsparse/duration.py +600 -0
- mapproxy/util/ext/wmsparse/parse.py +307 -0
- mapproxy/util/ext/wmsparse/test/__init__.py +0 -0
- mapproxy/util/ext/wmsparse/test/test_parse.py +111 -0
- mapproxy/util/ext/wmsparse/test/test_util.py +23 -0
- mapproxy/util/ext/wmsparse/test/wms-example-111.xml +90 -0
- mapproxy/util/ext/wmsparse/test/wms-example-130.xml +120 -0
- mapproxy/util/ext/wmsparse/test/wms-large-111.xml +2114 -0
- mapproxy/util/ext/wmsparse/test/wms_nasa_cap.xml +386 -0
- mapproxy/util/ext/wmsparse/util.py +189 -0
- mapproxy/util/fs.py +164 -0
- mapproxy/util/geom.py +307 -0
- mapproxy/util/lib.py +117 -0
- mapproxy/util/lock.py +171 -0
- mapproxy/util/ogr.py +247 -0
- mapproxy/util/py.py +75 -0
- mapproxy/util/times.py +78 -0
- mapproxy/util/yaml.py +58 -0
- mapproxy/version.py +33 -0
- mapproxy/wsgiapp.py +167 -0
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
<?xml version='1.0'?>
|
|
2
|
+
<?xml-stylesheet href="../2008/09/xsd.xsl" type="text/xsl"?>
|
|
3
|
+
<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace"
|
|
4
|
+
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
|
5
|
+
xmlns ="http://www.w3.org/1999/xhtml"
|
|
6
|
+
xml:lang="en">
|
|
7
|
+
|
|
8
|
+
<xs:annotation>
|
|
9
|
+
<xs:documentation>
|
|
10
|
+
<div>
|
|
11
|
+
<h1>About the XML namespace</h1>
|
|
12
|
+
|
|
13
|
+
<div class="bodytext">
|
|
14
|
+
<p>
|
|
15
|
+
This schema document describes the XML namespace, in a form
|
|
16
|
+
suitable for import by other schema documents.
|
|
17
|
+
</p>
|
|
18
|
+
<p>
|
|
19
|
+
See <a href="http://www.w3.org/XML/1998/namespace.html">
|
|
20
|
+
http://www.w3.org/XML/1998/namespace.html</a> and
|
|
21
|
+
<a href="http://www.w3.org/TR/REC-xml">
|
|
22
|
+
http://www.w3.org/TR/REC-xml</a> for information
|
|
23
|
+
about this namespace.
|
|
24
|
+
</p>
|
|
25
|
+
<p>
|
|
26
|
+
Note that local names in this namespace are intended to be
|
|
27
|
+
defined only by the World Wide Web Consortium or its subgroups.
|
|
28
|
+
The names currently defined in this namespace are listed below.
|
|
29
|
+
They should not be used with conflicting semantics by any Working
|
|
30
|
+
Group, specification, or document instance.
|
|
31
|
+
</p>
|
|
32
|
+
<p>
|
|
33
|
+
See further below in this document for more information about <a
|
|
34
|
+
href="#usage">how to refer to this schema document from your own
|
|
35
|
+
XSD schema documents</a> and about <a href="#nsversioning">the
|
|
36
|
+
namespace-versioning policy governing this schema document</a>.
|
|
37
|
+
</p>
|
|
38
|
+
</div>
|
|
39
|
+
</div>
|
|
40
|
+
</xs:documentation>
|
|
41
|
+
</xs:annotation>
|
|
42
|
+
|
|
43
|
+
<xs:attribute name="lang">
|
|
44
|
+
<xs:annotation>
|
|
45
|
+
<xs:documentation>
|
|
46
|
+
<div>
|
|
47
|
+
|
|
48
|
+
<h3>lang (as an attribute name)</h3>
|
|
49
|
+
<p>
|
|
50
|
+
denotes an attribute whose value
|
|
51
|
+
is a language code for the natural language of the content of
|
|
52
|
+
any element; its value is inherited. This name is reserved
|
|
53
|
+
by virtue of its definition in the XML specification.</p>
|
|
54
|
+
|
|
55
|
+
</div>
|
|
56
|
+
<div>
|
|
57
|
+
<h4>Notes</h4>
|
|
58
|
+
<p>
|
|
59
|
+
Attempting to install the relevant ISO 2- and 3-letter
|
|
60
|
+
codes as the enumerated possible values is probably never
|
|
61
|
+
going to be a realistic possibility.
|
|
62
|
+
</p>
|
|
63
|
+
<p>
|
|
64
|
+
See BCP 47 at <a href="http://www.rfc-editor.org/rfc/bcp/bcp47.txt">
|
|
65
|
+
http://www.rfc-editor.org/rfc/bcp/bcp47.txt</a>
|
|
66
|
+
and the IANA language subtag registry at
|
|
67
|
+
<a href="http://www.iana.org/assignments/language-subtag-registry">
|
|
68
|
+
http://www.iana.org/assignments/language-subtag-registry</a>
|
|
69
|
+
for further information.
|
|
70
|
+
</p>
|
|
71
|
+
<p>
|
|
72
|
+
The union allows for the 'un-declaration' of xml:lang with
|
|
73
|
+
the empty string.
|
|
74
|
+
</p>
|
|
75
|
+
</div>
|
|
76
|
+
</xs:documentation>
|
|
77
|
+
</xs:annotation>
|
|
78
|
+
<xs:simpleType>
|
|
79
|
+
<xs:union memberTypes="xs:language">
|
|
80
|
+
<xs:simpleType>
|
|
81
|
+
<xs:restriction base="xs:string">
|
|
82
|
+
<xs:enumeration value=""/>
|
|
83
|
+
</xs:restriction>
|
|
84
|
+
</xs:simpleType>
|
|
85
|
+
</xs:union>
|
|
86
|
+
</xs:simpleType>
|
|
87
|
+
</xs:attribute>
|
|
88
|
+
|
|
89
|
+
<xs:attribute name="space">
|
|
90
|
+
<xs:annotation>
|
|
91
|
+
<xs:documentation>
|
|
92
|
+
<div>
|
|
93
|
+
|
|
94
|
+
<h3>space (as an attribute name)</h3>
|
|
95
|
+
<p>
|
|
96
|
+
denotes an attribute whose
|
|
97
|
+
value is a keyword indicating what whitespace processing
|
|
98
|
+
discipline is intended for the content of the element; its
|
|
99
|
+
value is inherited. This name is reserved by virtue of its
|
|
100
|
+
definition in the XML specification.</p>
|
|
101
|
+
|
|
102
|
+
</div>
|
|
103
|
+
</xs:documentation>
|
|
104
|
+
</xs:annotation>
|
|
105
|
+
<xs:simpleType>
|
|
106
|
+
<xs:restriction base="xs:NCName">
|
|
107
|
+
<xs:enumeration value="default"/>
|
|
108
|
+
<xs:enumeration value="preserve"/>
|
|
109
|
+
</xs:restriction>
|
|
110
|
+
</xs:simpleType>
|
|
111
|
+
</xs:attribute>
|
|
112
|
+
|
|
113
|
+
<xs:attribute name="base" type="xs:anyURI"> <xs:annotation>
|
|
114
|
+
<xs:documentation>
|
|
115
|
+
<div>
|
|
116
|
+
|
|
117
|
+
<h3>base (as an attribute name)</h3>
|
|
118
|
+
<p>
|
|
119
|
+
denotes an attribute whose value
|
|
120
|
+
provides a URI to be used as the base for interpreting any
|
|
121
|
+
relative URIs in the scope of the element on which it
|
|
122
|
+
appears; its value is inherited. This name is reserved
|
|
123
|
+
by virtue of its definition in the XML Base specification.</p>
|
|
124
|
+
|
|
125
|
+
<p>
|
|
126
|
+
See <a
|
|
127
|
+
href="http://www.w3.org/TR/xmlbase/">http://www.w3.org/TR/xmlbase/</a>
|
|
128
|
+
for information about this attribute.
|
|
129
|
+
</p>
|
|
130
|
+
</div>
|
|
131
|
+
</xs:documentation>
|
|
132
|
+
</xs:annotation>
|
|
133
|
+
</xs:attribute>
|
|
134
|
+
|
|
135
|
+
<xs:attribute name="id" type="xs:ID">
|
|
136
|
+
<xs:annotation>
|
|
137
|
+
<xs:documentation>
|
|
138
|
+
<div>
|
|
139
|
+
|
|
140
|
+
<h3>id (as an attribute name)</h3>
|
|
141
|
+
<p>
|
|
142
|
+
denotes an attribute whose value
|
|
143
|
+
should be interpreted as if declared to be of type ID.
|
|
144
|
+
This name is reserved by virtue of its definition in the
|
|
145
|
+
xml:id specification.</p>
|
|
146
|
+
|
|
147
|
+
<p>
|
|
148
|
+
See <a
|
|
149
|
+
href="http://www.w3.org/TR/xml-id/">http://www.w3.org/TR/xml-id/</a>
|
|
150
|
+
for information about this attribute.
|
|
151
|
+
</p>
|
|
152
|
+
</div>
|
|
153
|
+
</xs:documentation>
|
|
154
|
+
</xs:annotation>
|
|
155
|
+
</xs:attribute>
|
|
156
|
+
|
|
157
|
+
<xs:attributeGroup name="specialAttrs">
|
|
158
|
+
<xs:attribute ref="xml:base"/>
|
|
159
|
+
<xs:attribute ref="xml:lang"/>
|
|
160
|
+
<xs:attribute ref="xml:space"/>
|
|
161
|
+
<xs:attribute ref="xml:id"/>
|
|
162
|
+
</xs:attributeGroup>
|
|
163
|
+
|
|
164
|
+
<xs:annotation>
|
|
165
|
+
<xs:documentation>
|
|
166
|
+
<div>
|
|
167
|
+
|
|
168
|
+
<h3>Father (in any context at all)</h3>
|
|
169
|
+
|
|
170
|
+
<div class="bodytext">
|
|
171
|
+
<p>
|
|
172
|
+
denotes Jon Bosak, the chair of
|
|
173
|
+
the original XML Working Group. This name is reserved by
|
|
174
|
+
the following decision of the W3C XML Plenary and
|
|
175
|
+
XML Coordination groups:
|
|
176
|
+
</p>
|
|
177
|
+
<blockquote>
|
|
178
|
+
<p>
|
|
179
|
+
In appreciation for his vision, leadership and
|
|
180
|
+
dedication the W3C XML Plenary on this 10th day of
|
|
181
|
+
February, 2000, reserves for Jon Bosak in perpetuity
|
|
182
|
+
the XML name "xml:Father".
|
|
183
|
+
</p>
|
|
184
|
+
</blockquote>
|
|
185
|
+
</div>
|
|
186
|
+
</div>
|
|
187
|
+
</xs:documentation>
|
|
188
|
+
</xs:annotation>
|
|
189
|
+
|
|
190
|
+
<xs:annotation>
|
|
191
|
+
<xs:documentation>
|
|
192
|
+
<div xml:id="usage" id="usage">
|
|
193
|
+
<h2><a name="usage">About this schema document</a></h2>
|
|
194
|
+
|
|
195
|
+
<div class="bodytext">
|
|
196
|
+
<p>
|
|
197
|
+
This schema defines attributes and an attribute group suitable
|
|
198
|
+
for use by schemas wishing to allow <code>xml:base</code>,
|
|
199
|
+
<code>xml:lang</code>, <code>xml:space</code> or
|
|
200
|
+
<code>xml:id</code> attributes on elements they define.
|
|
201
|
+
</p>
|
|
202
|
+
<p>
|
|
203
|
+
To enable this, such a schema must import this schema for
|
|
204
|
+
the XML namespace, e.g. as follows:
|
|
205
|
+
</p>
|
|
206
|
+
<pre>
|
|
207
|
+
<schema . . .>
|
|
208
|
+
. . .
|
|
209
|
+
<import namespace="http://www.w3.org/XML/1998/namespace"
|
|
210
|
+
schemaLocation="http://www.w3.org/2001/xml.xsd"/>
|
|
211
|
+
</pre>
|
|
212
|
+
<p>
|
|
213
|
+
or
|
|
214
|
+
</p>
|
|
215
|
+
<pre>
|
|
216
|
+
<import namespace="http://www.w3.org/XML/1998/namespace"
|
|
217
|
+
schemaLocation="http://www.w3.org/2009/01/xml.xsd"/>
|
|
218
|
+
</pre>
|
|
219
|
+
<p>
|
|
220
|
+
Subsequently, qualified reference to any of the attributes or the
|
|
221
|
+
group defined below will have the desired effect, e.g.
|
|
222
|
+
</p>
|
|
223
|
+
<pre>
|
|
224
|
+
<type . . .>
|
|
225
|
+
. . .
|
|
226
|
+
<attributeGroup ref="xml:specialAttrs"/>
|
|
227
|
+
</pre>
|
|
228
|
+
<p>
|
|
229
|
+
will define a type which will schema-validate an instance element
|
|
230
|
+
with any of those attributes.
|
|
231
|
+
</p>
|
|
232
|
+
</div>
|
|
233
|
+
</div>
|
|
234
|
+
</xs:documentation>
|
|
235
|
+
</xs:annotation>
|
|
236
|
+
|
|
237
|
+
<xs:annotation>
|
|
238
|
+
<xs:documentation>
|
|
239
|
+
<div id="nsversioning" xml:id="nsversioning">
|
|
240
|
+
<h2><a name="nsversioning">Versioning policy for this schema document</a></h2>
|
|
241
|
+
<div class="bodytext">
|
|
242
|
+
<p>
|
|
243
|
+
In keeping with the XML Schema WG's standard versioning
|
|
244
|
+
policy, this schema document will persist at
|
|
245
|
+
<a href="http://www.w3.org/2009/01/xml.xsd">
|
|
246
|
+
http://www.w3.org/2009/01/xml.xsd</a>.
|
|
247
|
+
</p>
|
|
248
|
+
<p>
|
|
249
|
+
At the date of issue it can also be found at
|
|
250
|
+
<a href="http://www.w3.org/2001/xml.xsd">
|
|
251
|
+
http://www.w3.org/2001/xml.xsd</a>.
|
|
252
|
+
</p>
|
|
253
|
+
<p>
|
|
254
|
+
The schema document at that URI may however change in the future,
|
|
255
|
+
in order to remain compatible with the latest version of XML
|
|
256
|
+
Schema itself, or with the XML namespace itself. In other words,
|
|
257
|
+
if the XML Schema or XML namespaces change, the version of this
|
|
258
|
+
document at <a href="http://www.w3.org/2001/xml.xsd">
|
|
259
|
+
http://www.w3.org/2001/xml.xsd
|
|
260
|
+
</a>
|
|
261
|
+
will change accordingly; the version at
|
|
262
|
+
<a href="http://www.w3.org/2009/01/xml.xsd">
|
|
263
|
+
http://www.w3.org/2009/01/xml.xsd
|
|
264
|
+
</a>
|
|
265
|
+
will not change.
|
|
266
|
+
</p>
|
|
267
|
+
<p>
|
|
268
|
+
Previous dated (and unchanging) versions of this schema
|
|
269
|
+
document are at:
|
|
270
|
+
</p>
|
|
271
|
+
<ul>
|
|
272
|
+
<li><a href="http://www.w3.org/2009/01/xml.xsd">
|
|
273
|
+
http://www.w3.org/2009/01/xml.xsd</a></li>
|
|
274
|
+
<li><a href="http://www.w3.org/2007/08/xml.xsd">
|
|
275
|
+
http://www.w3.org/2007/08/xml.xsd</a></li>
|
|
276
|
+
<li><a href="http://www.w3.org/2004/10/xml.xsd">
|
|
277
|
+
http://www.w3.org/2004/10/xml.xsd</a></li>
|
|
278
|
+
<li><a href="http://www.w3.org/2001/03/xml.xsd">
|
|
279
|
+
http://www.w3.org/2001/03/xml.xsd</a></li>
|
|
280
|
+
</ul>
|
|
281
|
+
</div>
|
|
282
|
+
</div>
|
|
283
|
+
</xs:documentation>
|
|
284
|
+
</xs:annotation>
|
|
285
|
+
|
|
286
|
+
</xs:schema>
|
|
287
|
+
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# This file is part of the MapProxy project.
|
|
2
|
+
# Copyright (C) 2010 Omniscale <http://omniscale.de>
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
# See the License for the specific language governing permissions and
|
|
14
|
+
# limitations under the License.
|
|
15
|
+
|
|
16
|
+
from __future__ import division
|
|
17
|
+
|
|
18
|
+
import os
|
|
19
|
+
import shutil
|
|
20
|
+
|
|
21
|
+
import pytest
|
|
22
|
+
|
|
23
|
+
from webtest import TestApp as _TestApp
|
|
24
|
+
|
|
25
|
+
from mapproxy.wsgiapp import make_wsgi_app
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class WSGITestApp(_TestApp):
|
|
29
|
+
"""
|
|
30
|
+
Wraps webtest.TestApp and explicitly converts URLs to strings.
|
|
31
|
+
Behavior changed with webtest from 1.2->1.3.
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
def get(self, url, *args, **kw):
|
|
35
|
+
return _TestApp.get(self, str(url), *args, **kw)
|
|
36
|
+
|
|
37
|
+
def head(self, url, *args, **kw):
|
|
38
|
+
return _TestApp.head(self, str(url), *args, **kw)
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
@pytest.mark.usefixtures("cache_dir")
|
|
42
|
+
class SysTest(object):
|
|
43
|
+
"""
|
|
44
|
+
Baseclass for pytest-based system tests.
|
|
45
|
+
Provides `app` fixture with a configured MapProxy instance, wrapped in
|
|
46
|
+
webtest.TestApp.
|
|
47
|
+
|
|
48
|
+
`app` is reused within each test class, `cache_dir` is cleaned with
|
|
49
|
+
each test.
|
|
50
|
+
"""
|
|
51
|
+
|
|
52
|
+
@pytest.fixture(scope="class")
|
|
53
|
+
def app(self, base_dir, config_file, additional_files):
|
|
54
|
+
filename = base_dir.join(config_file)
|
|
55
|
+
app = make_wsgi_app(filename.strpath, ignore_config_warnings=False)
|
|
56
|
+
app.base_config.debug_mode = True
|
|
57
|
+
return WSGITestApp(app, use_unicode=False)
|
|
58
|
+
|
|
59
|
+
@pytest.fixture(scope="class")
|
|
60
|
+
def additional_files(self, base_dir):
|
|
61
|
+
return
|
|
62
|
+
|
|
63
|
+
@pytest.fixture(scope="class")
|
|
64
|
+
def base_config(self, app):
|
|
65
|
+
return app.app.base_config
|
|
66
|
+
|
|
67
|
+
@pytest.fixture(scope="class")
|
|
68
|
+
def base_dir(self, tmpdir_factory, config_file):
|
|
69
|
+
dir = tmpdir_factory.mktemp("base_dir")
|
|
70
|
+
|
|
71
|
+
fixture_dir = os.path.join(os.path.dirname(__file__), "fixture")
|
|
72
|
+
fixture_layer_conf = os.path.join(fixture_dir, config_file)
|
|
73
|
+
shutil.copy(fixture_layer_conf, dir.strpath)
|
|
74
|
+
|
|
75
|
+
return dir
|
|
76
|
+
|
|
77
|
+
@pytest.fixture(scope="function")
|
|
78
|
+
def cache_dir(self, base_dir):
|
|
79
|
+
"""
|
|
80
|
+
cache_dir fixture returns a fresh cache_data directory used by `app`.
|
|
81
|
+
"""
|
|
82
|
+
cache_dir = base_dir.join("cache_data")
|
|
83
|
+
if cache_dir.check():
|
|
84
|
+
cache_dir.remove()
|
|
85
|
+
|
|
86
|
+
yield cache_dir
|
|
87
|
+
|
|
88
|
+
if cache_dir.check():
|
|
89
|
+
cache_dir.remove()
|
|
90
|
+
|
|
91
|
+
@pytest.fixture(scope="function")
|
|
92
|
+
def fixture_cache_data(self, cache_dir):
|
|
93
|
+
"""
|
|
94
|
+
fixture_cache_data ensures that the system/fixture files are copied into
|
|
95
|
+
`cache_dir`.
|
|
96
|
+
"""
|
|
97
|
+
fixture_dir = os.path.join(os.path.dirname(__file__), "fixture")
|
|
98
|
+
shutil.copytree(os.path.join(fixture_dir, "cache_data"), cache_dir.strpath)
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
services:
|
|
2
|
+
tms:
|
|
3
|
+
wms:
|
|
4
|
+
featureinfo_types: ['json']
|
|
5
|
+
|
|
6
|
+
layers:
|
|
7
|
+
- name: app2_layer
|
|
8
|
+
title: ArcGIS Cache Layer
|
|
9
|
+
sources: [app2_cache]
|
|
10
|
+
- name: app2_with_layers_layer
|
|
11
|
+
title: ArcGIS Cache Layer
|
|
12
|
+
sources: [app2_with_layers_cache]
|
|
13
|
+
- name: app2_with_layers_fi_layer
|
|
14
|
+
title: ArcGIS Cache Layer
|
|
15
|
+
sources: [app2_with_layers_fi_cache]
|
|
16
|
+
- name: app2_wrong_url_layer
|
|
17
|
+
title: ArcGIS Cache Layer
|
|
18
|
+
sources: [app2_wrong_url_cache]
|
|
19
|
+
|
|
20
|
+
caches:
|
|
21
|
+
app2_cache:
|
|
22
|
+
grids: [GLOBAL_MERCATOR]
|
|
23
|
+
sources: [app2_source]
|
|
24
|
+
app2_with_layers_cache:
|
|
25
|
+
grids: [GLOBAL_MERCATOR]
|
|
26
|
+
sources: [app2_with_layers_source]
|
|
27
|
+
app2_with_layers_fi_cache:
|
|
28
|
+
grids: [GLOBAL_MERCATOR]
|
|
29
|
+
sources: [app2_with_layers_fi_source]
|
|
30
|
+
app2_wrong_url_cache:
|
|
31
|
+
grids: [GLOBAL_MERCATOR]
|
|
32
|
+
sources: [app2_wrong_url_source]
|
|
33
|
+
|
|
34
|
+
sources:
|
|
35
|
+
app2_source:
|
|
36
|
+
type: arcgis
|
|
37
|
+
req:
|
|
38
|
+
url: http://localhost:42423/arcgis/rest/services/ExampleLayer/ImageServer
|
|
39
|
+
app2_with_layers_source:
|
|
40
|
+
type: arcgis
|
|
41
|
+
req:
|
|
42
|
+
layers: show:0,1
|
|
43
|
+
url: http://localhost:42423/arcgis/rest/services/ExampleLayer/MapServer
|
|
44
|
+
app2_with_layers_fi_source:
|
|
45
|
+
type: arcgis
|
|
46
|
+
opts:
|
|
47
|
+
featureinfo: true
|
|
48
|
+
featureinfo_tolerance: 10
|
|
49
|
+
featureinfo_return_geometries: true
|
|
50
|
+
supported_srs: ['EPSG:3857']
|
|
51
|
+
req:
|
|
52
|
+
layers: show:1,2,3
|
|
53
|
+
url: http://localhost:42423/arcgis/rest/services/ExampleLayer/MapServer
|
|
54
|
+
app2_wrong_url_source:
|
|
55
|
+
type: arcgis
|
|
56
|
+
req:
|
|
57
|
+
url: http://localhost:42423/arcgis/rest/services/NonExistentLayer/ImageServer
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
services:
|
|
2
|
+
tms:
|
|
3
|
+
kml:
|
|
4
|
+
wmts:
|
|
5
|
+
featureinfo_formats:
|
|
6
|
+
- mimetype: application/json
|
|
7
|
+
suffix: geojson
|
|
8
|
+
demo:
|
|
9
|
+
wms:
|
|
10
|
+
md:
|
|
11
|
+
title: 'My WMS'
|
|
12
|
+
layers:
|
|
13
|
+
- name: layer1
|
|
14
|
+
title: layer 1
|
|
15
|
+
sources: [dummy]
|
|
16
|
+
layers:
|
|
17
|
+
- name: layer1a
|
|
18
|
+
title: layer 1a
|
|
19
|
+
sources: [dummy]
|
|
20
|
+
- name: layer1b
|
|
21
|
+
title: layer 1b
|
|
22
|
+
sources: [dummy_fi]
|
|
23
|
+
- name: layer2
|
|
24
|
+
title: layer 2
|
|
25
|
+
layers:
|
|
26
|
+
- name: layer2a
|
|
27
|
+
title: layer 2a
|
|
28
|
+
sources: [dummy]
|
|
29
|
+
- name: layer2b
|
|
30
|
+
title: layer 2b
|
|
31
|
+
layers:
|
|
32
|
+
- name: layer2b1
|
|
33
|
+
title: layer 2b1
|
|
34
|
+
sources: [dummy_fi]
|
|
35
|
+
- name: layer3
|
|
36
|
+
title: layer 3
|
|
37
|
+
sources: [cache]
|
|
38
|
+
|
|
39
|
+
caches:
|
|
40
|
+
cache:
|
|
41
|
+
grids: [GLOBAL_MERCATOR]
|
|
42
|
+
format: 'image/jpeg'
|
|
43
|
+
disable_storage: True
|
|
44
|
+
meta_size: [1, 1]
|
|
45
|
+
meta_buffer: 0
|
|
46
|
+
sources: [source]
|
|
47
|
+
dummy:
|
|
48
|
+
grids: [GLOBAL_MERCATOR]
|
|
49
|
+
sources: [dummy]
|
|
50
|
+
dummy_fi:
|
|
51
|
+
grids: [GLOBAL_MERCATOR]
|
|
52
|
+
sources: [dummy_fi]
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
sources:
|
|
56
|
+
dummy:
|
|
57
|
+
type: debug
|
|
58
|
+
dummy_fi:
|
|
59
|
+
type: wms
|
|
60
|
+
wms_opts:
|
|
61
|
+
featureinfo: True
|
|
62
|
+
coverage:
|
|
63
|
+
bbox: [-180, -90, 170, 89.9]
|
|
64
|
+
bbox_srs: 'EPSG:4326'
|
|
65
|
+
req:
|
|
66
|
+
url: http://localhost:42423/service
|
|
67
|
+
layers: fi
|
|
68
|
+
source:
|
|
69
|
+
type: tile
|
|
70
|
+
url: http://localhost:42423/%(tms_path)s.png
|
|
Binary file
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
globals:
|
|
2
|
+
cache:
|
|
3
|
+
azureblob:
|
|
4
|
+
connection_string: "DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://localhost:10000/devstoreaccount1"
|
|
5
|
+
container_name: default-container
|
|
6
|
+
|
|
7
|
+
services:
|
|
8
|
+
tms:
|
|
9
|
+
wms:
|
|
10
|
+
md:
|
|
11
|
+
title: MapProxy Azure Blob
|
|
12
|
+
|
|
13
|
+
layers:
|
|
14
|
+
- name: default
|
|
15
|
+
title: Default
|
|
16
|
+
sources: [default_cache]
|
|
17
|
+
- name: quadkey
|
|
18
|
+
title: Quadkey
|
|
19
|
+
sources: [quadkey_cache]
|
|
20
|
+
- name: reverse
|
|
21
|
+
title: Reverse
|
|
22
|
+
sources: [reverse_cache]
|
|
23
|
+
|
|
24
|
+
caches:
|
|
25
|
+
default_cache:
|
|
26
|
+
grids: [webmercator]
|
|
27
|
+
cache:
|
|
28
|
+
type: azureblob
|
|
29
|
+
sources: [tms]
|
|
30
|
+
|
|
31
|
+
quadkey_cache:
|
|
32
|
+
grids: [webmercator]
|
|
33
|
+
cache:
|
|
34
|
+
type: azureblob
|
|
35
|
+
container_name: tiles
|
|
36
|
+
directory_layout: quadkey
|
|
37
|
+
directory: quadkeytiles
|
|
38
|
+
sources: [tms]
|
|
39
|
+
|
|
40
|
+
reverse_cache:
|
|
41
|
+
grids: [webmercator]
|
|
42
|
+
cache:
|
|
43
|
+
type: azureblob
|
|
44
|
+
container_name: tiles
|
|
45
|
+
directory_layout: reverse_tms
|
|
46
|
+
directory: reversetiles
|
|
47
|
+
sources: [tms]
|
|
48
|
+
|
|
49
|
+
grids:
|
|
50
|
+
webmercator:
|
|
51
|
+
name: WebMerc
|
|
52
|
+
base: GLOBAL_WEBMERCATOR
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
sources:
|
|
56
|
+
tms:
|
|
57
|
+
type: tile
|
|
58
|
+
url: http://localhost:42423/tiles/%(tc_path)s.png
|
|
59
|
+
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
services:
|
|
2
|
+
demo:
|
|
3
|
+
wmts:
|
|
4
|
+
wms:
|
|
5
|
+
md:
|
|
6
|
+
title: Foo
|
|
7
|
+
|
|
8
|
+
layers:
|
|
9
|
+
- name: dop_l
|
|
10
|
+
title: DOP L
|
|
11
|
+
sources: [dop_l_cache]
|
|
12
|
+
tile_sources: [dop_l_cache]
|
|
13
|
+
- name: dop_0
|
|
14
|
+
title: DOP 0
|
|
15
|
+
tile_sources: [dop_0_cache]
|
|
16
|
+
- name: dop_021
|
|
17
|
+
title: DOP 021
|
|
18
|
+
tile_sources: [dop_021_cache]
|
|
19
|
+
- name: dop_0122
|
|
20
|
+
title: DOP 0122
|
|
21
|
+
tile_sources: [dop_0122_cache]
|
|
22
|
+
|
|
23
|
+
caches:
|
|
24
|
+
|
|
25
|
+
dop_l_cache:
|
|
26
|
+
grids: [GLOBAL_WEBMERCATOR]
|
|
27
|
+
disable_storage: true
|
|
28
|
+
sources:
|
|
29
|
+
l: [
|
|
30
|
+
{source: dop_cache, band: 0, factor: 0.25},
|
|
31
|
+
{source: dop_cache, band: 1, factor: 0.7},
|
|
32
|
+
{source: dop_cache, band: 2, factor: 0.05},
|
|
33
|
+
]
|
|
34
|
+
|
|
35
|
+
dop_0_cache:
|
|
36
|
+
grids: [GLOBAL_WEBMERCATOR]
|
|
37
|
+
disable_storage: true
|
|
38
|
+
image:
|
|
39
|
+
mode: RGB
|
|
40
|
+
sources:
|
|
41
|
+
l: [{source: dop_cache, band: 0}]
|
|
42
|
+
|
|
43
|
+
dop_021_cache:
|
|
44
|
+
grids: [GLOBAL_WEBMERCATOR]
|
|
45
|
+
disable_storage: true
|
|
46
|
+
sources:
|
|
47
|
+
r: [{source: dop_cache, band: 0}]
|
|
48
|
+
g: [{source: dop_cache, band: 2}]
|
|
49
|
+
b: [{source: dop_cache, band: 1}]
|
|
50
|
+
|
|
51
|
+
dop_0122_cache:
|
|
52
|
+
grids: [GLOBAL_WEBMERCATOR]
|
|
53
|
+
disable_storage: true
|
|
54
|
+
sources:
|
|
55
|
+
r: [{source: dop_cache, band: 0}]
|
|
56
|
+
g: [{source: dop_cache, band: 1}]
|
|
57
|
+
b: [{source: dop_cache, band: 2}]
|
|
58
|
+
a: [{source: dop_cache, band: 2, factor: 0.25}]
|
|
59
|
+
|
|
60
|
+
dop_cache:
|
|
61
|
+
grids: [GLOBAL_WEBMERCATOR]
|
|
62
|
+
sources: [dop_wms]
|
|
63
|
+
|
|
64
|
+
sources:
|
|
65
|
+
dop_wms:
|
|
66
|
+
type: wms
|
|
67
|
+
req:
|
|
68
|
+
url: http://localhost:42423/
|
|
69
|
+
layers: dop
|
|
70
|
+
|
|
71
|
+
globals:
|
|
72
|
+
image:
|
|
73
|
+
paletted: false
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
services:
|
|
2
|
+
tms:
|
|
3
|
+
wms:
|
|
4
|
+
srs: ['EPSG:4326', 'EPSG:4258', 'CRS:84', 'EPSG:900913', 'EPSG:3857', 'EPSG:31466', 'EPSG:31467', 'EPSG:31468', 'EPSG:25831', 'EPSG:25832', 'EPSG:25833']
|
|
5
|
+
md:
|
|
6
|
+
title: test
|
|
7
|
+
|
|
8
|
+
layers:
|
|
9
|
+
- name: bulk
|
|
10
|
+
title: bulk
|
|
11
|
+
sources: [bulk_cache]
|
|
12
|
+
|
|
13
|
+
caches:
|
|
14
|
+
bulk_cache:
|
|
15
|
+
grids: [GLOBAL_MERCATOR]
|
|
16
|
+
meta_size: [2, 2]
|
|
17
|
+
bulk_meta_tiles: true
|
|
18
|
+
sources: [tms_source]
|
|
19
|
+
|
|
20
|
+
sources:
|
|
21
|
+
tms_source:
|
|
22
|
+
type: tile
|
|
23
|
+
url: http://localhost:42423/tiles/%(tc_path)s.png
|
|
24
|
+
|