MapProxy 2.1.1__tar.gz → 3.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (519) hide show
  1. {MapProxy-2.1.1 → MapProxy-3.0.0}/CHANGES.txt +45 -0
  2. {MapProxy-2.1.1 → MapProxy-3.0.0}/MapProxy.egg-info/PKG-INFO +46 -33
  3. {MapProxy-2.1.1 → MapProxy-3.0.0}/MapProxy.egg-info/SOURCES.txt +1 -0
  4. {MapProxy-2.1.1 → MapProxy-3.0.0}/MapProxy.egg-info/requires.txt +3 -1
  5. {MapProxy-2.1.1 → MapProxy-3.0.0}/PKG-INFO +46 -33
  6. {MapProxy-2.1.1 → MapProxy-3.0.0}/doc/caches.rst +1 -1
  7. {MapProxy-2.1.1 → MapProxy-3.0.0}/doc/configuration.rst +33 -18
  8. {MapProxy-2.1.1 → MapProxy-3.0.0}/doc/development.rst +1 -1
  9. {MapProxy-2.1.1 → MapProxy-3.0.0}/doc/install.rst +2 -2
  10. {MapProxy-2.1.1 → MapProxy-3.0.0}/doc/install_windows.rst +4 -6
  11. {MapProxy-2.1.1 → MapProxy-3.0.0}/doc/plugins.rst +27 -3
  12. {MapProxy-2.1.1 → MapProxy-3.0.0}/doc/services.rst +1 -1
  13. {MapProxy-2.1.1 → MapProxy-3.0.0}/doc/sources.rst +1 -1
  14. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/cache/geopackage.py +4 -4
  15. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/config/config-schema.json +8 -0
  16. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/config/loader.py +16 -4
  17. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/config/spec.py +2 -0
  18. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/exception.py +39 -3
  19. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/image/message.py +4 -1
  20. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/service/demo.py +4 -1
  21. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/service/ows.py +20 -2
  22. MapProxy-3.0.0/mapproxy/service/templates/ows_exception.xml +10 -0
  23. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/service/templates/wmts100capabilities.xml +7 -1
  24. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/service/tile.py +2 -1
  25. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/service/wmts.py +32 -3
  26. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/source/mapnik.py +4 -9
  27. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/template.py +4 -1
  28. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/legendgraphic.yaml +16 -0
  29. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/seed.yaml +7 -2
  30. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_legendgraphic.py +44 -8
  31. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_mapserver.py +0 -1
  32. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_renderd_client.py +3 -3
  33. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_response_headers.py +1 -1
  34. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_seed.py +16 -3
  35. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_source_errors.py +4 -4
  36. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_wms.py +31 -31
  37. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_wmsc.py +3 -3
  38. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/test_client.py +5 -2
  39. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/test_client_cgi.py +0 -2
  40. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/test_exceptions.py +86 -0
  41. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/test_featureinfo.py +0 -3
  42. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/util/ext/odict.py +2 -2
  43. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/wsgiapp.py +10 -0
  44. {MapProxy-2.1.1 → MapProxy-3.0.0}/requirements-tests.txt +15 -15
  45. {MapProxy-2.1.1 → MapProxy-3.0.0}/setup.py +2 -2
  46. {MapProxy-2.1.1 → MapProxy-3.0.0}/AUTHORS.txt +0 -0
  47. {MapProxy-2.1.1 → MapProxy-3.0.0}/COPYING.txt +0 -0
  48. {MapProxy-2.1.1 → MapProxy-3.0.0}/LICENSE.txt +0 -0
  49. {MapProxy-2.1.1 → MapProxy-3.0.0}/MANIFEST.in +0 -0
  50. {MapProxy-2.1.1 → MapProxy-3.0.0}/MapProxy.egg-info/dependency_links.txt +0 -0
  51. {MapProxy-2.1.1 → MapProxy-3.0.0}/MapProxy.egg-info/entry_points.txt +0 -0
  52. {MapProxy-2.1.1 → MapProxy-3.0.0}/MapProxy.egg-info/not-zip-safe +0 -0
  53. {MapProxy-2.1.1 → MapProxy-3.0.0}/MapProxy.egg-info/top_level.txt +0 -0
  54. {MapProxy-2.1.1 → MapProxy-3.0.0}/README.md +0 -0
  55. {MapProxy-2.1.1 → MapProxy-3.0.0}/doc/GM.txt +0 -0
  56. {MapProxy-2.1.1 → MapProxy-3.0.0}/doc/_static/logo.png +0 -0
  57. {MapProxy-2.1.1 → MapProxy-3.0.0}/doc/_static/logo_title.png +0 -0
  58. {MapProxy-2.1.1 → MapProxy-3.0.0}/doc/_static/mapproxy.css +0 -0
  59. {MapProxy-2.1.1 → MapProxy-3.0.0}/doc/_templates/versions.html +0 -0
  60. {MapProxy-2.1.1 → MapProxy-3.0.0}/doc/auth.rst +0 -0
  61. {MapProxy-2.1.1 → MapProxy-3.0.0}/doc/caching_layer_dimensions.rst +0 -0
  62. {MapProxy-2.1.1 → MapProxy-3.0.0}/doc/conf.py +0 -0
  63. {MapProxy-2.1.1 → MapProxy-3.0.0}/doc/configuration_examples.rst +0 -0
  64. {MapProxy-2.1.1 → MapProxy-3.0.0}/doc/coverages.rst +0 -0
  65. {MapProxy-2.1.1 → MapProxy-3.0.0}/doc/decorate_img.rst +0 -0
  66. {MapProxy-2.1.1 → MapProxy-3.0.0}/doc/deployment.rst +0 -0
  67. {MapProxy-2.1.1 → MapProxy-3.0.0}/doc/imgs/bicubic.png +0 -0
  68. {MapProxy-2.1.1 → MapProxy-3.0.0}/doc/imgs/bilinear.png +0 -0
  69. {MapProxy-2.1.1 → MapProxy-3.0.0}/doc/imgs/labeling-dynamic.png +0 -0
  70. {MapProxy-2.1.1 → MapProxy-3.0.0}/doc/imgs/labeling-meta-buffer.png +0 -0
  71. {MapProxy-2.1.1 → MapProxy-3.0.0}/doc/imgs/labeling-metatiling-buffer.png +0 -0
  72. {MapProxy-2.1.1 → MapProxy-3.0.0}/doc/imgs/labeling-metatiling.png +0 -0
  73. {MapProxy-2.1.1 → MapProxy-3.0.0}/doc/imgs/labeling-no-clip.png +0 -0
  74. {MapProxy-2.1.1 → MapProxy-3.0.0}/doc/imgs/labeling-no-placement.png +0 -0
  75. {MapProxy-2.1.1 → MapProxy-3.0.0}/doc/imgs/labeling-partial-false.png +0 -0
  76. {MapProxy-2.1.1 → MapProxy-3.0.0}/doc/imgs/labeling-repeated.png +0 -0
  77. {MapProxy-2.1.1 → MapProxy-3.0.0}/doc/imgs/mapnik-webmerc-hq.png +0 -0
  78. {MapProxy-2.1.1 → MapProxy-3.0.0}/doc/imgs/mapnik-webmerc.png +0 -0
  79. {MapProxy-2.1.1 → MapProxy-3.0.0}/doc/imgs/mapproxy-demo.png +0 -0
  80. {MapProxy-2.1.1 → MapProxy-3.0.0}/doc/imgs/nearest.png +0 -0
  81. {MapProxy-2.1.1 → MapProxy-3.0.0}/doc/index.rst +0 -0
  82. {MapProxy-2.1.1 → MapProxy-3.0.0}/doc/inspire.rst +0 -0
  83. {MapProxy-2.1.1 → MapProxy-3.0.0}/doc/install_docker.rst +0 -0
  84. {MapProxy-2.1.1 → MapProxy-3.0.0}/doc/install_osgeo4w.rst +0 -0
  85. {MapProxy-2.1.1 → MapProxy-3.0.0}/doc/labeling.rst +0 -0
  86. {MapProxy-2.1.1 → MapProxy-3.0.0}/doc/mapproxy_util.rst +0 -0
  87. {MapProxy-2.1.1 → MapProxy-3.0.0}/doc/mapproxy_util_autoconfig.rst +0 -0
  88. {MapProxy-2.1.1 → MapProxy-3.0.0}/doc/seed.rst +0 -0
  89. {MapProxy-2.1.1 → MapProxy-3.0.0}/doc/tutorial.rst +0 -0
  90. {MapProxy-2.1.1 → MapProxy-3.0.0}/doc/tutorial.yaml +0 -0
  91. {MapProxy-2.1.1 → MapProxy-3.0.0}/doc/yaml/cache_conf.yaml +0 -0
  92. {MapProxy-2.1.1 → MapProxy-3.0.0}/doc/yaml/grid_conf.yaml +0 -0
  93. {MapProxy-2.1.1 → MapProxy-3.0.0}/doc/yaml/merged_conf.yaml +0 -0
  94. {MapProxy-2.1.1 → MapProxy-3.0.0}/doc/yaml/meta_conf.yaml +0 -0
  95. {MapProxy-2.1.1 → MapProxy-3.0.0}/doc/yaml/seed.yaml +0 -0
  96. {MapProxy-2.1.1 → MapProxy-3.0.0}/doc/yaml/simple_conf.yaml +0 -0
  97. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/__init__.py +0 -0
  98. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/cache/__init__.py +0 -0
  99. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/cache/azureblob.py +0 -0
  100. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/cache/base.py +0 -0
  101. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/cache/compact.py +0 -0
  102. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/cache/couchdb.py +0 -0
  103. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/cache/dummy.py +0 -0
  104. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/cache/file.py +0 -0
  105. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/cache/legend.py +0 -0
  106. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/cache/mbtiles.py +0 -0
  107. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/cache/meta.py +0 -0
  108. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/cache/path.py +0 -0
  109. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/cache/redis.py +0 -0
  110. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/cache/renderd.py +0 -0
  111. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/cache/riak.py +0 -0
  112. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/cache/s3.py +0 -0
  113. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/cache/tile.py +0 -0
  114. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/client/__init__.py +0 -0
  115. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/client/arcgis.py +0 -0
  116. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/client/cgi.py +0 -0
  117. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/client/http.py +0 -0
  118. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/client/log.py +0 -0
  119. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/client/tile.py +0 -0
  120. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/client/wms.py +0 -0
  121. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/compat/__init__.py +0 -0
  122. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/compat/image.py +0 -0
  123. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/config/__init__.py +0 -0
  124. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/config/config.py +0 -0
  125. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/config/coverage.py +0 -0
  126. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/config/defaults.py +0 -0
  127. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/config/validator.py +0 -0
  128. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/config_template/__init__.py +0 -0
  129. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/config_template/base_config/config.wsgi +0 -0
  130. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/config_template/base_config/full_example.yaml +0 -0
  131. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/config_template/base_config/full_seed_example.yaml +0 -0
  132. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/config_template/base_config/log.ini +0 -0
  133. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/config_template/base_config/mapproxy.yaml +0 -0
  134. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/config_template/base_config/seed.yaml +0 -0
  135. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/featureinfo.py +0 -0
  136. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/grid.py +0 -0
  137. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/image/__init__.py +0 -0
  138. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/image/fonts/DejaVuSans.ttf +0 -0
  139. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/image/fonts/DejaVuSansMono.ttf +0 -0
  140. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/image/fonts/LICENSE +0 -0
  141. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/image/fonts/__init__.py +0 -0
  142. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/image/mask.py +0 -0
  143. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/image/merge.py +0 -0
  144. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/image/opts.py +0 -0
  145. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/image/tile.py +0 -0
  146. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/image/transform.py +0 -0
  147. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/layer.py +0 -0
  148. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/multiapp.py +0 -0
  149. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/proj.py +0 -0
  150. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/request/__init__.py +0 -0
  151. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/request/arcgis.py +0 -0
  152. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/request/base.py +0 -0
  153. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/request/tile.py +0 -0
  154. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/request/wms/__init__.py +0 -0
  155. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/request/wms/exception.py +0 -0
  156. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/request/wmts.py +0 -0
  157. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/response.py +0 -0
  158. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/script/__init__.py +0 -0
  159. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/script/conf/__init__.py +0 -0
  160. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/script/conf/app.py +0 -0
  161. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/script/conf/caches.py +0 -0
  162. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/script/conf/geopackage.py +0 -0
  163. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/script/conf/layers.py +0 -0
  164. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/script/conf/seeds.py +0 -0
  165. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/script/conf/sources.py +0 -0
  166. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/script/conf/utils.py +0 -0
  167. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/script/defrag.py +0 -0
  168. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/script/export.py +0 -0
  169. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/script/grids.py +0 -0
  170. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/script/scales.py +0 -0
  171. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/script/util.py +0 -0
  172. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/script/wms_capabilities.py +0 -0
  173. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/seed/__init__.py +0 -0
  174. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/seed/cachelock.py +0 -0
  175. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/seed/cleanup.py +0 -0
  176. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/seed/config.py +0 -0
  177. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/seed/script.py +0 -0
  178. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/seed/seeder.py +0 -0
  179. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/seed/spec.py +0 -0
  180. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/seed/util.py +0 -0
  181. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/service/__init__.py +0 -0
  182. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/service/base.py +0 -0
  183. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/service/kml.py +0 -0
  184. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/service/template_helper.py +0 -0
  185. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/service/templates/demo/capabilities_demo.html +0 -0
  186. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/service/templates/demo/demo.html +0 -0
  187. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/service/templates/demo/openlayers-demo.cfg +0 -0
  188. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/service/templates/demo/static/img/blank.gif +0 -0
  189. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/service/templates/demo/static/img/east-mini.png +0 -0
  190. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/service/templates/demo/static/img/north-mini.png +0 -0
  191. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/service/templates/demo/static/img/south-mini.png +0 -0
  192. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/service/templates/demo/static/img/west-mini.png +0 -0
  193. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/service/templates/demo/static/img/zoom-minus-mini.png +0 -0
  194. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/service/templates/demo/static/img/zoom-plus-mini.png +0 -0
  195. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/service/templates/demo/static/img/zoom-world-mini.png +0 -0
  196. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/service/templates/demo/static/logo.png +0 -0
  197. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/service/templates/demo/static/ol.css +0 -0
  198. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/service/templates/demo/static/ol.js +0 -0
  199. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/service/templates/demo/static/proj4.min.js +0 -0
  200. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/service/templates/demo/static/proj4defs.js +0 -0
  201. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/service/templates/demo/static/site.css +0 -0
  202. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/service/templates/demo/static/theme/default/framedCloud.css +0 -0
  203. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/service/templates/demo/static/theme/default/google.css +0 -0
  204. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/service/templates/demo/static/theme/default/ie6-style.css +0 -0
  205. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/service/templates/demo/static/theme/default/style.css +0 -0
  206. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/service/templates/demo/static.html +0 -0
  207. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/service/templates/demo/tms_demo.html +0 -0
  208. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/service/templates/demo/wms_demo.html +0 -0
  209. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/service/templates/demo/wmts_demo.html +0 -0
  210. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/service/templates/tms_capabilities.xml +0 -0
  211. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/service/templates/tms_exception.xml +0 -0
  212. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/service/templates/tms_root_resource.xml +0 -0
  213. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/service/templates/tms_tilemap_capabilities.xml +0 -0
  214. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/service/templates/wms100capabilities.xml +0 -0
  215. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/service/templates/wms100exception.xml +0 -0
  216. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/service/templates/wms110capabilities.xml +0 -0
  217. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/service/templates/wms110exception.xml +0 -0
  218. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/service/templates/wms111capabilities.xml +0 -0
  219. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/service/templates/wms111exception.xml +0 -0
  220. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/service/templates/wms130capabilities.xml +0 -0
  221. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/service/templates/wms130exception.xml +0 -0
  222. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/service/templates/wmts100exception.xml +0 -0
  223. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/service/wms.py +0 -0
  224. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/source/__init__.py +0 -0
  225. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/source/arcgis.py +0 -0
  226. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/source/error.py +0 -0
  227. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/source/tile.py +0 -0
  228. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/source/wms.py +0 -0
  229. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/srs.py +0 -0
  230. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/__init__.py +0 -0
  231. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/conftest.py +0 -0
  232. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/helper.py +0 -0
  233. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/http.py +0 -0
  234. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/image.py +0 -0
  235. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/mocker.py +0 -0
  236. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/common/1.0/common.xsd +0 -0
  237. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_bul.xsd +0 -0
  238. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_cze.xsd +0 -0
  239. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_dan.xsd +0 -0
  240. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_dut.xsd +0 -0
  241. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_eng.xsd +0 -0
  242. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_est.xsd +0 -0
  243. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_fin.xsd +0 -0
  244. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_fre.xsd +0 -0
  245. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_ger.xsd +0 -0
  246. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_gle.xsd +0 -0
  247. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_gre.xsd +0 -0
  248. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_hun.xsd +0 -0
  249. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_ita.xsd +0 -0
  250. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_lav.xsd +0 -0
  251. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_lit.xsd +0 -0
  252. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_mlt.xsd +0 -0
  253. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_pol.xsd +0 -0
  254. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_por.xsd +0 -0
  255. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_rum.xsd +0 -0
  256. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_slo.xsd +0 -0
  257. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_slv.xsd +0 -0
  258. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_spa.xsd +0 -0
  259. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_swe.xsd +0 -0
  260. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/common/1.0/network.xsd +0 -0
  261. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/inspire_vs/1.0/inspire_vs.xsd +0 -0
  262. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/kml/2.2.0/ReadMe.txt +0 -0
  263. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/kml/2.2.0/atom-author-link.xsd +0 -0
  264. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/kml/2.2.0/ogckml22.xsd +0 -0
  265. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/kml/2.2.0/xAL.xsd +0 -0
  266. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/ows/1.1.0/ReadMe.txt +0 -0
  267. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/ows/1.1.0/ows19115subset.xsd +0 -0
  268. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/ows/1.1.0/owsAll.xsd +0 -0
  269. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/ows/1.1.0/owsCommon.xsd +0 -0
  270. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/ows/1.1.0/owsContents.xsd +0 -0
  271. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/ows/1.1.0/owsDataIdentification.xsd +0 -0
  272. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/ows/1.1.0/owsDomainType.xsd +0 -0
  273. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/ows/1.1.0/owsExceptionReport.xsd +0 -0
  274. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/ows/1.1.0/owsGetCapabilities.xsd +0 -0
  275. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/ows/1.1.0/owsGetResourceByID.xsd +0 -0
  276. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/ows/1.1.0/owsInputOutputData.xsd +0 -0
  277. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/ows/1.1.0/owsManifest.xsd +0 -0
  278. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/ows/1.1.0/owsOperationsMetadata.xsd +0 -0
  279. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/ows/1.1.0/owsServiceIdentification.xsd +0 -0
  280. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/ows/1.1.0/owsServiceProvider.xsd +0 -0
  281. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/sld/1.1.0/sld_capabilities.xsd +0 -0
  282. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/wms/1.0.0/capabilities_1_0_0.dtd +0 -0
  283. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/wms/1.0.0/capabilities_1_0_0.xml +0 -0
  284. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/wms/1.0.7/capabilities_1_0_7.dtd +0 -0
  285. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/wms/1.0.7/capabilities_1_0_7.xml +0 -0
  286. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/wms/1.1.0/capabilities_1_1_0.dtd +0 -0
  287. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/wms/1.1.0/capabilities_1_1_0.xml +0 -0
  288. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/wms/1.1.0/exception_1_1_0.dtd +0 -0
  289. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/wms/1.1.0/exception_1_1_0.xml +0 -0
  290. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/wms/1.1.1/OGC-exception.xsd +0 -0
  291. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/wms/1.1.1/WMS_DescribeLayerResponse.dtd +0 -0
  292. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/wms/1.1.1/WMS_MS_Capabilities.dtd +0 -0
  293. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/wms/1.1.1/WMS_exception_1_1_1.dtd +0 -0
  294. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/wms/1.1.1/capabilities_1_1_1.dtd +0 -0
  295. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/wms/1.1.1/capabilities_1_1_1.xml +0 -0
  296. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/wms/1.1.1/exception_1_1_1.dtd +0 -0
  297. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/wms/1.1.1/exception_1_1_1.xml +0 -0
  298. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/wms/1.3.0/ReadMe.txt +0 -0
  299. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/wms/1.3.0/capabilities_1_3_0.xml +0 -0
  300. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/wms/1.3.0/capabilities_1_3_0.xsd +0 -0
  301. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/wms/1.3.0/exceptions_1_3_0.xml +0 -0
  302. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/wms/1.3.0/exceptions_1_3_0.xsd +0 -0
  303. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/wmsc/1.1.1/OGC-exception.xsd +0 -0
  304. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/wmsc/1.1.1/WMS_DescribeLayerResponse.dtd +0 -0
  305. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/wmsc/1.1.1/WMS_MS_Capabilities.dtd +0 -0
  306. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/wmsc/1.1.1/WMS_exception_1_1_1.dtd +0 -0
  307. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/wmsc/1.1.1/capabilities_1_1_1.dtd +0 -0
  308. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/wmsc/1.1.1/capabilities_1_1_1.xml +0 -0
  309. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/wmsc/1.1.1/exception_1_1_1.dtd +0 -0
  310. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/wmsc/1.1.1/exception_1_1_1.xml +0 -0
  311. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/wmts/1.0/ReadMe.txt +0 -0
  312. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/wmts/1.0/wmts.xsd +0 -0
  313. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/wmts/1.0/wmtsAbstract.wsdl +0 -0
  314. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/wmts/1.0/wmtsGetCapabilities_request.xsd +0 -0
  315. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/wmts/1.0/wmtsGetCapabilities_response.xsd +0 -0
  316. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/wmts/1.0/wmtsGetFeatureInfo_request.xsd +0 -0
  317. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/wmts/1.0/wmtsGetFeatureInfo_response.xsd +0 -0
  318. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/wmts/1.0/wmtsGetTile_request.xsd +0 -0
  319. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/wmts/1.0/wmtsKVP.xsd +0 -0
  320. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/wmts/1.0/wmtsPayload_response.xsd +0 -0
  321. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/xlink/1.0.0/ReadMe.txt +0 -0
  322. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/xlink/1.0.0/xlinks.xsd +0 -0
  323. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/schemas/xml.xsd +0 -0
  324. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/__init__.py +0 -0
  325. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/arcgis.yaml +0 -0
  326. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/auth.yaml +0 -0
  327. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/cache.mbtiles +0 -0
  328. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/cache_azureblob.yaml +0 -0
  329. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/cache_band_merge.yaml +0 -0
  330. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/cache_bulk_meta_tiles.yaml +0 -0
  331. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/cache_coverage.yaml +0 -0
  332. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/cache_data/dop_cache_EPSG3857/00/000/000/000/000/000/000.png +0 -0
  333. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/cache_data/wms_cache_EPSG900913/01/000/000/000/000/000/001.jpeg +0 -0
  334. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/cache_data/wms_cache_transparent_EPSG900913/01/000/000/000/000/000/001.png +0 -0
  335. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/cache_geopackage.yaml +0 -0
  336. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/cache_grid_names.yaml +0 -0
  337. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/cache_mbtiles.yaml +0 -0
  338. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/cache_s3.yaml +0 -0
  339. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/cache_source.yaml +0 -0
  340. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/combined_sources.yaml +0 -0
  341. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/coverage.yaml +0 -0
  342. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/demo.yaml +0 -0
  343. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/dimension.yaml +0 -0
  344. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/disable_storage.yaml +0 -0
  345. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/empty_ogrdata.geojson +0 -0
  346. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/formats.yaml +0 -0
  347. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/inspire.yaml +0 -0
  348. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/inspire_full.yaml +0 -0
  349. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/kml_layer.yaml +0 -0
  350. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/layer.yaml +0 -0
  351. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/layergroups.yaml +0 -0
  352. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/layergroups_root.yaml +0 -0
  353. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/mapnik_source.yaml +0 -0
  354. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/mapproxy_export.yaml +0 -0
  355. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/mapserver.yaml +0 -0
  356. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/minimal_cgi.py +0 -0
  357. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/mixed_mode.yaml +0 -0
  358. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/multi_cache_layers.yaml +0 -0
  359. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/multiapp1.yaml +0 -0
  360. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/multiapp2.yaml +0 -0
  361. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/renderd_client.yaml +0 -0
  362. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/scalehints.yaml +0 -0
  363. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/seed_mapproxy.yaml +0 -0
  364. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/seed_old.yaml +0 -0
  365. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/seed_timeouts.yaml +0 -0
  366. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/seed_timeouts_mapproxy.yaml +0 -0
  367. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/seedonly.yaml +0 -0
  368. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/sld.yaml +0 -0
  369. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/source_errors.yaml +0 -0
  370. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/source_errors_raise.yaml +0 -0
  371. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/tileservice_origin.yaml +0 -0
  372. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/tileservice_refresh.yaml +0 -0
  373. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/tilesource_minmax_res.yaml +0 -0
  374. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/util-conf-base-grids.yaml +0 -0
  375. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/util-conf-overwrite.yaml +0 -0
  376. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/util-conf-wms-111-cap.xml +0 -0
  377. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/util_grids.yaml +0 -0
  378. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/util_wms_capabilities111.xml +0 -0
  379. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/util_wms_capabilities130.xml +0 -0
  380. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/util_wms_capabilities_service_exception.xml +0 -0
  381. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/watermark.yaml +0 -0
  382. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/wms_srs_extent.yaml +0 -0
  383. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/wms_versions.yaml +0 -0
  384. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/wmts.yaml +0 -0
  385. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/wmts_dimensions.yaml +0 -0
  386. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/xslt_featureinfo.yaml +0 -0
  387. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/fixture/xslt_featureinfo_input.yaml +0 -0
  388. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_arcgis.py +0 -0
  389. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_auth.py +0 -0
  390. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_behind_proxy.py +0 -0
  391. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_bulk_meta_tiles.py +0 -0
  392. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_cache_azureblob.py +0 -0
  393. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_cache_band_merge.py +0 -0
  394. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_cache_coverage.py +0 -0
  395. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_cache_geopackage.py +0 -0
  396. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_cache_grid_names.py +0 -0
  397. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_cache_mbtiles.py +0 -0
  398. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_cache_s3.py +0 -0
  399. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_cache_source.py +0 -0
  400. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_combined_sources.py +0 -0
  401. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_coverage.py +0 -0
  402. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_decorate_img.py +0 -0
  403. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_demo.py +0 -0
  404. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_demo_with_extra_service.py +0 -0
  405. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_dimensions.py +0 -0
  406. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_disable_storage.py +0 -0
  407. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_formats.py +0 -0
  408. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_inspire_vs.py +0 -0
  409. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_kml.py +0 -0
  410. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_layergroups.py +0 -0
  411. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_mapnik.py +0 -0
  412. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_mixed_mode_format.py +0 -0
  413. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_multi_cache_layers.py +0 -0
  414. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_multiapp.py +0 -0
  415. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_refresh.py +0 -0
  416. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_scalehints.py +0 -0
  417. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_seed_only.py +0 -0
  418. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_sld.py +0 -0
  419. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_tilesource_minmax_res.py +0 -0
  420. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_tms.py +0 -0
  421. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_tms_origin.py +0 -0
  422. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_util_conf.py +0 -0
  423. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_util_export.py +0 -0
  424. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_util_grids.py +0 -0
  425. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_util_wms_capabilities.py +0 -0
  426. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_watermark.py +0 -0
  427. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_wms_srs_extent.py +0 -0
  428. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_wms_version.py +0 -0
  429. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_wmts.py +0 -0
  430. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_wmts_dimensions.py +0 -0
  431. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_wmts_restful.py +0 -0
  432. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/system/test_xslt_featureinfo.py +0 -0
  433. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/test_http_helper.py +0 -0
  434. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/__init__.py +0 -0
  435. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/epsg +0 -0
  436. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/polygons/polygons.dbf +0 -0
  437. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/polygons/polygons.shp +0 -0
  438. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/polygons/polygons.shx +0 -0
  439. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/test_async.py +0 -0
  440. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/test_auth.py +0 -0
  441. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/test_cache.py +0 -0
  442. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/test_cache_azureblob.py +0 -0
  443. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/test_cache_compact.py +0 -0
  444. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/test_cache_couchdb.py +0 -0
  445. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/test_cache_geopackage.py +0 -0
  446. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/test_cache_redis.py +0 -0
  447. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/test_cache_riak.py +0 -0
  448. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/test_cache_s3.py +0 -0
  449. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/test_cache_tile.py +0 -0
  450. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/test_client_arcgis.py +0 -0
  451. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/test_collections.py +0 -0
  452. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/test_concat_legends.py +0 -0
  453. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/test_conf_loader.py +0 -0
  454. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/test_conf_validator.py +0 -0
  455. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/test_config.py +0 -0
  456. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/test_decorate_img.py +0 -0
  457. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/test_file_lock_load.py +0 -0
  458. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/test_geom.py +0 -0
  459. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/test_grid.py +0 -0
  460. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/test_image.py +0 -0
  461. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/test_image_mask.py +0 -0
  462. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/test_image_messages.py +0 -0
  463. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/test_image_options.py +0 -0
  464. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/test_isodate.py +0 -0
  465. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/test_multiapp.py +0 -0
  466. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/test_ogr_reader.py +0 -0
  467. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/test_request.py +0 -0
  468. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/test_request_wmts.py +0 -0
  469. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/test_response.py +0 -0
  470. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/test_seed.py +0 -0
  471. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/test_seed_cachelock.py +0 -0
  472. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/test_srs.py +0 -0
  473. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/test_tiled_source.py +0 -0
  474. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/test_tilefilter.py +0 -0
  475. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/test_times.py +0 -0
  476. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/test_timeutils.py +0 -0
  477. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/test_util_conf_utils.py +0 -0
  478. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/test_utils.py +0 -0
  479. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/test_wms_capabilities.py +0 -0
  480. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/test_wms_layer.py +0 -0
  481. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/test/unit/test_yaml.py +0 -0
  482. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/tilefilter.py +0 -0
  483. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/util/__init__.py +0 -0
  484. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/util/async_.py +0 -0
  485. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/util/collections.py +0 -0
  486. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/util/coverage.py +0 -0
  487. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/util/ext/__init__.py +0 -0
  488. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/util/ext/dictspec/__init__.py +0 -0
  489. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/util/ext/dictspec/spec.py +0 -0
  490. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/util/ext/dictspec/test/__init__.py +0 -0
  491. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/util/ext/dictspec/test/test_validator.py +0 -0
  492. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/util/ext/dictspec/validator.py +0 -0
  493. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/util/ext/local.py +0 -0
  494. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/util/ext/lockfile.py +0 -0
  495. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/util/ext/serving.py +0 -0
  496. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/util/ext/tempita/__init__.py +0 -0
  497. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/util/ext/tempita/_looper.py +0 -0
  498. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/util/ext/tempita/string_utils.py +0 -0
  499. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/util/ext/wmsparse/__init__.py +0 -0
  500. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/util/ext/wmsparse/duration.py +0 -0
  501. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/util/ext/wmsparse/parse.py +0 -0
  502. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/util/ext/wmsparse/test/__init__.py +0 -0
  503. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/util/ext/wmsparse/test/test_parse.py +0 -0
  504. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/util/ext/wmsparse/test/test_util.py +0 -0
  505. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/util/ext/wmsparse/test/wms-example-111.xml +0 -0
  506. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/util/ext/wmsparse/test/wms-example-130.xml +0 -0
  507. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/util/ext/wmsparse/test/wms-large-111.xml +0 -0
  508. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/util/ext/wmsparse/test/wms_nasa_cap.xml +0 -0
  509. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/util/ext/wmsparse/util.py +0 -0
  510. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/util/fs.py +0 -0
  511. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/util/geom.py +0 -0
  512. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/util/lib.py +0 -0
  513. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/util/lock.py +0 -0
  514. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/util/ogr.py +0 -0
  515. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/util/py.py +0 -0
  516. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/util/times.py +0 -0
  517. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/util/yaml.py +0 -0
  518. {MapProxy-2.1.1 → MapProxy-3.0.0}/mapproxy/version.py +0 -0
  519. {MapProxy-2.1.1 → MapProxy-3.0.0}/setup.cfg +0 -0
