MapProxy 6.1.1__tar.gz → 7.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 (605) hide show
  1. {mapproxy-6.1.1 → mapproxy-7.0.0}/CHANGES.txt +18 -0
  2. {mapproxy-6.1.1 → mapproxy-7.0.0}/MapProxy.egg-info/PKG-INFO +21 -19
  3. {mapproxy-6.1.1 → mapproxy-7.0.0}/MapProxy.egg-info/requires.txt +1 -0
  4. {mapproxy-6.1.1 → mapproxy-7.0.0}/PKG-INFO +21 -19
  5. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/install_docker.rst +2 -0
  6. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/cache/path.py +8 -0
  7. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/image/__init__.py +8 -4
  8. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/seed/seeder.py +4 -3
  9. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/source/mapnik.py +5 -5
  10. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_cache.py +30 -0
  11. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_file_lock_load.py +2 -2
  12. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_image.py +72 -0
  13. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_seed_cachelock.py +3 -3
  14. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_utils.py +2 -2
  15. {mapproxy-6.1.1 → mapproxy-7.0.0}/requirements-tests.txt +13 -11
  16. {mapproxy-6.1.1 → mapproxy-7.0.0}/setup.py +4 -2
  17. {mapproxy-6.1.1 → mapproxy-7.0.0}/AUTHORS.txt +0 -0
  18. {mapproxy-6.1.1 → mapproxy-7.0.0}/COPYING.txt +0 -0
  19. {mapproxy-6.1.1 → mapproxy-7.0.0}/LICENSE.txt +0 -0
  20. {mapproxy-6.1.1 → mapproxy-7.0.0}/MANIFEST.in +0 -0
  21. {mapproxy-6.1.1 → mapproxy-7.0.0}/MapProxy.egg-info/SOURCES.txt +0 -0
  22. {mapproxy-6.1.1 → mapproxy-7.0.0}/MapProxy.egg-info/dependency_links.txt +0 -0
  23. {mapproxy-6.1.1 → mapproxy-7.0.0}/MapProxy.egg-info/entry_points.txt +0 -0
  24. {mapproxy-6.1.1 → mapproxy-7.0.0}/MapProxy.egg-info/not-zip-safe +0 -0
  25. {mapproxy-6.1.1 → mapproxy-7.0.0}/MapProxy.egg-info/top_level.txt +0 -0
  26. {mapproxy-6.1.1 → mapproxy-7.0.0}/README.md +0 -0
  27. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/GM.txt +0 -0
  28. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/_static/logo.png +0 -0
  29. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/_static/logo_title.png +0 -0
  30. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/_static/mapproxy.css +0 -0
  31. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/_templates/versions.html +0 -0
  32. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/architecture.rst +0 -0
  33. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/auth.rst +0 -0
  34. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/caches.rst +0 -0
  35. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/caching_layer_dimensions.rst +0 -0
  36. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/conf.py +0 -0
  37. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/configuration.rst +0 -0
  38. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/configuration_examples.rst +0 -0
  39. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/coverages.rst +0 -0
  40. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/decorate_img.rst +0 -0
  41. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/deployment.rst +0 -0
  42. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/development.rst +0 -0
  43. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/imgs/bicubic.png +0 -0
  44. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/imgs/bilinear.png +0 -0
  45. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/imgs/labeling-dynamic.png +0 -0
  46. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/imgs/labeling-meta-buffer.png +0 -0
  47. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/imgs/labeling-metatiling-buffer.png +0 -0
  48. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/imgs/labeling-metatiling.png +0 -0
  49. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/imgs/labeling-no-clip.png +0 -0
  50. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/imgs/labeling-no-placement.png +0 -0
  51. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/imgs/labeling-partial-false.png +0 -0
  52. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/imgs/labeling-repeated.png +0 -0
  53. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/imgs/mapnik-webmerc-hq.png +0 -0
  54. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/imgs/mapnik-webmerc.png +0 -0
  55. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/imgs/mapproxy-demo.png +0 -0
  56. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/imgs/nearest.png +0 -0
  57. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/index.rst +0 -0
  58. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/inspire.rst +0 -0
  59. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/install.rst +0 -0
  60. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/install_osgeo4w.rst +0 -0
  61. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/install_windows.rst +0 -0
  62. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/labeling.rst +0 -0
  63. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/mapproxy_util.rst +0 -0
  64. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/mapproxy_util_autoconfig.rst +0 -0
  65. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/ogc_api.rst +0 -0
  66. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/plugins.rst +0 -0
  67. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/seed.rst +0 -0
  68. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/services.rst +0 -0
  69. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/sources.rst +0 -0
  70. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/tutorial.rst +0 -0
  71. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/tutorial.yaml +0 -0
  72. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/yaml/cache_conf.yaml +0 -0
  73. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/yaml/grid_conf.yaml +0 -0
  74. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/yaml/merged_conf.yaml +0 -0
  75. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/yaml/meta_conf.yaml +0 -0
  76. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/yaml/seed.yaml +0 -0
  77. {mapproxy-6.1.1 → mapproxy-7.0.0}/doc/yaml/simple_conf.yaml +0 -0
  78. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/__init__.py +0 -0
  79. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/cache/__init__.py +0 -0
  80. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/cache/azureblob.py +0 -0
  81. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/cache/base.py +0 -0
  82. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/cache/compact.py +0 -0
  83. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/cache/couchdb.py +0 -0
  84. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/cache/dummy.py +0 -0
  85. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/cache/file.py +0 -0
  86. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/cache/geopackage.py +0 -0
  87. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/cache/legend.py +0 -0
  88. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/cache/mbtiles.py +0 -0
  89. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/cache/meta.py +0 -0
  90. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/cache/redis.py +0 -0
  91. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/cache/renderd.py +0 -0
  92. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/cache/s3.py +0 -0
  93. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/cache/tile.py +0 -0
  94. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/cache/tile_creator.py +0 -0
  95. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/cache/tile_manager.py +0 -0
  96. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/client/__init__.py +0 -0
  97. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/client/arcgis.py +0 -0
  98. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/client/cgi.py +0 -0
  99. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/client/http.py +0 -0
  100. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/client/log.py +0 -0
  101. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/client/tile.py +0 -0
  102. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/client/wms.py +0 -0
  103. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/config/__init__.py +0 -0
  104. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/config/config-schema.json +0 -0
  105. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/config/config.py +0 -0
  106. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/config/configuration/__init__.py +0 -0
  107. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/config/configuration/base.py +0 -0
  108. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/config/configuration/cache.py +0 -0
  109. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/config/configuration/global_conf.py +0 -0
  110. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/config/configuration/grid.py +0 -0
  111. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/config/configuration/image_options.py +0 -0
  112. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/config/configuration/layer.py +0 -0
  113. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/config/configuration/proxy.py +0 -0
  114. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/config/configuration/service.py +0 -0
  115. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/config/configuration/source.py +0 -0
  116. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/config/coverage.py +0 -0
  117. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/config/defaults.py +0 -0
  118. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/config/loader.py +0 -0
  119. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/config/spec.py +0 -0
  120. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/config/validator.py +0 -0
  121. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/config_template/__init__.py +0 -0
  122. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/config_template/base_config/config.wsgi +0 -0
  123. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/config_template/base_config/full_example.yaml +0 -0
  124. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/config_template/base_config/full_seed_example.yaml +0 -0
  125. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/config_template/base_config/log.ini +0 -0
  126. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/config_template/base_config/mapproxy.yaml +0 -0
  127. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/config_template/base_config/seed.yaml +0 -0
  128. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/exception.py +0 -0
  129. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/extent.py +0 -0
  130. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/featureinfo.py +0 -0
  131. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/grid/__init__.py +0 -0
  132. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/grid/meta_grid.py +0 -0
  133. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/grid/resolutions.py +0 -0
  134. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/grid/tile_grid.py +0 -0
  135. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/image/fonts/DejaVuSans.ttf +0 -0
  136. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/image/fonts/DejaVuSansMono.ttf +0 -0
  137. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/image/fonts/LICENSE +0 -0
  138. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/image/fonts/__init__.py +0 -0
  139. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/image/mask.py +0 -0
  140. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/image/merge.py +0 -0
  141. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/image/message.py +0 -0
  142. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/image/opts.py +0 -0
  143. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/image/tile.py +0 -0
  144. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/image/transform.py +0 -0
  145. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/layer/__init__.py +0 -0
  146. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/layer/cache_map_layer.py +0 -0
  147. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/layer/direct_map_layer.py +0 -0
  148. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/layer/limited_layer.py +0 -0
  149. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/layer/map_layer.py +0 -0
  150. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/layer/resolution_conditional.py +0 -0
  151. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/layer/srs_conditional.py +0 -0
  152. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/multiapp.py +0 -0
  153. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/proj.py +0 -0
  154. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/query.py +0 -0
  155. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/request/__init__.py +0 -0
  156. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/request/arcgis.py +0 -0
  157. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/request/base.py +0 -0
  158. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/request/no_case_multi_dict.py +0 -0
  159. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/request/request_params.py +0 -0
  160. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/request/tile.py +0 -0
  161. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/request/wms/__init__.py +0 -0
  162. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/request/wms/exception.py +0 -0
  163. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/request/wmts.py +0 -0
  164. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/response.py +0 -0
  165. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/script/__init__.py +0 -0
  166. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/script/conf/__init__.py +0 -0
  167. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/script/conf/app.py +0 -0
  168. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/script/conf/caches.py +0 -0
  169. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/script/conf/geopackage.py +0 -0
  170. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/script/conf/layers.py +0 -0
  171. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/script/conf/seeds.py +0 -0
  172. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/script/conf/sources.py +0 -0
  173. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/script/conf/utils.py +0 -0
  174. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/script/defrag.py +0 -0
  175. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/script/export.py +0 -0
  176. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/script/gridconf_from_ogcapitilematrixset.py +0 -0
  177. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/script/grids.py +0 -0
  178. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/script/scales.py +0 -0
  179. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/script/util.py +0 -0
  180. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/script/wms_capabilities.py +0 -0
  181. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/seed/__init__.py +0 -0
  182. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/seed/cachelock.py +0 -0
  183. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/seed/cleanup.py +0 -0
  184. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/seed/config.py +0 -0
  185. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/seed/script.py +0 -0
  186. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/seed/spec.py +0 -0
  187. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/seed/util.py +0 -0
  188. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/__init__.py +0 -0
  189. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/base.py +0 -0
  190. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/demo.py +0 -0
  191. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/kml.py +0 -0
  192. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/ogcapi/__init__.py +0 -0
  193. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/ogcapi/api.py +0 -0
  194. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/ogcapi/collections.py +0 -0
  195. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/ogcapi/conformance.py +0 -0
  196. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/ogcapi/constants.py +0 -0
  197. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/ogcapi/landing_page.py +0 -0
  198. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/ogcapi/map.py +0 -0
  199. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/ogcapi/map_utils.py +0 -0
  200. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/ogcapi/server.py +0 -0
  201. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/ogcapi/tile.py +0 -0
  202. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/ogcapi/tilematrixsets.py +0 -0
  203. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/ogcapi/tilesets.py +0 -0
  204. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/ows.py +0 -0
  205. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/template_helper.py +0 -0
  206. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/demo/capabilities_demo.html +0 -0
  207. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/demo/demo.html +0 -0
  208. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/demo/openlayers-demo.cfg +0 -0
  209. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/demo/static/img/blank.gif +0 -0
  210. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/demo/static/img/east-mini.png +0 -0
  211. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/demo/static/img/north-mini.png +0 -0
  212. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/demo/static/img/south-mini.png +0 -0
  213. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/demo/static/img/west-mini.png +0 -0
  214. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/demo/static/img/zoom-minus-mini.png +0 -0
  215. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/demo/static/img/zoom-plus-mini.png +0 -0
  216. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/demo/static/img/zoom-world-mini.png +0 -0
  217. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/demo/static/logo.png +0 -0
  218. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/demo/static/ol.css +0 -0
  219. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/demo/static/ol.js +0 -0
  220. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/demo/static/proj4.min.js +0 -0
  221. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/demo/static/proj4defs.js +0 -0
  222. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/demo/static/site.css +0 -0
  223. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/demo/static/theme/default/framedCloud.css +0 -0
  224. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/demo/static/theme/default/google.css +0 -0
  225. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/demo/static/theme/default/ie6-style.css +0 -0
  226. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/demo/static/theme/default/style.css +0 -0
  227. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/demo/static.html +0 -0
  228. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/demo/tms_demo.html +0 -0
  229. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/demo/wms_demo.html +0 -0
  230. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/demo/wmts_demo.html +0 -0
  231. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/_base.html +0 -0
  232. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/collections/collection.html +0 -0
  233. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/collections/index.html +0 -0
  234. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/conformance.html +0 -0
  235. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/exception.html +0 -0
  236. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/landing_page.html +0 -0
  237. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/openapi/redoc.html +0 -0
  238. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/openapi/swagger.html +0 -0
  239. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/static/css/bootstrap.min.css +0 -0
  240. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/static/css/default.css +0 -0
  241. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/static/fonts_montserra_roboto.css +0 -0
  242. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/static/img/logo.png +0 -0
  243. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/static/img/pygeoapi-logo.png +0 -0
  244. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/static/ol.css +0 -0
  245. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/static/ol.js +0 -0
  246. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/static/proj4.min.js +0 -0
  247. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/static/proj4defs.js +0 -0
  248. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/static/redoc.standalone.js +0 -0
  249. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/static/swagger-ui-dist/favicon-16x16.png +0 -0
  250. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/static/swagger-ui-dist/favicon-32x32.png +0 -0
  251. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/static/swagger-ui-dist/swagger-ui-bundle.js +0 -0
  252. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/static/swagger-ui-dist/swagger-ui-standalone-preset.js +0 -0
  253. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/static/swagger-ui-dist/swagger-ui.css +0 -0
  254. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/tilematrixsets/index.html +0 -0
  255. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/tilematrixsets/tilematrixset.html +0 -0
  256. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/tilesets/index.html +0 -0
  257. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ogcapi/tilesets/tileset.html +0 -0
  258. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/ows_exception.xml +0 -0
  259. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/tms_capabilities.xml +0 -0
  260. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/tms_exception.xml +0 -0
  261. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/tms_root_resource.xml +0 -0
  262. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/tms_tilemap_capabilities.xml +0 -0
  263. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/wms100capabilities.xml +0 -0
  264. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/wms100exception.xml +0 -0
  265. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/wms110capabilities.xml +0 -0
  266. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/wms110exception.xml +0 -0
  267. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/wms111capabilities.xml +0 -0
  268. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/wms111exception.xml +0 -0
  269. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/wms130capabilities.xml +0 -0
  270. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/wms130exception.xml +0 -0
  271. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/wmts100capabilities.xml +0 -0
  272. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/templates/wmts100exception.xml +0 -0
  273. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/tile.py +0 -0
  274. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/wms.py +0 -0
  275. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/service/wmts.py +0 -0
  276. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/source/__init__.py +0 -0
  277. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/source/arcgis.py +0 -0
  278. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/source/error.py +0 -0
  279. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/source/ogcapimaps.py +0 -0
  280. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/source/ogcapitiles.py +0 -0
  281. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/source/tile.py +0 -0
  282. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/source/wms.py +0 -0
  283. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/srs.py +0 -0
  284. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/template.py +0 -0
  285. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/__init__.py +0 -0
  286. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/conftest.py +0 -0
  287. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/helper.py +0 -0
  288. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/http.py +0 -0
  289. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/image.py +0 -0
  290. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/mocker.py +0 -0
  291. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/common/1.0/common.xsd +0 -0
  292. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_bul.xsd +0 -0
  293. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_cze.xsd +0 -0
  294. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_dan.xsd +0 -0
  295. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_dut.xsd +0 -0
  296. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_eng.xsd +0 -0
  297. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_est.xsd +0 -0
  298. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_fin.xsd +0 -0
  299. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_fre.xsd +0 -0
  300. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_ger.xsd +0 -0
  301. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_gle.xsd +0 -0
  302. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_gre.xsd +0 -0
  303. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_hun.xsd +0 -0
  304. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_ita.xsd +0 -0
  305. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_lav.xsd +0 -0
  306. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_lit.xsd +0 -0
  307. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_mlt.xsd +0 -0
  308. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_pol.xsd +0 -0
  309. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_por.xsd +0 -0
  310. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_rum.xsd +0 -0
  311. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_slo.xsd +0 -0
  312. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_slv.xsd +0 -0
  313. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_spa.xsd +0 -0
  314. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_swe.xsd +0 -0
  315. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/common/1.0/network.xsd +0 -0
  316. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/inspire/inspire_vs/1.0/inspire_vs.xsd +0 -0
  317. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/kml/2.2.0/ReadMe.txt +0 -0
  318. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/kml/2.2.0/atom-author-link.xsd +0 -0
  319. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/kml/2.2.0/ogckml22.xsd +0 -0
  320. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/kml/2.2.0/xAL.xsd +0 -0
  321. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/ows/1.1.0/ReadMe.txt +0 -0
  322. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/ows/1.1.0/ows19115subset.xsd +0 -0
  323. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/ows/1.1.0/owsAll.xsd +0 -0
  324. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/ows/1.1.0/owsCommon.xsd +0 -0
  325. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/ows/1.1.0/owsContents.xsd +0 -0
  326. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/ows/1.1.0/owsDataIdentification.xsd +0 -0
  327. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/ows/1.1.0/owsDomainType.xsd +0 -0
  328. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/ows/1.1.0/owsExceptionReport.xsd +0 -0
  329. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/ows/1.1.0/owsGetCapabilities.xsd +0 -0
  330. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/ows/1.1.0/owsGetResourceByID.xsd +0 -0
  331. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/ows/1.1.0/owsInputOutputData.xsd +0 -0
  332. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/ows/1.1.0/owsManifest.xsd +0 -0
  333. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/ows/1.1.0/owsOperationsMetadata.xsd +0 -0
  334. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/ows/1.1.0/owsServiceIdentification.xsd +0 -0
  335. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/ows/1.1.0/owsServiceProvider.xsd +0 -0
  336. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/sld/1.1.0/sld_capabilities.xsd +0 -0
  337. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wms/1.0.0/capabilities_1_0_0.dtd +0 -0
  338. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wms/1.0.0/capabilities_1_0_0.xml +0 -0
  339. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wms/1.0.7/capabilities_1_0_7.dtd +0 -0
  340. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wms/1.0.7/capabilities_1_0_7.xml +0 -0
  341. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wms/1.1.0/capabilities_1_1_0.dtd +0 -0
  342. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wms/1.1.0/capabilities_1_1_0.xml +0 -0
  343. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wms/1.1.0/exception_1_1_0.dtd +0 -0
  344. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wms/1.1.0/exception_1_1_0.xml +0 -0
  345. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wms/1.1.1/OGC-exception.xsd +0 -0
  346. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wms/1.1.1/WMS_DescribeLayerResponse.dtd +0 -0
  347. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wms/1.1.1/WMS_MS_Capabilities.dtd +0 -0
  348. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wms/1.1.1/WMS_exception_1_1_1.dtd +0 -0
  349. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wms/1.1.1/capabilities_1_1_1.dtd +0 -0
  350. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wms/1.1.1/capabilities_1_1_1.xml +0 -0
  351. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wms/1.1.1/exception_1_1_1.dtd +0 -0
  352. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wms/1.1.1/exception_1_1_1.xml +0 -0
  353. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wms/1.3.0/ReadMe.txt +0 -0
  354. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wms/1.3.0/capabilities_1_3_0.xml +0 -0
  355. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wms/1.3.0/capabilities_1_3_0.xsd +0 -0
  356. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wms/1.3.0/exceptions_1_3_0.xml +0 -0
  357. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wms/1.3.0/exceptions_1_3_0.xsd +0 -0
  358. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wmsc/1.1.1/OGC-exception.xsd +0 -0
  359. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wmsc/1.1.1/WMS_DescribeLayerResponse.dtd +0 -0
  360. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wmsc/1.1.1/WMS_MS_Capabilities.dtd +0 -0
  361. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wmsc/1.1.1/WMS_exception_1_1_1.dtd +0 -0
  362. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wmsc/1.1.1/capabilities_1_1_1.dtd +0 -0
  363. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wmsc/1.1.1/capabilities_1_1_1.xml +0 -0
  364. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wmsc/1.1.1/exception_1_1_1.dtd +0 -0
  365. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wmsc/1.1.1/exception_1_1_1.xml +0 -0
  366. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wmts/1.0/ReadMe.txt +0 -0
  367. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wmts/1.0/wmts.xsd +0 -0
  368. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wmts/1.0/wmtsAbstract.wsdl +0 -0
  369. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wmts/1.0/wmtsGetCapabilities_request.xsd +0 -0
  370. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wmts/1.0/wmtsGetCapabilities_response.xsd +0 -0
  371. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wmts/1.0/wmtsGetFeatureInfo_request.xsd +0 -0
  372. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wmts/1.0/wmtsGetFeatureInfo_response.xsd +0 -0
  373. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wmts/1.0/wmtsGetTile_request.xsd +0 -0
  374. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wmts/1.0/wmtsKVP.xsd +0 -0
  375. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/wmts/1.0/wmtsPayload_response.xsd +0 -0
  376. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/xlink/1.0.0/ReadMe.txt +0 -0
  377. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/xlink/1.0.0/xlinks.xsd +0 -0
  378. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/schemas/xml.xsd +0 -0
  379. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/__init__.py +0 -0
  380. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/arcgis.yaml +0 -0
  381. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/auth.yaml +0 -0
  382. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/cache.mbtiles +0 -0
  383. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/cache_azureblob.yaml +0 -0
  384. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/cache_band_merge.yaml +0 -0
  385. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/cache_bulk_meta_tiles.yaml +0 -0
  386. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/cache_coverage.yaml +0 -0
  387. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/cache_data/dop_cache_EPSG3857/00/000/000/000/000/000/000.png +0 -0
  388. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/cache_data/wms_cache_EPSG900913/01/000/000/000/000/000/001.jpeg +0 -0
  389. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/cache_data/wms_cache_transparent_EPSG900913/01/000/000/000/000/000/001.png +0 -0
  390. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/cache_geopackage.yaml +0 -0
  391. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/cache_grid_names.yaml +0 -0
  392. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/cache_mbtiles.yaml +0 -0
  393. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/cache_s3.yaml +0 -0
  394. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/cache_source.yaml +0 -0
  395. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/combined_sources.yaml +0 -0
  396. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/coverage.yaml +0 -0
  397. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/demo.yaml +0 -0
  398. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/dimension.yaml +0 -0
  399. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/disable_storage.yaml +0 -0
  400. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/empty_ogrdata.geojson +0 -0
  401. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/formats.yaml +0 -0
  402. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/inspire.yaml +0 -0
  403. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/inspire_full.yaml +0 -0
  404. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/kml_layer.yaml +0 -0
  405. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/layer.yaml +0 -0
  406. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/layergroups.yaml +0 -0
  407. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/layergroups_root.yaml +0 -0
  408. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/legendgraphic.yaml +0 -0
  409. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/mapnik_source.yaml +0 -0
  410. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/mapproxy_export.yaml +0 -0
  411. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/mapserver.yaml +0 -0
  412. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/minimal_cgi.py +0 -0
  413. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/mixed_mode.yaml +0 -0
  414. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/multi_cache_layers.yaml +0 -0
  415. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/multiapp1.yaml +0 -0
  416. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/multiapp2.yaml +0 -0
  417. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/ogcapi_maps_and_tiles_non_earth_service.yaml +0 -0
  418. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/ogcapi_maps_and_tiles_service.yaml +0 -0
  419. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/ogcapimaps_non_earth_source.yaml +0 -0
  420. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/ogcapimaps_service.yaml +0 -0
  421. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/ogcapimaps_source.yaml +0 -0
  422. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/ogcapimaps_source_with_supported_srs.yaml +0 -0
  423. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/ogcapitiles_non_earth_source.yaml +0 -0
  424. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/ogcapitiles_service.yaml +0 -0
  425. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/ogcapitiles_source.yaml +0 -0
  426. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/renderd_client.yaml +0 -0
  427. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/scalehints.yaml +0 -0
  428. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/seed.yaml +0 -0
  429. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/seed_mapproxy.yaml +0 -0
  430. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/seed_timeouts.yaml +0 -0
  431. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/seed_timeouts_mapproxy.yaml +0 -0
  432. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/seedonly.yaml +0 -0
  433. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/sld.yaml +0 -0
  434. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/source_errors.yaml +0 -0
  435. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/source_errors_raise.yaml +0 -0
  436. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/tileservice_origin.yaml +0 -0
  437. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/tileservice_refresh.yaml +0 -0
  438. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/tilesource_minmax_res.yaml +0 -0
  439. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/util-conf-base-grids.yaml +0 -0
  440. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/util-conf-overwrite.yaml +0 -0
  441. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/util-conf-wms-111-cap.xml +0 -0
  442. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/util_grids.yaml +0 -0
  443. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/util_wms_capabilities111.xml +0 -0
  444. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/util_wms_capabilities130.xml +0 -0
  445. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/util_wms_capabilities_service_exception.xml +0 -0
  446. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/watermark.yaml +0 -0
  447. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/wms_srs_extent.yaml +0 -0
  448. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/wms_versions.yaml +0 -0
  449. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/wmts.yaml +0 -0
  450. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/wmts_dimensions.yaml +0 -0
  451. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/xslt_featureinfo.yaml +0 -0
  452. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/fixture/xslt_featureinfo_input.yaml +0 -0
  453. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_arcgis.py +0 -0
  454. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_auth.py +0 -0
  455. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_behind_proxy.py +0 -0
  456. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_bulk_meta_tiles.py +0 -0
  457. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_cache_azureblob.py +0 -0
  458. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_cache_band_merge.py +0 -0
  459. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_cache_coverage.py +0 -0
  460. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_cache_geopackage.py +0 -0
  461. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_cache_grid_names.py +0 -0
  462. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_cache_mbtiles.py +0 -0
  463. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_cache_s3.py +0 -0
  464. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_cache_source.py +0 -0
  465. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_combined_sources.py +0 -0
  466. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_coverage.py +0 -0
  467. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_decorate_img.py +0 -0
  468. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_demo.py +0 -0
  469. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_demo_with_extra_service.py +0 -0
  470. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_dimensions.py +0 -0
  471. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_disable_storage.py +0 -0
  472. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_formats.py +0 -0
  473. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_inspire_vs.py +0 -0
  474. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_kml.py +0 -0
  475. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_layergroups.py +0 -0
  476. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_legendgraphic.py +0 -0
  477. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_mapnik.py +0 -0
  478. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_mapserver.py +0 -0
  479. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_mixed_mode_format.py +0 -0
  480. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_multi_cache_layers.py +0 -0
  481. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_multiapp.py +0 -0
  482. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_refresh.py +0 -0
  483. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_renderd_client.py +0 -0
  484. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_response_headers.py +0 -0
  485. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_scalehints.py +0 -0
  486. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_seed.py +0 -0
  487. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_seed_only.py +0 -0
  488. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_service_ogcapi.py +0 -0
  489. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_sld.py +0 -0
  490. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_source_errors.py +0 -0
  491. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_source_ogcapimaps.py +0 -0
  492. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_source_ogcapitiles.py +0 -0
  493. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_tilesource_minmax_res.py +0 -0
  494. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_tms.py +0 -0
  495. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_tms_origin.py +0 -0
  496. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_util_conf.py +0 -0
  497. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_util_export.py +0 -0
  498. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_util_gridconf_from_ogcapitilematrixset.py +0 -0
  499. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_util_grids.py +0 -0
  500. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_util_wms_capabilities.py +0 -0
  501. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_watermark.py +0 -0
  502. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_wms.py +0 -0
  503. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_wms_srs_extent.py +0 -0
  504. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_wms_version.py +0 -0
  505. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_wmsc.py +0 -0
  506. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_wmts.py +0 -0
  507. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_wmts_dimensions.py +0 -0
  508. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_wmts_restful.py +0 -0
  509. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/system/test_xslt_featureinfo.py +0 -0
  510. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/test_http_helper.py +0 -0
  511. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/__init__.py +0 -0
  512. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/epsg +0 -0
  513. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/polygons/polygons.dbf +0 -0
  514. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/polygons/polygons.shp +0 -0
  515. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/polygons/polygons.shx +0 -0
  516. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_async.py +0 -0
  517. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_auth.py +0 -0
  518. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_cache_azureblob.py +0 -0
  519. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_cache_compact.py +0 -0
  520. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_cache_couchdb.py +0 -0
  521. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_cache_geopackage.py +0 -0
  522. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_cache_mbtile.py +0 -0
  523. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_cache_redis.py +0 -0
  524. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_cache_s3.py +0 -0
  525. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_cache_tile.py +0 -0
  526. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_client.py +0 -0
  527. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_client_arcgis.py +0 -0
  528. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_client_cgi.py +0 -0
  529. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_collections.py +0 -0
  530. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_concat_legends.py +0 -0
  531. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_conf_loader.py +0 -0
  532. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_conf_validator.py +0 -0
  533. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_config.py +0 -0
  534. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_decorate_img.py +0 -0
  535. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_exceptions.py +0 -0
  536. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_featureinfo.py +0 -0
  537. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_fs.py +0 -0
  538. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_geom.py +0 -0
  539. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_grid.py +0 -0
  540. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_image_mask.py +0 -0
  541. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_image_messages.py +0 -0
  542. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_image_options.py +0 -0
  543. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_isodate.py +0 -0
  544. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_multiapp.py +0 -0
  545. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_ogr_reader.py +0 -0
  546. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_request.py +0 -0
  547. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_request_wmts.py +0 -0
  548. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_response.py +0 -0
  549. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_seed.py +0 -0
  550. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_srs.py +0 -0
  551. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_tiled_source.py +0 -0
  552. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_tilefilter.py +0 -0
  553. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_times.py +0 -0
  554. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_timeutils.py +0 -0
  555. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_util_conf_utils.py +0 -0
  556. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_util_ogcapi.py +0 -0
  557. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_wms_capabilities.py +0 -0
  558. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_wms_layer.py +0 -0
  559. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/test/unit/test_yaml.py +0 -0
  560. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/tilefilter.py +0 -0
  561. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/__init__.py +0 -0
  562. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/async_.py +0 -0
  563. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/bbox.py +0 -0
  564. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/coverage.py +0 -0
  565. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/escape.py +0 -0
  566. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/ext/__init__.py +0 -0
  567. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/ext/dictspec/__init__.py +0 -0
  568. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/ext/dictspec/spec.py +0 -0
  569. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/ext/dictspec/test/__init__.py +0 -0
  570. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/ext/dictspec/test/test_validator.py +0 -0
  571. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/ext/dictspec/validator.py +0 -0
  572. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/ext/local.py +0 -0
  573. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/ext/lockfile.py +0 -0
  574. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/ext/serving.py +0 -0
  575. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/ext/tempita/__init__.py +0 -0
  576. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/ext/tempita/_looper.py +0 -0
  577. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/ext/tempita/string_utils.py +0 -0
  578. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/ext/wmsparse/__init__.py +0 -0
  579. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/ext/wmsparse/duration.py +0 -0
  580. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/ext/wmsparse/parse.py +0 -0
  581. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/ext/wmsparse/test/__init__.py +0 -0
  582. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/ext/wmsparse/test/test_parse.py +0 -0
  583. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/ext/wmsparse/test/test_util.py +0 -0
  584. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/ext/wmsparse/test/wms-example-111.xml +0 -0
  585. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/ext/wmsparse/test/wms-example-130.xml +0 -0
  586. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/ext/wmsparse/test/wms-large-111.xml +0 -0
  587. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/ext/wmsparse/test/wms_nasa_cap.xml +0 -0
  588. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/ext/wmsparse/util.py +0 -0
  589. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/fs.py +0 -0
  590. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/geom.py +0 -0
  591. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/immutable_dict_list.py +0 -0
  592. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/jinja2_templates.py +0 -0
  593. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/lib.py +0 -0
  594. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/lock.py +0 -0
  595. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/lru.py +0 -0
  596. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/ogcapi.py +0 -0
  597. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/ogr.py +0 -0
  598. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/py.py +0 -0
  599. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/sqlite3.py +0 -0
  600. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/times.py +0 -0
  601. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/util/yaml.py +0 -0
  602. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/version.py +0 -0
  603. {mapproxy-6.1.1 → mapproxy-7.0.0}/mapproxy/wsgiapp.py +0 -0
  604. {mapproxy-6.1.1 → mapproxy-7.0.0}/pyproject.toml +0 -0
  605. {mapproxy-6.1.1 → mapproxy-7.0.0}/setup.cfg +0 -0
