MapProxy 2.0.0__tar.gz → 2.0.1__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 (522) hide show
  1. {MapProxy-2.0.0 → MapProxy-2.0.1}/CHANGES.txt +14 -0
  2. {MapProxy-2.0.0 → MapProxy-2.0.1}/MapProxy.egg-info/PKG-INFO +15 -12
  3. {MapProxy-2.0.0 → MapProxy-2.0.1}/PKG-INFO +15 -12
  4. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/conf.py +1 -1
  5. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/configuration.rst +12 -0
  6. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/configuration_examples.rst +19 -0
  7. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/cache/azureblob.py +11 -1
  8. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/cache/file.py +11 -1
  9. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/cache/path.py +40 -34
  10. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/cache/s3.py +13 -1
  11. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/cache/tile.py +7 -5
  12. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/config/defaults.py +4 -0
  13. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/config/loader.py +2 -1
  14. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/config_template/base_config/full_example.yaml +5 -0
  15. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/service/demo.py +17 -4
  16. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/service/templates/demo/tms_demo.html +5 -1
  17. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/service/templates/demo/wms_demo.html +5 -1
  18. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/service/templates/demo/wmts_demo.html +5 -1
  19. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/mocker.py +6 -2
  20. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_mixed_mode_format.py +6 -6
  21. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/test_image_messages.py +9 -0
  22. {MapProxy-2.0.0 → MapProxy-2.0.1}/requirements-tests.txt +9 -9
  23. {MapProxy-2.0.0 → MapProxy-2.0.1}/setup.py +1 -1
  24. {MapProxy-2.0.0 → MapProxy-2.0.1}/AUTHORS.txt +0 -0
  25. {MapProxy-2.0.0 → MapProxy-2.0.1}/COPYING.txt +0 -0
  26. {MapProxy-2.0.0 → MapProxy-2.0.1}/LICENSE.txt +0 -0
  27. {MapProxy-2.0.0 → MapProxy-2.0.1}/MANIFEST.in +0 -0
  28. {MapProxy-2.0.0 → MapProxy-2.0.1}/MapProxy.egg-info/SOURCES.txt +0 -0
  29. {MapProxy-2.0.0 → MapProxy-2.0.1}/MapProxy.egg-info/dependency_links.txt +0 -0
  30. {MapProxy-2.0.0 → MapProxy-2.0.1}/MapProxy.egg-info/entry_points.txt +0 -0
  31. {MapProxy-2.0.0 → MapProxy-2.0.1}/MapProxy.egg-info/not-zip-safe +0 -0
  32. {MapProxy-2.0.0 → MapProxy-2.0.1}/MapProxy.egg-info/requires.txt +0 -0
  33. {MapProxy-2.0.0 → MapProxy-2.0.1}/MapProxy.egg-info/top_level.txt +0 -0
  34. {MapProxy-2.0.0 → MapProxy-2.0.1}/README.rst +0 -0
  35. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/GM.txt +0 -0
  36. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/Makefile +0 -0
  37. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/_static/logo.png +0 -0
  38. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/_static/mapproxy.css +0 -0
  39. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/_templates/layout.html +0 -0
  40. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/_templates/navbar.html +0 -0
  41. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/_templates/toctree.html +0 -0
  42. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/auth.rst +0 -0
  43. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/caches.rst +0 -0
  44. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/caching_layer_dimensions.rst +0 -0
  45. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/coverages.rst +0 -0
  46. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/decorate_img.rst +0 -0
  47. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/deployment.rst +0 -0
  48. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/development.rst +0 -0
  49. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/imgs/bicubic.png +0 -0
  50. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/imgs/bilinear.png +0 -0
  51. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/imgs/labeling-dynamic.png +0 -0
  52. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/imgs/labeling-meta-buffer.png +0 -0
  53. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/imgs/labeling-metatiling-buffer.png +0 -0
  54. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/imgs/labeling-metatiling.png +0 -0
  55. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/imgs/labeling-no-clip.png +0 -0
  56. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/imgs/labeling-no-placement.png +0 -0
  57. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/imgs/labeling-partial-false.png +0 -0
  58. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/imgs/labeling-repeated.png +0 -0
  59. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/imgs/mapnik-webmerc-hq.png +0 -0
  60. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/imgs/mapnik-webmerc.png +0 -0
  61. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/imgs/mapproxy-demo.png +0 -0
  62. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/imgs/nearest.png +0 -0
  63. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/index.rst +0 -0
  64. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/inspire.rst +0 -0
  65. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/install.rst +0 -0
  66. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/install_docker.rst +0 -0
  67. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/install_osgeo4w.rst +0 -0
  68. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/install_windows.rst +0 -0
  69. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/labeling.rst +0 -0
  70. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/mapproxy_2.rst +0 -0
  71. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/mapproxy_util.rst +0 -0
  72. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/mapproxy_util_autoconfig.rst +0 -0
  73. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/plugins.rst +0 -0
  74. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/seed.rst +0 -0
  75. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/services.rst +0 -0
  76. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/sources.rst +0 -0
  77. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/tutorial.rst +0 -0
  78. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/tutorial.yaml +0 -0
  79. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/yaml/cache_conf.yaml +0 -0
  80. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/yaml/grid_conf.yaml +0 -0
  81. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/yaml/merged_conf.yaml +0 -0
  82. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/yaml/meta_conf.yaml +0 -0
  83. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/yaml/seed.yaml +0 -0
  84. {MapProxy-2.0.0 → MapProxy-2.0.1}/doc/yaml/simple_conf.yaml +0 -0
  85. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/__init__.py +0 -0
  86. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/cache/__init__.py +0 -0
  87. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/cache/base.py +0 -0
  88. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/cache/compact.py +0 -0
  89. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/cache/couchdb.py +0 -0
  90. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/cache/dummy.py +0 -0
  91. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/cache/geopackage.py +0 -0
  92. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/cache/legend.py +0 -0
  93. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/cache/mbtiles.py +0 -0
  94. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/cache/meta.py +0 -0
  95. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/cache/redis.py +0 -0
  96. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/cache/renderd.py +0 -0
  97. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/cache/riak.py +0 -0
  98. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/client/__init__.py +0 -0
  99. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/client/arcgis.py +0 -0
  100. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/client/cgi.py +0 -0
  101. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/client/http.py +0 -0
  102. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/client/log.py +0 -0
  103. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/client/tile.py +0 -0
  104. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/client/wms.py +0 -0
  105. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/compat/__init__.py +0 -0
  106. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/compat/image.py +0 -0
  107. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/compat/itertools.py +0 -0
  108. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/compat/modules.py +0 -0
  109. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/config/__init__.py +0 -0
  110. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/config/config.py +0 -0
  111. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/config/coverage.py +0 -0
  112. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/config/spec.py +0 -0
  113. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/config/validator.py +0 -0
  114. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/config_template/__init__.py +0 -0
  115. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/config_template/base_config/config.wsgi +0 -0
  116. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/config_template/base_config/full_seed_example.yaml +0 -0
  117. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/config_template/base_config/log.ini +0 -0
  118. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/config_template/base_config/mapproxy.yaml +0 -0
  119. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/config_template/base_config/seed.yaml +0 -0
  120. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/exception.py +0 -0
  121. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/featureinfo.py +0 -0
  122. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/grid.py +0 -0
  123. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/image/__init__.py +0 -0
  124. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/image/fonts/DejaVuSans.ttf +0 -0
  125. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/image/fonts/DejaVuSansMono.ttf +0 -0
  126. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/image/fonts/LICENSE +0 -0
  127. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/image/fonts/__init__.py +0 -0
  128. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/image/mask.py +0 -0
  129. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/image/merge.py +0 -0
  130. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/image/message.py +0 -0
  131. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/image/opts.py +0 -0
  132. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/image/tile.py +0 -0
  133. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/image/transform.py +0 -0
  134. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/layer.py +0 -0
  135. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/multiapp.py +0 -0
  136. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/proj.py +0 -0
  137. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/request/__init__.py +0 -0
  138. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/request/arcgis.py +0 -0
  139. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/request/base.py +0 -0
  140. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/request/tile.py +0 -0
  141. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/request/wms/__init__.py +0 -0
  142. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/request/wms/exception.py +0 -0
  143. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/request/wmts.py +0 -0
  144. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/response.py +0 -0
  145. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/script/__init__.py +0 -0
  146. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/script/conf/__init__.py +0 -0
  147. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/script/conf/app.py +0 -0
  148. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/script/conf/caches.py +0 -0
  149. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/script/conf/geopackage.py +0 -0
  150. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/script/conf/layers.py +0 -0
  151. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/script/conf/seeds.py +0 -0
  152. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/script/conf/sources.py +0 -0
  153. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/script/conf/utils.py +0 -0
  154. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/script/defrag.py +0 -0
  155. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/script/export.py +0 -0
  156. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/script/grids.py +0 -0
  157. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/script/scales.py +0 -0
  158. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/script/util.py +0 -0
  159. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/script/wms_capabilities.py +0 -0
  160. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/seed/__init__.py +0 -0
  161. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/seed/cachelock.py +0 -0
  162. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/seed/cleanup.py +0 -0
  163. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/seed/config.py +0 -0
  164. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/seed/script.py +0 -0
  165. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/seed/seeder.py +0 -0
  166. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/seed/spec.py +0 -0
  167. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/seed/util.py +0 -0
  168. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/service/__init__.py +0 -0
  169. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/service/base.py +0 -0
  170. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/service/kml.py +0 -0
  171. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/service/ows.py +0 -0
  172. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/service/template_helper.py +0 -0
  173. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/service/templates/demo/capabilities_demo.html +0 -0
  174. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/service/templates/demo/demo.html +0 -0
  175. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/service/templates/demo/openlayers-demo.cfg +0 -0
  176. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/service/templates/demo/static/img/blank.gif +0 -0
  177. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/service/templates/demo/static/img/east-mini.png +0 -0
  178. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/service/templates/demo/static/img/north-mini.png +0 -0
  179. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/service/templates/demo/static/img/south-mini.png +0 -0
  180. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/service/templates/demo/static/img/west-mini.png +0 -0
  181. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/service/templates/demo/static/img/zoom-minus-mini.png +0 -0
  182. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/service/templates/demo/static/img/zoom-plus-mini.png +0 -0
  183. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/service/templates/demo/static/img/zoom-world-mini.png +0 -0
  184. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/service/templates/demo/static/logo.png +0 -0
  185. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/service/templates/demo/static/ol.css +0 -0
  186. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/service/templates/demo/static/ol.js +0 -0
  187. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/service/templates/demo/static/proj4.min.js +0 -0
  188. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/service/templates/demo/static/proj4defs.js +0 -0
  189. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/service/templates/demo/static/site.css +0 -0
  190. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/service/templates/demo/static/theme/default/framedCloud.css +0 -0
  191. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/service/templates/demo/static/theme/default/google.css +0 -0
  192. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/service/templates/demo/static/theme/default/ie6-style.css +0 -0
  193. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/service/templates/demo/static/theme/default/style.css +0 -0
  194. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/service/templates/demo/static.html +0 -0
  195. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/service/templates/tms_capabilities.xml +0 -0
  196. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/service/templates/tms_exception.xml +0 -0
  197. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/service/templates/tms_root_resource.xml +0 -0
  198. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/service/templates/tms_tilemap_capabilities.xml +0 -0
  199. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/service/templates/wms100capabilities.xml +0 -0
  200. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/service/templates/wms100exception.xml +0 -0
  201. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/service/templates/wms110capabilities.xml +0 -0
  202. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/service/templates/wms110exception.xml +0 -0
  203. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/service/templates/wms111capabilities.xml +0 -0
  204. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/service/templates/wms111exception.xml +0 -0
  205. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/service/templates/wms130capabilities.xml +0 -0
  206. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/service/templates/wms130exception.xml +0 -0
  207. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/service/templates/wmts100capabilities.xml +0 -0
  208. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/service/templates/wmts100exception.xml +0 -0
  209. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/service/tile.py +0 -0
  210. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/service/wms.py +0 -0
  211. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/service/wmts.py +0 -0
  212. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/source/__init__.py +0 -0
  213. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/source/arcgis.py +0 -0
  214. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/source/error.py +0 -0
  215. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/source/mapnik.py +0 -0
  216. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/source/tile.py +0 -0
  217. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/source/wms.py +0 -0
  218. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/srs.py +0 -0
  219. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/template.py +0 -0
  220. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/__init__.py +0 -0
  221. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/conftest.py +0 -0
  222. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/helper.py +0 -0
  223. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/http.py +0 -0
  224. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/image.py +0 -0
  225. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/inspire/common/1.0/common.xsd +0 -0
  226. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_bul.xsd +0 -0
  227. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_cze.xsd +0 -0
  228. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_dan.xsd +0 -0
  229. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_dut.xsd +0 -0
  230. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_eng.xsd +0 -0
  231. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_est.xsd +0 -0
  232. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_fin.xsd +0 -0
  233. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_fre.xsd +0 -0
  234. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_ger.xsd +0 -0
  235. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_gle.xsd +0 -0
  236. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_gre.xsd +0 -0
  237. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_hun.xsd +0 -0
  238. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_ita.xsd +0 -0
  239. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_lav.xsd +0 -0
  240. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_lit.xsd +0 -0
  241. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_mlt.xsd +0 -0
  242. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_pol.xsd +0 -0
  243. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_por.xsd +0 -0
  244. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_rum.xsd +0 -0
  245. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_slo.xsd +0 -0
  246. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_slv.xsd +0 -0
  247. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_spa.xsd +0 -0
  248. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_swe.xsd +0 -0
  249. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/inspire/common/1.0/network.xsd +0 -0
  250. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/inspire/inspire_vs/1.0/inspire_vs.xsd +0 -0
  251. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/kml/2.2.0/ReadMe.txt +0 -0
  252. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/kml/2.2.0/atom-author-link.xsd +0 -0
  253. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/kml/2.2.0/ogckml22.xsd +0 -0
  254. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/kml/2.2.0/xAL.xsd +0 -0
  255. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/ows/1.1.0/ReadMe.txt +0 -0
  256. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/ows/1.1.0/ows19115subset.xsd +0 -0
  257. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/ows/1.1.0/owsAll.xsd +0 -0
  258. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/ows/1.1.0/owsCommon.xsd +0 -0
  259. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/ows/1.1.0/owsContents.xsd +0 -0
  260. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/ows/1.1.0/owsDataIdentification.xsd +0 -0
  261. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/ows/1.1.0/owsDomainType.xsd +0 -0
  262. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/ows/1.1.0/owsExceptionReport.xsd +0 -0
  263. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/ows/1.1.0/owsGetCapabilities.xsd +0 -0
  264. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/ows/1.1.0/owsGetResourceByID.xsd +0 -0
  265. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/ows/1.1.0/owsInputOutputData.xsd +0 -0
  266. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/ows/1.1.0/owsManifest.xsd +0 -0
  267. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/ows/1.1.0/owsOperationsMetadata.xsd +0 -0
  268. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/ows/1.1.0/owsServiceIdentification.xsd +0 -0
  269. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/ows/1.1.0/owsServiceProvider.xsd +0 -0
  270. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/sld/1.1.0/sld_capabilities.xsd +0 -0
  271. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/wms/1.0.0/capabilities_1_0_0.dtd +0 -0
  272. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/wms/1.0.0/capabilities_1_0_0.xml +0 -0
  273. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/wms/1.0.7/capabilities_1_0_7.dtd +0 -0
  274. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/wms/1.0.7/capabilities_1_0_7.xml +0 -0
  275. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/wms/1.1.0/capabilities_1_1_0.dtd +0 -0
  276. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/wms/1.1.0/capabilities_1_1_0.xml +0 -0
  277. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/wms/1.1.0/exception_1_1_0.dtd +0 -0
  278. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/wms/1.1.0/exception_1_1_0.xml +0 -0
  279. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/wms/1.1.1/OGC-exception.xsd +0 -0
  280. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/wms/1.1.1/WMS_DescribeLayerResponse.dtd +0 -0
  281. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/wms/1.1.1/WMS_MS_Capabilities.dtd +0 -0
  282. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/wms/1.1.1/WMS_exception_1_1_1.dtd +0 -0
  283. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/wms/1.1.1/capabilities_1_1_1.dtd +0 -0
  284. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/wms/1.1.1/capabilities_1_1_1.xml +0 -0
  285. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/wms/1.1.1/exception_1_1_1.dtd +0 -0
  286. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/wms/1.1.1/exception_1_1_1.xml +0 -0
  287. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/wms/1.3.0/ReadMe.txt +0 -0
  288. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/wms/1.3.0/capabilities_1_3_0.xml +0 -0
  289. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/wms/1.3.0/capabilities_1_3_0.xsd +0 -0
  290. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/wms/1.3.0/exceptions_1_3_0.xml +0 -0
  291. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/wms/1.3.0/exceptions_1_3_0.xsd +0 -0
  292. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/wmsc/1.1.1/OGC-exception.xsd +0 -0
  293. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/wmsc/1.1.1/WMS_DescribeLayerResponse.dtd +0 -0
  294. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/wmsc/1.1.1/WMS_MS_Capabilities.dtd +0 -0
  295. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/wmsc/1.1.1/WMS_exception_1_1_1.dtd +0 -0
  296. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/wmsc/1.1.1/capabilities_1_1_1.dtd +0 -0
  297. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/wmsc/1.1.1/capabilities_1_1_1.xml +0 -0
  298. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/wmsc/1.1.1/exception_1_1_1.dtd +0 -0
  299. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/wmsc/1.1.1/exception_1_1_1.xml +0 -0
  300. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/wmts/1.0/ReadMe.txt +0 -0
  301. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/wmts/1.0/wmts.xsd +0 -0
  302. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/wmts/1.0/wmtsAbstract.wsdl +0 -0
  303. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/wmts/1.0/wmtsGetCapabilities_request.xsd +0 -0
  304. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/wmts/1.0/wmtsGetCapabilities_response.xsd +0 -0
  305. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/wmts/1.0/wmtsGetFeatureInfo_request.xsd +0 -0
  306. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/wmts/1.0/wmtsGetFeatureInfo_response.xsd +0 -0
  307. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/wmts/1.0/wmtsGetTile_request.xsd +0 -0
  308. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/wmts/1.0/wmtsKVP.xsd +0 -0
  309. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/wmts/1.0/wmtsPayload_response.xsd +0 -0
  310. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/xlink/1.0.0/ReadMe.txt +0 -0
  311. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/xlink/1.0.0/xlinks.xsd +0 -0
  312. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/schemas/xml.xsd +0 -0
  313. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/__init__.py +0 -0
  314. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/arcgis.yaml +0 -0
  315. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/auth.yaml +0 -0
  316. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/cache.mbtiles +0 -0
  317. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/cache_azureblob.yaml +0 -0
  318. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/cache_band_merge.yaml +0 -0
  319. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/cache_bulk_meta_tiles.yaml +0 -0
  320. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/cache_coverage.yaml +0 -0
  321. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/cache_data/dop_cache_EPSG3857/00/000/000/000/000/000/000.png +0 -0
  322. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/cache_data/wms_cache_EPSG900913/01/000/000/000/000/000/001.jpeg +0 -0
  323. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/cache_data/wms_cache_transparent_EPSG900913/01/000/000/000/000/000/001.png +0 -0
  324. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/cache_geopackage.yaml +0 -0
  325. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/cache_grid_names.yaml +0 -0
  326. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/cache_mbtiles.yaml +0 -0
  327. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/cache_s3.yaml +0 -0
  328. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/cache_source.yaml +0 -0
  329. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/combined_sources.yaml +0 -0
  330. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/coverage.yaml +0 -0
  331. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/demo.yaml +0 -0
  332. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/dimension.yaml +0 -0
  333. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/disable_storage.yaml +0 -0
  334. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/empty_ogrdata.geojson +0 -0
  335. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/formats.yaml +0 -0
  336. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/inspire.yaml +0 -0
  337. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/inspire_full.yaml +0 -0
  338. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/kml_layer.yaml +0 -0
  339. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/layer.yaml +0 -0
  340. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/layergroups.yaml +0 -0
  341. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/layergroups_root.yaml +0 -0
  342. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/legendgraphic.yaml +0 -0
  343. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/mapnik_source.yaml +0 -0
  344. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/mapproxy_export.yaml +0 -0
  345. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/mapserver.yaml +0 -0
  346. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/minimal_cgi.py +0 -0
  347. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/mixed_mode.yaml +0 -0
  348. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/multi_cache_layers.yaml +0 -0
  349. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/multiapp1.yaml +0 -0
  350. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/multiapp2.yaml +0 -0
  351. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/renderd_client.yaml +0 -0
  352. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/scalehints.yaml +0 -0
  353. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/seed.yaml +0 -0
  354. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/seed_mapproxy.yaml +0 -0
  355. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/seed_old.yaml +0 -0
  356. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/seed_timeouts.yaml +0 -0
  357. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/seed_timeouts_mapproxy.yaml +0 -0
  358. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/seedonly.yaml +0 -0
  359. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/sld.yaml +0 -0
  360. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/source_errors.yaml +0 -0
  361. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/source_errors_raise.yaml +0 -0
  362. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/tileservice_origin.yaml +0 -0
  363. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/tileservice_refresh.yaml +0 -0
  364. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/tilesource_minmax_res.yaml +0 -0
  365. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/util-conf-base-grids.yaml +0 -0
  366. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/util-conf-overwrite.yaml +0 -0
  367. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/util-conf-wms-111-cap.xml +0 -0
  368. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/util_grids.yaml +0 -0
  369. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/util_wms_capabilities111.xml +0 -0
  370. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/util_wms_capabilities130.xml +0 -0
  371. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/util_wms_capabilities_service_exception.xml +0 -0
  372. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/watermark.yaml +0 -0
  373. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/wms_srs_extent.yaml +0 -0
  374. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/wms_versions.yaml +0 -0
  375. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/wmts.yaml +0 -0
  376. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/wmts_dimensions.yaml +0 -0
  377. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/xslt_featureinfo.yaml +0 -0
  378. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/fixture/xslt_featureinfo_input.yaml +0 -0
  379. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_arcgis.py +0 -0
  380. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_auth.py +0 -0
  381. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_behind_proxy.py +0 -0
  382. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_bulk_meta_tiles.py +0 -0
  383. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_cache_azureblob.py +0 -0
  384. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_cache_band_merge.py +0 -0
  385. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_cache_coverage.py +0 -0
  386. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_cache_geopackage.py +0 -0
  387. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_cache_grid_names.py +0 -0
  388. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_cache_mbtiles.py +0 -0
  389. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_cache_s3.py +0 -0
  390. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_cache_source.py +0 -0
  391. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_combined_sources.py +0 -0
  392. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_coverage.py +0 -0
  393. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_decorate_img.py +0 -0
  394. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_demo.py +0 -0
  395. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_demo_with_extra_service.py +0 -0
  396. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_dimensions.py +0 -0
  397. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_disable_storage.py +0 -0
  398. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_formats.py +0 -0
  399. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_inspire_vs.py +0 -0
  400. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_kml.py +0 -0
  401. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_layergroups.py +0 -0
  402. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_legendgraphic.py +0 -0
  403. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_mapnik.py +0 -0
  404. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_mapserver.py +0 -0
  405. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_multi_cache_layers.py +0 -0
  406. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_multiapp.py +0 -0
  407. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_refresh.py +0 -0
  408. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_renderd_client.py +0 -0
  409. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_response_headers.py +0 -0
  410. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_scalehints.py +0 -0
  411. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_seed.py +0 -0
  412. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_seed_only.py +0 -0
  413. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_sld.py +0 -0
  414. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_source_errors.py +0 -0
  415. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_tilesource_minmax_res.py +0 -0
  416. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_tms.py +0 -0
  417. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_tms_origin.py +0 -0
  418. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_util_conf.py +0 -0
  419. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_util_export.py +0 -0
  420. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_util_grids.py +0 -0
  421. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_util_wms_capabilities.py +0 -0
  422. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_watermark.py +0 -0
  423. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_wms.py +0 -0
  424. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_wms_srs_extent.py +0 -0
  425. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_wms_version.py +0 -0
  426. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_wmsc.py +0 -0
  427. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_wmts.py +0 -0
  428. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_wmts_dimensions.py +0 -0
  429. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_wmts_restful.py +0 -0
  430. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/system/test_xslt_featureinfo.py +0 -0
  431. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/test_http_helper.py +0 -0
  432. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/__init__.py +0 -0
  433. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/epsg +0 -0
  434. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/polygons/polygons.dbf +0 -0
  435. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/polygons/polygons.shp +0 -0
  436. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/polygons/polygons.shx +0 -0
  437. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/test_async.py +0 -0
  438. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/test_auth.py +0 -0
  439. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/test_cache.py +0 -0
  440. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/test_cache_azureblob.py +0 -0
  441. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/test_cache_compact.py +0 -0
  442. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/test_cache_couchdb.py +0 -0
  443. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/test_cache_geopackage.py +0 -0
  444. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/test_cache_redis.py +0 -0
  445. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/test_cache_riak.py +0 -0
  446. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/test_cache_s3.py +0 -0
  447. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/test_cache_tile.py +0 -0
  448. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/test_client.py +0 -0
  449. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/test_client_arcgis.py +0 -0
  450. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/test_client_cgi.py +0 -0
  451. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/test_collections.py +0 -0
  452. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/test_concat_legends.py +0 -0
  453. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/test_conf_loader.py +0 -0
  454. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/test_conf_validator.py +0 -0
  455. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/test_config.py +0 -0
  456. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/test_decorate_img.py +0 -0
  457. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/test_exceptions.py +0 -0
  458. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/test_featureinfo.py +0 -0
  459. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/test_file_lock_load.py +0 -0
  460. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/test_geom.py +0 -0
  461. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/test_grid.py +0 -0
  462. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/test_image.py +0 -0
  463. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/test_image_mask.py +0 -0
  464. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/test_image_options.py +0 -0
  465. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/test_isodate.py +0 -0
  466. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/test_multiapp.py +0 -0
  467. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/test_ogr_reader.py +0 -0
  468. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/test_request.py +0 -0
  469. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/test_request_wmts.py +0 -0
  470. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/test_response.py +0 -0
  471. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/test_seed.py +0 -0
  472. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/test_seed_cachelock.py +0 -0
  473. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/test_srs.py +0 -0
  474. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/test_tiled_source.py +0 -0
  475. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/test_tilefilter.py +0 -0
  476. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/test_times.py +0 -0
  477. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/test_timeutils.py +0 -0
  478. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/test_util_conf_utils.py +0 -0
  479. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/test_utils.py +0 -0
  480. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/test_wms_capabilities.py +0 -0
  481. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/test_wms_layer.py +0 -0
  482. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/test/unit/test_yaml.py +0 -0
  483. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/tilefilter.py +0 -0
  484. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/util/__init__.py +0 -0
  485. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/util/async_.py +0 -0
  486. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/util/collections.py +0 -0
  487. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/util/coverage.py +0 -0
  488. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/util/ext/__init__.py +0 -0
  489. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/util/ext/dictspec/__init__.py +0 -0
  490. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/util/ext/dictspec/spec.py +0 -0
  491. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/util/ext/dictspec/test/__init__.py +0 -0
  492. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/util/ext/dictspec/test/test_validator.py +0 -0
  493. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/util/ext/dictspec/validator.py +0 -0
  494. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/util/ext/local.py +0 -0
  495. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/util/ext/lockfile.py +0 -0
  496. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/util/ext/odict.py +0 -0
  497. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/util/ext/serving.py +0 -0
  498. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/util/ext/tempita/__init__.py +0 -0
  499. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/util/ext/tempita/_looper.py +0 -0
  500. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/util/ext/tempita/compat3.py +0 -0
  501. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/util/ext/wmsparse/__init__.py +0 -0
  502. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/util/ext/wmsparse/duration.py +0 -0
  503. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/util/ext/wmsparse/parse.py +0 -0
  504. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/util/ext/wmsparse/test/__init__.py +0 -0
  505. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/util/ext/wmsparse/test/test_parse.py +0 -0
  506. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/util/ext/wmsparse/test/test_util.py +0 -0
  507. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/util/ext/wmsparse/test/wms-large-111.xml +0 -0
  508. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/util/ext/wmsparse/test/wms-omniscale-111.xml +0 -0
  509. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/util/ext/wmsparse/test/wms-omniscale-130.xml +0 -0
  510. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/util/ext/wmsparse/test/wms_nasa_cap.xml +0 -0
  511. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/util/ext/wmsparse/util.py +0 -0
  512. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/util/fs.py +0 -0
  513. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/util/geom.py +0 -0
  514. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/util/lib.py +0 -0
  515. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/util/lock.py +0 -0
  516. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/util/ogr.py +0 -0
  517. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/util/py.py +0 -0
  518. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/util/times.py +0 -0
  519. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/util/yaml.py +0 -0
  520. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/version.py +0 -0
  521. {MapProxy-2.0.0 → MapProxy-2.0.1}/mapproxy/wsgiapp.py +0 -0
  522. {MapProxy-2.0.0 → MapProxy-2.0.1}/setup.cfg +0 -0
