MapProxy 4.1.2__tar.gz → 5.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (525) hide show
  1. {mapproxy-4.1.2 → mapproxy-5.1.0}/CHANGES.txt +37 -0
  2. {mapproxy-4.1.2 → mapproxy-5.1.0}/MapProxy.egg-info/PKG-INFO +40 -47
  3. {mapproxy-4.1.2 → mapproxy-5.1.0}/MapProxy.egg-info/requires.txt +2 -0
  4. {mapproxy-4.1.2 → mapproxy-5.1.0}/PKG-INFO +40 -47
  5. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/install.rst +7 -49
  6. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/sources.rst +8 -5
  7. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/cache/mbtiles.py +1 -1
  8. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/client/wms.py +2 -1
  9. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/config/config-schema.json +15 -3
  10. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/config/loader.py +9 -7
  11. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/config/spec.py +1 -0
  12. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/featureinfo.py +10 -16
  13. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/request/wms/__init__.py +3 -0
  14. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/layer.yaml +13 -0
  15. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_wms.py +26 -4
  16. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/test_conf_loader.py +10 -0
  17. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/test_conf_validator.py +7 -2
  18. {mapproxy-4.1.2 → mapproxy-5.1.0}/requirements-tests.txt +10 -10
  19. {mapproxy-4.1.2 → mapproxy-5.1.0}/setup.py +4 -2
  20. {mapproxy-4.1.2 → mapproxy-5.1.0}/AUTHORS.txt +0 -0
  21. {mapproxy-4.1.2 → mapproxy-5.1.0}/COPYING.txt +0 -0
  22. {mapproxy-4.1.2 → mapproxy-5.1.0}/LICENSE.txt +0 -0
  23. {mapproxy-4.1.2 → mapproxy-5.1.0}/MANIFEST.in +0 -0
  24. {mapproxy-4.1.2 → mapproxy-5.1.0}/MapProxy.egg-info/SOURCES.txt +0 -0
  25. {mapproxy-4.1.2 → mapproxy-5.1.0}/MapProxy.egg-info/dependency_links.txt +0 -0
  26. {mapproxy-4.1.2 → mapproxy-5.1.0}/MapProxy.egg-info/entry_points.txt +0 -0
  27. {mapproxy-4.1.2 → mapproxy-5.1.0}/MapProxy.egg-info/not-zip-safe +0 -0
  28. {mapproxy-4.1.2 → mapproxy-5.1.0}/MapProxy.egg-info/top_level.txt +0 -0
  29. {mapproxy-4.1.2 → mapproxy-5.1.0}/README.md +0 -0
  30. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/GM.txt +0 -0
  31. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/_static/logo.png +0 -0
  32. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/_static/logo_title.png +0 -0
  33. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/_static/mapproxy.css +0 -0
  34. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/_templates/versions.html +0 -0
  35. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/auth.rst +0 -0
  36. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/caches.rst +0 -0
  37. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/caching_layer_dimensions.rst +0 -0
  38. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/conf.py +0 -0
  39. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/configuration.rst +0 -0
  40. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/configuration_examples.rst +0 -0
  41. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/coverages.rst +0 -0
  42. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/decorate_img.rst +0 -0
  43. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/deployment.rst +0 -0
  44. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/development.rst +0 -0
  45. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/imgs/bicubic.png +0 -0
  46. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/imgs/bilinear.png +0 -0
  47. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/imgs/labeling-dynamic.png +0 -0
  48. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/imgs/labeling-meta-buffer.png +0 -0
  49. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/imgs/labeling-metatiling-buffer.png +0 -0
  50. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/imgs/labeling-metatiling.png +0 -0
  51. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/imgs/labeling-no-clip.png +0 -0
  52. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/imgs/labeling-no-placement.png +0 -0
  53. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/imgs/labeling-partial-false.png +0 -0
  54. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/imgs/labeling-repeated.png +0 -0
  55. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/imgs/mapnik-webmerc-hq.png +0 -0
  56. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/imgs/mapnik-webmerc.png +0 -0
  57. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/imgs/mapproxy-demo.png +0 -0
  58. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/imgs/nearest.png +0 -0
  59. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/index.rst +0 -0
  60. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/inspire.rst +0 -0
  61. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/install_docker.rst +0 -0
  62. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/install_osgeo4w.rst +0 -0
  63. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/install_windows.rst +0 -0
  64. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/labeling.rst +0 -0
  65. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/mapproxy_util.rst +0 -0
  66. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/mapproxy_util_autoconfig.rst +0 -0
  67. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/ogc_api.rst +0 -0
  68. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/plugins.rst +0 -0
  69. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/seed.rst +0 -0
  70. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/services.rst +0 -0
  71. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/tutorial.rst +0 -0
  72. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/tutorial.yaml +0 -0
  73. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/yaml/cache_conf.yaml +0 -0
  74. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/yaml/grid_conf.yaml +0 -0
  75. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/yaml/merged_conf.yaml +0 -0
  76. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/yaml/meta_conf.yaml +0 -0
  77. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/yaml/seed.yaml +0 -0
  78. {mapproxy-4.1.2 → mapproxy-5.1.0}/doc/yaml/simple_conf.yaml +0 -0
  79. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/__init__.py +0 -0
  80. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/cache/__init__.py +0 -0
  81. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/cache/azureblob.py +0 -0
  82. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/cache/base.py +0 -0
  83. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/cache/compact.py +0 -0
  84. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/cache/couchdb.py +0 -0
  85. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/cache/dummy.py +0 -0
  86. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/cache/file.py +0 -0
  87. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/cache/geopackage.py +0 -0
  88. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/cache/legend.py +0 -0
  89. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/cache/meta.py +0 -0
  90. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/cache/path.py +0 -0
  91. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/cache/redis.py +0 -0
  92. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/cache/renderd.py +0 -0
  93. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/cache/s3.py +0 -0
  94. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/cache/tile.py +0 -0
  95. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/client/__init__.py +0 -0
  96. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/client/arcgis.py +0 -0
  97. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/client/cgi.py +0 -0
  98. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/client/http.py +0 -0
  99. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/client/log.py +0 -0
  100. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/client/tile.py +0 -0
  101. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/compat/__init__.py +0 -0
  102. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/compat/image.py +0 -0
  103. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/config/__init__.py +0 -0
  104. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/config/config.py +0 -0
  105. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/config/coverage.py +0 -0
  106. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/config/defaults.py +0 -0
  107. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/config/validator.py +0 -0
  108. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/config_template/__init__.py +0 -0
  109. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/config_template/base_config/config.wsgi +0 -0
  110. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/config_template/base_config/full_example.yaml +0 -0
  111. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/config_template/base_config/full_seed_example.yaml +0 -0
  112. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/config_template/base_config/log.ini +0 -0
  113. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/config_template/base_config/mapproxy.yaml +0 -0
  114. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/config_template/base_config/seed.yaml +0 -0
  115. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/exception.py +0 -0
  116. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/grid/__init__.py +0 -0
  117. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/grid/meta_grid.py +0 -0
  118. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/grid/resolutions.py +0 -0
  119. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/grid/tile_grid.py +0 -0
  120. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/image/__init__.py +0 -0
  121. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/image/fonts/DejaVuSans.ttf +0 -0
  122. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/image/fonts/DejaVuSansMono.ttf +0 -0
  123. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/image/fonts/LICENSE +0 -0
  124. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/image/fonts/__init__.py +0 -0
  125. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/image/mask.py +0 -0
  126. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/image/merge.py +0 -0
  127. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/image/message.py +0 -0
  128. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/image/opts.py +0 -0
  129. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/image/tile.py +0 -0
  130. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/image/transform.py +0 -0
  131. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/layer.py +0 -0
  132. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/multiapp.py +0 -0
  133. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/proj.py +0 -0
  134. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/request/__init__.py +0 -0
  135. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/request/arcgis.py +0 -0
  136. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/request/base.py +0 -0
  137. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/request/tile.py +0 -0
  138. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/request/wms/exception.py +0 -0
  139. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/request/wmts.py +0 -0
  140. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/response.py +0 -0
  141. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/script/__init__.py +0 -0
  142. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/script/conf/__init__.py +0 -0
  143. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/script/conf/app.py +0 -0
  144. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/script/conf/caches.py +0 -0
  145. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/script/conf/geopackage.py +0 -0
  146. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/script/conf/layers.py +0 -0
  147. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/script/conf/seeds.py +0 -0
  148. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/script/conf/sources.py +0 -0
  149. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/script/conf/utils.py +0 -0
  150. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/script/defrag.py +0 -0
  151. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/script/export.py +0 -0
  152. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/script/grids.py +0 -0
  153. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/script/scales.py +0 -0
  154. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/script/util.py +0 -0
  155. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/script/wms_capabilities.py +0 -0
  156. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/seed/__init__.py +0 -0
  157. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/seed/cachelock.py +0 -0
  158. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/seed/cleanup.py +0 -0
  159. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/seed/config.py +0 -0
  160. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/seed/script.py +0 -0
  161. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/seed/seeder.py +0 -0
  162. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/seed/spec.py +0 -0
  163. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/seed/util.py +0 -0
  164. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/service/__init__.py +0 -0
  165. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/service/base.py +0 -0
  166. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/service/demo.py +0 -0
  167. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/service/kml.py +0 -0
  168. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/service/ows.py +0 -0
  169. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/service/template_helper.py +0 -0
  170. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/service/templates/demo/capabilities_demo.html +0 -0
  171. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/service/templates/demo/demo.html +0 -0
  172. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/service/templates/demo/openlayers-demo.cfg +0 -0
  173. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/service/templates/demo/static/img/blank.gif +0 -0
  174. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/service/templates/demo/static/img/east-mini.png +0 -0
  175. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/service/templates/demo/static/img/north-mini.png +0 -0
  176. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/service/templates/demo/static/img/south-mini.png +0 -0
  177. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/service/templates/demo/static/img/west-mini.png +0 -0
  178. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/service/templates/demo/static/img/zoom-minus-mini.png +0 -0
  179. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/service/templates/demo/static/img/zoom-plus-mini.png +0 -0
  180. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/service/templates/demo/static/img/zoom-world-mini.png +0 -0
  181. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/service/templates/demo/static/logo.png +0 -0
  182. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/service/templates/demo/static/ol.css +0 -0
  183. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/service/templates/demo/static/ol.js +0 -0
  184. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/service/templates/demo/static/proj4.min.js +0 -0
  185. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/service/templates/demo/static/proj4defs.js +0 -0
  186. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/service/templates/demo/static/site.css +0 -0
  187. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/service/templates/demo/static/theme/default/framedCloud.css +0 -0
  188. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/service/templates/demo/static/theme/default/google.css +0 -0
  189. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/service/templates/demo/static/theme/default/ie6-style.css +0 -0
  190. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/service/templates/demo/static/theme/default/style.css +0 -0
  191. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/service/templates/demo/static.html +0 -0
  192. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/service/templates/demo/tms_demo.html +0 -0
  193. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/service/templates/demo/wms_demo.html +0 -0
  194. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/service/templates/demo/wmts_demo.html +0 -0
  195. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/service/templates/ows_exception.xml +0 -0
  196. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/service/templates/tms_capabilities.xml +0 -0
  197. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/service/templates/tms_exception.xml +0 -0
  198. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/service/templates/tms_root_resource.xml +0 -0
  199. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/service/templates/tms_tilemap_capabilities.xml +0 -0
  200. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/service/templates/wms100capabilities.xml +0 -0
  201. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/service/templates/wms100exception.xml +0 -0
  202. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/service/templates/wms110capabilities.xml +0 -0
  203. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/service/templates/wms110exception.xml +0 -0
  204. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/service/templates/wms111capabilities.xml +0 -0
  205. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/service/templates/wms111exception.xml +0 -0
  206. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/service/templates/wms130capabilities.xml +0 -0
  207. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/service/templates/wms130exception.xml +0 -0
  208. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/service/templates/wmts100capabilities.xml +0 -0
  209. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/service/templates/wmts100exception.xml +0 -0
  210. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/service/tile.py +0 -0
  211. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/service/wms.py +0 -0
  212. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/service/wmts.py +0 -0
  213. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/source/__init__.py +0 -0
  214. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/source/arcgis.py +0 -0
  215. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/source/error.py +0 -0
  216. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/source/mapnik.py +0 -0
  217. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/source/tile.py +0 -0
  218. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/source/wms.py +0 -0
  219. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/srs.py +0 -0
  220. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/template.py +0 -0
  221. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/__init__.py +0 -0
  222. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/conftest.py +0 -0
  223. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/helper.py +0 -0
  224. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/http.py +0 -0
  225. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/image.py +0 -0
  226. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/mocker.py +0 -0
  227. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/inspire/common/1.0/common.xsd +0 -0
  228. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_bul.xsd +0 -0
  229. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_cze.xsd +0 -0
  230. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_dan.xsd +0 -0
  231. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_dut.xsd +0 -0
  232. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_eng.xsd +0 -0
  233. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_est.xsd +0 -0
  234. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_fin.xsd +0 -0
  235. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_fre.xsd +0 -0
  236. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_ger.xsd +0 -0
  237. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_gle.xsd +0 -0
  238. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_gre.xsd +0 -0
  239. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_hun.xsd +0 -0
  240. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_ita.xsd +0 -0
  241. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_lav.xsd +0 -0
  242. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_lit.xsd +0 -0
  243. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_mlt.xsd +0 -0
  244. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_pol.xsd +0 -0
  245. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_por.xsd +0 -0
  246. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_rum.xsd +0 -0
  247. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_slo.xsd +0 -0
  248. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_slv.xsd +0 -0
  249. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_spa.xsd +0 -0
  250. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_swe.xsd +0 -0
  251. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/inspire/common/1.0/network.xsd +0 -0
  252. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/inspire/inspire_vs/1.0/inspire_vs.xsd +0 -0
  253. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/kml/2.2.0/ReadMe.txt +0 -0
  254. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/kml/2.2.0/atom-author-link.xsd +0 -0
  255. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/kml/2.2.0/ogckml22.xsd +0 -0
  256. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/kml/2.2.0/xAL.xsd +0 -0
  257. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/ows/1.1.0/ReadMe.txt +0 -0
  258. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/ows/1.1.0/ows19115subset.xsd +0 -0
  259. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/ows/1.1.0/owsAll.xsd +0 -0
  260. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/ows/1.1.0/owsCommon.xsd +0 -0
  261. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/ows/1.1.0/owsContents.xsd +0 -0
  262. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/ows/1.1.0/owsDataIdentification.xsd +0 -0
  263. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/ows/1.1.0/owsDomainType.xsd +0 -0
  264. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/ows/1.1.0/owsExceptionReport.xsd +0 -0
  265. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/ows/1.1.0/owsGetCapabilities.xsd +0 -0
  266. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/ows/1.1.0/owsGetResourceByID.xsd +0 -0
  267. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/ows/1.1.0/owsInputOutputData.xsd +0 -0
  268. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/ows/1.1.0/owsManifest.xsd +0 -0
  269. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/ows/1.1.0/owsOperationsMetadata.xsd +0 -0
  270. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/ows/1.1.0/owsServiceIdentification.xsd +0 -0
  271. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/ows/1.1.0/owsServiceProvider.xsd +0 -0
  272. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/sld/1.1.0/sld_capabilities.xsd +0 -0
  273. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/wms/1.0.0/capabilities_1_0_0.dtd +0 -0
  274. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/wms/1.0.0/capabilities_1_0_0.xml +0 -0
  275. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/wms/1.0.7/capabilities_1_0_7.dtd +0 -0
  276. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/wms/1.0.7/capabilities_1_0_7.xml +0 -0
  277. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/wms/1.1.0/capabilities_1_1_0.dtd +0 -0
  278. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/wms/1.1.0/capabilities_1_1_0.xml +0 -0
  279. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/wms/1.1.0/exception_1_1_0.dtd +0 -0
  280. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/wms/1.1.0/exception_1_1_0.xml +0 -0
  281. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/wms/1.1.1/OGC-exception.xsd +0 -0
  282. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/wms/1.1.1/WMS_DescribeLayerResponse.dtd +0 -0
  283. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/wms/1.1.1/WMS_MS_Capabilities.dtd +0 -0
  284. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/wms/1.1.1/WMS_exception_1_1_1.dtd +0 -0
  285. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/wms/1.1.1/capabilities_1_1_1.dtd +0 -0
  286. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/wms/1.1.1/capabilities_1_1_1.xml +0 -0
  287. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/wms/1.1.1/exception_1_1_1.dtd +0 -0
  288. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/wms/1.1.1/exception_1_1_1.xml +0 -0
  289. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/wms/1.3.0/ReadMe.txt +0 -0
  290. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/wms/1.3.0/capabilities_1_3_0.xml +0 -0
  291. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/wms/1.3.0/capabilities_1_3_0.xsd +0 -0
  292. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/wms/1.3.0/exceptions_1_3_0.xml +0 -0
  293. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/wms/1.3.0/exceptions_1_3_0.xsd +0 -0
  294. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/wmsc/1.1.1/OGC-exception.xsd +0 -0
  295. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/wmsc/1.1.1/WMS_DescribeLayerResponse.dtd +0 -0
  296. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/wmsc/1.1.1/WMS_MS_Capabilities.dtd +0 -0
  297. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/wmsc/1.1.1/WMS_exception_1_1_1.dtd +0 -0
  298. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/wmsc/1.1.1/capabilities_1_1_1.dtd +0 -0
  299. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/wmsc/1.1.1/capabilities_1_1_1.xml +0 -0
  300. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/wmsc/1.1.1/exception_1_1_1.dtd +0 -0
  301. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/wmsc/1.1.1/exception_1_1_1.xml +0 -0
  302. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/wmts/1.0/ReadMe.txt +0 -0
  303. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/wmts/1.0/wmts.xsd +0 -0
  304. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/wmts/1.0/wmtsAbstract.wsdl +0 -0
  305. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/wmts/1.0/wmtsGetCapabilities_request.xsd +0 -0
  306. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/wmts/1.0/wmtsGetCapabilities_response.xsd +0 -0
  307. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/wmts/1.0/wmtsGetFeatureInfo_request.xsd +0 -0
  308. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/wmts/1.0/wmtsGetFeatureInfo_response.xsd +0 -0
  309. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/wmts/1.0/wmtsGetTile_request.xsd +0 -0
  310. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/wmts/1.0/wmtsKVP.xsd +0 -0
  311. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/wmts/1.0/wmtsPayload_response.xsd +0 -0
  312. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/xlink/1.0.0/ReadMe.txt +0 -0
  313. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/xlink/1.0.0/xlinks.xsd +0 -0
  314. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/schemas/xml.xsd +0 -0
  315. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/__init__.py +0 -0
  316. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/arcgis.yaml +0 -0
  317. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/auth.yaml +0 -0
  318. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/cache.mbtiles +0 -0
  319. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/cache_azureblob.yaml +0 -0
  320. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/cache_band_merge.yaml +0 -0
  321. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/cache_bulk_meta_tiles.yaml +0 -0
  322. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/cache_coverage.yaml +0 -0
  323. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/cache_data/dop_cache_EPSG3857/00/000/000/000/000/000/000.png +0 -0
  324. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/cache_data/wms_cache_EPSG900913/01/000/000/000/000/000/001.jpeg +0 -0
  325. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/cache_data/wms_cache_transparent_EPSG900913/01/000/000/000/000/000/001.png +0 -0
  326. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/cache_geopackage.yaml +0 -0
  327. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/cache_grid_names.yaml +0 -0
  328. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/cache_mbtiles.yaml +0 -0
  329. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/cache_s3.yaml +0 -0
  330. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/cache_source.yaml +0 -0
  331. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/combined_sources.yaml +0 -0
  332. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/coverage.yaml +0 -0
  333. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/demo.yaml +0 -0
  334. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/dimension.yaml +0 -0
  335. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/disable_storage.yaml +0 -0
  336. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/empty_ogrdata.geojson +0 -0
  337. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/formats.yaml +0 -0
  338. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/inspire.yaml +0 -0
  339. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/inspire_full.yaml +0 -0
  340. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/kml_layer.yaml +0 -0
  341. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/layergroups.yaml +0 -0
  342. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/layergroups_root.yaml +0 -0
  343. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/legendgraphic.yaml +0 -0
  344. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/mapnik_source.yaml +0 -0
  345. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/mapproxy_export.yaml +0 -0
  346. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/mapserver.yaml +0 -0
  347. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/minimal_cgi.py +0 -0
  348. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/mixed_mode.yaml +0 -0
  349. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/multi_cache_layers.yaml +0 -0
  350. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/multiapp1.yaml +0 -0
  351. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/multiapp2.yaml +0 -0
  352. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/renderd_client.yaml +0 -0
  353. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/scalehints.yaml +0 -0
  354. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/seed.yaml +0 -0
  355. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/seed_mapproxy.yaml +0 -0
  356. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/seed_timeouts.yaml +0 -0
  357. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/seed_timeouts_mapproxy.yaml +0 -0
  358. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/seedonly.yaml +0 -0
  359. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/sld.yaml +0 -0
  360. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/source_errors.yaml +0 -0
  361. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/source_errors_raise.yaml +0 -0
  362. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/tileservice_origin.yaml +0 -0
  363. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/tileservice_refresh.yaml +0 -0
  364. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/tilesource_minmax_res.yaml +0 -0
  365. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/util-conf-base-grids.yaml +0 -0
  366. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/util-conf-overwrite.yaml +0 -0
  367. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/util-conf-wms-111-cap.xml +0 -0
  368. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/util_grids.yaml +0 -0
  369. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/util_wms_capabilities111.xml +0 -0
  370. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/util_wms_capabilities130.xml +0 -0
  371. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/util_wms_capabilities_service_exception.xml +0 -0
  372. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/watermark.yaml +0 -0
  373. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/wms_srs_extent.yaml +0 -0
  374. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/wms_versions.yaml +0 -0
  375. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/wmts.yaml +0 -0
  376. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/wmts_dimensions.yaml +0 -0
  377. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/xslt_featureinfo.yaml +0 -0
  378. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/fixture/xslt_featureinfo_input.yaml +0 -0
  379. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_arcgis.py +0 -0
  380. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_auth.py +0 -0
  381. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_behind_proxy.py +0 -0
  382. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_bulk_meta_tiles.py +0 -0
  383. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_cache_azureblob.py +0 -0
  384. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_cache_band_merge.py +0 -0
  385. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_cache_coverage.py +0 -0
  386. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_cache_geopackage.py +0 -0
  387. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_cache_grid_names.py +0 -0
  388. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_cache_mbtiles.py +0 -0
  389. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_cache_s3.py +0 -0
  390. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_cache_source.py +0 -0
  391. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_combined_sources.py +0 -0
  392. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_coverage.py +0 -0
  393. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_decorate_img.py +0 -0
  394. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_demo.py +0 -0
  395. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_demo_with_extra_service.py +0 -0
  396. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_dimensions.py +0 -0
  397. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_disable_storage.py +0 -0
  398. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_formats.py +0 -0
  399. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_inspire_vs.py +0 -0
  400. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_kml.py +0 -0
  401. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_layergroups.py +0 -0
  402. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_legendgraphic.py +0 -0
  403. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_mapnik.py +0 -0
  404. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_mapserver.py +0 -0
  405. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_mixed_mode_format.py +0 -0
  406. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_multi_cache_layers.py +0 -0
  407. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_multiapp.py +0 -0
  408. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_refresh.py +0 -0
  409. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_renderd_client.py +0 -0
  410. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_response_headers.py +0 -0
  411. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_scalehints.py +0 -0
  412. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_seed.py +0 -0
  413. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_seed_only.py +0 -0
  414. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_sld.py +0 -0
  415. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_source_errors.py +0 -0
  416. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_tilesource_minmax_res.py +0 -0
  417. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_tms.py +0 -0
  418. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_tms_origin.py +0 -0
  419. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_util_conf.py +0 -0
  420. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_util_export.py +0 -0
  421. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_util_grids.py +0 -0
  422. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_util_wms_capabilities.py +0 -0
  423. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_watermark.py +0 -0
  424. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_wms_srs_extent.py +0 -0
  425. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_wms_version.py +0 -0
  426. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_wmsc.py +0 -0
  427. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_wmts.py +0 -0
  428. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_wmts_dimensions.py +0 -0
  429. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_wmts_restful.py +0 -0
  430. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/system/test_xslt_featureinfo.py +0 -0
  431. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/test_http_helper.py +0 -0
  432. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/__init__.py +0 -0
  433. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/epsg +0 -0
  434. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/polygons/polygons.dbf +0 -0
  435. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/polygons/polygons.shp +0 -0
  436. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/polygons/polygons.shx +0 -0
  437. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/test_async.py +0 -0
  438. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/test_auth.py +0 -0
  439. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/test_cache.py +0 -0
  440. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/test_cache_azureblob.py +0 -0
  441. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/test_cache_compact.py +0 -0
  442. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/test_cache_couchdb.py +0 -0
  443. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/test_cache_geopackage.py +0 -0
  444. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/test_cache_mbtile.py +0 -0
  445. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/test_cache_redis.py +0 -0
  446. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/test_cache_s3.py +0 -0
  447. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/test_cache_tile.py +0 -0
  448. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/test_client.py +0 -0
  449. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/test_client_arcgis.py +0 -0
  450. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/test_client_cgi.py +0 -0
  451. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/test_collections.py +0 -0
  452. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/test_concat_legends.py +0 -0
  453. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/test_config.py +0 -0
  454. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/test_decorate_img.py +0 -0
  455. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/test_exceptions.py +0 -0
  456. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/test_featureinfo.py +0 -0
  457. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/test_file_lock_load.py +0 -0
  458. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/test_fs.py +0 -0
  459. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/test_geom.py +0 -0
  460. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/test_grid.py +0 -0
  461. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/test_image.py +0 -0
  462. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/test_image_mask.py +0 -0
  463. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/test_image_messages.py +0 -0
  464. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/test_image_options.py +0 -0
  465. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/test_isodate.py +0 -0
  466. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/test_multiapp.py +0 -0
  467. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/test_ogr_reader.py +0 -0
  468. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/test_request.py +0 -0
  469. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/test_request_wmts.py +0 -0
  470. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/test_response.py +0 -0
  471. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/test_seed.py +0 -0
  472. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/test_seed_cachelock.py +0 -0
  473. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/test_srs.py +0 -0
  474. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/test_tiled_source.py +0 -0
  475. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/test_tilefilter.py +0 -0
  476. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/test_times.py +0 -0
  477. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/test_timeutils.py +0 -0
  478. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/test_util_conf_utils.py +0 -0
  479. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/test_utils.py +0 -0
  480. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/test_wms_capabilities.py +0 -0
  481. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/test_wms_layer.py +0 -0
  482. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/test/unit/test_yaml.py +0 -0
  483. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/tilefilter.py +0 -0
  484. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/util/__init__.py +0 -0
  485. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/util/async_.py +0 -0
  486. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/util/bbox.py +0 -0
  487. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/util/collections.py +0 -0
  488. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/util/coverage.py +0 -0
  489. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/util/escape.py +0 -0
  490. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/util/ext/__init__.py +0 -0
  491. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/util/ext/dictspec/__init__.py +0 -0
  492. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/util/ext/dictspec/spec.py +0 -0
  493. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/util/ext/dictspec/test/__init__.py +0 -0
  494. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/util/ext/dictspec/test/test_validator.py +0 -0
  495. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/util/ext/dictspec/validator.py +0 -0
  496. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/util/ext/local.py +0 -0
  497. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/util/ext/lockfile.py +0 -0
  498. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/util/ext/serving.py +0 -0
  499. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/util/ext/tempita/__init__.py +0 -0
  500. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/util/ext/tempita/_looper.py +0 -0
  501. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/util/ext/tempita/string_utils.py +0 -0
  502. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/util/ext/wmsparse/__init__.py +0 -0
  503. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/util/ext/wmsparse/duration.py +0 -0
  504. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/util/ext/wmsparse/parse.py +0 -0
  505. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/util/ext/wmsparse/test/__init__.py +0 -0
  506. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/util/ext/wmsparse/test/test_parse.py +0 -0
  507. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/util/ext/wmsparse/test/test_util.py +0 -0
  508. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/util/ext/wmsparse/test/wms-example-111.xml +0 -0
  509. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/util/ext/wmsparse/test/wms-example-130.xml +0 -0
  510. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/util/ext/wmsparse/test/wms-large-111.xml +0 -0
  511. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/util/ext/wmsparse/test/wms_nasa_cap.xml +0 -0
  512. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/util/ext/wmsparse/util.py +0 -0
  513. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/util/fs.py +0 -0
  514. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/util/geom.py +0 -0
  515. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/util/lib.py +0 -0
  516. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/util/lock.py +0 -0
  517. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/util/ogr.py +0 -0
  518. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/util/py.py +0 -0
  519. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/util/sqlite3.py +0 -0
  520. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/util/times.py +0 -0
  521. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/util/yaml.py +0 -0
  522. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/version.py +0 -0
  523. {mapproxy-4.1.2 → mapproxy-5.1.0}/mapproxy/wsgiapp.py +0 -0
  524. {mapproxy-4.1.2 → mapproxy-5.1.0}/pyproject.toml +0 -0
  525. {mapproxy-4.1.2 → mapproxy-5.1.0}/setup.cfg +0 -0
