MapProxy 2.2.0__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.2.0 → MapProxy-3.0.0}/CHANGES.txt +23 -0
  2. {MapProxy-2.2.0 → MapProxy-3.0.0}/MapProxy.egg-info/PKG-INFO +24 -26
  3. {MapProxy-2.2.0 → MapProxy-3.0.0}/MapProxy.egg-info/SOURCES.txt +1 -0
  4. {MapProxy-2.2.0 → MapProxy-3.0.0}/PKG-INFO +24 -26
  5. {MapProxy-2.2.0 → MapProxy-3.0.0}/doc/caches.rst +1 -1
  6. {MapProxy-2.2.0 → MapProxy-3.0.0}/doc/configuration.rst +10 -10
  7. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/config/loader.py +2 -3
  8. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/exception.py +39 -3
  9. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/service/ows.py +20 -2
  10. MapProxy-3.0.0/mapproxy/service/templates/ows_exception.xml +10 -0
  11. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/seed.yaml +7 -2
  12. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_legendgraphic.py +6 -6
  13. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_renderd_client.py +3 -3
  14. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_response_headers.py +1 -1
  15. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_seed.py +16 -3
  16. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_source_errors.py +4 -4
  17. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_wms.py +31 -31
  18. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_wmsc.py +3 -3
  19. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/test_client.py +5 -0
  20. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/test_exceptions.py +86 -0
  21. {MapProxy-2.2.0 → MapProxy-3.0.0}/requirements-tests.txt +15 -15
  22. {MapProxy-2.2.0 → MapProxy-3.0.0}/setup.py +1 -1
  23. {MapProxy-2.2.0 → MapProxy-3.0.0}/AUTHORS.txt +0 -0
  24. {MapProxy-2.2.0 → MapProxy-3.0.0}/COPYING.txt +0 -0
  25. {MapProxy-2.2.0 → MapProxy-3.0.0}/LICENSE.txt +0 -0
  26. {MapProxy-2.2.0 → MapProxy-3.0.0}/MANIFEST.in +0 -0
  27. {MapProxy-2.2.0 → MapProxy-3.0.0}/MapProxy.egg-info/dependency_links.txt +0 -0
  28. {MapProxy-2.2.0 → MapProxy-3.0.0}/MapProxy.egg-info/entry_points.txt +0 -0
  29. {MapProxy-2.2.0 → MapProxy-3.0.0}/MapProxy.egg-info/not-zip-safe +0 -0
  30. {MapProxy-2.2.0 → MapProxy-3.0.0}/MapProxy.egg-info/requires.txt +0 -0
  31. {MapProxy-2.2.0 → MapProxy-3.0.0}/MapProxy.egg-info/top_level.txt +0 -0
  32. {MapProxy-2.2.0 → MapProxy-3.0.0}/README.md +0 -0
  33. {MapProxy-2.2.0 → MapProxy-3.0.0}/doc/GM.txt +0 -0
  34. {MapProxy-2.2.0 → MapProxy-3.0.0}/doc/_static/logo.png +0 -0
  35. {MapProxy-2.2.0 → MapProxy-3.0.0}/doc/_static/logo_title.png +0 -0
  36. {MapProxy-2.2.0 → MapProxy-3.0.0}/doc/_static/mapproxy.css +0 -0
  37. {MapProxy-2.2.0 → MapProxy-3.0.0}/doc/_templates/versions.html +0 -0
  38. {MapProxy-2.2.0 → MapProxy-3.0.0}/doc/auth.rst +0 -0
  39. {MapProxy-2.2.0 → MapProxy-3.0.0}/doc/caching_layer_dimensions.rst +0 -0
  40. {MapProxy-2.2.0 → MapProxy-3.0.0}/doc/conf.py +0 -0
  41. {MapProxy-2.2.0 → MapProxy-3.0.0}/doc/configuration_examples.rst +0 -0
  42. {MapProxy-2.2.0 → MapProxy-3.0.0}/doc/coverages.rst +0 -0
  43. {MapProxy-2.2.0 → MapProxy-3.0.0}/doc/decorate_img.rst +0 -0
  44. {MapProxy-2.2.0 → MapProxy-3.0.0}/doc/deployment.rst +0 -0
  45. {MapProxy-2.2.0 → MapProxy-3.0.0}/doc/development.rst +0 -0
  46. {MapProxy-2.2.0 → MapProxy-3.0.0}/doc/imgs/bicubic.png +0 -0
  47. {MapProxy-2.2.0 → MapProxy-3.0.0}/doc/imgs/bilinear.png +0 -0
  48. {MapProxy-2.2.0 → MapProxy-3.0.0}/doc/imgs/labeling-dynamic.png +0 -0
  49. {MapProxy-2.2.0 → MapProxy-3.0.0}/doc/imgs/labeling-meta-buffer.png +0 -0
  50. {MapProxy-2.2.0 → MapProxy-3.0.0}/doc/imgs/labeling-metatiling-buffer.png +0 -0
  51. {MapProxy-2.2.0 → MapProxy-3.0.0}/doc/imgs/labeling-metatiling.png +0 -0
  52. {MapProxy-2.2.0 → MapProxy-3.0.0}/doc/imgs/labeling-no-clip.png +0 -0
  53. {MapProxy-2.2.0 → MapProxy-3.0.0}/doc/imgs/labeling-no-placement.png +0 -0
  54. {MapProxy-2.2.0 → MapProxy-3.0.0}/doc/imgs/labeling-partial-false.png +0 -0
  55. {MapProxy-2.2.0 → MapProxy-3.0.0}/doc/imgs/labeling-repeated.png +0 -0
  56. {MapProxy-2.2.0 → MapProxy-3.0.0}/doc/imgs/mapnik-webmerc-hq.png +0 -0
  57. {MapProxy-2.2.0 → MapProxy-3.0.0}/doc/imgs/mapnik-webmerc.png +0 -0
  58. {MapProxy-2.2.0 → MapProxy-3.0.0}/doc/imgs/mapproxy-demo.png +0 -0
  59. {MapProxy-2.2.0 → MapProxy-3.0.0}/doc/imgs/nearest.png +0 -0
  60. {MapProxy-2.2.0 → MapProxy-3.0.0}/doc/index.rst +0 -0
  61. {MapProxy-2.2.0 → MapProxy-3.0.0}/doc/inspire.rst +0 -0
  62. {MapProxy-2.2.0 → MapProxy-3.0.0}/doc/install.rst +0 -0
  63. {MapProxy-2.2.0 → MapProxy-3.0.0}/doc/install_docker.rst +0 -0
  64. {MapProxy-2.2.0 → MapProxy-3.0.0}/doc/install_osgeo4w.rst +0 -0
  65. {MapProxy-2.2.0 → MapProxy-3.0.0}/doc/install_windows.rst +0 -0
  66. {MapProxy-2.2.0 → MapProxy-3.0.0}/doc/labeling.rst +0 -0
  67. {MapProxy-2.2.0 → MapProxy-3.0.0}/doc/mapproxy_util.rst +0 -0
  68. {MapProxy-2.2.0 → MapProxy-3.0.0}/doc/mapproxy_util_autoconfig.rst +0 -0
  69. {MapProxy-2.2.0 → MapProxy-3.0.0}/doc/plugins.rst +0 -0
  70. {MapProxy-2.2.0 → MapProxy-3.0.0}/doc/seed.rst +0 -0
  71. {MapProxy-2.2.0 → MapProxy-3.0.0}/doc/services.rst +0 -0
  72. {MapProxy-2.2.0 → MapProxy-3.0.0}/doc/sources.rst +0 -0
  73. {MapProxy-2.2.0 → MapProxy-3.0.0}/doc/tutorial.rst +0 -0
  74. {MapProxy-2.2.0 → MapProxy-3.0.0}/doc/tutorial.yaml +0 -0
  75. {MapProxy-2.2.0 → MapProxy-3.0.0}/doc/yaml/cache_conf.yaml +0 -0
  76. {MapProxy-2.2.0 → MapProxy-3.0.0}/doc/yaml/grid_conf.yaml +0 -0
  77. {MapProxy-2.2.0 → MapProxy-3.0.0}/doc/yaml/merged_conf.yaml +0 -0
  78. {MapProxy-2.2.0 → MapProxy-3.0.0}/doc/yaml/meta_conf.yaml +0 -0
  79. {MapProxy-2.2.0 → MapProxy-3.0.0}/doc/yaml/seed.yaml +0 -0
  80. {MapProxy-2.2.0 → MapProxy-3.0.0}/doc/yaml/simple_conf.yaml +0 -0
  81. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/__init__.py +0 -0
  82. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/cache/__init__.py +0 -0
  83. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/cache/azureblob.py +0 -0
  84. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/cache/base.py +0 -0
  85. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/cache/compact.py +0 -0
  86. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/cache/couchdb.py +0 -0
  87. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/cache/dummy.py +0 -0
  88. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/cache/file.py +0 -0
  89. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/cache/geopackage.py +0 -0
  90. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/cache/legend.py +0 -0
  91. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/cache/mbtiles.py +0 -0
  92. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/cache/meta.py +0 -0
  93. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/cache/path.py +0 -0
  94. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/cache/redis.py +0 -0
  95. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/cache/renderd.py +0 -0
  96. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/cache/riak.py +0 -0
  97. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/cache/s3.py +0 -0
  98. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/cache/tile.py +0 -0
  99. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/client/__init__.py +0 -0
  100. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/client/arcgis.py +0 -0
  101. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/client/cgi.py +0 -0
  102. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/client/http.py +0 -0
  103. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/client/log.py +0 -0
  104. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/client/tile.py +0 -0
  105. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/client/wms.py +0 -0
  106. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/compat/__init__.py +0 -0
  107. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/compat/image.py +0 -0
  108. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/config/__init__.py +0 -0
  109. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/config/config-schema.json +0 -0
  110. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/config/config.py +0 -0
  111. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/config/coverage.py +0 -0
  112. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/config/defaults.py +0 -0
  113. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/config/spec.py +0 -0
  114. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/config/validator.py +0 -0
  115. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/config_template/__init__.py +0 -0
  116. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/config_template/base_config/config.wsgi +0 -0
  117. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/config_template/base_config/full_example.yaml +0 -0
  118. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/config_template/base_config/full_seed_example.yaml +0 -0
  119. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/config_template/base_config/log.ini +0 -0
  120. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/config_template/base_config/mapproxy.yaml +0 -0
  121. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/config_template/base_config/seed.yaml +0 -0
  122. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/featureinfo.py +0 -0
  123. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/grid.py +0 -0
  124. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/image/__init__.py +0 -0
  125. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/image/fonts/DejaVuSans.ttf +0 -0
  126. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/image/fonts/DejaVuSansMono.ttf +0 -0
  127. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/image/fonts/LICENSE +0 -0
  128. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/image/fonts/__init__.py +0 -0
  129. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/image/mask.py +0 -0
  130. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/image/merge.py +0 -0
  131. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/image/message.py +0 -0
  132. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/image/opts.py +0 -0
  133. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/image/tile.py +0 -0
  134. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/image/transform.py +0 -0
  135. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/layer.py +0 -0
  136. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/multiapp.py +0 -0
  137. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/proj.py +0 -0
  138. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/request/__init__.py +0 -0
  139. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/request/arcgis.py +0 -0
  140. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/request/base.py +0 -0
  141. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/request/tile.py +0 -0
  142. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/request/wms/__init__.py +0 -0
  143. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/request/wms/exception.py +0 -0
  144. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/request/wmts.py +0 -0
  145. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/response.py +0 -0
  146. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/script/__init__.py +0 -0
  147. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/script/conf/__init__.py +0 -0
  148. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/script/conf/app.py +0 -0
  149. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/script/conf/caches.py +0 -0
  150. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/script/conf/geopackage.py +0 -0
  151. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/script/conf/layers.py +0 -0
  152. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/script/conf/seeds.py +0 -0
  153. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/script/conf/sources.py +0 -0
  154. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/script/conf/utils.py +0 -0
  155. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/script/defrag.py +0 -0
  156. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/script/export.py +0 -0
  157. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/script/grids.py +0 -0
  158. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/script/scales.py +0 -0
  159. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/script/util.py +0 -0
  160. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/script/wms_capabilities.py +0 -0
  161. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/seed/__init__.py +0 -0
  162. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/seed/cachelock.py +0 -0
  163. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/seed/cleanup.py +0 -0
  164. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/seed/config.py +0 -0
  165. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/seed/script.py +0 -0
  166. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/seed/seeder.py +0 -0
  167. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/seed/spec.py +0 -0
  168. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/seed/util.py +0 -0
  169. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/service/__init__.py +0 -0
  170. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/service/base.py +0 -0
  171. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/service/demo.py +0 -0
  172. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/service/kml.py +0 -0
  173. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/service/template_helper.py +0 -0
  174. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/service/templates/demo/capabilities_demo.html +0 -0
  175. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/service/templates/demo/demo.html +0 -0
  176. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/service/templates/demo/openlayers-demo.cfg +0 -0
  177. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/service/templates/demo/static/img/blank.gif +0 -0
  178. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/service/templates/demo/static/img/east-mini.png +0 -0
  179. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/service/templates/demo/static/img/north-mini.png +0 -0
  180. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/service/templates/demo/static/img/south-mini.png +0 -0
  181. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/service/templates/demo/static/img/west-mini.png +0 -0
  182. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/service/templates/demo/static/img/zoom-minus-mini.png +0 -0
  183. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/service/templates/demo/static/img/zoom-plus-mini.png +0 -0
  184. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/service/templates/demo/static/img/zoom-world-mini.png +0 -0
  185. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/service/templates/demo/static/logo.png +0 -0
  186. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/service/templates/demo/static/ol.css +0 -0
  187. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/service/templates/demo/static/ol.js +0 -0
  188. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/service/templates/demo/static/proj4.min.js +0 -0
  189. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/service/templates/demo/static/proj4defs.js +0 -0
  190. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/service/templates/demo/static/site.css +0 -0
  191. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/service/templates/demo/static/theme/default/framedCloud.css +0 -0
  192. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/service/templates/demo/static/theme/default/google.css +0 -0
  193. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/service/templates/demo/static/theme/default/ie6-style.css +0 -0
  194. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/service/templates/demo/static/theme/default/style.css +0 -0
  195. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/service/templates/demo/static.html +0 -0
  196. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/service/templates/demo/tms_demo.html +0 -0
  197. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/service/templates/demo/wms_demo.html +0 -0
  198. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/service/templates/demo/wmts_demo.html +0 -0
  199. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/service/templates/tms_capabilities.xml +0 -0
  200. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/service/templates/tms_exception.xml +0 -0
  201. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/service/templates/tms_root_resource.xml +0 -0
  202. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/service/templates/tms_tilemap_capabilities.xml +0 -0
  203. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/service/templates/wms100capabilities.xml +0 -0
  204. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/service/templates/wms100exception.xml +0 -0
  205. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/service/templates/wms110capabilities.xml +0 -0
  206. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/service/templates/wms110exception.xml +0 -0
  207. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/service/templates/wms111capabilities.xml +0 -0
  208. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/service/templates/wms111exception.xml +0 -0
  209. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/service/templates/wms130capabilities.xml +0 -0
  210. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/service/templates/wms130exception.xml +0 -0
  211. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/service/templates/wmts100capabilities.xml +0 -0
  212. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/service/templates/wmts100exception.xml +0 -0
  213. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/service/tile.py +0 -0
  214. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/service/wms.py +0 -0
  215. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/service/wmts.py +0 -0
  216. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/source/__init__.py +0 -0
  217. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/source/arcgis.py +0 -0
  218. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/source/error.py +0 -0
  219. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/source/mapnik.py +0 -0
  220. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/source/tile.py +0 -0
  221. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/source/wms.py +0 -0
  222. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/srs.py +0 -0
  223. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/template.py +0 -0
  224. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/__init__.py +0 -0
  225. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/conftest.py +0 -0
  226. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/helper.py +0 -0
  227. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/http.py +0 -0
  228. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/image.py +0 -0
  229. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/mocker.py +0 -0
  230. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/common/1.0/common.xsd +0 -0
  231. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_bul.xsd +0 -0
  232. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_cze.xsd +0 -0
  233. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_dan.xsd +0 -0
  234. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_dut.xsd +0 -0
  235. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_eng.xsd +0 -0
  236. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_est.xsd +0 -0
  237. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_fin.xsd +0 -0
  238. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_fre.xsd +0 -0
  239. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_ger.xsd +0 -0
  240. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_gle.xsd +0 -0
  241. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_gre.xsd +0 -0
  242. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_hun.xsd +0 -0
  243. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_ita.xsd +0 -0
  244. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_lav.xsd +0 -0
  245. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_lit.xsd +0 -0
  246. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_mlt.xsd +0 -0
  247. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_pol.xsd +0 -0
  248. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_por.xsd +0 -0
  249. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_rum.xsd +0 -0
  250. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_slo.xsd +0 -0
  251. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_slv.xsd +0 -0
  252. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_spa.xsd +0 -0
  253. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_swe.xsd +0 -0
  254. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/common/1.0/network.xsd +0 -0
  255. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/inspire/inspire_vs/1.0/inspire_vs.xsd +0 -0
  256. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/kml/2.2.0/ReadMe.txt +0 -0
  257. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/kml/2.2.0/atom-author-link.xsd +0 -0
  258. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/kml/2.2.0/ogckml22.xsd +0 -0
  259. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/kml/2.2.0/xAL.xsd +0 -0
  260. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/ows/1.1.0/ReadMe.txt +0 -0
  261. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/ows/1.1.0/ows19115subset.xsd +0 -0
  262. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/ows/1.1.0/owsAll.xsd +0 -0
  263. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/ows/1.1.0/owsCommon.xsd +0 -0
  264. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/ows/1.1.0/owsContents.xsd +0 -0
  265. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/ows/1.1.0/owsDataIdentification.xsd +0 -0
  266. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/ows/1.1.0/owsDomainType.xsd +0 -0
  267. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/ows/1.1.0/owsExceptionReport.xsd +0 -0
  268. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/ows/1.1.0/owsGetCapabilities.xsd +0 -0
  269. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/ows/1.1.0/owsGetResourceByID.xsd +0 -0
  270. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/ows/1.1.0/owsInputOutputData.xsd +0 -0
  271. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/ows/1.1.0/owsManifest.xsd +0 -0
  272. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/ows/1.1.0/owsOperationsMetadata.xsd +0 -0
  273. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/ows/1.1.0/owsServiceIdentification.xsd +0 -0
  274. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/ows/1.1.0/owsServiceProvider.xsd +0 -0
  275. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/sld/1.1.0/sld_capabilities.xsd +0 -0
  276. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/wms/1.0.0/capabilities_1_0_0.dtd +0 -0
  277. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/wms/1.0.0/capabilities_1_0_0.xml +0 -0
  278. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/wms/1.0.7/capabilities_1_0_7.dtd +0 -0
  279. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/wms/1.0.7/capabilities_1_0_7.xml +0 -0
  280. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/wms/1.1.0/capabilities_1_1_0.dtd +0 -0
  281. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/wms/1.1.0/capabilities_1_1_0.xml +0 -0
  282. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/wms/1.1.0/exception_1_1_0.dtd +0 -0
  283. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/wms/1.1.0/exception_1_1_0.xml +0 -0
  284. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/wms/1.1.1/OGC-exception.xsd +0 -0
  285. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/wms/1.1.1/WMS_DescribeLayerResponse.dtd +0 -0
  286. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/wms/1.1.1/WMS_MS_Capabilities.dtd +0 -0
  287. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/wms/1.1.1/WMS_exception_1_1_1.dtd +0 -0
  288. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/wms/1.1.1/capabilities_1_1_1.dtd +0 -0
  289. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/wms/1.1.1/capabilities_1_1_1.xml +0 -0
  290. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/wms/1.1.1/exception_1_1_1.dtd +0 -0
  291. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/wms/1.1.1/exception_1_1_1.xml +0 -0
  292. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/wms/1.3.0/ReadMe.txt +0 -0
  293. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/wms/1.3.0/capabilities_1_3_0.xml +0 -0
  294. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/wms/1.3.0/capabilities_1_3_0.xsd +0 -0
  295. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/wms/1.3.0/exceptions_1_3_0.xml +0 -0
  296. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/wms/1.3.0/exceptions_1_3_0.xsd +0 -0
  297. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/wmsc/1.1.1/OGC-exception.xsd +0 -0
  298. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/wmsc/1.1.1/WMS_DescribeLayerResponse.dtd +0 -0
  299. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/wmsc/1.1.1/WMS_MS_Capabilities.dtd +0 -0
  300. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/wmsc/1.1.1/WMS_exception_1_1_1.dtd +0 -0
  301. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/wmsc/1.1.1/capabilities_1_1_1.dtd +0 -0
  302. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/wmsc/1.1.1/capabilities_1_1_1.xml +0 -0
  303. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/wmsc/1.1.1/exception_1_1_1.dtd +0 -0
  304. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/wmsc/1.1.1/exception_1_1_1.xml +0 -0
  305. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/wmts/1.0/ReadMe.txt +0 -0
  306. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/wmts/1.0/wmts.xsd +0 -0
  307. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/wmts/1.0/wmtsAbstract.wsdl +0 -0
  308. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/wmts/1.0/wmtsGetCapabilities_request.xsd +0 -0
  309. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/wmts/1.0/wmtsGetCapabilities_response.xsd +0 -0
  310. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/wmts/1.0/wmtsGetFeatureInfo_request.xsd +0 -0
  311. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/wmts/1.0/wmtsGetFeatureInfo_response.xsd +0 -0
  312. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/wmts/1.0/wmtsGetTile_request.xsd +0 -0
  313. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/wmts/1.0/wmtsKVP.xsd +0 -0
  314. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/wmts/1.0/wmtsPayload_response.xsd +0 -0
  315. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/xlink/1.0.0/ReadMe.txt +0 -0
  316. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/xlink/1.0.0/xlinks.xsd +0 -0
  317. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/schemas/xml.xsd +0 -0
  318. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/__init__.py +0 -0
  319. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/arcgis.yaml +0 -0
  320. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/auth.yaml +0 -0
  321. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/cache.mbtiles +0 -0
  322. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/cache_azureblob.yaml +0 -0
  323. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/cache_band_merge.yaml +0 -0
  324. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/cache_bulk_meta_tiles.yaml +0 -0
  325. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/cache_coverage.yaml +0 -0
  326. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/cache_data/dop_cache_EPSG3857/00/000/000/000/000/000/000.png +0 -0
  327. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/cache_data/wms_cache_EPSG900913/01/000/000/000/000/000/001.jpeg +0 -0
  328. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/cache_data/wms_cache_transparent_EPSG900913/01/000/000/000/000/000/001.png +0 -0
  329. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/cache_geopackage.yaml +0 -0
  330. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/cache_grid_names.yaml +0 -0
  331. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/cache_mbtiles.yaml +0 -0
  332. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/cache_s3.yaml +0 -0
  333. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/cache_source.yaml +0 -0
  334. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/combined_sources.yaml +0 -0
  335. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/coverage.yaml +0 -0
  336. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/demo.yaml +0 -0
  337. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/dimension.yaml +0 -0
  338. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/disable_storage.yaml +0 -0
  339. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/empty_ogrdata.geojson +0 -0
  340. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/formats.yaml +0 -0
  341. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/inspire.yaml +0 -0
  342. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/inspire_full.yaml +0 -0
  343. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/kml_layer.yaml +0 -0
  344. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/layer.yaml +0 -0
  345. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/layergroups.yaml +0 -0
  346. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/layergroups_root.yaml +0 -0
  347. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/legendgraphic.yaml +0 -0
  348. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/mapnik_source.yaml +0 -0
  349. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/mapproxy_export.yaml +0 -0
  350. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/mapserver.yaml +0 -0
  351. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/minimal_cgi.py +0 -0
  352. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/mixed_mode.yaml +0 -0
  353. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/multi_cache_layers.yaml +0 -0
  354. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/multiapp1.yaml +0 -0
  355. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/multiapp2.yaml +0 -0
  356. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/renderd_client.yaml +0 -0
  357. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/scalehints.yaml +0 -0
  358. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/seed_mapproxy.yaml +0 -0
  359. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/seed_old.yaml +0 -0
  360. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/seed_timeouts.yaml +0 -0
  361. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/seed_timeouts_mapproxy.yaml +0 -0
  362. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/seedonly.yaml +0 -0
  363. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/sld.yaml +0 -0
  364. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/source_errors.yaml +0 -0
  365. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/source_errors_raise.yaml +0 -0
  366. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/tileservice_origin.yaml +0 -0
  367. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/tileservice_refresh.yaml +0 -0
  368. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/tilesource_minmax_res.yaml +0 -0
  369. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/util-conf-base-grids.yaml +0 -0
  370. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/util-conf-overwrite.yaml +0 -0
  371. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/util-conf-wms-111-cap.xml +0 -0
  372. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/util_grids.yaml +0 -0
  373. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/util_wms_capabilities111.xml +0 -0
  374. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/util_wms_capabilities130.xml +0 -0
  375. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/util_wms_capabilities_service_exception.xml +0 -0
  376. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/watermark.yaml +0 -0
  377. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/wms_srs_extent.yaml +0 -0
  378. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/wms_versions.yaml +0 -0
  379. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/wmts.yaml +0 -0
  380. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/wmts_dimensions.yaml +0 -0
  381. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/xslt_featureinfo.yaml +0 -0
  382. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/fixture/xslt_featureinfo_input.yaml +0 -0
  383. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_arcgis.py +0 -0
  384. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_auth.py +0 -0
  385. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_behind_proxy.py +0 -0
  386. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_bulk_meta_tiles.py +0 -0
  387. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_cache_azureblob.py +0 -0
  388. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_cache_band_merge.py +0 -0
  389. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_cache_coverage.py +0 -0
  390. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_cache_geopackage.py +0 -0
  391. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_cache_grid_names.py +0 -0
  392. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_cache_mbtiles.py +0 -0
  393. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_cache_s3.py +0 -0
  394. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_cache_source.py +0 -0
  395. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_combined_sources.py +0 -0
  396. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_coverage.py +0 -0
  397. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_decorate_img.py +0 -0
  398. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_demo.py +0 -0
  399. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_demo_with_extra_service.py +0 -0
  400. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_dimensions.py +0 -0
  401. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_disable_storage.py +0 -0
  402. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_formats.py +0 -0
  403. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_inspire_vs.py +0 -0
  404. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_kml.py +0 -0
  405. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_layergroups.py +0 -0
  406. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_mapnik.py +0 -0
  407. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_mapserver.py +0 -0
  408. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_mixed_mode_format.py +0 -0
  409. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_multi_cache_layers.py +0 -0
  410. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_multiapp.py +0 -0
  411. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_refresh.py +0 -0
  412. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_scalehints.py +0 -0
  413. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_seed_only.py +0 -0
  414. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_sld.py +0 -0
  415. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_tilesource_minmax_res.py +0 -0
  416. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_tms.py +0 -0
  417. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_tms_origin.py +0 -0
  418. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_util_conf.py +0 -0
  419. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_util_export.py +0 -0
  420. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_util_grids.py +0 -0
  421. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_util_wms_capabilities.py +0 -0
  422. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_watermark.py +0 -0
  423. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_wms_srs_extent.py +0 -0
  424. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_wms_version.py +0 -0
  425. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_wmts.py +0 -0
  426. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_wmts_dimensions.py +0 -0
  427. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_wmts_restful.py +0 -0
  428. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/system/test_xslt_featureinfo.py +0 -0
  429. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/test_http_helper.py +0 -0
  430. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/__init__.py +0 -0
  431. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/epsg +0 -0
  432. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/polygons/polygons.dbf +0 -0
  433. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/polygons/polygons.shp +0 -0
  434. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/polygons/polygons.shx +0 -0
  435. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/test_async.py +0 -0
  436. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/test_auth.py +0 -0
  437. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/test_cache.py +0 -0
  438. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/test_cache_azureblob.py +0 -0
  439. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/test_cache_compact.py +0 -0
  440. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/test_cache_couchdb.py +0 -0
  441. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/test_cache_geopackage.py +0 -0
  442. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/test_cache_redis.py +0 -0
  443. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/test_cache_riak.py +0 -0
  444. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/test_cache_s3.py +0 -0
  445. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/test_cache_tile.py +0 -0
  446. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/test_client_arcgis.py +0 -0
  447. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/test_client_cgi.py +0 -0
  448. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/test_collections.py +0 -0
  449. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/test_concat_legends.py +0 -0
  450. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/test_conf_loader.py +0 -0
  451. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/test_conf_validator.py +0 -0
  452. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/test_config.py +0 -0
  453. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/test_decorate_img.py +0 -0
  454. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/test_featureinfo.py +0 -0
  455. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/test_file_lock_load.py +0 -0
  456. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/test_geom.py +0 -0
  457. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/test_grid.py +0 -0
  458. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/test_image.py +0 -0
  459. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/test_image_mask.py +0 -0
  460. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/test_image_messages.py +0 -0
  461. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/test_image_options.py +0 -0
  462. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/test_isodate.py +0 -0
  463. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/test_multiapp.py +0 -0
  464. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/test_ogr_reader.py +0 -0
  465. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/test_request.py +0 -0
  466. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/test_request_wmts.py +0 -0
  467. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/test_response.py +0 -0
  468. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/test_seed.py +0 -0
  469. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/test_seed_cachelock.py +0 -0
  470. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/test_srs.py +0 -0
  471. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/test_tiled_source.py +0 -0
  472. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/test_tilefilter.py +0 -0
  473. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/test_times.py +0 -0
  474. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/test_timeutils.py +0 -0
  475. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/test_util_conf_utils.py +0 -0
  476. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/test_utils.py +0 -0
  477. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/test_wms_capabilities.py +0 -0
  478. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/test_wms_layer.py +0 -0
  479. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/test/unit/test_yaml.py +0 -0
  480. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/tilefilter.py +0 -0
  481. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/util/__init__.py +0 -0
  482. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/util/async_.py +0 -0
  483. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/util/collections.py +0 -0
  484. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/util/coverage.py +0 -0
  485. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/util/ext/__init__.py +0 -0
  486. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/util/ext/dictspec/__init__.py +0 -0
  487. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/util/ext/dictspec/spec.py +0 -0
  488. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/util/ext/dictspec/test/__init__.py +0 -0
  489. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/util/ext/dictspec/test/test_validator.py +0 -0
  490. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/util/ext/dictspec/validator.py +0 -0
  491. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/util/ext/local.py +0 -0
  492. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/util/ext/lockfile.py +0 -0
  493. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/util/ext/odict.py +0 -0
  494. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/util/ext/serving.py +0 -0
  495. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/util/ext/tempita/__init__.py +0 -0
  496. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/util/ext/tempita/_looper.py +0 -0
  497. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/util/ext/tempita/string_utils.py +0 -0
  498. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/util/ext/wmsparse/__init__.py +0 -0
  499. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/util/ext/wmsparse/duration.py +0 -0
  500. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/util/ext/wmsparse/parse.py +0 -0
  501. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/util/ext/wmsparse/test/__init__.py +0 -0
  502. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/util/ext/wmsparse/test/test_parse.py +0 -0
  503. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/util/ext/wmsparse/test/test_util.py +0 -0
  504. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/util/ext/wmsparse/test/wms-example-111.xml +0 -0
  505. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/util/ext/wmsparse/test/wms-example-130.xml +0 -0
  506. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/util/ext/wmsparse/test/wms-large-111.xml +0 -0
  507. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/util/ext/wmsparse/test/wms_nasa_cap.xml +0 -0
  508. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/util/ext/wmsparse/util.py +0 -0
  509. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/util/fs.py +0 -0
  510. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/util/geom.py +0 -0
  511. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/util/lib.py +0 -0
  512. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/util/lock.py +0 -0
  513. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/util/ogr.py +0 -0
  514. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/util/py.py +0 -0
  515. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/util/times.py +0 -0
  516. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/util/yaml.py +0 -0
  517. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/version.py +0 -0
  518. {MapProxy-2.2.0 → MapProxy-3.0.0}/mapproxy/wsgiapp.py +0 -0
  519. {MapProxy-2.2.0 → MapProxy-3.0.0}/setup.cfg +0 -0