@@ -1,6 +1,20 @@
1
1
  Nightly
2
2
  ~~~~~~~~~~~~~~~~~
3
3
 
4
+ 2.0.1 2024-01-05
5
+ ~~~~~~~~~~~~~~~~~
6
+ Improvements:
7
+
8
+ - Alpine based docker images have been added
9
+ - Added parameter to change background map source in layer preview
10
+ - Dependency updates
11
+
12
+ Fixes:
13
+
14
+ - Rendering issue: Check for existing tile coordinates before using them
15
+ - Fix mixed image format for file, S3 and azureblob caches
16
+
17
+
4
18
  2.0.0 2023-12-19
5
19
  ~~~~~~~~~~~~~~~~~
6
20
  Breaking:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: MapProxy
3
- Version: 2.0.0
3
+ Version: 2.0.1
4
4
  Summary: An accelerating proxy for tile and web map services
5
5
  Home-page: https://mapproxy.org
6
6
  Author: Oliver Tonnhofer
@@ -40,6 +40,20 @@ Changes
40
40
  Nightly
41
41
  ~~~~~~~~~~~~~~~~~
42
42
 
43
+ 2.0.1 2024-01-05
44
+ ~~~~~~~~~~~~~~~~~
45
+ Improvements:
46
+
47
+ - Alpine based docker images have been added
48
+ - Added parameter to change background map source in layer preview
49
+ - Dependency updates
50
+
51
+ Fixes:
52
+
53
+ - Rendering issue: Check for existing tile coordinates before using them
54
+ - Fix mixed image format for file, S3 and azureblob caches
55
+
56
+
43
57
  2.0.0 2023-12-19