@@ -1,3 +1,21 @@
1
+ 7.0.0 2026-07-17
2
+ ~~~~~~~~~~~~~~~~
3
+
4
+ Breaking:
5
+
6
+ - Security Fix: Avoiding path traversals in dimensions parameter.
7
+ In rare cases, existing cache directories will not be reused and created newly with safe directory names
8
+
9
+ Maintenance:
10
+
11
+ - Raising python version in workflows and docker images to 3.14
12
+ - Update dependencies
13
+
14
+ Fixes:
15
+
16
+ - Error with transparent PNGs in mixed format
17
+
18
+
1
19
  6.1.1 2026-06-17
2
20
  ~~~~~~~~~~~~~~~~
3
21
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: MapProxy
3
- Version: 6.1.1
3
+ Version: 7.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
@@ -16,6 +16,7 @@ Classifier: Programming Language :: Python :: 3.10
16
16
  Classifier: Programming Language :: Python :: 3.11
17
17
  Classifier: Programming Language :: Python :: 3.12
18
18
  Classifier: Programming Language :: Python :: 3.13
19
+ Classifier: Programming Language :: Python :: 3.14
19
20
  Classifier: Topic :: Internet :: Proxy Servers
20
21
  Classifier: Topic :: Internet :: WWW/HTTP :: WSGI