@@ -1,3 +1,40 @@
1
+ 5.1.0 2025-09-30
2
+ ~~~~~~~~~~~~~~~~
3
+
4
+ Improvements:
5
+
6
+ - Added `query_layers` option to `wms_opts` to be able to configure the `QUERY_LAYERS` of the wms request
7
+ - Added workflow to republish docker images if the base image changed, i.e. for security updates
8
+
9
+ Maintenance:
10
+
11
+ - Fixed some spelling and debug output
12
+ - Updated various dependencies
13
+
14
+ Fixes:
15
+
16
+ - Fixes some errors in the json schema regarding `use_direct_level_from` and `use_direct_res_from`
17
+ - Fixes an error with merging resolutions of grids
18
+
19
+
20
+ 5.0.0 2025-06-18
21
+ ~~~~~~~~~~~~~~~~
22
+
23
+ Breaking:
24
+
25
+ - The dependencies lxml, shapely, pyproj, gdal and PyYAML are no longer optional
26
+
27
+ Maintenance:
28
+
29
+ - By default lxml, shapely, pyproj, Pillow and PyYAML are now installed via pip and are not recommended to be installed
30
+ as apt packages anymore
31
+
32
+ Fixes:
33
+
34
+ - The alpine image uses the python3 plugin for uwsgi correctly
35
+ - An lxml encoding error is fixed
36
+
37
+
1
38
  4.1.2 2025-05-27