@@ -1,3 +1,26 @@
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
+
1
24
  2.2.0 2024-07-24
2
25
  ~~~~~~~~~~~~~~~~
3
26
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: MapProxy
3
- Version: 2.2.0
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,29 @@ 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
+
37
60
  2.2.0 2024-07-24
38
61
  ~~~~~~~~~~~~~~~~
39
62
 
@@ -136,31 +159,6 @@ Fixes:
136
159
  - Some more minor fixups
137
160
 
138
161
 
139
- 1.16.0 2023-04-13
140
- ~~~~~~~~~~~~~~~~~
141
- Breaking:
142
-
143
- - Removal of old unsupported python versions 2.7 and 3.6
144
- - Tested python version range is now 3.7 to 3.11
145
- - Lots of dependency updates
146
-
147
- Improvements:
148
-
149
- - New cache: Azure Blob storage
150
- - Lots of dependency updates
151
- - Support for JSON legends
152
- - Updated layer preview to use latest openlayers
153
- - Official docker images released, documentation updated
154
-
155
- Fixes:
156
-
157
- - Fixed issues with sqlite cache (#629 and #625)
158
- - Dependency correction
159
- - library detection difficulties on some operating systems
160
- - encoding issues with umlauts in featureinfo
161
- - Several minor bugfixes
162
- - mapproxy-util export - derive image format from cache config
163
-
164
162
 
165
163
  Older changes
166
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,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: MapProxy
3
- Version: 2.2.0
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,29 @@ 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
+
37
60
  2.2.0 2024-07-24
38
61
  ~~~~~~~~~~~~~~~~
39
62
 
@@ -136,31 +159,6 @@ Fixes:
136
159
  - Some more minor fixups
137
160
 
138
161
 
139
- 1.16.0 2023-04-13
140
- ~~~~~~~~~~~~~~~~~
141
- Breaking:
142
-
143
- - Removal of old unsupported python versions 2.7 and 3.6
144
- - Tested python version range is now 3.7 to 3.11
145
- - Lots of dependency updates
146
-
147
- Improvements:
148
-
149
- - New cache: Azure Blob storage
150
- - Lots of dependency updates
151
- - Support for JSON legends
152
- - Updated layer preview to use latest openlayers
153
- - Official docker images released, documentation updated
154
-
155
- Fixes:
156
-
157
- - Fixed issues with sqlite cache (#629 and #625)
158
- - Dependency correction
159
- - library detection difficulties on some operating systems
160
- - encoding issues with umlauts in featureinfo
161
- - Several minor bugfixes
162
- - mapproxy-util export - derive image format from cache config
163
-
164
162
 
165
163
  Older changes
166
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
  -------
@@ -664,13 +664,13 @@ Example:
664
664
 
665
665
  .. code-block:: yaml
666
666
 
667
- caches:
668
- osm_cache:
669
- grids: ['osm_grid']
670
- sources: [OSM]
671
- disable_storage: false
672
- refresh_before:
673
- days: 1
667
+ caches:
668
+ osm_cache:
669
+ grids: ['osm_grid']
670
+ sources: [OSM]
671
+ disable_storage: false
672
+ refresh_before:
673
+ days: 1
674
674
 
675
675
 
676
676
  ``disable_storage``
@@ -685,7 +685,7 @@ even if the there are matching tiles in the cache. See :ref:`seed_only <wms_seed
685
685
  """""""""""""
686
686
 
687
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``).
688
- 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.
689
689
 
690
690
  ``cache``
691
691
  """""""""
@@ -1004,7 +1004,7 @@ The following options define how tiles are created and stored. Most options can
1004
1004
  .. _meta_size:
1005
1005
 
1006
1006
  ``meta_size``
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 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``.
1008
1008
 
1009
1009
 
1010
1010
  .. _bulk_meta_tiles:
@@ -1017,7 +1017,7 @@ The following options define how tiles are created and stored. Most options can
1017
1017
  ``meta_buffer``
1018
1018
  MapProxy will increase the size of each meta-tile request by this number of
1019
1019
  pixels in each direction. This can solve cases where labels are cut-off at
1020
- the edge of tiles.
1020
+ the edge of tiles. Defaults to 80.
1021
1021
 
1022
1022
  ``base_dir``
1023
1023
  The base directory where all cached tiles will be stored. The path can
@@ -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
@@ -2063,9 +2064,7 @@ class ServiceConfiguration(ConfigurationBase):
2063
2064
  else:
2064
2065
  services.append(new_service)
2065
2066
 
2066
- if ows_services:
2067
- from mapproxy.service.ows import OWSServer
2068
- services.append(OWSServer(ows_services))
2067
+ services.append(OWSServer(ows_services))
2069
2068
  return services
2070
2069
 
2071
2070
  def tile_layers(self, conf, use_grid_names=False):
@@ -19,6 +19,9 @@ Service exception handling (WMS exceptions, XML, in_image, etc.).
19
19
  from html import escape
20
20
 
21
21
  from mapproxy.response import Response
22
+ from mapproxy.template import template_loader
23
+ import mapproxy.service
24
+ get_template = template_loader(mapproxy.service.__package__, 'templates')
22
25
 
23
26
 
24
27
  class RequestError(Exception):
@@ -29,13 +32,14 @@ class RequestError(Exception):
29
32
  was valid (e.g. the source server is unreachable
30
33
  """
31
34
 
32
- def __init__(self, message, code=None, request=None, internal=False, status=None):
35
+ def __init__(self, message, code=None, request=None, internal=False, status=None, locator=None):
33
36
  Exception.__init__(self, message)
34
37
  self.msg = message
35
38
  self.code = code
36
39
  self.request = request
37
40
  self.internal = internal
38
41
  self.status = status
42
+ self.locator = locator
39
43
 
40
44
  def render(self):
41
45
  """
@@ -93,7 +97,7 @@ class XMLExceptionHandler(ExceptionHandler):
93
97
  The content_type is sent as defined here.
94
98
  """
95
99
 
96
- status_code = 200
100
+ status_code = 500
97
101
  """
98
102
  The HTTP status code.
99
103
  """
@@ -122,7 +126,11 @@ class XMLExceptionHandler(ExceptionHandler):
122
126
 
123
127
  :type request_error: `RequestError`
124
128
  """
125
- status_code = self.status_codes.get(request_error.code, self.status_code)
129
+ if request_error.status is not None:
130
+ status_code = request_error.status
131
+ else:
132
+ status_code = self.status_codes.get(request_error.code, self.status_code)
133
+
126
134
  # escape &<> in error message (e.g. URL params)
127
135
  msg = escape(request_error.msg)
128
136
  result = self.template.substitute(exception=msg,
@@ -138,6 +146,34 @@ class XMLExceptionHandler(ExceptionHandler):
138
146
  return self.template_func(self.template_file)
139
147
 
140
148
 
149
+ class OWSExceptionHandler(XMLExceptionHandler):
150
+ """
151
+ Exception handler for generic OWS ServiceExceptionReports
152
+ """
153
+ template_file = 'ows_exception.xml'
154
+ template_func = get_template
155
+ mimetype = 'text/xml'
156
+
157
+ def render(self, request_error):
158
+ """
159
+ Render the template of this exception handler. Passes the
160
+ ``request_error.msg``, ``request_error.locator`` and ``request_error.code`` to the template.
161
+
162
+ :type request_error: `RequestError`
163
+ """
164
+ if request_error.status is not None:
165
+ status_code = request_error.status
166
+ else:
167
+ status_code = self.status_codes.get(request_error.code, self.status_code)
168
+
169
+ # escape &<> in error message (e.g. URL params)
170
+ msg = escape(request_error.msg)
171
+ result = self.template.substitute(exception=msg,
172
+ code=request_error.code, locator=request_error.locator)
173
+ return Response(result, mimetype=self.mimetype, content_type=self.content_type,
174
+ status=status_code)
175
+
176
+
141
177
  class PlainExceptionHandler(ExceptionHandler):
142
178
  mimetype = 'text/plain'
143
179
  status_code = 404
@@ -16,6 +16,7 @@
16
16
  """
17
17
  Wrapper service handler for all OWS services (/service?).
18
18
  """
19
+ from mapproxy.exception import OWSExceptionHandler, RequestError
19
20
 
20
21
 
21
22
  class OWSServer(object):
@@ -33,7 +34,24 @@ class OWSServer(object):
33
34
  self.services[service.service] = service
34
35
 
35
36
  def handle(self, req):
36
- service = req.args.get('service', 'wms').lower()
37
- assert service in self.services
37
+ service = req.args.get('service')
38
+ wmtver = req.args.get('wmtver')
39
+ if not service:
40
+ if wmtver == '1.0.0':
41
+ # WMS version 1.0.0 did not have a mandatory service parameter
42
+ service = 'wms'
43
+ else:
44
+ req.exception_handler = OWSExceptionHandler()
45
+
46
+ error = RequestError('The service parameter is missing',
47
+ code='MissingParameterValue', request=req, locator='service', status=400)
48
+ return req.exception_handler.render(error)
49
+
50
+ service = service.lower()
51
+ if service not in self.services:
52
+ req.exception_handler = OWSExceptionHandler()
53
+ error = RequestError('The value of the service parameter "' + str(service) + '" is invalid',
54
+ code='InvalidParameterValue', request=req, locator='service', status=400)
55
+ return error.render()
38
56
 
39
57
  return self.services[service].handle(req)
@@ -0,0 +1,10 @@
1
+ <?xml version="1.0"?>
2
+ <ows:ExceptionReport xmlns:ows="http://www.opengis.net/ows/1.1"
3
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4
+ xsi:schemaLocation="http://www.opengis.net/ows/1.1 http://schemas.opengis.net/ows/1.1.0/owsExceptionReport.xsd"
5
+ version="1.0.0" xml:lang="en">
6
+ <ows:Exception{{if code is not None}} exceptionCode="{{code}}"{{endif}}
7
+ {{if locator is not None}} locator="{{locator}}"{{endif}}>
8
+ <ows:ExceptionText>{{exception}}</ows:ExceptionText>
9
+ </ows:Exception>
10
+ </ows:ExceptionReport>
@@ -29,6 +29,11 @@ seeds:
29
29
  refresh_before:
30
30
  days: 1
31
31
 
32
+ sqlite_cache:
33
+ caches: [sqlite_cache]
34
+ grids: [GLOBAL_GEODETIC]
35
+ levels: [0]
36
+
32
37
  with_empty_coverage:
33
38
  caches: [mbtile_cache]
34
39
  grids: [GLOBAL_GEODETIC]
@@ -58,7 +63,7 @@ cleanups:
58
63
  levels: [1]
59
64
  remove_all: true
60
65
 
61
- sqlite_cache:
66
+ cleanup_sqlite_cache:
62
67
  caches: [sqlite_cache]
63
68
  grids: [GLOBAL_GEODETIC]
64
69
  levels: [3]
@@ -91,4 +96,4 @@ cleanups:
91
96
  grids: [GLOBAL_GEODETIC]
92
97
  levels: [0]
93
98
  remove_before:
94
- mtime: 'seed.yaml'
99
+ mtime: 'seed.yaml'
@@ -212,7 +212,7 @@ class TestWMSLegendgraphic(SysTest):
212
212
 
213
213
  def test_get_legendgraphic_no_legend_111(self, app):
214
214
  self.common_lg_req_111.params["layer"] = "wms_no_legend"
215
- resp = app.get(self.common_lg_req_111)
215
+ resp = app.get(self.common_lg_req_111, expect_errors=True)
216
216
  assert resp.content_type == "application/vnd.ogc.se_xml"
217
217
  xml = resp.lxml
218
218
  assert (
@@ -227,7 +227,7 @@ class TestWMSLegendgraphic(SysTest):
227
227
  .replace("sld_version", "invalid")
228
228
  .replace("format", "invalid")
229
229
  )
230
- resp = app.get(req)
230
+ resp = app.get(req, expect_errors=True)
231
231
  assert resp.content_type == "application/vnd.ogc.se_xml"
232
232
  xml = resp.lxml
233
233
  assert "missing parameters" in xml.xpath("//ServiceException/text()")[0]
@@ -237,7 +237,7 @@ class TestWMSLegendgraphic(SysTest):
237
237
  req = str(self.common_lg_req_111).replace(
238
238
  "sld_version=1.1.0", "sld_version=1.0.0"
239
239
  )
240
- resp = app.get(req)
240
+ resp = app.get(req, expect_errors=True)
241
241
  assert resp.content_type == "application/vnd.ogc.se_xml"
242
242
  xml = resp.lxml
243
243
  assert "invalid sld_version" in xml.xpath("//ServiceException/text()")[0]
@@ -245,7 +245,7 @@ class TestWMSLegendgraphic(SysTest):
245
245
 
246
246
  def test_get_legendgraphic_no_legend_130(self, app):
247
247
  self.common_lg_req_130.params["layer"] = "wms_no_legend"
248
- resp = app.get(self.common_lg_req_130)
248
+ resp = app.get(self.common_lg_req_130, expect_errors=True)
249
249
  assert resp.content_type == "text/xml"
250
250
  xml = resp.lxml
251
251
  assert_xpath_wms130(xml, "/ogc:ServiceExceptionReport/@version", "1.3.0")
@@ -258,7 +258,7 @@ class TestWMSLegendgraphic(SysTest):
258
258
 
259
259
  def test_get_legendgraphic_missing_params_130(self, app):
260
260
  req = str(self.common_lg_req_130).replace("format", "invalid")
261
- resp = app.get(req)
261
+ resp = app.get(req, expect_errors=True)
262
262
  assert resp.content_type == "text/xml"
263
263
  xml = resp.lxml
264
264
  assert_xpath_wms130(xml, "/ogc:ServiceExceptionReport/@version", "1.3.0")
@@ -271,7 +271,7 @@ class TestWMSLegendgraphic(SysTest):
271
271
  req = str(self.common_lg_req_130).replace(
272
272
  "sld_version=1.1.0", "sld_version=1.0.0"
273
273
  )
274
- resp = app.get(req)
274
+ resp = app.get(req, expect_errors=True)
275
275
  assert resp.content_type == "text/xml"
276
276
  xml = resp.lxml
277
277
  assert_xpath_wms130(xml, "/ogc:ServiceExceptionReport/@version", "1.3.0")
@@ -179,14 +179,14 @@ class TestWMS111(SysTest):
179
179
 
180
180
  with mock_single_req_httpd(("localhost", 42423), req_handler):
181
181
  self.common_map_req.params["bbox"] = "0,0,9,9"
182
- resp = app.get(self.common_map_req)
182
+ resp = app.get(self.common_map_req, expect_errors=True)
183
183
 
184
184
  assert resp.content_type == "application/vnd.ogc.se_xml"
185
185
  is_111_exception(resp.lxml, re_msg="Error from renderd: barf")
186
186
 
187
187
  def test_get_map_connection_error(self, app):
188
188
  self.common_map_req.params["bbox"] = "0,0,9,9"
189
- resp = app.get(self.common_map_req)
189
+ resp = app.get(self.common_map_req, expect_errors=True)
190
190
 
191
191
  assert resp.content_type == "application/vnd.ogc.se_xml"
192
192
  is_111_exception(resp.lxml, re_msg="Error while communicating with renderd:")
@@ -210,7 +210,7 @@ class TestWMS111(SysTest):
210
210
 
211
211
  with mock_single_req_httpd(("localhost", 42423), req_handler):
212
212
  self.common_map_req.params["bbox"] = "0,0,9,9"
213
- resp = app.get(self.common_map_req)
213
+ resp = app.get(self.common_map_req, expect_errors=True)
214
214
 
215
215
  assert resp.content_type == "application/vnd.ogc.se_xml"
216
216
  is_111_exception(
@@ -46,7 +46,7 @@ class TestResponseHeaders(SysTest):
46
46
  assert resp.vary == ('X-Script-Name', 'X-Forwarded-Host', 'X-Forwarded-Proto')
47
47
 
48
48
  def test_no_endpoint(self, app):
49
- resp = app.get('http://localhost/service?')
49
+ resp = app.get('http://localhost/service?', expect_errors=True)
50
50
  assert resp.vary == ('X-Script-Name', 'X-Forwarded-Host', 'X-Forwarded-Proto')
51
51
 
52
52
  def test_image_response(self, app):
@@ -249,6 +249,19 @@ class TestSeed(SeedTestBase):
249
249
  seed(tasks, dry_run=False)
250
250
  cleanup(cleanup_tasks, verbose=False, dry_run=False)
251
251
 
252
+ def test_seed_sqlite(self):
253
+ with tmp_image((256, 256), format='png') as img:
254
+ img_data = img.read()
255
+ expected_req = ({'path': r'/service?LAYERS=baz&SERVICE=WMS&FORMAT=image%2Fpng'
256
+ '&REQUEST=GetMap&VERSION=1.1.1&bbox=-180.0,-90.0,180.0,90.0'
257
+ '&width=256&height=128&srs=EPSG:4326'},
258
+ {'body': img_data, 'headers': {'content-type': 'image/png'}})
259
+ with mock_httpd(('localhost', 42423), [expected_req]):
260
+ seed_conf = load_seed_tasks_conf(self.seed_conf_file, self.mapproxy_conf)
261
+ tasks, cleanup_tasks = seed_conf.seeds(['sqlite_cache']), seed_conf.cleanups(['cleanup_sqlite_cache'])
262
+ seed(tasks, dry_run=False)
263
+ cleanup(cleanup_tasks, verbose=False, dry_run=False)
264
+
252
265
  def create_tile(self, coord=(0, 0, 0)):
253
266
  return Tile(coord,
254
267
  ImageSource(tile_image_buf,
@@ -290,7 +303,7 @@ class TestSeed(SeedTestBase):
290
303
 
291
304
  def test_cleanup_sqlite(self):
292
305
  seed_conf = load_seed_tasks_conf(self.seed_conf_file, self.mapproxy_conf)
293
- cleanup_tasks = seed_conf.cleanups(['sqlite_cache'])
306
+ cleanup_tasks = seed_conf.cleanups(['cleanup_sqlite_cache'])
294
307
 
295
308
  cache = cleanup_tasks[0].tile_manager.cache
296
309
  cache.store_tile(self.create_tile((0, 0, 2)))
@@ -337,8 +350,8 @@ class TestSeed(SeedTestBase):
337
350
  def test_active_seed_tasks(self):
338
351
  with local_base_config(self.mapproxy_conf.base_config):
339
352
  seed_conf = load_seed_tasks_conf(self.seed_conf_file, self.mapproxy_conf)
340
- assert len(seed_conf.seed_tasks_names()) == 5
341
- assert len(seed_conf.seeds()) == 5
353
+ assert len(seed_conf.seed_tasks_names()) == 6
354
+ assert len(seed_conf.seeds()) == 6
342
355
 
343
356
  def test_seed_refresh_remove_before_from_file(self):
344
357
  # tile already there but old
@@ -129,7 +129,7 @@ class TestWMS(SysTest):
129
129
 
130
130
  def test_all_offline(self, app):
131
131
  self.common_map_req.params.layers = "all_offline"
132
- resp = app.get(self.common_map_req)
132
+ resp = app.get(self.common_map_req, expect_errors=True)
133
133
  assert resp.content_type == "application/vnd.ogc.se_xml"
134
134
  is_111_exception(resp.lxml, re_msg="no response from url")
135
135
 
@@ -175,12 +175,12 @@ class TestWMSRaise(SysTest):
175
175
 
176
176
  with mock_httpd(("localhost", 42423), expected_req):
177
177
  self.common_map_req.params.layers = "mixed"
178
- resp = app.get(self.common_map_req)
178
+ resp = app.get(self.common_map_req, expect_errors=True)
179
179
  is_111_exception(resp.lxml, re_msg="no response from url")
180
180
 
181
181
  def test_all_offline(self, app):
182
182
  self.common_map_req.params.layers = "all_offline"
183
- resp = app.get(self.common_map_req)
183
+ resp = app.get(self.common_map_req, expect_errors=True)
184
184
  assert resp.content_type == "application/vnd.ogc.se_xml"
185
185
  is_111_exception(resp.lxml, re_msg="no response from url")
186
186
 
@@ -268,7 +268,7 @@ class TestTileErrors(SysTest):
268
268
  ]
269
269
 
270
270
  with mock_httpd(("localhost", 42423), expected_req):
271
- resp = app.get(self.common_map_req)
271
+ resp = app.get(self.common_map_req, expect_errors=True)
272
272
  assert_no_cache(resp)
273
273
  assert resp.content_type == "application/vnd.ogc.se_xml"
274
274
  assert b"500" in resp.body