21
22
  Classifier: Topic :: Scientific/Engineering :: GIS
@@ -38,6 +39,7 @@ Requires-Dist: jinja2
38
39
  Requires-Dist: Babel
39
40
  Requires-Dist: python-dateutil
40
41
  Requires-Dist: requests
42
+ Requires-Dist: multiprocess
41
43
  Dynamic: author
42
44
  Dynamic: author-email
43
45
  Dynamic: classifier
@@ -63,6 +65,24 @@ The documentation is available at: http://mapproxy.github.io/mapproxy/latest/
63
65
 
64
66
  Changes
65
67
  -------
68
+ 7.0.0 2026-07-17
69
+ ~~~~~~~~~~~~~~~~
70
+
71
+ Breaking:
72
+
73
+ - Security Fix: Avoiding path traversals in dimensions parameter.
74
+ In rare cases, existing cache directories will not be reused and created newly with safe directory names
75
+
76
+ Maintenance:
77
+
78
+ - Raising python version in workflows and docker images to 3.14
79
+ - Update dependencies
80
+
81
+ Fixes:
82
+
83
+ - Error with transparent PNGs in mixed format
84
+
85
+
66
86
  6.1.1 2026-06-17
67
87
  ~~~~~~~~~~~~~~~~
68
88
 
@@ -194,24 +214,6 @@ Fixes:
194
214
  - Fixes an error with merging resolutions of grids