2
39
  ~~~~~~~~~~~~~~~~
3
40
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: MapProxy
3
- Version: 4.1.2
3
+ Version: 5.1.0
4
4
  Summary: An accelerating proxy for tile and web map services
5
5
  Home-page: https://mapproxy.org
6
6
  Author: Oliver Tonnhofer
@@ -34,6 +34,8 @@ Requires-Dist: Pillow>=9; python_version == "3.10"
34
34
  Requires-Dist: Pillow>=10; python_version == "3.11"
35
35
  Requires-Dist: Pillow>=10.1; python_version == "3.12"
36
36
  Requires-Dist: Pillow>=11; python_version == "3.13"
37
+ Requires-Dist: lxml>=4
38
+ Requires-Dist: shapely>=2
37
39
  Dynamic: author
38
40
  Dynamic: author-email
39
41
  Dynamic: classifier
@@ -59,6 +61,43 @@ The documentation is available at: http://mapproxy.github.io/mapproxy/latest/
59
61
 
60
62
  Changes
61
63
  -------
64
+ 5.1.0 2025-09-30
65
+ ~~~~~~~~~~~~~~~~
66
+
67
+ Improvements:
68
+
69
+ - Added `query_layers` option to `wms_opts` to be able to configure the `QUERY_LAYERS` of the wms request
70
+ - Added workflow to republish docker images if the base image changed, i.e. for security updates
71
+
72
+ Maintenance:
73
+
74
+ - Fixed some spelling and debug output
75
+ - Updated various dependencies
76
+
77
+ Fixes:
78
+
79
+ - Fixes some errors in the json schema regarding `use_direct_level_from` and `use_direct_res_from`
80
+ - Fixes an error with merging resolutions of grids
81
+
82
+
83
+ 5.0.0 2025-06-18
84
+ ~~~~~~~~~~~~~~~~
85
+
86
+ Breaking:
87
+
88
+ - The dependencies lxml, shapely, pyproj, gdal and PyYAML are no longer optional
89
+
90
+ Maintenance:
91
+
92
+ - By default lxml, shapely, pyproj, Pillow and PyYAML are now installed via pip and are not recommended to be installed
93
+ as apt packages anymore
94
+
95
+ Fixes:
96
+
97
+ - The alpine image uses the python3 plugin for uwsgi correctly
98
+ - An lxml encoding error is fixed
99
+
100
+
62
101
  4.1.2 2025-05-27