@@ -1,3 +1,48 @@
1
+ 3.0.0 2024-08-27
2
+ ~~~~~~~~~~~~~~~~
3
+
4
+ Breaking:
5
+
6
+ - Add proper XML Exception when service parameter disabled / invalid or missing
7
+ In the past MapProxy returned WMS Capabilities when no explicit service parameter was given in
8
+ GetCapabilities requests. With this change, an OGC exception will be returned instead.
9
+ Invalid service types now also return a proper exception instead of an `internal error`.
10
+ Besides, the status code of exception responses now have a 400 or 500 code instead of 200
11
+ for better conformity.
12
+
13
+ Maintenance:
14
+
15
+ - Add test for seeding sqlite cache
16
+ - Documentation updates and clarifications
17
+ - Dependency updates
18
+
19
+ Fixes:
20
+
21
+ - Fix gh-pages workflow
22
+
23
+
24
+ 2.2.0 2024-07-24
25
+ ~~~~~~~~~~~~~~~~
26
+
27
+ Improvements:
28
+
29
+ - Add timeout to SQLite connect for geopackages. This helps against locking exceptions
30
+ - Improvement of documentation, typos, wrong cli commands, old python2 stuff
31
+ - The WMTS capabilites will now advertise the WMS GetLegendGraphic as a LegendURL if both services are active
32
+ - It is possible now to configure LegendURLs that should be shown in the WMTS capabilities
33
+ - A new method for plugins to intercept and modify requests made to MapProxy was added.
34
+
35
+ Maintenance:
36
+
37
+ - Removal of debian package information
38
+ - Fix docs workflow
39
+
40
+ Fixes:
41
+
42
+ - Remove import of the packaging library that does not appear in the `install_requires`
43
+ - Only install and use `importlib_resources` in python 3.8
44
+
45
+
1
46
  2.1.1 2024-07-16