195
215
 
196
216
 
197
- 5.0.0 2025-06-18
198
- ~~~~~~~~~~~~~~~~
199
-
200
- Breaking:
201
-
202
- - The dependencies lxml, shapely, pyproj, gdal and PyYAML are no longer optional
203
-
204
- Maintenance:
205
-
206
- - By default lxml, shapely, pyproj, Pillow and PyYAML are now installed via pip and are not recommended to be installed
207
- as apt packages anymore
208
-
209
- Fixes:
210
-
211
- - The alpine image uses the python3 plugin for uwsgi correctly
212
- - An lxml encoding error is fixed
213
-
214
-
215
217
 
216
218
  Older changes
217
219
  -------------
@@ -9,6 +9,7 @@ jinja2
9
9
  Babel
10
10
  python-dateutil
11
11
  requests
12
+ multiprocess
12
13
 
13
14
  [:python_version == "3.10"]
14
15
  Pillow>=9
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: MapProxy
3
- Version: 6.1.1
3
+ Version: 7.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
@@ -16,6 +16,7 @@ Classifier: Programming Language :: Python :: 3.10
16
16
  Classifier: Programming Language :: Python :: 3.11
17
17
  Classifier: Programming Language :: Python :: 3.12
18
18
  Classifier: Programming Language :: Python :: 3.13