44
58
  ~~~~~~~~~~~~~~~~~
45
59
  Breaking:
@@ -130,17 +144,6 @@ Fixes:
130
144
 
131
145
  - Hotfix: Fixup demo service (#528).
132
146
 
133
- 1.13.1 2021-07-13
134
- ~~~~~~~~~~~~~~~~~
135
-
136
- Improvements:
137
-
138
- - Support cookie management for HTTP sources.
139
-
140
- Fixes:
141
-
142
- - Security fix for local file disclosure (#526).
143
-
144
147
 
145
148
  Older changes
146
149
  -------------
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: MapProxy
3
- Version: 2.0.0
3
+ Version: 2.0.1
4
4
  Summary: An accelerating proxy for tile and web map services
5
5
  Home-page: https://mapproxy.org
6
6
  Author: Oliver Tonnhofer
@@ -40,6 +40,20 @@ Changes
40
40
  Nightly
41
41
  ~~~~~~~~~~~~~~~~~
42
42
 
43
+ 2.0.1 2024-01-05
44
+ ~~~~~~~~~~~~~~~~~
45
+ Improvements:
46
+
47
+ - Alpine based docker images have been added
48
+ - Added parameter to change background map source in layer preview
49
+ - Dependency updates
50
+
51
+ Fixes:
52
+
53
+ - Rendering issue: Check for existing tile coordinates before using them
54
+ - Fix mixed image format for file, S3 and azureblob caches
55
+
56
+
43
57
  2.0.0 2023-12-19
44
58
  ~~~~~~~~~~~~~~~~~
45
59
  Breaking:
@@ -130,17 +144,6 @@ Fixes:
130
144
 
131
145
  - Hotfix: Fixup demo service (#528).
132
146
 
133
- 1.13.1 2021-07-13
134
- ~~~~~~~~~~~~~~~~~
135
-
136
- Improvements:
137
-
138
- - Support cookie management for HTTP sources.
139
-
140
- Fixes:
141
-
142
- - Security fix for local file disclosure (#526).
143
-
144
147
 
145
148
  Older changes
146
149
  -------------
@@ -51,7 +51,7 @@ copyright = u'Oliver Tonnhofer, Omniscale'
51
51
  # The short X.Y version.
52
52
  version = '2.0'
53
53
  # The full version, including alpha/beta/rc tags.
54
- release = '2.0.0'
54
+ release = '2.0.1'
55
55
 
56
56
  # The language for content autogenerated by Sphinx. Refer to documentation
57
57
  # for a list of supported languages.
@@ -820,6 +820,18 @@ globals
820
820
 
821
821
  Here you can define some internals of MapProxy and default values that are used in the other configuration directives.
822
822
 
823
+ .. _globals_background:
824
+
825
+ ``background``
826
+ """"""""""""""
827
+
828
+ Configuration of the background displayed in the map viewer. This background map can be observed in the /demo service
829
+ of MapProxy, in any of the three types of service (WMS, WMTS and TMS).
830
+
831
+ .. _background_url:
832
+
833
+ ``url``
834
+ URL of the tile service (it MUST be a service that offers tiles in XYZ format e.g. "https://tile.openstreetmap.org/{z}/{x}/{y}.png")
823
835
 
824
836
  ``image``
825
837
  """""""""
@@ -139,6 +139,25 @@ Example configuration for an OpenStreetMap tile service::
139
139
 
140
140
  .. note:: Please make sure you are allowed to access the tile service. Commercial tile provider often prohibit the direct access to tiles. The tile service from OpenStreetMap has a strict `Tile Usage Prolicy <http://wiki.openstreetmap.org/wiki/Tile_usage_policy>`_.
141
141
 
142
+
143
+ .. _display_custom_background:
144
+
145
+ Display custom background map in the map viewer of the demo service
146
+ ===================================================================
147
+
148
+ In order to setup the background displayed in the map viewer of the /demo service of Mapproxy
149
+ you need to add the service of the background map to ``globals``.
150
+
151
+ Here is a minimal example with the default configuration::
152
+
153
+ globals:
154
+ # background map of the demo service
155
+ background:
156
+ # tile source in ZXY format
157
+ url: "https://tile.openstreetmap.org/{z}/{x}/{y}.png"
158
+
159
+ .. note:: URL of the tile service MUST be in XYZ format. Please make sure you are allowed to access the tile service. Commercial tile provider often prohibit the direct access to tiles. The tile service from OpenStreetMap has a strict `Tile Usage Prolicy <http://wiki.openstreetmap.org/wiki/Tile_usage_policy>`_.
160
+
142
161
  .. _overlay_tiles_osm_openlayers:
143
162
 
144
163
  Overlay tiles with OpenStreetMap or Google Maps in OpenLayers
@@ -57,6 +57,7 @@ class AzureBlobCache(TileCacheBase):
57
57
 
58
58
  self.base_path = base_path
59
59
  self.file_ext = file_ext
60
+ self.is_mixed = self.file_ext == 'mixed'
60
61
  self._concurrent_writer = _concurrent_writer
61
62
  self._concurrent_reader = _concurrent_reader
62
63
  self._tile_location, _ = path.location_funcs(layout=directory_layout)
@@ -70,7 +71,16 @@ class AzureBlobCache(TileCacheBase):
70
71
  return self._container_client_cache.client
71
72
 
72
73
  def tile_key(self, tile):
73
- return self._tile_location(tile, self.base_path, self.file_ext).lstrip('/')
74
+ if self.is_mixed:
75
+ location = self._tile_location(tile, self.base_path, 'jpeg').lstrip('/')
76
+ blob = self.container_client.get_blob_client(location)
77
+ if not blob.exists():
78
+ tile.location = None
79
+ location = self._tile_location(tile, self.base_path, 'png').lstrip('/')
80
+ else:
81
+ location = self._tile_location(tile, self.base_path, self.file_ext).lstrip('/')
82
+ tile.location = location
83
+ return location
74
84
 
75
85
  def load_tile_metadata(self, tile, dimensions=None):
76
86
  if tile.timestamp:
@@ -42,6 +42,7 @@ class FileCache(TileCacheBase):
42
42
  self.cache_dir = cache_dir
43
43
  self.file_ext = file_ext
44
44
  self.image_opts = image_opts
45
+ self.is_mixed = self.file_ext == 'mixed'
45
46
  self.link_single_color_images = link_single_color_images
46
47
  self._tile_location, self._level_location = path.location_funcs(layout=directory_layout)
47
48
  if self._level_location is None:
@@ -53,7 +54,16 @@ class FileCache(TileCacheBase):
53
54
  items.sort()
54
55
  dimensions_str = ['{key}-{value}'.format(key=i, value=dimensions[i].replace('/', '_')) for i in items]
55
56
  cache_dir = os.path.join(self.cache_dir, '_'.join(dimensions_str))
56
- return self._tile_location(tile, self.cache_dir, self.file_ext, create_dir=create_dir, dimensions=dimensions)
57
+
58
+ if self.is_mixed:
59
+ location = self._tile_location(tile, self.cache_dir, 'jpeg', create_dir=create_dir, dimensions=dimensions)
60
+ if not os.path.exists(location):
61
+ tile.location = None
62
+ location = self._tile_location(tile, self.cache_dir, 'png', create_dir=create_dir, dimensions=dimensions)
63
+ else:
64
+ location = self._tile_location(tile, self.cache_dir, self.file_ext, create_dir=create_dir, dimensions=dimensions)
65
+ tile.location = location
66
+ return location
57
67
 
58
68
  def level_location(self, level, dimensions=None):
59
69
  """
@@ -96,22 +96,23 @@ def tile_location_tc(tile, cache_dir, file_ext, create_dir=False, dimensions=Non
96
96
  >>> tile_location_tc(Tile((3, 4, 2)), '/tmp/cache', 'png').replace('\\\\', '/')
97
97
  '/tmp/cache/02/000/000/003/000/000/004.png'
98
98
  """
99
- if tile.location is None:
99
+ location = tile.location
100
+ if location is None:
100
101
  x, y, z = tile.coord
101
102
 
102
103
  parts = (cache_dir,
103
104
  dimensions_part(dimensions),
104
105
  level_part(z),
105
- "%03d" % int(x / 1000000),
106
- "%03d" % (int(x / 1000) % 1000),
107
- "%03d" % (int(x) % 1000),
108
- "%03d" % int(y / 1000000),
109
- "%03d" % (int(y / 1000) % 1000),
110
- "%03d.%s" % (int(y) % 1000, file_ext))
111
- tile.location = os.path.join(*parts)
106
+ "%03d" % int(x / 1000000),
107
+ "%03d" % (int(x / 1000) % 1000),
108
+ "%03d" % (int(x) % 1000),
109
+ "%03d" % int(y / 1000000),
110
+ "%03d" % (int(y / 1000) % 1000),
111
+ "%03d.%s" % (int(y) % 1000, file_ext))
112
+ location = os.path.join(*parts)
112
113
  if create_dir:
113
- ensure_directory(tile.location)
114
- return tile.location
114
+ ensure_directory(location)
115
+ return location
115
116
 
116
117
  def tile_location_mp(tile, cache_dir, file_ext, create_dir=False, dimensions=None):
117
118
  """
@@ -128,19 +129,20 @@ def tile_location_mp(tile, cache_dir, file_ext, create_dir=False, dimensions=Non
128
129
  >>> tile_location_mp(Tile((12345678, 98765432, 22)), '/tmp/cache', 'png').replace('\\\\', '/')
129
130
  '/tmp/cache/22/1234/5678/9876/5432.png'
130
131
  """
131
- if tile.location is None:
132
+ location = tile.location
133
+ if location is None:
132
134
  x, y, z = tile.coord
133
135
  parts = (cache_dir,
134
136
  dimensions_part(dimensions),
135
137
  level_part(z),
136
- "%04d" % int(x / 10000),
137
- "%04d" % (int(x) % 10000),
138
- "%04d" % int(y / 10000),
139
- "%04d.%s" % (int(y) % 10000, file_ext))
140
- tile.location = os.path.join(*parts)
138
+ "%04d" % int(x / 10000),
139
+ "%04d" % (int(x) % 10000),
140
+ "%04d" % int(y / 10000),
141
+ "%04d.%s" % (int(y) % 10000, file_ext))
142
+ location = os.path.join(*parts)
141
143
  if create_dir:
142
- ensure_directory(tile.location)
143
- return tile.location
144
+ ensure_directory(location)
145
+ return location
144
146
 
145
147
  def tile_location_tms(tile, cache_dir, file_ext, create_dir=False, dimensions=None):
146
148
  """
@@ -155,15 +157,16 @@ def tile_location_tms(tile, cache_dir, file_ext, create_dir=False, dimensions=No
155
157
  >>> tile_location_tms(Tile((3, 4, 2)), '/tmp/cache', 'png').replace('\\\\', '/')
156
158
  '/tmp/cache/2/3/4.png'
157
159
  """
158
- if tile.location is None:
160
+ location = tile.location
161
+ if location is None:
159
162
  x, y, z = tile.coord
160
- tile.location = os.path.join(
163
+ location = os.path.join(
161
164
  cache_dir,dimensions_part(dimensions) ,level_part(str(z)),
162
165
  str(x), str(y) + '.' + file_ext
163
166
  )
164
167
  if create_dir:
165
- ensure_directory(tile.location)
166
- return tile.location
168
+ ensure_directory(location)
169
+ return location
167
170
 
168
171
  def tile_location_reverse_tms(tile, cache_dir, file_ext, create_dir=False, dimensions=None):
169
172
  """
@@ -178,14 +181,15 @@ def tile_location_reverse_tms(tile, cache_dir, file_ext, create_dir=False, dimen
178
181
  >>> tile_location_reverse_tms(Tile((3, 4, 2)), '/tmp/cache', 'png').replace('\\\\', '/')
179
182
  '/tmp/cache/4/3/2.png'
180
183
  """
181
- if tile.location is None:
184
+ location = tile.location
185
+ if location is None:
182
186
  x, y, z = tile.coord
183
- tile.location = os.path.join(
187
+ location = os.path.join(
184
188
  cache_dir,dimensions_part(dimensions),str(y), str(x), str(z) + '.' + file_ext
185
189
  )
186
190
  if create_dir:
187
- ensure_directory(tile.location)
188
- return tile.location
191
+ ensure_directory(location)
192
+ return location
189
193
 
190
194
  def level_location_tms(level, cache_dir, dimensions=None):
191
195
  return level_location(str(level), cache_dir=cache_dir)
@@ -203,7 +207,8 @@ def tile_location_quadkey(tile, cache_dir, file_ext, create_dir=False, dimension
203
207
  >>> tile_location_quadkey(Tile((3, 4, 2)), '/tmp/cache', 'png').replace('\\\\', '/')
204
208
  '/tmp/cache/11.png'
205
209
  """
206
- if tile.location is None:
210
+ location = tile.location
211
+ if location is None:
207
212
  x, y, z = tile.coord
208
213
  quadKey = ""
209
214
  for i in range(z,0,-1):
@@ -214,12 +219,12 @@ def tile_location_quadkey(tile, cache_dir, file_ext, create_dir=False, dimension
214
219
  if (y & mask) != 0:
215
220
  digit += 2
216
221
  quadKey += str(digit)
217
- tile.location = os.path.join(
222
+ location = os.path.join(
218
223
  cache_dir, quadKey + '.' + file_ext
219
224
  )
220
225
  if create_dir:
221
- ensure_directory(tile.location)
222
- return tile.location
226
+ ensure_directory(location)
227
+ return location
223
228
 
224
229
  def no_level_location(level, cache_dir, dimensions=None):
225
230
  # dummy for quadkey cache which stores all tiles in one directory
@@ -238,13 +243,14 @@ def tile_location_arcgiscache(tile, cache_dir, file_ext, create_dir=False, dimen
238
243
  >>> tile_location_arcgiscache(Tile((1234567, 87654321, 9)), '/tmp/cache', 'png').replace('\\\\', '/')
239
244
  '/tmp/cache/L09/R05397fb1/C0012d687.png'
240
245
  """
241
- if tile.location is None:
246
+ location = tile.location
247
+ if location is None:
242
248
  x, y, z = tile.coord
243
249
  parts = (cache_dir, 'L%02d' % z, 'R%08x' % y, 'C%08x.%s' % (x, file_ext))
244
- tile.location = os.path.join(*parts)
250
+ location = os.path.join(*parts)
245
251
  if create_dir:
246
- ensure_directory(tile.location)
247
- return tile.location
252
+ ensure_directory(location)
253
+ return location
248
254
 
249
255
  def level_location_arcgiscache(z, cache_dir, dimensions=None):
250
256
  return level_location('L%02d' % z, cache_dir=cache_dir, dimensions=dimensions)
@@ -79,6 +79,7 @@ class S3Cache(TileCacheBase):
79
79
 
80
80
  self.base_path = base_path
81
81
  self.file_ext = file_ext
82
+ self.is_mixed = self.file_ext == 'mixed'
82
83
  self._concurrent_writer = _concurrent_writer
83
84
 
84
85
  self._tile_location, _ = path.location_funcs(layout=directory_layout)
@@ -87,7 +88,18 @@ class S3Cache(TileCacheBase):
87
88
  return "https://{bucket}.s3.{region}.amazonaws.com/{key}".format(bucket=self.bucket_name, region=self.region_name, key=self.tile_key(tile))
88
89
 
89
90
  def tile_key(self, tile):
90
- return self._tile_location(tile, self.base_path, self.file_ext).lstrip('/')
91
+ if self.is_mixed:
92
+ location = self._tile_location(tile, self.base_path, 'jpeg').lstrip('/')
93
+ try:
94
+ self.conn().head_object(Bucket=self.bucket_name, Key=location)
95
+ except botocore.exceptions.ClientError as e:
96
+ if e.response['Error']['Code'] in ('404', 'NoSuchKey'):
97
+ tile.location = None
98
+ location = self._tile_location(tile, self.base_path, 'png').lstrip('/')
99
+ else:
100
+ location = self._tile_location(tile, self.base_path, self.file_ext).lstrip('/')
101
+ tile.location = location
102
+ return location
91
103
 
92
104
  def conn(self):
93
105
  if boto3 is None:
@@ -143,10 +143,12 @@ class TileManager(object):
143
143
  rescale_till_zoom = self.grid.levels
144
144
 
145
145
  # Remove tiles that are not in the cache coverage
146
- for t in tiles.tiles:
147
- tile_bbox = self.grid.tile_bbox(t.coord)
148
- if self.cache.coverage and not self.cache.coverage.intersects(tile_bbox, self.grid.srs):
149
- t.coord = None
146
+ if self.cache.coverage:
147
+ for t in tiles.tiles:
148
+ if t.coord:
149
+ tile_bbox = self.grid.tile_bbox(t.coord)
150
+ if not self.cache.coverage.intersects(tile_bbox, self.grid.srs):
151
+ t.coord = None
150
152
 
151
153
  tiles = self._load_tile_coords(
152
154
  tiles, dimensions=dimensions, with_metadata=with_metadata,
@@ -155,7 +157,7 @@ class TileManager(object):
155
157
 
156
158
  for t in tiles.tiles:
157
159
  # Clip tiles if clipping is enabled for coverage
158
- if self.cache.coverage and self.cache.coverage.clip and t.source:
160
+ if t.coord and self.cache.coverage and self.cache.coverage.clip and t.source:
159
161
  tile_bbox = self.grid.tile_bbox(t.coord)
160
162
  coverage = self.cache.coverage
161
163
 
@@ -26,6 +26,10 @@ wms = dict(
26
26
  )
27
27
  debug_mode = False
28
28
 
29
+ background = dict(
30
+ url = "https://tile.openstreetmap.org/{z}/{x}/{y}.png"
31
+ )
32
+
29
33
  srs = dict(
30
34
  # user sets
31
35
  axis_order_ne = set(),
@@ -2208,9 +2208,10 @@ class ServiceConfiguration(ConfigurationBase):
2208
2208
  services.append('wms_111')
2209
2209
 
2210
2210
  layers = odict(sorted(layers.items(), key=lambda x: x[1].name))
2211
+ background = self.context.globals.get_value('background', conf)
2211
2212
 
2212
2213
  return DemoServer(layers, md, tile_layers=tile_layers,
2213
- image_formats=image_formats, srs=srs, services=services, restful_template=restful_template)
2214
+ image_formats=image_formats, srs=srs, services=services, restful_template=restful_template, background = background)
2214
2215
 
2215
2216
 
2216
2217
  def load_plugins():
@@ -591,3 +591,8 @@ globals:
591
591
  encoding_options:
592
592
  # jpeg quality [0-100]
593
593
  jpeg_quality: 60
594
+
595
+ # background map of the demo service
596
+ background:
597
+ # tile source in ZXY format
598
+ url: "https://tile.openstreetmap.org/{z}/{x}/{y}.png"
@@ -86,7 +86,7 @@ def static_filename(name):
86
86
  class DemoServer(Server):
87
87
  names = ('demo',)
88
88
  def __init__(self, layers, md, request_parser=None, tile_layers=None,
89
- srs=None, image_formats=None, services=None, restful_template=None):
89
+ srs=None, image_formats=None, services=None, restful_template=None, background = None):
90
90
  Server.__init__(self)
91
91
  self.layers = layers
92
92
  self.tile_layers = tile_layers or {}
@@ -100,6 +100,7 @@ class DemoServer(Server):
100
100
  self.srs = srs
101
101
  self.services = services or []
102
102
  self.restful_template = restful_template
103
+ self.background = background
103
104
 
104
105
  def handle(self, req):
105
106
  if req.path.startswith('/demo/static/'):
@@ -258,13 +259,17 @@ class DemoServer(Server):
258
259
  width = bbox[2] - bbox[0]
259
260
  height = bbox[3] - bbox[1]
260
261
  min_res = max(width/256, height/256)
262
+ background_url = base_config().background.url
263
+ if self.background:
264
+ background_url = self.background["url"]
261
265
  return template.substitute(layer=layer,
262
266
  image_formats=self.image_formats,
263
267
  format=escape(req.args['format']),
264
268
  srs=srs,
265
269
  layer_srs=self.layer_srs,
266
270
  bbox=bbox,
267
- res=min_res)
271
+ res=min_res,
272
+ background_url = background_url)
268
273
 
269
274
  def _render_tms_template(self, template, req):
270
275
  template = get_template(template, default_inherit="demo/static.html")
@@ -288,13 +293,17 @@ class DemoServer(Server):
288
293
  add_res_to_options = True
289
294
  else:
290
295
  add_res_to_options = False
296
+ background_url = base_config().background.url
297
+ if self.background:
298
+ background_url = self.background["url"]
291
299
  return template.substitute(layer=tile_layer,
292
300
  srs=escape(req.args['srs']),
293
301
  format=escape(req.args['format']),
294
302
  resolutions=res,
295
303
  units=units,
296
304
  add_res_to_options=add_res_to_options,
297
- all_tile_layers=self.tile_layers)
305
+ all_tile_layers=self.tile_layers,
306
+ background_url = background_url)
298
307
 
299
308
  def _render_wmts_template(self, template, req):
300
309
  template = get_template(template, default_inherit="demo/static.html")
@@ -312,6 +321,9 @@ class DemoServer(Server):
312
321
  units = 'degree'
313
322
  else:
314
323
  units = 'm'
324
+ background_url = base_config().background.url
325
+ if self.background:
326
+ background_url = self.background["url"]
315
327
  return template.substitute(layer=wmts_layer,
316
328
  matrix_set=wmts_layer.grid.name,
317
329
  format=escape(req.args['format']),
@@ -319,7 +331,8 @@ class DemoServer(Server):
319
331
  resolutions=wmts_layer.grid.resolutions,
320
332
  units=units,
321
333
  all_tile_layers=self.tile_layers,
322
- restful_url=restful_url)
334
+ restful_url=restful_url,
335
+ background_url = background_url)
323
336
 
324
337
  def _render_capabilities_template(self, template, xmlfile, service, url):
325
338
  template = get_template(template, default_inherit="demo/static.html")
@@ -42,9 +42,13 @@ jscript_functions=None
42
42
  maxResolution: {{resolutions[0]}}
43
43
  });
44
44
 
45
+ const background_source = new ol.source.XYZ({
46
+ url: "{{background_url}}"
47
+ });
48
+
45
49
  const layers = [
46
50
  new ol.layer.Tile({
47
- source: new ol.source.OSM()
51
+ source: background_source
48
52
  }),
49
53
  new ol.layer.Tile({source})
50
54
  ];
@@ -42,9 +42,13 @@ jscript_functions=None
42
42
  }
43
43
  });
44
44
 
45
+ const background_source = new ol.source.XYZ({
46
+ url: "{{background_url}}"
47
+ });
48
+
45
49
  const layers = [
46
50
  new ol.layer.Tile({
47
- source: new ol.source.OSM()
51
+ source: background_source
48
52
  }),
49
53
  new ol.layer.Image({source})
50
54
  ];
@@ -58,9 +58,13 @@ jscript_functions=None
58
58
  })
59
59
  });
60
60
 
61
+ const background_source = new ol.source.XYZ({
62
+ url: "{{background_url}}"
63
+ });
64
+
61
65
  const layers = [
62
66
  new ol.layer.Tile({
63
- source: new ol.source.OSM()
67
+ source: background_source
64
68
  }),
65
69
  new ol.layer.Tile({source})
66
70
  ];
@@ -453,8 +453,12 @@ class MockerTestCase(unittest.TestCase):
453
453
  assertNotIsInstance = failIfIsInstance # Poor choice in 2.7/3.2+.
454
454
 
455
455
  # The following are missing in Python < 2.4.
456
- assertTrue = unittest.TestCase.failUnless
457
- assertFalse = unittest.TestCase.failIf
456
+ if sys.version_info < (2, 4):
457
+ assertTrue = unittest.TestCase.failUnless
458
+ assertFalse = unittest.TestCase.failIf
459
+ else:
460
+ assertTrue = unittest.TestCase.assertTrue
461
+ assertFalse = unittest.TestCase.assertFalse
458
462
 
459
463
  # The following is provided for compatibility with Twisted's trial.
460
464
  assertIdentical = assertIs
@@ -85,8 +85,8 @@ class TestWMS(SysTest):
85
85
 
86
86
  # check cache formats
87
87
  for f, format in [
88
- ["mixed_cache_EPSG900913/01/000/000/000/000/000/001.mixed", "png"],
89
- ["mixed_cache_EPSG900913/01/000/000/001/000/000/001.mixed", "jpeg"],
88
+ [f"mixed_cache_EPSG900913/01/000/000/000/000/000/001.{req_format}", "png"],
89
+ [f"mixed_cache_EPSG900913/01/000/000/001/000/000/001.{req_format}", "jpeg"],
90
90
  ]:
91
91
  assert cache_dir.join(f).check()
92
92
  check_format(cache_dir.join(f).read_binary(), format)
@@ -119,10 +119,10 @@ class TestTMS(SysTest):
119
119
 
120
120
  assert resp.content_type == "image/jpeg"
121
121
  assert cache_dir.join(
122
- "mixed_cache_EPSG900913/01/000/000/000/000/000/000.mixed"
122
+ "mixed_cache_EPSG900913/01/000/000/000/000/000/000.png"
123
123
  ).check()
124
124
  assert cache_dir.join(
125
- "mixed_cache_EPSG900913/01/000/000/001/000/000/000.mixed"
125
+ "mixed_cache_EPSG900913/01/000/000/001/000/000/000.png"
126
126
  ).check()
127
127
 
128
128
 
@@ -169,10 +169,10 @@ class TestWMTS(SysTest):
169
169
  resp = app.get(self.common_tile_req)
170
170
  assert resp.content_type == "image/jpeg"
171
171
  assert cache_dir.join(
172
- "mixed_cache_EPSG900913/01/000/000/000/000/000/001.mixed"
172
+ "mixed_cache_EPSG900913/01/000/000/000/000/000/001.png"
173
173
  ).check()
174
174
  assert cache_dir.join(
175
- "mixed_cache_EPSG900913/01/000/000/001/000/000/001.mixed"
175
+ "mixed_cache_EPSG900913/01/000/000/001/000/000/001.png"
176
176
  ).check()
177
177
 
178
178