63
102
  ~~~~~~~~~~~~~~~~
64
103
 
@@ -127,52 +166,6 @@ Fixes:
127
166
  - WMTS Demo now works if kvp is disabled
128
167
 
129
168
 
130
- 4.0.0 2025-03-21
131
- ~~~~~~~~~~~~~~~~
132
-
133
- Breaking:
134
- - Removed legacy seed configuration.
135
- - Removed Python 3.8 support.
136
- - Removed riak support as the client library is not maintained anymore. If you rely on the riak support you have to
137
- continue to use version 3.1.3 with Python 3.8.
138
-
139
- Improvements:
140
-
141
- - The tile removal and refresh code is improved by simplifying the usage of `remove_timestamp` and `before_timestamp`
142
- and complementing them by new `remove_all` and `refresh_all` parameters.
143
- - Add a default logging config to the docker images.
144
- - Add environment variables to the docker images to enable and configure multiapp support.
145
- - Added a docker compose file to make it easy to run & build docker images and to use as reference.
146
- - Updated and improved the documentation about usage of the docker images.
147
-
148
- Maintenance:
149
-
150
- - Use python build instead of invoking setup.py.
151
- - Removal of the six library.
152
- - Removed array initializers in function signatures.
153
-
154
- Fixes:
155
-
156
- - Added `AdminstrativeArea` to WMTS serviceprovider metadata.
157
- - Fixed spelling & grammar in seed.rst.
158
- - Fixed problem with combined usage of `coverage` and the `remove_all` cache config parameters.
159
- - Fixed missing dimension parameters in the `remove_tile` functions of various caches.
160
-
161
-
162
- 3.1.3 2024-11-26
163
- ~~~~~~~~~~~~~~~~
164
-
165
- Maintenance:
166
-
167
- - Several dependencies for the tests and GitHub actions have been updated
168
- - Spelling and grammar mistakes in the documentation corrected
169
-
170
- Fixes:
171
-
172
- - The chmod to update file permissions is now only called if the file was freshly created
173
- - A bug with clipping polygons that become multi polygons due to the clipping is now fixed
174
-
175
-
176
169
 