19
+ Classifier: Programming Language :: Python :: 3.14
19
20
  Classifier: Topic :: Internet :: Proxy Servers
20
21
  Classifier: Topic :: Internet :: WWW/HTTP :: WSGI
21
22
  Classifier: Topic :: Scientific/Engineering :: GIS
@@ -38,6 +39,7 @@ Requires-Dist: jinja2
38
39
  Requires-Dist: Babel
39
40
  Requires-Dist: python-dateutil
40
41
  Requires-Dist: requests
42
+ Requires-Dist: multiprocess
41
43
  Dynamic: author
42
44
  Dynamic: author-email
43
45
  Dynamic: classifier
@@ -63,6 +65,24 @@ The documentation is available at: http://mapproxy.github.io/mapproxy/latest/
63
65
 
64
66
  Changes
65
67
  -------
68
+ 7.0.0 2026-07-17
69
+ ~~~~~~~~~~~~~~~~
70
+
71
+ Breaking:
72
+
73
+ - Security Fix: Avoiding path traversals in dimensions parameter.
74
+ In rare cases, existing cache directories will not be reused and created newly with safe directory names
75
+
76
+ Maintenance:
77
+
78
+ - Raising python version in workflows and docker images to 3.14
79
+ - Update dependencies
80
+
81
+ Fixes:
82
+
83
+ - Error with transparent PNGs in mixed format
84
+
85
+
66
86
  6.1.1 2026-06-17