2
47
  ~~~~~~~~~~~~~~~~
3
48
  Fixes:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: MapProxy
3
- Version: 2.1.1
3
+ Version: 3.0.0
4
4
  Summary: An accelerating proxy for tile and web map services
5
5
  Home-page: https://mapproxy.org
6
6
  Author: Oliver Tonnhofer
@@ -34,6 +34,51 @@ The documentation is available at: http://mapproxy.github.io/mapproxy/latest/
34
34
 
35
35
  Changes
36
36
  -------
37
+ 3.0.0 2024-08-27
38
+ ~~~~~~~~~~~~~~~~
39
+
40
+ Breaking:
41
+
42
+ - Add proper XML Exception when service parameter disabled / invalid or missing
43
+ In the past MapProxy returned WMS Capabilities when no explicit service parameter was given in
44
+ GetCapabilities requests. With this change, an OGC exception will be returned instead.
45
+ Invalid service types now also return a proper exception instead of an `internal error`.
46
+ Besides, the status code of exception responses now have a 400 or 500 code instead of 200
47
+ for better conformity.
48
+
49
+ Maintenance:
50
+
51
+ - Add test for seeding sqlite cache
52
+ - Documentation updates and clarifications
53
+ - Dependency updates
54
+
55
+ Fixes:
56
+
57
+ - Fix gh-pages workflow
58
+
59
+
60
+ 2.2.0 2024-07-24
61
+ ~~~~~~~~~~~~~~~~
62
+
63
+ Improvements:
64
+
65
+ - Add timeout to SQLite connect for geopackages. This helps against locking exceptions
66
+ - Improvement of documentation, typos, wrong cli commands, old python2 stuff
67
+ - The WMTS capabilites will now advertise the WMS GetLegendGraphic as a LegendURL if both services are active
68
+ - It is possible now to configure LegendURLs that should be shown in the WMTS capabilities
69
+ - A new method for plugins to intercept and modify requests made to MapProxy was added.
70
+
71
+ Maintenance:
72
+
73
+ - Removal of debian package information
74
+ - Fix docs workflow
75
+
76
+ Fixes:
77
+
78
+ - Remove import of the packaging library that does not appear in the `install_requires`
79
+ - Only install and use `importlib_resources` in python 3.8
80
+
81
+
37
82
  2.1.1 2024-07-16
38
83
  ~~~~~~~~~~~~~~~~
39
84
  Fixes:
@@ -114,38 +159,6 @@ Fixes:
114
159
  - Some more minor fixups
115
160
 
116
161
 
117
- 1.16.0 2023-04-13
118
- ~~~~~~~~~~~~~~~~~
119
- Breaking:
120
-
121
- - Removal of old unsupported python versions 2.7 and 3.6
122
- - Tested python version range is now 3.7 to 3.11
123
- - Lots of dependency updates
124
-
125
- Improvements:
126
-
127
- - New cache: Azure Blob storage
128
- - Lots of dependency updates
129
- - Support for JSON legends
130
- - Updated layer preview to use latest openlayers
131
- - Official docker images released, documentation updated
132
-
133
- Fixes:
134
-
135
- - Fixed issues with sqlite cache (#629 and #625)
136
- - Dependency correction
137
- - library detection difficulties on some operating systems
138
- - encoding issues with umlauts in featureinfo
139
- - Several minor bugfixes
140
- - mapproxy-util export - derive image format from cache config
141
-
142
- 1.15.1 2022-06-14
143
- ~~~~~~~~~~~~~~~~~
144
-
145
- Fixes:
146
-
147
- - Fixup release on PyPI
148
-
149
162
 
150
163
  Older changes
151
164
  -------------
@@ -167,6 +167,7 @@ mapproxy/service/template_helper.py
167
167
  mapproxy/service/tile.py
168
168
  mapproxy/service/wms.py
169
169
  mapproxy/service/wmts.py
170
+ mapproxy/service/templates/ows_exception.xml
170
171
  mapproxy/service/templates/tms_capabilities.xml
171
172
  mapproxy/service/templates/tms_exception.xml
172
173
  mapproxy/service/templates/tms_root_resource.xml
@@ -1,7 +1,9 @@
1
1
  Pillow!=2.4.0,!=8.3.0,!=8.3.1
2
2
  PyYAML>=3.0
3
3
  future
4
- importlib_resources
5
4
  jsonschema>=4
6
5
  pyproj>=2
7
6
  werkzeug==1.0.1
7
+
8
+ [:python_version <= "3.8"]
9
+ importlib_resources
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: MapProxy
3
- Version: 2.1.1
3
+ Version: 3.0.0
4
4
  Summary: An accelerating proxy for tile and web map services
5
5
  Home-page: https://mapproxy.org
6
6
  Author: Oliver Tonnhofer
@@ -34,6 +34,51 @@ The documentation is available at: http://mapproxy.github.io/mapproxy/latest/
34
34
 
35
35
  Changes
36
36
  -------
37
+ 3.0.0 2024-08-27
38
+ ~~~~~~~~~~~~~~~~
39
+
40
+ Breaking:
41
+
42
+ - Add proper XML Exception when service parameter disabled / invalid or missing
43
+ In the past MapProxy returned WMS Capabilities when no explicit service parameter was given in
44
+ GetCapabilities requests. With this change, an OGC exception will be returned instead.
45
+ Invalid service types now also return a proper exception instead of an `internal error`.
46
+ Besides, the status code of exception responses now have a 400 or 500 code instead of 200
47
+ for better conformity.
48
+
49
+ Maintenance:
50
+
51
+ - Add test for seeding sqlite cache
52
+ - Documentation updates and clarifications
53
+ - Dependency updates
54
+
55
+ Fixes:
56
+
57
+ - Fix gh-pages workflow
58
+
59
+
60
+ 2.2.0 2024-07-24
61
+ ~~~~~~~~~~~~~~~~
62
+
63
+ Improvements:
64
+
65
+ - Add timeout to SQLite connect for geopackages. This helps against locking exceptions
66
+ - Improvement of documentation, typos, wrong cli commands, old python2 stuff
67
+ - The WMTS capabilites will now advertise the WMS GetLegendGraphic as a LegendURL if both services are active
68
+ - It is possible now to configure LegendURLs that should be shown in the WMTS capabilities
69
+ - A new method for plugins to intercept and modify requests made to MapProxy was added.
70
+
71
+ Maintenance:
72
+
73
+ - Removal of debian package information
74
+ - Fix docs workflow
75
+
76
+ Fixes:
77
+
78
+ - Remove import of the packaging library that does not appear in the `install_requires`
79
+ - Only install and use `importlib_resources` in python 3.8
80
+
81
+
37
82
  2.1.1 2024-07-16
38
83
  ~~~~~~~~~~~~~~~~
39
84
  Fixes:
@@ -114,38 +159,6 @@ Fixes:
114
159
  - Some more minor fixups
115
160
 
116
161
 
117
- 1.16.0 2023-04-13
118
- ~~~~~~~~~~~~~~~~~
119
- Breaking:
120
-
121
- - Removal of old unsupported python versions 2.7 and 3.6
122
- - Tested python version range is now 3.7 to 3.11
123
- - Lots of dependency updates
124
-
125
- Improvements:
126
-
127
- - New cache: Azure Blob storage
128
- - Lots of dependency updates
129
- - Support for JSON legends
130
- - Updated layer preview to use latest openlayers
131
- - Official docker images released, documentation updated
132
-
133
- Fixes:
134
-
135
- - Fixed issues with sqlite cache (#629 and #625)
136
- - Dependency correction
137
- - library detection difficulties on some operating systems
138
- - encoding issues with umlauts in featureinfo
139
- - Several minor bugfixes
140
- - mapproxy-util export - derive image format from cache config
141
-
142
- 1.15.1 2022-06-14
143
- ~~~~~~~~~~~~~~~~~
144
-
145
- Fixes:
146
-
147
- - Fixup release on PyPI
148
-
149
162
 
150
163
  Older changes
151
164
  -------------
@@ -513,7 +513,7 @@ Available options:
513
513
  When set to ``true``, requests to S3 ``GetObject`` will be fetched via urllib2 instead of boto, which decreases response times. Defaults to ``false``.
514
514
 
515
515
  .. note::
516
- The hierarchical ``directory_layouts`` can hit limitations of S3 *"if you are routinely processing 100 or more requests per second"*. ``directory_layout: reverse_tms`` can work around this limitation. Please read `S3 Request Rate and Performance Considerations <http://docs.aws.amazon.com/AmazonS3/latest/dev/request-rate-perf-considerations.html>`_ for more information on this issue.
516
+ The hierarchical ``directory_layouts`` can hit limitations of AWS S3 if you are routinely processing 3500 or more requests per second. ``directory_layout: reverse_tms`` can work around this limitation. Please read `S3 Request Rate and Performance Considerations <http://docs.aws.amazon.com/AmazonS3/latest/dev/request-rate-perf-considerations.html>`_ for more information on this issue.
517
517
 
518
518
  Example
519
519
  -------
@@ -3,9 +3,9 @@ Configuration
3
3
 
4
4
  There are two configuration files used by MapProxy.
5
5
 
6
- ``mappproxy.yaml``
6
+ ``mapproxy.yaml``
7
7
  This is the main configuration of MapProxy. It configures all aspects of the server:
8
- Which servers should be started, where comes the data from, what should be cached,
8
+ which servers should be started, where comes the data from, what should be cached,
9
9
  etc..
10
10
 
11
11
  ``seed.yaml``
@@ -31,7 +31,7 @@ The MapProxy configuration is grouped into sections, each configures a different
31
31
 
32
32
  - ``layers``: Configure the layers that MapProxy offers. Each layer can consist of multiple sources and caches.
33
33
 
34
- - ``grids``: Define the grids that MapProxy uses to aligns cached images.
34
+ - ``grids``: Define the grids that MapProxy uses to align cached images.
35
35
 
36
36
  The order of the sections is not important, so you can organize it your way.
37
37
 
@@ -69,7 +69,7 @@ There are other optional sections:
69
69
 
70
70
  The ``base`` option loads the other files and merges the loaded configuration dictionaries together – it is not a literal include of the other files.
71
71
 
72
- For example, to externalize ``grids`` and ``caches``sections, we will have in ``mappproxy.yaml``:
72
+ For example, to externalize ``grids`` and ``caches`` sections, we will have in ``mapproxy.yaml``:
73
73
 
74
74
  .. code-block:: YAML
75
75
 
@@ -77,7 +77,7 @@ There are other optional sections:
77
77
  service: ...
78
78
  layers: ...
79
79
 
80
- Also in more complex configurations (with many layers, caches, sources, etc.), the ``mappproxy.yaml`` can become too big to be easily modified. One solution could be to split layers, caches, sources, etc. by themes: for example, nature (with layers for lakes, rivers, forests), artificial building (with roads, buildings, power plants layers), topography, etc. We could have in ``mappproxy.yaml``:
80
+ Also in more complex configurations (with many layers, caches, sources, etc.), the ``mapproxy.yaml`` can become too big to be easily modified. One solution could be to split layers, caches, sources, etc. by themes: for example, nature (with layers for lakes, rivers, forests), artificial building (with roads, buildings, power plants layers), topography, etc. We could have in ``mapproxy.yaml``:
81
81
 
82
82
  .. code-block:: YAML
83
83
 
@@ -304,7 +304,7 @@ Please read :ref:`scale vs. resolution <scale_resolution>` for some notes on `sc
304
304
  ``legendurl``
305
305
  """""""""""""
306
306
 
307
- Configure a URL to an image that should be returned as the legend for this layer. Local URLs (``file://``) are also supported. MapProxy ignores the legends from the sources of this layer if you configure a ``legendurl`` here.
307
+ Configure a URL to an image that should be returned as the legend for this layer. Local URLs (``file://``) are also supported. MapProxy ignores the legends from the sources of this layer if you configure a ``legendurl`` here. If WMS and WMTS are enabled the address to the WMS `GetLegendGraphic` endpoint will be included in the WMTS capabilities as the legend url.
308
308
 
309
309
  .. _layer_metadata:
310
310
 
@@ -392,6 +392,21 @@ Each dimension is another dictionary with a list of ``values`` and an optional `
392
392
  - 1000
393
393
  - 3000
394
394
 
395
+ ``wmts_kvp_legendurl`` and ``wmts_rest_legendurl``
396
+ """"""""""""""""""""""""""""""""""""""""""""""""""
397
+
398
+ It is possible to configure which URLS the WMTS will advertise as LegendURLs through its capabilities. These will be
399
+ inserted as a ``LegendURL`` tag into the capabilities document. These URLs support two template variables ``{base_url}``
400
+ which is the base url of MapProxy and ``{layer_name}`` which is the name of the layer.
401
+
402
+ .. code-block:: yaml
403
+
404
+ layers:
405
+ - name: legend_layer
406
+ tile_sources: [cache]
407
+ wmts_rest_legendurl: "{base_url}/legend/{layer_name}.png" # would become "http://127.0.0.1/legend/legend_layer.png" on localhost
408
+ wmts_kvp_legendurl: "http://external-service/fixed-name.png" # would be used as a fixed URL
409
+
395
410
 
396
411
  .. ``attribution``
397
412
  .. """"""""""""""""
@@ -499,7 +514,7 @@ You need to set the ``request_format`` to ``image/png`` when using ``mixed``-mod
499
514
  ``request_format``
500
515
  """"""""""""""""""
501
516
 
502
- MapProxy will try to use this format to request new tiles, if it is not set ``format`` is used. This option has no effect if the source does not support that format or the format of the source is set explicitly (see ``suported_format`` or ``format`` for sources).
517
+ MapProxy will try to use this format to request new tiles, if it is not set ``format`` is used. This option has no effect if the source does not support that format or the format of the cache is set explicitly (see ``format`` for caches or ``supported_formats`` for sources).
503
518
 
504
519
 
505
520
  .. _link_single_color_images:
@@ -649,13 +664,13 @@ Example:
649
664
 
650
665
  .. code-block:: yaml
651
666
 
652
- caches:
653
- osm_cache:
654
- grids: ['osm_grid']
655
- sources: [OSM]
656
- disable_storage: false
657
- refresh_before:
658
- days: 1
667
+ caches:
668
+ osm_cache:
669
+ grids: ['osm_grid']
670
+ sources: [OSM]
671
+ disable_storage: false
672
+ refresh_before:
673
+ days: 1
659
674
 
660
675
 
661
676
  ``disable_storage``
@@ -670,7 +685,7 @@ even if the there are matching tiles in the cache. See :ref:`seed_only <wms_seed
670
685
  """""""""""""
671
686
 
672
687
  Directory where MapProxy should store tiles for this cache. Uses the value of ``globals.cache.base_dir`` by default. MapProxy will store each cache in a subdirectory named after the cache and the grid SRS (e.g. ``cachename_EPSG1234``).
673
- See :ref:`directory option<cache_file_directory>` on how configure a complete path.
688
+ See :ref:`directory option<cache_file_directory>` on how to configure a complete path.
674
689
 
675
690
  ``cache``
676
691
  """""""""
@@ -989,7 +1004,7 @@ The following options define how tiles are created and stored. Most options can
989
1004
  .. _meta_size:
990
1005
 
991
1006
  ``meta_size``
992
- MapProxy does not make a single request for every tile it needs, but it will request a large meta-tile that consist of multiple tiles. ``meta_size`` defines how large a meta-tile is. A ``meta_size`` of ``[4, 4]`` will request 16 tiles in one pass. With a tile size of 256x256 this will result in 1024x1024 requests to the source. Tiled sources are still requested tile by tile, but you can configure MapProxy to load multiple tiles in bulk with `bulk_meta_tiles`.
1007
+ MapProxy does not make a single request for every tile it needs, but it will request a large meta-tile that consist of multiple tiles. ``meta_size`` defines how large a meta-tile is. A ``meta_size`` of ``[4, 4]`` will request 16 tiles in one pass. With a tile size of 256x256 and 0 ``meta_buffer``, this will result in 1024x1024 requests to the source. (Note that the default value for ``meta_buffer`` is 80.) Tiled sources are still requested tile by tile, but you can configure MapProxy to load multiple tiles in bulk with ``bulk_meta_tiles``.
993
1008
 
994
1009
 
995
1010
  .. _bulk_meta_tiles:
@@ -1002,7 +1017,7 @@ The following options define how tiles are created and stored. Most options can
1002
1017
  ``meta_buffer``
1003
1018
  MapProxy will increase the size of each meta-tile request by this number of
1004
1019
  pixels in each direction. This can solve cases where labels are cut-off at
1005
- the edge of tiles.
1020
+ the edge of tiles. Defaults to 80.
1006
1021
 
1007
1022
  ``base_dir``
1008
1023
  The base directory where all cached tiles will be stored. The path can
@@ -1135,7 +1150,7 @@ See the `Python SSL documentation <http://docs.python.org/dev/library/ssl.html#s
1135
1150
 
1136
1151
  .. versionadded:: 1.11.0
1137
1152
 
1138
- MapProxy uses the systems CA files by default, if you use Python >=2.7.9 or >=3.4.
1153
+ MapProxy uses the systems CA files by default.
1139
1154
 
1140
1155
 
1141
1156
  .. note::
@@ -28,7 +28,7 @@ __ fork_
28
28
  Documentation
29
29
  -------------
30
30
 
31
- This is the documentation you are reading right now. The raw files can be found in ``doc/``. The HTML version user documentation is build with `Sphinx`_. To rebuild this documentation install Sphinx with ``pip install sphinx sphinx-bootstrap-theme`` and call ``python setup.py build_sphinx``. The output appears in ``build/sphinx/html``. The latest documentation can be found at ``http://mapproxy.org/docs/lates/``.
31
+ This is the documentation you are reading right now. The raw files can be found in ``doc/``. The HTML version user documentation is build with `Sphinx`_. To rebuild this documentation install Sphinx with ``pip install sphinx sphinx-bootstrap-theme`` and call ``sphinx-build doc/ docs``. The output appears in ``docs``. The latest documentation can be found at ``https://mapproxy.github.io/mapproxy/latest/``.
32
32
 
33
33
  .. _`Epydoc`: http://epydoc.sourceforge.net/
34
34
  .. _`Sphinx`: http://sphinx.pocoo.org/
@@ -5,9 +5,9 @@ This tutorial guides you to the MapProxy installation process on Unix systems. F
5
5
 
6
6
  This tutorial was created and tested with Debian and Ubuntu, if you're installing MapProxy on a different system you might need to change some package names.
7
7
 
8
- MapProxy is `registered at the Python Package Index <https://pypi.org/project/MapProxy/>`_ (PyPI). If you have Python 2.7.9 or higher, you can install MapProxy with::
8
+ MapProxy is `registered at the Python Package Index <https://pypi.org/project/MapProxy/>`_ (PyPI). If you have Python 3.8 or higher, you can install MapProxy with::
9
9
 
10
- sudo python -m pip install MapProxy
10
+ python -m pip install MapProxy
11
11
 
12
12
  This is really, easy `but` we recommend to install MapProxy into a `virtual Python environment`_. A ``virtualenv`` is a self-contained Python installation where you can install arbitrary Python packages without affecting the system installation. You also don't need root permissions for the installation.
13
13
 
@@ -11,7 +11,7 @@ Virtualenv
11
11
 
12
12
  To create a new virtual environment for your MapProxy installation and to activate it go to the command line and call::
13
13
 
14
- C:\Python27\python path\to\virtualenv.py c:\mapproxy_venv
14
+ C:\Python38\python path\to\virtualenv.py c:\mapproxy_venv
15
15
  C:\mapproxy_venv\Scripts\activate.bat
16
16
 
17
17
  .. note::
@@ -30,11 +30,9 @@ This might take a minute. You can skip the next step.
30
30
  PIP
31
31
  ---
32
32
 
33
- MapProxy and most dependencies can be installed with the ``pip`` command. ``pip`` is already installed if you are using Python >=2.7.9, or Python >=3.4. `Read the pip documentation for more information <https://pip.pypa.io/en/stable/installing/>`_.
33
+ MapProxy and most dependencies can be installed with the ``pip`` command. `Read the pip documentation for more information <https://pip.pypa.io/en/stable/installing/>`_.
34
34
 
35
- After that you can install MapProxy with::
36
-
37
- c:\Python27\Scripts\pip install MapProxy
35
+ c:\Python38\Scripts\pip install MapProxy
38
36
 
39
37
  This might take a minute.
40
38
 
@@ -90,7 +88,7 @@ Platform dependent packages
90
88
 
91
89
  ``pip`` downloads all packages from https://pypi.org/, but not all platform combinations might be available as a binary package, especially if you run a 64bit version of Python.
92
90
 
93
- If you run into trouble during installation, because it is trying to compile something (e.g. complaining about ``vcvarsall.bat``), you should look at Christoph Gohlke's `Unofficial Windows Binaries for Python Extension Packages <http://www.lfd.uci.edu/~gohlke/pythonlibs/>`_. This is a reliable site for binary packages for Python. You need to download the right package: The ``cpxx`` code refers to the Python version (e.g. ``cp27`` for Python 2.7); ``win32`` for 32bit Python installations and ``amd64`` for 64bit.
91
+ If you run into trouble during installation, because it is trying to compile something (e.g. complaining about ``vcvarsall.bat``), you should look at Christoph Gohlke's `Unofficial Windows Binaries for Python Extension Packages <http://www.lfd.uci.edu/~gohlke/pythonlibs/>`_. This is a reliable site for binary packages for Python. You need to download the right package: The ``cpxx`` code refers to the Python version (e.g. ``cp38`` for Python 3.8); ``win32`` for 32bit Python installations and ``amd64`` for 64bit.
94
92
 
95
93
  You can install the ``.whl``, ``.zip`` or ``.exe`` packages with ``pip``::
96
94
 
@@ -292,9 +292,33 @@ This can for example be used like in the following snippet:
292
292
  })
293
293
 
294
294
 
295
- A real-world example can be found at
296
- https://github.com/rouault/mapproxy_hips/blob/master/mapproxy_hips/script/hipsallsky.py
297
- `
295
+ A real-world example can be found at https://github.com/rouault/mapproxy_hips/blob/master/mapproxy_hips/script/hipsallsky.py
296
+
297
+
298
+ Intercepting request
299
+ --------------------
300
+
301
+ It is possible to intercept any request in a plugin with `register_request_interceptor`. The provided function will be called on any request and should
302
+ always return a request, either the original one or a new one.
303
+
304
+ Example:
305
+
306
+ .. code-block:: python
307
+
308
+ from mapproxy.wsgiapp import register_request_interceptor
309
+
310
+ def interceptor(req):
311
+ if req.path.startswith('service'):
312
+ environ = req.environ.copy()
313
+ environ['QUERY_STRING'] = environ['QUERY_STRING'].replace('foo', 'bar')
314
+ return Request(environ)
315
+ return req
316
+
317
+ register_request_interceptor(interceptor)
318
+
319
+
320
+ A real world example can be found at https://github.com/mapproxy/wmts-rest-legend-plugin
321
+
298
322
 
299
323
  Credits
300
324
  -------
@@ -137,7 +137,7 @@ You can define XSLT scripts to transform outgoing feature information. You can d
137
137
  ``xml``
138
138
  Define a script for ``INFO_FORMAT=application/vnd.ogc.gml`` and ``INFO_FORMAT=text/xml`` requests.
139
139
 
140
- See :ref:`FeatureInformation for more informaiton <fi_xslt>`.
140
+ See :ref:`FeatureInformation for more information <fi_xslt>`.
141
141
 
142
142
  ``strict``
143
143
  """"""""""
@@ -133,7 +133,7 @@ A list with SRSs that the WMS source supports. MapProxy will only query the sour
133
133
 
134
134
  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
135
 
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).
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).
137
137
 
138
138
  .. .. note:: For the configuration of SRS for MapProxy see `srs_configuration`_.
139
139
 
@@ -125,7 +125,7 @@ class GeopackageCache(TileCacheBase):
125
125
  return True
126
126
 
127
127
  def _verify_table(self):
128
- with sqlite3.connect(self.geopackage_file) as db:
128
+ with sqlite3.connect(self.geopackage_file, timeout=self.timeout) as db:
129
129
  cur = db.execute("""SELECT name FROM sqlite_master WHERE type='table' AND name=?""",
130
130
  (self.table_name,))
131
131
  content = cur.fetchone()
@@ -135,7 +135,7 @@ class GeopackageCache(TileCacheBase):
135
135
  return True
136
136
 
137
137
  def _verify_gpkg_contents(self):
138
- with sqlite3.connect(self.geopackage_file) as db:
138
+ with sqlite3.connect(self.geopackage_file, timeout=self.timeout) as db:
139
139
  cur = db.execute("""SELECT * FROM gpkg_contents WHERE table_name = ?""", (self.table_name,))
140
140
 
141
141
  results = cur.fetchone()
@@ -159,7 +159,7 @@ class GeopackageCache(TileCacheBase):
159
159
  return True
160
160
 
161
161
  def _verify_tile_size(self):
162
- with sqlite3.connect(self.geopackage_file) as db:
162
+ with sqlite3.connect(self.geopackage_file, timeout=self.timeout) as db:
163
163
  cur = db.execute(
164
164
  """SELECT * FROM gpkg_tile_matrix WHERE table_name = ?""",
165
165
  (self.table_name,))
@@ -193,7 +193,7 @@ class GeopackageCache(TileCacheBase):
193
193
 
194
194
  def _initialize_gpkg(self):
195
195
  log.info('initializing Geopackage file %s', self.geopackage_file)
196
- db = sqlite3.connect(self.geopackage_file)
196
+ db = sqlite3.connect(self.geopackage_file, timeout=self.timeout)
197
197
 
198
198
  if self.wal:
199
199
  db.execute('PRAGMA journal_mode=wal')
@@ -392,6 +392,14 @@
392
392
  "description": "URL to an image used as a legend for this layer",
393
393
  "type": "string"
394
394
  },
395
+ "wmts_rest_legendurl": {
396
+ "description": "A static legendurl for the wmts rest capabilites",
397
+ "type": "string"
398
+ },
399
+ "wmts_kvp_legendurl": {
400
+ "description": "A static legendurl for the wmts kvp capabilites",
401
+ "type": "string"
402
+ },
395
403
  "md": {
396
404
  "title": "md",
397
405
  "description": "Additional metadata for this layer",
@@ -24,6 +24,7 @@ from mapproxy.util.py import memoize
24
24
  from mapproxy.config.spec import validate_options, add_source_to_mapproxy_yaml_spec, add_service_to_mapproxy_yaml_spec
25
25
  from mapproxy.config.validator import validate
26
26
  from mapproxy.config import load_default_config, finish_base_config, defaults
27
+ from mapproxy.service.ows import OWSServer
27
28
 
28
29
  import os
29
30
  import sys
@@ -1950,13 +1951,26 @@ class LayerConfiguration(ConfigurationBase):
1950
1951
  md['format'] = self.context.caches[cache_name].image_opts().format
1951
1952
  md['cache_name'] = cache_name
1952
1953
  md['extent'] = extent
1954
+ md['wmts_kvp_legendurl'] = self.conf.get('wmts_kvp_legendurl')
1955
+ md['wmts_rest_legendurl'] = self.conf.get('wmts_rest_legendurl')
1956
+ if 'legendurl' in self.conf:
1957
+ wms_conf = self.context.services.conf.get('wms')
1958
+ if wms_conf is not None:
1959
+ versions = wms_conf.get('versions', ['1.3.0'])
1960
+ versions.sort(key=lambda s: [int(u) for u in s.split('.')])
1961
+ legendurl = (f'{{base_url}}/service?service=WMS&amp;request=GetLegendGraphic&amp;'
1962
+ f'version={versions[-1]}&amp;format=image%2Fpng&amp;layer={{layer_name}}')
1963
+ if md['wmts_kvp_legendurl'] is None:
1964
+ md['wmts_kvp_legendurl'] = legendurl
1965
+ if md['wmts_rest_legendurl'] is None:
1966
+ md['wmts_rest_legendurl'] = legendurl
1953
1967
  tile_layers.append(
1954
1968
  TileLayer(
1955
1969
  self.conf['name'], self.conf['title'],
1956
1970
  info_sources=fi_sources,
1957
1971
  md=md,
1958
1972
  tile_manager=cache_source,
1959
- dimensions=dimensions,
1973
+ dimensions=dimensions
1960
1974
  )
1961
1975
  )
1962
1976
 
@@ -2050,9 +2064,7 @@ class ServiceConfiguration(ConfigurationBase):
2050
2064
  else:
2051
2065
  services.append(new_service)
2052
2066
 
2053
- if ows_services:
2054
- from mapproxy.service.ows import OWSServer
2055
- services.append(OWSServer(ows_services))
2067
+ services.append(OWSServer(ows_services))
2056
2068
  return services
2057
2069
 
2058
2070
  def tile_layers(self, conf, use_grid_names=False):
@@ -615,6 +615,8 @@ mapproxy_yaml_spec = {
615
615
  'name': str(),
616
616
  required('title'): str,
617
617
  'legendurl': str(),
618
+ 'wmts_rest_legendurl': str(),
619
+ 'wmts_kvp_legendurl': str(),
618
620
  'layers': recursive(),
619
621
  'md': wms_130_layer_md,
620
622
  'dimensions': {