177
170
  Older changes
178
171
  -------------
@@ -3,6 +3,8 @@ future
3
3
  pyproj>=2
4
4
  jsonschema>=4
5
5
  werkzeug<4
6
+ lxml>=4
7
+ shapely>=2
6
8
 
7
9
  [:python_version == "3.10"]
8
10
  Pillow>=9
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: MapProxy
3
- Version: 4.1.2
3
+ Version: 5.1.0
4
4
  Summary: An accelerating proxy for tile and web map services
5
5
  Home-page: https://mapproxy.org
6
6
  Author: Oliver Tonnhofer
@@ -34,6 +34,8 @@ Requires-Dist: Pillow>=9; python_version == "3.10"
34
34
  Requires-Dist: Pillow>=10; python_version == "3.11"
35
35
  Requires-Dist: Pillow>=10.1; python_version == "3.12"
36
36
  Requires-Dist: Pillow>=11; python_version == "3.13"
37
+ Requires-Dist: lxml>=4
38
+ Requires-Dist: shapely>=2
37
39
  Dynamic: author
38
40
  Dynamic: author-email
39
41
  Dynamic: classifier
@@ -59,6 +61,43 @@ The documentation is available at: http://mapproxy.github.io/mapproxy/latest/
59
61
 
60
62
  Changes
61
63
  -------
64
+ 5.1.0 2025-09-30
65
+ ~~~~~~~~~~~~~~~~
66
+
67
+ Improvements:
68
+
69
+ - Added `query_layers` option to `wms_opts` to be able to configure the `QUERY_LAYERS` of the wms request
70
+ - Added workflow to republish docker images if the base image changed, i.e. for security updates
71
+
72
+ Maintenance:
73
+
74
+ - Fixed some spelling and debug output
75
+ - Updated various dependencies
76
+
77
+ Fixes:
78
+
79
+ - Fixes some errors in the json schema regarding `use_direct_level_from` and `use_direct_res_from`
80
+ - Fixes an error with merging resolutions of grids
81
+
82
+
83
+ 5.0.0 2025-06-18
84
+ ~~~~~~~~~~~~~~~~
85
+
86
+ Breaking:
87
+
88
+ - The dependencies lxml, shapely, pyproj, gdal and PyYAML are no longer optional
89
+
90
+ Maintenance:
91
+
92
+ - By default lxml, shapely, pyproj, Pillow and PyYAML are now installed via pip and are not recommended to be installed
93
+ as apt packages anymore
94
+
95
+ Fixes:
96
+
97
+ - The alpine image uses the python3 plugin for uwsgi correctly
98
+ - An lxml encoding error is fixed
99
+
100
+
62
101
  4.1.2 2025-05-27
63
102
  ~~~~~~~~~~~~~~~~
64
103
 
@@ -127,52 +166,6 @@ Fixes:
127
166
  - WMTS Demo now works if kvp is disabled
128
167
 
129
168
 
130
- 4.0.0 2025-03-21
131
- ~~~~~~~~~~~~~~~~
132
-
133
- Breaking:
134
- - Removed legacy seed configuration.
135
- - Removed Python 3.8 support.
136
- - Removed riak support as the client library is not maintained anymore. If you rely on the riak support you have to
137
- continue to use version 3.1.3 with Python 3.8.
138
-
139
- Improvements:
140
-
141
- - The tile removal and refresh code is improved by simplifying the usage of `remove_timestamp` and `before_timestamp`
142
- and complementing them by new `remove_all` and `refresh_all` parameters.
143
- - Add a default logging config to the docker images.
144
- - Add environment variables to the docker images to enable and configure multiapp support.
145
- - Added a docker compose file to make it easy to run & build docker images and to use as reference.
146
- - Updated and improved the documentation about usage of the docker images.
147
-
148
- Maintenance:
149
-
150
- - Use python build instead of invoking setup.py.
151
- - Removal of the six library.
152
- - Removed array initializers in function signatures.
153
-
154
- Fixes:
155
-
156
- - Added `AdminstrativeArea` to WMTS serviceprovider metadata.
157
- - Fixed spelling & grammar in seed.rst.
158
- - Fixed problem with combined usage of `coverage` and the `remove_all` cache config parameters.
159
- - Fixed missing dimension parameters in the `remove_tile` functions of various caches.
160
-
161
-
162
- 3.1.3 2024-11-26
163
- ~~~~~~~~~~~~~~~~
164
-
165
- Maintenance:
166
-
167
- - Several dependencies for the tests and GitHub actions have been updated
168
- - Spelling and grammar mistakes in the documentation corrected
169
-
170
- Fixes:
171
-
172
- - The chmod to update file permissions is now only called if the file was freshly created
173
- - A bug with clipping polygons that become multi polygons due to the clipping is now fixed
174
-
175
-
176
169
 
177
170
  Older changes
178
171
  -------------
@@ -41,64 +41,22 @@ Install Dependencies
41
41
 
42
42
  MapProxy is written in Python, thus you will need a working Python installation. MapProxy works with Python 3.9 or higher, which should already be installed with most Linux distributions.
43
43
 
44
- MapProxy requires a few third-party libraries that are required to run. There are different ways to install each dependency. Read :ref:`dependency_details` for a list of all required and optional dependencies.
44
+ MapProxy requires a few third-party libraries that are required to run.
45
45
 
46
46
  Installation
47
47
  ^^^^^^^^^^^^
48
48
 
49
49
  On a Debian or Ubuntu system, you need to install the following packages::
50
50
 
51
- sudo apt-get install python3-pil python3-yaml python3-pyproj
51
+ sudo apt-get install libgeos-dev libgdal-dev libxml2-dev libxslt-dev
52
52
 
53
- To get all optional packages::
53
+ Additional dependencies are installed automatically via pip when running `pip install MapProxy`. It is possible to use
54
+ apt packages for some dependencies instead, pip will detect them if they are already installed and can be used. The apt
55
+ packages will only work if the python version you are using is the same as the system wide installed python. The system
56
+ packages can be quite old, so this is **not recommended**::
54
57
 
55
- sudo apt-get install libgeos-dev python3-lxml libgdal-dev python3-dev python3-shapely
58
+ sudo apt-get install python3-dev python3-pil python3-yaml python3-pyproj python3-lxml python3-shapely
56
59
 
57
- .. _dependency_details:
58
-
59
- Dependency details
60
- ^^^^^^^^^^^^^^^^^^
61
-
62
- pyproj or libproj
63
- ~~~~~~~~~~~~~~~~~
64
-
65
- MapProxy uses the PROJ C library for all coordinate transformation tasks. MapProxy can directly use the C library or via the pyproj Python package.
66
- The internal API of PROJ was updated with PROJ >=5. The old PROJ 4 API is now deprecated and will be removed from future PROJ releases. MapProxy only supports the new API via pyproj and it is therefore recommended to use a recent pyproj version.
67
-
68
-
69
- .. versionchanged:: 1.13
70
- Support for new PROJ API via pyproj.
71
-
72
-
73
- .. _dependencies_pil:
74
-
75
- Pillow
76
- ~~~~~~
77
- Pillow, the successor of the Python Image Library (PIL), is used for the image processing and it is included in most distributions as ``python-pil`` or ``python-imaging``. Please make sure that you have Pillow installed as MapProxy is no longer compatible with the original PIL. The version of ``python-imaging`` should be >=3.1.
78
-
79
- You can install a new version of Pillow from source with::
80
-
81
- sudo apt-get install build-essential python-dev libjpeg-dev \
82
- zlib1g-dev libfreetype6-dev
83
- pip install Pillow
84
-
85
-
86
- Shapely and GEOS *(optional)*
87
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
88
- You will need Shapely to use the :doc:`coverage feature <coverages>` of MapProxy. Shapely offers Python bindings for the GEOS library. You need Shapely (``python-shapely``) and GEOS (``libgeos-dev``). You can install Shapely as a Python package with ``pip install Shapely`` if you system does not provide a recent (>= 1.8) version of Shapely.
89
-
90
- GDAL *(optional)*
91
- ~~~~~~~~~~~~~~~~~
92
- The :doc:`coverage feature <coverages>` allows you to read geometries from OGR datasources (Shapefiles, PostGIS, etc.). This package is optional and only required for OGR datasource support (BBOX, WKT and GeoJSON coverages are supported natively). OGR is part of GDAL (``libgdal-dev``).
93
-
94
- .. _lxml_install:
95
-
96
- lxml *(optional)*
97
- ~~~~~~~~~~~~~~~~~
98
-
99
- `lxml`_ is used for more advanced WMS FeatureInformation operations like XSL transformation or the concatenation of multiple XML/HTML documents. It is available as ``python-lxml``.
100
-
101
- .. _`lxml`: http://lxml.de
102
60
 
103
61
  Install MapProxy
104
62
  ----------------
@@ -93,6 +93,9 @@ This option affects what request MapProxy sends to the source WMS server.
93
93
  ``featureinfo_out_format``
94
94
  Output format returned by the XSLT script. By default MapProxy will use ``featureinfo_format``.
95
95
 
96
+ ``query_layers``
97
+ The ``QUERY_LAYERS`` for FeatureInfo requests. By default MapProxy will use the same as the LAYERS param.
98
+
96
99
  .. versionadded:: 1.12.0
97
100
  ``featureinfo_out_format``
98
101
 
@@ -120,7 +123,7 @@ Disable this source in regular mode. If set to ``true``, this source will always
120
123
 
121
124
  Limit the source to the given min and max resolution or scale. MapProxy will return a blank image for requests outside of these boundaries (``min_res`` is inclusive, ``max_res`` exclusive). You can use either the resolution or the scale values, missing values will be interpreted as `unlimited`. Resolutions should be in meters per pixel.
122
125
 
123
- The values will also apear in the capabilities documents (i.e. WMS ScaleHint and Min/MaxScaleDenominator). The boundaries will be regarded for each source, but the values in the capabilities might differ if you combine multiple sources or if the MapProxy layer already has a ``min/max_res`` configuration.
126
+ The values will also appear in the capabilities documents (i.e. WMS ScaleHint and Min/MaxScaleDenominator). The boundaries will be regarded for each source, but the values in the capabilities might differ if you combine multiple sources or if the MapProxy layer already has a ``min/max_res`` configuration.
124
127
 
125
128
  Please read :ref:`scale vs. resolution <scale_resolution>` for some notes on `scale`.
126
129
 
@@ -133,7 +136,7 @@ A list with SRSs that the WMS source supports. MapProxy will only query the sour
133
136
 
134
137
  You don't need to configure this if you only use this WMS as a cache source and the WMS supports all SRS of the cache.
135
138
 
136
- If MapProxy needs to reproject and the source has multiple ``supported_srs``, then it will use the first projected SRS for requests in a projected SRS, or the first geographic SRS for requests in a geographic SRS. E.g when ``supported_srs`` is ``['EPSG:4326', 'EPSG:31467']`` caches with EPSG:3857 (projected, meter) will use EPSG:31467 (projected, meter) and not EPSG:4326 (geographic, lat/long).
139
+ If MapProxy needs to reproject and the source has multiple ``supported_srs``, then it will use the first projected SRS for requests in a projected SRS, or the first geographic SRS for requests in a geographic SRS e.g. when ``supported_srs`` is ``['EPSG:4326', 'EPSG:31467']`` caches with EPSG:3857 (projected, meter) will use EPSG:31467 (projected, meter) and not EPSG:4326 (geographic, lat/long).
137
140
 
138
141
  .. .. note:: For the configuration of SRS for MapProxy see `srs_configuration`_.
139
142
 
@@ -162,7 +165,7 @@ See :ref:`image_options` for other options.
162
165
 
163
166
  ``transparent_color_tolerance``
164
167
 
165
- Tolerance for the ``transparent_color`` substitution. The value defines the tolerance in each direction. E.g. a tolerance of 5 and a color value of 100 will convert colors in the range of 95 to 105.
168
+ Tolerance for the ``transparent_color`` substitution. The value defines the tolerance in each direction e.g. a tolerance of 5 and a color value of 100 will convert colors in the range of 95 to 105.
166
169
 
167
170
  .. code-block:: yaml
168
171
 
@@ -250,7 +253,7 @@ You need to enable ``transparent`` for your source, if you use ``on_error`` resp
250
253
 
251
254
  ``authorize_stale``
252
255
 
253
- Set this to ``True`` if MapProxy should serve in priority stale tiles present in cache. If the specified source error occurs, MapProxy will serve a stale tile which is still in cache instead of the error reponse, even if the tile in cache should be refreshed according to refresh_before date. Otherwise (``False``) MapProxy will serve the unicolor error response defined by the error handler if the source is faulty and the tile is not in cache, or is stale.
256
+ Set this to ``True`` if MapProxy should serve in priority stale tiles present in cache. If the specified source error occurs, MapProxy will serve a stale tile which is still in cache instead of the error response, even if the tile in cache should be refreshed according to refresh_before date. Otherwise (``False``) MapProxy will serve the unicolor error response defined by the error handler if the source is faulty and the tile is not in cache, or is stale.
254
257
 
255
258
  You need to enable ``transparent`` for your source, if you use ``on_error`` responses with transparency.
256
259
 
@@ -398,7 +401,7 @@ ImageServer example:
398
401
  Tiles
399
402
  """""
400
403
 
401
- Use the type ``tile`` to request data from from existing tile servers like TileCache and GeoWebCache. You can also use this source cascade MapProxy installations.
404
+ Use the type ``tile`` to request data from existing tile servers like TileCache and GeoWebCache. You can also use this source cascade MapProxy installations.
402
405
 
403
406
  ``url``
404
407
  ^^^^^^^
@@ -117,7 +117,7 @@ class MBTilesCache(TileCacheBase):
117
117
 
118
118
  if self.file_permissions:
119
119
  permission = int(self.file_permissions, base=8)
120
- log.info("setting file permissions on MBTile file: ", permission)
120
+ log.info("setting file permissions on MBTile file: %s", permission)
121
121
  os.chmod(self.mbtile_file, permission)
122
122
 
123
123
  def update_metadata(self, name='', description='', version=1, overlay=True, format='png'):
@@ -180,7 +180,8 @@ class WMSInfoClient(object):
180
180
  req.params.pos = query.pos
181
181
  if query.feature_count:
182
182
  req.params['feature_count'] = query.feature_count
183
- req.params['query_layers'] = req.params['layers']
183
+ if 'query_layers' not in req.params:
184
+ req.params['query_layers'] = req.params['layers']
184
185
  if 'info_format' not in req.params and query.info_format:
185
186
  req.params['info_format'] = query.info_format
186
187
  if not req.params.format:
@@ -578,11 +578,11 @@
578
578
  },
579
579
  "use_direct_from_level": {
580
580
  "description": "Requests below this level will not be stored",
581
- "type": "boolean"
581
+ "type": "integer"
582
582
  },
583
583
  "use_direct_from_res": {
584
584
  "description": "Requests below this resolution will not be stored",
585
- "type": "boolean"
585
+ "type": "number"
586
586
  },
587
587
  "upscale_tiles": {
588
588
  "description": "Upscale tiles by this many zoom levels if not available in cache",
@@ -674,8 +674,20 @@
674
674
  "req": {
675
675
  "title": "req",
676
676
  "type": "object"
677
+ },
678
+ "wms_opts": {
679
+ "title": "wms_opts",
680
+ "type": "object",
681
+ "properties": {
682
+ "featureinfo": {
683
+ "type": "boolean"
684
+ },
685
+ "query_layers": {
686
+ "type": "string"
687
+ }
688
+ }
677
689
  }
678
- },
690
+ },
679
691
  "required": ["req"]
680
692
  }
681
693
  ]
@@ -17,6 +17,9 @@
17
17
  Configuration loading and system initializing.
18
18
  """
19
19
  from __future__ import division
20
+
21
+ import json
22
+
20
23
  from mapproxy.util.fs import find_exec
21
24
  from mapproxy.util.yaml import load_yaml_file, YAMLError
22
25
  from mapproxy.util.py import memoize
@@ -749,12 +752,10 @@ class WMSSourceConfiguration(SourceConfiguration):
749
752
  return WMSLegendSource([lg_client], legend_cache, static=True)
750
753
 
751
754
  def fi_xslt_transformer(self, conf, context):
752
- from mapproxy.featureinfo import XSLTransformer, has_xslt_support
755
+ from mapproxy.featureinfo import XSLTransformer
753
756
  fi_transformer = None
754
757
  fi_xslt = conf.get('featureinfo_xslt')
755
758
  if fi_xslt:
756
- if not has_xslt_support:
757
- raise ValueError('featureinfo_xslt requires lxml. Please install.')
758
759
  fi_xslt = context.globals.abspath(fi_xslt)
759
760
  fi_format = conf.get('featureinfo_out_format')
760
761
  if not fi_format:
@@ -864,6 +865,8 @@ class WMSSourceConfiguration(SourceConfiguration):
864
865
  version = wms_opts.get('version', '1.1.1')
865
866
  if 'featureinfo_format' in wms_opts:
866
867
  params['info_format'] = wms_opts['featureinfo_format']
868
+ if 'query_layers' in wms_opts:
869
+ params['query_layers'] = wms_opts['query_layers']
867
870
  fi_request = create_request(self.conf['req'], params,
868
871
  req_type='featureinfo', version=version,
869
872
  abspath=self.context.globals.abspath)
@@ -2098,12 +2101,10 @@ class LayerConfiguration(ConfigurationBase):
2098
2101
 
2099
2102
 
2100
2103
  def fi_xslt_transformers(conf, context):
2101
- from mapproxy.featureinfo import XSLTransformer, has_xslt_support
2104
+ from mapproxy.featureinfo import XSLTransformer
2102
2105
  fi_transformers = {}
2103
2106
  fi_xslt = conf.get('featureinfo_xslt')
2104
2107
  if fi_xslt:
2105
- if not has_xslt_support:
2106
- raise ValueError('featureinfo_xslt requires lxml. Please install.')
2107
2108
  for info_type, fi_xslt in fi_xslt.items():
2108
2109
  fi_xslt = context.globals.abspath(fi_xslt)
2109
2110
  fi_transformers[info_type] = XSLTransformer(fi_xslt)
@@ -2404,6 +2405,7 @@ def load_configuration(mapproxy_conf, seed=False, ignore_warnings=True, renderd=
2404
2405
 
2405
2406
  try:
2406
2407
  conf_dict = load_configuration_file([os.path.basename(mapproxy_conf)], conf_base_dir)
2408
+ log.debug('Loaded configuration file', json.dumps(conf_dict, indent=2, sort_keys=True, default=str))
2407
2409
  except YAMLError as ex:
2408
2410
  raise ConfigurationError(ex)
2409
2411
  errors, informal_only = validate_options(conf_dict)
@@ -2459,7 +2461,7 @@ def merge_dict(conf, base):
2459
2461
  base[k] = merge_dict(v, base[k])
2460
2462
  elif isinstance(base[k], list):
2461
2463
  if v is not None:
2462
- if k in ['bbox', 'tile_size', 'max_output_pixels', 'sources', 'grids']:
2464
+ if k in ['bbox', 'tile_size', 'max_output_pixels', 'sources', 'grids', 'res']:
2463
2465
  base[k] = v
2464
2466
  elif k in ['layers']:
2465
2467
  base[k] = merge_layers(v, base[k])
@@ -515,6 +515,7 @@ mapproxy_yaml_spec = {
515
515
  'featureinfo_format': str(),
516
516
  'featureinfo_xslt': str(),
517
517
  'featureinfo_out_format': str(),
518
+ 'query_layers': str(),
518
519
  },
519
520
  'image': combined(image_opts, {
520
521
  'opacity': number(),
@@ -18,21 +18,15 @@ import copy
18
18
  import json
19
19
 
20
20
  from functools import reduce
21
- from io import StringIO
21
+ from io import StringIO, BytesIO
22
22
  from typing import List, Union
23
23
 
24
- try:
25
- from lxml import etree, html
26
-
27
- has_xslt_support = True
28
- except ImportError:
29
- has_xslt_support = False
30
- etree = html = None
24
+ from lxml import etree, html
31
25
 
32
26
 
33
27
  class FeatureInfoDoc(object):
34
28
  content_type = None
35
- content: str = None
29
+ content: Union[str, bytes] = None
36
30
 
37
31
  def as_etree(self):
38
32
  raise NotImplementedError()
@@ -45,10 +39,10 @@ class TextFeatureInfoDoc(FeatureInfoDoc):
45
39
  info_type = "text"
46
40
 
47
41
  def __init__(self, content: Union[str, bytes]):
48
- self.content = content if isinstance(content, str) else decode(content)
42
+ self.content = content
49
43
 
50
44
  def as_string(self) -> str:
51
- return self.content
45
+ return self.content if isinstance(self.content, str) else decode(self.content)
52
46
 
53
47
  @classmethod
54
48
  def combine(cls, docs: List[FeatureInfoDoc]):
@@ -63,7 +57,7 @@ class XMLFeatureInfoDoc(FeatureInfoDoc):
63
57
 
64
58
  def __init__(self, content: Union[str, bytes]):
65
59
  if isinstance(content, (str, bytes)):
66
- self.content = content if isinstance(content, str) else decode(content)
60
+ self.content = content
67
61
  else:
68
62
  if hasattr(content, "getroottree"):
69
63
  content = content.getroottree()
@@ -73,7 +67,7 @@ class XMLFeatureInfoDoc(FeatureInfoDoc):
73
67
  def as_string(self):
74
68
  if self.content is None:
75
69
  self.content = self._serialize_etree()
76
- return self.content
70
+ return self.content if isinstance(self.content, str) else decode(self.content)
77
71
 
78
72
  def as_etree(self):
79
73
  if self._etree is None:
@@ -86,7 +80,7 @@ class XMLFeatureInfoDoc(FeatureInfoDoc):
86
80
  return decode(etree.tostring(self._etree, encoding=encoding, xml_declaration=False), encoding)
87
81
 
88
82
  def _parse_content(self):
89
- return etree.parse(StringIO(self.content))
83
+ return etree.parse(StringIO(self.content) if isinstance(self.content, str) else BytesIO(self.content))
90
84
 
91
85
  @classmethod
92
86
  def combine(cls, docs):
@@ -137,10 +131,10 @@ class JSONFeatureInfoDoc(FeatureInfoDoc):
137
131
  info_type = "json"
138
132
 
139
133
  def __init__(self, content):
140
- self.content = content if isinstance(content, str) else decode(content)
134
+ self.content = content
141
135
 
142
136
  def as_string(self):
143
- return self.content
137
+ return self.content if isinstance(self.content, str) else decode(self.content)
144
138
 
145
139
  @classmethod
146
140
  def combine(cls, docs):
@@ -779,6 +779,9 @@ def create_request(req_data, param, req_type='map', version='1.1.1', abspath=Non
779
779
  if 'info_format' in param:
780
780
  req_data['info_format'] = param['info_format']
781
781
 
782
+ if 'query_layers' in param:
783
+ req_data['query_layers'] = param['query_layers']
784
+
782
785
  if 'transparent' in req_data:
783
786
  # we don't want a boolean
784
787
  req_data['transparent'] = str(req_data['transparent'])
@@ -129,6 +129,9 @@ layers:
129
129
  - name: wms_managed_cookies_cache
130
130
  title: WMS with cookies management
131
131
  sources: [wms_managed_cookies]
132
+ - name: wms_fi_ql_cache
133
+ title: WMS with query_layers source
134
+ sources: [wms_fi_ql]
132
135
 
133
136
  caches:
134
137
  wms_cache:
@@ -169,6 +172,8 @@ caches:
169
172
  text: '@ Omniscale'
170
173
  wms_managed_cookies_cache:
171
174
  sources: [wms_managed_cookies]
175
+ wms_fi_ql_cache:
176
+ sources: [wms_fi_ql]
172
177
 
173
178
  sources:
174
179
  direct:
@@ -258,3 +263,11 @@ sources:
258
263
  layers: layer1
259
264
  http:
260
265
  manage_cookies: True
266
+ wms_fi_ql:
267
+ type: wms
268
+ wms_opts:
269
+ featureinfo: True
270
+ query_layers: foo
271
+ req:
272
+ url: http://localhost:42423/service
273
+ layers: foo,bar