67
87
  ~~~~~~~~~~~~~~~~
68
88
 
@@ -194,24 +214,6 @@ Fixes:
194
214
  - Fixes an error with merging resolutions of grids
195
215
 
196
216
 
197
- 5.0.0 2025-06-18
198
- ~~~~~~~~~~~~~~~~
199
-
200
- Breaking:
201
-
202
- - The dependencies lxml, shapely, pyproj, gdal and PyYAML are no longer optional
203
-
204
- Maintenance:
205
-
206
- - By default lxml, shapely, pyproj, Pillow and PyYAML are now installed via pip and are not recommended to be installed
207
- as apt packages anymore
208
-
209
- Fixes:
210
-
211
- - The alpine image uses the python3 plugin for uwsgi correctly
212
- - An lxml encoding error is fixed
213
-
214
-
215
217
 
216
218
  Older changes
217
219
  -------------
@@ -88,6 +88,8 @@ Environment Variables
88
88
  mode and will run all configurations in the ``/mapproxy/config/apps`` directory as different apps. Default is ``false``.
89
89
  - ``MULTIAPP_ALLOW_LISTINGS``: In multi app mode if set to ``true``, MapProxy lists all available apps on the root page.
90
90
  Default is ``false``.
91
+ - ``UWSGI_PROCESSES``: **nginx images only.** Number of uWSGI worker processes. Default is ``2``.
92
+ - ``UWSGI_THREADS``: **nginx images only.** Number of threads per uWSGI worker process. Default is ``10``.
91
93
 
92
94
 
93
95
  Build your own image
@@ -61,6 +61,14 @@ def dimensions_part(dimensions):
61
61
 
62
62
  """
63
63
  if dimensions:
64
+ def checkTraversal(v):
65
+ normalized = os.path.normpath(v)
66
+ parts = normalized.split('/') + normalized.split('\\')
67
+ isNormalized = v != normalized or any(part == ".." for part in parts)
68
+ if isNormalized:
69
+ raise ValueError('Dimension parameter value contains illegal characters')
70
+ for k, v in dimensions.items():
71
+ checkTraversal(v)
64
72
  dims = NoCaseMultiDict(dimensions)
65
73
  predefined_dims, custom_dims = [], []
66
74
  for dim in dims.keys():
@@ -349,12 +349,12 @@ class ReadBufWrapper(object):
349
349
 
350
350
  def img_has_transparency(img: Image.Image) -> bool:
351
351
  if img.mode == 'P':
352
- if img.info.get('transparency', False):
353
- return True
354
- # convert to RGBA and check alpha channel
352
+ # Convert to RGBA and check the actual alpha channel instead of
353
+ # relying on img.info['transparency'], which may reference a color
354
+ # that does not actually appear in the image.
355
355
  img = img.convert('RGBA')
356
356
  if img.mode == 'RGBA':
357
- # any alpha except fully opaque
357
+ # any alpha except fully opaque (alpha < 255)
358
358
  return any(img.histogram()[-256:-1])
359
359
  return False
360
360
 
@@ -423,6 +423,10 @@ def img_to_buf(img: Image.Image, image_opts, georef=None) -> BytesIO:
423
423
  if image_opts.mode is not None and img.mode != image_opts.mode:
424
424
  img = img.convert(image_opts.mode)
425
425
 
426
+ # JPEG must always be RGB
427
+ if format == 'jpeg' and img.mode != 'RGB':
428
+ img = img.convert('RGB')
429
+
426
430
  img.save(buf, format, **defaults)
427
431
  buf.seek(0)
428
432
  return buf
@@ -52,9 +52,10 @@ if sys.platform == 'win32' or sys.platform == 'darwin':
52
52
  proc_class = threading.Thread
53
53
  queue_class = queue.Queue
54
54
  else:
55
- import multiprocessing
56
- proc_class = multiprocessing.Process
57
- queue_class = multiprocessing.Queue
55
+ import multiprocess
56
+ from multiprocess import Process
57
+ proc_class: type[Process] = multiprocess.Process
58
+ queue_class = multiprocess.Queue
58
59
 
59
60
 
60
61
  class TileWorkerPool(object):
@@ -19,7 +19,7 @@ import logging
19
19
  import sys
20
20
  import time
21
21
  import threading
22
- import multiprocessing
22
+ import multiprocess
23
23
  from io import BytesIO
24
24
  from typing import Optional
25
25
 
@@ -149,7 +149,7 @@ class MapnikSource(MapLayer):
149
149
  if not self.multithreaded:
150
150
  return self._create_map_obj(mapfile, None)
151
151
 
152
- process_id = multiprocessing.current_process()._identity
152
+ process_id = multiprocess.current_process()._identity
153
153
  queue_cachekey = (process_id, mapfile)
154
154
  if queue_cachekey in _map_objs_queues:
155
155
  try:
@@ -163,7 +163,7 @@ class MapnikSource(MapLayer):
163
163
  return self._create_map_obj(mapfile, process_id)
164
164
 
165
165
  def _put_unused_map_obj(self, mapfile, m):
166
- process_id = multiprocessing.current_process()._identity
166
+ process_id = multiprocess.current_process()._identity
167
167
  queue_cachekey = (process_id, mapfile)
168
168
  if queue_cachekey not in _map_objs_queues:
169
169
  _map_objs_queues[queue_cachekey] = Queue(MAX_UNUSED_MAPS)
@@ -179,14 +179,14 @@ class MapnikSource(MapLayer):
179
179
  # all MapnikSources with the same mapfile share the same Mapnik Map.
180
180
  return (None, None, mapfile)
181
181
  thread_id = threading.current_thread().ident
182
- process_id = multiprocessing.current_process()._identity
182
+ process_id = multiprocess.current_process()._identity
183
183
  return (process_id, thread_id, mapfile)
184
184
 
185
185
  def _cleanup_unused_cached_maps(self, mapfile):
186
186
  if not self.multithreaded:
187
187
  return
188
188
  # clean up no longer used cached maps
189
- process_id = multiprocessing.current_process()._identity
189
+ process_id = multiprocess.current_process()._identity
190
190
  process_cache_keys = [k for k in self._map_cache().keys()
191
191
  if k[0] == process_id]
192
192
  # To avoid time-consuming cleanup whenever one thread in the
@@ -30,6 +30,7 @@ import pytest
30
30
 
31
31
  from mapproxy.cache.base import TileLocker
32
32
  from mapproxy.cache.file import FileCache
33
+ from mapproxy.cache.path import dimensions_part
33
34
  from mapproxy.cache.tile import Tile
34
35
  from mapproxy.cache.tile_manager import TileManager
35
36
  from mapproxy.client.http import HTTPClient
@@ -1404,3 +1405,32 @@ class TestTileManagerCacheGeojsonCoverage(TileCacheTestBase):
1404
1405
 
1405
1406
  assert self.cache.stored_tiles == set([])
1406
1407
  assert self.cache.loaded_tiles == counting_set([None for _ in coords])
1408
+
1409
+
1410
+ class TestDimensionsPart(TileCacheTestBase):
1411
+
1412
+ def test_dimensions_part_sanitized(self):
1413
+
1414
+ with pytest.raises(ValueError):
1415
+ dimensions_part({"forwardparam": "../"})
1416
+
1417
+ with pytest.raises(ValueError):
1418
+ dimensions_part({"forwardparam": "time/../.."})
1419
+
1420
+ with pytest.raises(ValueError):
1421
+ dimensions_part({"forwardparam": "check/../test"})
1422
+
1423
+ with pytest.raises(ValueError):
1424
+ dimensions_part({"forwardparam": "check\\..\\windoze"})
1425
+
1426
+ retVal = dimensions_part({"forwardparam": "1234-5678"})
1427
+ assert retVal == "forwardparam-1234-5678"
1428
+
1429
+ retVal = dimensions_part({"forwardparam": "2004-10-12T13:55:20Z"})
1430
+ assert retVal == "forwardparam-2004-10-12T13:55:20Z"
1431
+
1432
+ retVal = dimensions_part({"forwardparam": "2020-09-22T11:20:00Z/2020-09-22T14:20:00Z/PT2H"})
1433
+ assert retVal == "forwardparam-2020-09-22T11:20:00Z/2020-09-22T14:20:00Z/PT2H"
1434
+
1435
+ retVal = dimensions_part({"forwardparam": r",;.:-_#'+*~´`?ß=})]([/{}])&%$§!^"})
1436
+ assert retVal == "forwardparam-,;.:-_#'+*~´`?ß=})]([/{}])&%$§!^"
@@ -13,7 +13,7 @@
13
13
  # See the License for the specific language governing permissions and
14
14
  # limitations under the License.
15
15
 
16
- import multiprocessing
16
+ import multiprocess
17
17
  import threading
18
18
  import time
19
19
 
@@ -40,7 +40,7 @@ def test_file_lock_load(tmpdir):
40
40
  time.sleep(0.01)
41
41
  lock((lock_file, count_file))
42
42
  threads = [threading.Thread(target=lock_x) for _ in range(20)]
43
- p = multiprocessing.Pool(5)
43
+ p = multiprocess.Pool(5)
44
44
  [t.start() for t in threads]
45
45
  p.map(lock, [(lock_file, count_file) for _ in range(50)])
46
46
  [t.join() for t in threads]
@@ -219,6 +219,38 @@ class TestImageResult(object):
219
219
  "Expected RGBA PNG when mode=RGBA requested, got %s" % result.mode
220
220
  )
221
221
 
222
+ def test_rgba_source_image_stored_as_jpeg(self):
223
+ """
224
+ Regression test: RGBA PNG from transparent WMS source (e.g. basemapde)
225
+ must not raise OSError when stored to a JPEG cache.
226
+ The mode=RGBA from image_opts must not override the JPEG-required RGB conversion.
227
+ """
228
+ # Simulate what a WMS with transparent=True & format=image/png returns
229
+ rgba_img = Image.new("RGBA", (256, 256), (100, 150, 200, 255))
230
+ source_opts = ImageOptions(format="image/png", transparent=True, mode="RGBA")
231
+ ir = ImageResult(rgba_img, image_opts=source_opts)
232
+
233
+ # Cache is configured as JPEG – mode=RGBA must not override the JPEG conversion
234
+ jpeg_opts = ImageOptions(format="image/jpeg", mode="RGBA")
235
+ buf = ir.as_buffer(jpeg_opts)
236
+ assert is_jpeg(buf), "Expected JPEG output when saving RGBA image with JPEG cache opts"
237
+
238
+ def test_rgba_image_to_jpeg_via_img_to_buf(self):
239
+ """
240
+ img_to_buf must not raise 'cannot write mode RGBA as JPEG'
241
+ when image_opts.mode='RGBA' and format='jpeg'.
242
+ """
243
+ from mapproxy.image import img_to_buf
244
+
245
+ rgba_img = Image.new("RGBA", (256, 256), (100, 150, 200, 128))
246
+ # The critical case: mode=RGBA but format=jpeg
247
+ opts = ImageOptions(format="image/jpeg", mode="RGBA", transparent=True)
248
+
249
+ # Must not raise OSError
250
+ buf = img_to_buf(rgba_img, image_opts=opts)
251
+ result = Image.open(buf)
252
+ assert result.mode == "RGB", "JPEG output must be RGB, not RGBA"
253
+
222
254
 
223
255
  class TestSubImageResult(object):
224
256
 
@@ -1095,3 +1127,43 @@ class TestBandMerge(object):
1095
1127
  img = result.as_image()
1096
1128
  assert img.mode == "RGBA"
1097
1129
  assert img.getpixel((0, 0)) == (200, 100, 0, 255)
1130
+
1131
+
1132
+ class TestImgHasTransparency(object):
1133
+ """Tests for img_has_transparency"""
1134
+
1135
+ def test_rgb_opaque(self):
1136
+ img = Image.new("RGB", (10, 10), (255, 0, 0))
1137
+ assert not img_has_transparency(img)
1138
+
1139
+ def test_rgba_fully_opaque(self):
1140
+ img = Image.new("RGBA", (10, 10), (255, 0, 0, 255))
1141
+ assert not img_has_transparency(img)
1142
+
1143
+ def test_rgba_with_transparency(self):
1144
+ img = Image.new("RGBA", (10, 10), (255, 0, 0, 255))
1145
+ img.paste((255, 0, 0, 0), (3, 3, 7, 7))
1146
+ assert img_has_transparency(img)
1147
+
1148
+ def test_p_with_transparency_info_but_color_not_used(self):
1149
+ """
1150
+ Regression: P-mode image with transparency info entry, but the
1151
+ transparent color does not appear in the image at all.
1152
+ img_has_transparency should return False, not True.
1153
+ """
1154
+ img = Image.new("RGB", (10, 10), (255, 0, 0)).quantize(256)
1155
+ assert img.mode == "P"
1156
+ pixels = list(img.getdata())
1157
+ assert 1 not in pixels, "palette index 1 must not appear in image for this test to be valid"
1158
+ img.info["transparency"] = 1
1159
+ assert not img_has_transparency(img)
1160
+
1161
+ def test_p_with_actual_transparency(self):
1162
+ """
1163
+ P-mode image where the transparent color actually appears in the image.
1164
+ """
1165
+ img = Image.new("RGBA", (10, 10), (255, 0, 0, 255))
1166
+ img.paste((255, 0, 0, 0), (3, 3, 7, 7))
1167
+ img_p = img.quantize(256)
1168
+ assert img.mode != "P" or img_has_transparency(img_p)
1169
+ assert img_has_transparency(img_p)
@@ -13,7 +13,7 @@
13
13
  # See the License for the specific language governing permissions and
14
14
  # limitations under the License.
15
15
 
16
- import multiprocessing
16
+ import multiprocess
17
17
  import time
18
18
  import sys
19
19
 
@@ -36,7 +36,7 @@ class TestCacheLock(object):
36
36
  assert True
37
37
 
38
38
  def test_locked_by_process_no_block(self, lock_file):
39
- ctx = multiprocessing.get_context('fork')
39
+ ctx = multiprocess.get_context('fork')
40
40
 
41
41
  proc_is_locked = ctx.Event()
42
42
 
@@ -68,7 +68,7 @@ class TestCacheLock(object):
68
68
  p.join()
69
69
 
70
70
  def test_locked_by_process_waiting(self, lock_file):
71
- ctx = multiprocessing.get_context('fork')
71
+ ctx = multiprocess.get_context('fork')
72
72
 
73
73
  proc_is_locked = ctx.Event()
74
74
 
@@ -14,7 +14,7 @@
14
14
  # limitations under the License.
15
15
 
16
16
  import glob
17
- import multiprocessing
17
+ import multiprocess
18
18
  import os
19
19
  import random
20
20
  import shutil
@@ -497,7 +497,7 @@ class TestWriteAtomic(object):
497
497
  num_writes = 800
498
498
  concurrent_writes = 8
499
499
 
500
- p = multiprocessing.Pool(concurrent_writes)
500
+ p = multiprocess.Pool(concurrent_writes)
501
501
  p.map(_write_atomic_data, ((i, filename) for i in range(num_writes)))
502
502
  p.close()
503
503
  p.join()
@@ -3,14 +3,14 @@ aws-sam-translator==1.91.0
3
3
  aws-xray-sdk==2.12.1
4
4
  azure-storage-blob==12.27.1
5
5
  beautifulsoup4==4.14.3
6
- boto3==1.40.55
7
- botocore==1.40.55
8
- certifi==2025.4.26
6
+ boto3==1.43.50
7
+ botocore==1.43.50
8
+ certifi==2026.6.17
9
9
  cffi==2.0.0
10
10
  cfn-lint==0.80.3
11
11
  chardet==5.2.0
12
12
  coverage==7.11.3
13
- cryptography==46.0.7
13
+ cryptography==49.0.0
14
14
  decorator==5.2.1
15
15
  docker==7.1.0
16
16
  docutils==0.22.4
@@ -18,7 +18,7 @@ ecdsa==0.18.0
18
18
  flake8==7.0.0
19
19
  flake8-toml-config==1.0.0
20
20
  idna==2.9
21
- iniconfig==2.0.0
21
+ iniconfig==2.3.0
22
22
  Jinja2==2.11.3
23
23
  jmespath==1.0.1
24
24
  jsondiff==1.3.1
@@ -33,6 +33,7 @@ MarkupSafe==1.1.1
33
33
  mock==5.1.0
34
34
  more-itertools==10.1.0
35
35
  moto==5.0.13
36
+ multiprocess==0.70.19
36
37
  mypy==1.18.2
37
38
  networkx==3.4.2
38
39
  numpy==1.26.4
@@ -43,30 +44,31 @@ py==1.11.0
43
44
  pyasn1==0.6.3
44
45
  pycparser==2.22
45
46
  pyparsing==3.3.2
46
- pyproj==3.7.1
47
+ pyproj==3.7.1;python_version<"3.14"
48
+ pyproj==3.7.2;python_version>"3.13"
47
49
  pyrsistent==0.20.0
48
50
  pytest-rerunfailures==16.0.1
49
51
  pytest==9.0.3
50
52
  python-dateutil==2.9.0.post0
51
53
  python-jose==3.5.0
52
54
  pytz==2024.2
53
- redis==5.0.1
55
+ redis==8.0.0
54
56
  requests==2.33.0
55
57
  responses==0.25.8
56
58
  rsa==4.9.1
57
- Shapely==2.1.0
58
- soupsieve==2.8
59
+ Shapely==2.1.2
60
+ soupsieve==2.8.4
59
61
  sshpubkeys==3.3.1
60
62
  toml==0.10.2
61
63
  types-PyYAML==6.0.12
62
64
  types-requests==2.32.4.20250913
63
- types-shapely==2.1.0.20250917
65
+ types-shapely==2.1.0.20260630
64
66
  types-jsonschema==4.25.1.20251009
65
67
  types-python-dateutil==2.9.0.20251008
66
68
  types-pytz==2025.2.0.20250809
67
69
  urllib3==2.5.0
68
70
  waitress==3.0.2
69
- WebOb==1.8.9
71
+ WebOb==1.8.10
70
72
  websocket-client==1.8.0
71
73
  WebTest==3.0.0
72
74
  wrapt==1.17.2
@@ -16,7 +16,8 @@ install_requires = [
16
16
  'jinja2',
17
17
  'Babel', # For jinja2
18
18
  'python-dateutil', # For jinja2
19
- 'requests'
19
+ 'requests',
20
+ 'multiprocess'
20
21
  ]
21
22
 
22
23
 
@@ -44,7 +45,7 @@ def long_description(changelog_releases=10):
44
45
 
45
46
  setup(
46
47
  name='MapProxy',
47
- version="6.1.1",
48
+ version="7.0.0",
48
49
  description='An accelerating proxy for tile and web map services',
49
50
  long_description=long_description(7),
50
51
  long_description_content_type='text/x-rst',
@@ -73,6 +74,7 @@ setup(
73
74
  "Programming Language :: Python :: 3.11",
74
75
  "Programming Language :: Python :: 3.12",
75
76
  "Programming Language :: Python :: 3.13",
77
+ "Programming Language :: Python :: 3.14",
76
78
  "Topic :: Internet :: Proxy Servers",
77
79
  "Topic :: Internet :: WWW/HTTP :: WSGI",
78
80
  "Topic :: Scientific/Engineering :: GIS",
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes