MapProxy 3.1.0__tar.gz → 3.1.2__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 (521) hide show
  1. {MapProxy-3.1.0 → MapProxy-3.1.2}/CHANGES.txt +27 -0
  2. {MapProxy-3.1.0 → MapProxy-3.1.2}/MapProxy.egg-info/PKG-INFO +31 -36
  3. {MapProxy-3.1.0 → MapProxy-3.1.2}/MapProxy.egg-info/requires.txt +1 -1
  4. {MapProxy-3.1.0 → MapProxy-3.1.2}/PKG-INFO +31 -36
  5. {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/coverages.rst +1 -1
  6. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/cache/base.py +4 -2
  7. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/cache/compact.py +8 -4
  8. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/cache/file.py +3 -0
  9. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/cache/geopackage.py +2 -2
  10. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/cache/mbtiles.py +2 -2
  11. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/config/config-schema.json +20 -0
  12. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/config/loader.py +48 -4
  13. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/config/validator.py +1 -1
  14. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/seed/config.py +3 -1
  15. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_utils.py +30 -2
  16. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/ext/lockfile.py +4 -1
  17. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/lock.py +12 -10
  18. {MapProxy-3.1.0 → MapProxy-3.1.2}/requirements-tests.txt +9 -6
  19. {MapProxy-3.1.0 → MapProxy-3.1.2}/setup.py +5 -2
  20. {MapProxy-3.1.0 → MapProxy-3.1.2}/AUTHORS.txt +0 -0
  21. {MapProxy-3.1.0 → MapProxy-3.1.2}/COPYING.txt +0 -0
  22. {MapProxy-3.1.0 → MapProxy-3.1.2}/LICENSE.txt +0 -0
  23. {MapProxy-3.1.0 → MapProxy-3.1.2}/MANIFEST.in +0 -0
  24. {MapProxy-3.1.0 → MapProxy-3.1.2}/MapProxy.egg-info/SOURCES.txt +0 -0
  25. {MapProxy-3.1.0 → MapProxy-3.1.2}/MapProxy.egg-info/dependency_links.txt +0 -0
  26. {MapProxy-3.1.0 → MapProxy-3.1.2}/MapProxy.egg-info/entry_points.txt +0 -0
  27. {MapProxy-3.1.0 → MapProxy-3.1.2}/MapProxy.egg-info/not-zip-safe +0 -0
  28. {MapProxy-3.1.0 → MapProxy-3.1.2}/MapProxy.egg-info/top_level.txt +0 -0
  29. {MapProxy-3.1.0 → MapProxy-3.1.2}/README.md +0 -0
  30. {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/GM.txt +0 -0
  31. {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/_static/logo.png +0 -0
  32. {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/_static/logo_title.png +0 -0
  33. {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/_static/mapproxy.css +0 -0
  34. {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/_templates/versions.html +0 -0
  35. {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/auth.rst +0 -0
  36. {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/caches.rst +0 -0
  37. {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/caching_layer_dimensions.rst +0 -0
  38. {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/conf.py +0 -0
  39. {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/configuration.rst +0 -0
  40. {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/configuration_examples.rst +0 -0
  41. {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/decorate_img.rst +0 -0
  42. {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/deployment.rst +0 -0
  43. {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/development.rst +0 -0
  44. {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/imgs/bicubic.png +0 -0
  45. {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/imgs/bilinear.png +0 -0
  46. {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/imgs/labeling-dynamic.png +0 -0
  47. {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/imgs/labeling-meta-buffer.png +0 -0
  48. {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/imgs/labeling-metatiling-buffer.png +0 -0
  49. {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/imgs/labeling-metatiling.png +0 -0
  50. {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/imgs/labeling-no-clip.png +0 -0
  51. {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/imgs/labeling-no-placement.png +0 -0
  52. {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/imgs/labeling-partial-false.png +0 -0
  53. {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/imgs/labeling-repeated.png +0 -0
  54. {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/imgs/mapnik-webmerc-hq.png +0 -0
  55. {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/imgs/mapnik-webmerc.png +0 -0
  56. {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/imgs/mapproxy-demo.png +0 -0
  57. {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/imgs/nearest.png +0 -0
  58. {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/index.rst +0 -0
  59. {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/inspire.rst +0 -0
  60. {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/install.rst +0 -0
  61. {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/install_docker.rst +0 -0
  62. {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/install_osgeo4w.rst +0 -0
  63. {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/install_windows.rst +0 -0
  64. {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/labeling.rst +0 -0
  65. {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/mapproxy_util.rst +0 -0
  66. {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/mapproxy_util_autoconfig.rst +0 -0
  67. {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/plugins.rst +0 -0
  68. {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/seed.rst +0 -0
  69. {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/services.rst +0 -0
  70. {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/sources.rst +0 -0
  71. {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/tutorial.rst +0 -0
  72. {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/tutorial.yaml +0 -0
  73. {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/yaml/cache_conf.yaml +0 -0
  74. {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/yaml/grid_conf.yaml +0 -0
  75. {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/yaml/merged_conf.yaml +0 -0
  76. {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/yaml/meta_conf.yaml +0 -0
  77. {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/yaml/seed.yaml +0 -0
  78. {MapProxy-3.1.0 → MapProxy-3.1.2}/doc/yaml/simple_conf.yaml +0 -0
  79. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/__init__.py +0 -0
  80. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/cache/__init__.py +0 -0
  81. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/cache/azureblob.py +0 -0
  82. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/cache/couchdb.py +0 -0
  83. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/cache/dummy.py +0 -0
  84. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/cache/legend.py +0 -0
  85. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/cache/meta.py +0 -0
  86. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/cache/path.py +0 -0
  87. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/cache/redis.py +0 -0
  88. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/cache/renderd.py +0 -0
  89. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/cache/riak.py +0 -0
  90. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/cache/s3.py +0 -0
  91. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/cache/tile.py +0 -0
  92. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/client/__init__.py +0 -0
  93. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/client/arcgis.py +0 -0
  94. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/client/cgi.py +0 -0
  95. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/client/http.py +0 -0
  96. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/client/log.py +0 -0
  97. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/client/tile.py +0 -0
  98. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/client/wms.py +0 -0
  99. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/compat/__init__.py +0 -0
  100. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/compat/image.py +0 -0
  101. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/config/__init__.py +0 -0
  102. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/config/config.py +0 -0
  103. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/config/coverage.py +0 -0
  104. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/config/defaults.py +0 -0
  105. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/config/spec.py +0 -0
  106. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/config_template/__init__.py +0 -0
  107. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/config_template/base_config/config.wsgi +0 -0
  108. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/config_template/base_config/full_example.yaml +0 -0
  109. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/config_template/base_config/full_seed_example.yaml +0 -0
  110. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/config_template/base_config/log.ini +0 -0
  111. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/config_template/base_config/mapproxy.yaml +0 -0
  112. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/config_template/base_config/seed.yaml +0 -0
  113. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/exception.py +0 -0
  114. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/featureinfo.py +0 -0
  115. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/grid.py +0 -0
  116. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/image/__init__.py +0 -0
  117. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/image/fonts/DejaVuSans.ttf +0 -0
  118. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/image/fonts/DejaVuSansMono.ttf +0 -0
  119. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/image/fonts/LICENSE +0 -0
  120. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/image/fonts/__init__.py +0 -0
  121. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/image/mask.py +0 -0
  122. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/image/merge.py +0 -0
  123. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/image/message.py +0 -0
  124. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/image/opts.py +0 -0
  125. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/image/tile.py +0 -0
  126. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/image/transform.py +0 -0
  127. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/layer.py +0 -0
  128. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/multiapp.py +0 -0
  129. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/proj.py +0 -0
  130. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/request/__init__.py +0 -0
  131. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/request/arcgis.py +0 -0
  132. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/request/base.py +0 -0
  133. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/request/tile.py +0 -0
  134. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/request/wms/__init__.py +0 -0
  135. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/request/wms/exception.py +0 -0
  136. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/request/wmts.py +0 -0
  137. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/response.py +0 -0
  138. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/script/__init__.py +0 -0
  139. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/script/conf/__init__.py +0 -0
  140. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/script/conf/app.py +0 -0
  141. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/script/conf/caches.py +0 -0
  142. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/script/conf/geopackage.py +0 -0
  143. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/script/conf/layers.py +0 -0
  144. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/script/conf/seeds.py +0 -0
  145. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/script/conf/sources.py +0 -0
  146. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/script/conf/utils.py +0 -0
  147. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/script/defrag.py +0 -0
  148. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/script/export.py +0 -0
  149. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/script/grids.py +0 -0
  150. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/script/scales.py +0 -0
  151. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/script/util.py +0 -0
  152. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/script/wms_capabilities.py +0 -0
  153. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/seed/__init__.py +0 -0
  154. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/seed/cachelock.py +0 -0
  155. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/seed/cleanup.py +0 -0
  156. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/seed/script.py +0 -0
  157. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/seed/seeder.py +0 -0
  158. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/seed/spec.py +0 -0
  159. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/seed/util.py +0 -0
  160. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/__init__.py +0 -0
  161. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/base.py +0 -0
  162. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/demo.py +0 -0
  163. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/kml.py +0 -0
  164. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/ows.py +0 -0
  165. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/template_helper.py +0 -0
  166. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/demo/capabilities_demo.html +0 -0
  167. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/demo/demo.html +0 -0
  168. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/demo/openlayers-demo.cfg +0 -0
  169. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/demo/static/img/blank.gif +0 -0
  170. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/demo/static/img/east-mini.png +0 -0
  171. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/demo/static/img/north-mini.png +0 -0
  172. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/demo/static/img/south-mini.png +0 -0
  173. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/demo/static/img/west-mini.png +0 -0
  174. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/demo/static/img/zoom-minus-mini.png +0 -0
  175. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/demo/static/img/zoom-plus-mini.png +0 -0
  176. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/demo/static/img/zoom-world-mini.png +0 -0
  177. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/demo/static/logo.png +0 -0
  178. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/demo/static/ol.css +0 -0
  179. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/demo/static/ol.js +0 -0
  180. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/demo/static/proj4.min.js +0 -0
  181. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/demo/static/proj4defs.js +0 -0
  182. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/demo/static/site.css +0 -0
  183. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/demo/static/theme/default/framedCloud.css +0 -0
  184. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/demo/static/theme/default/google.css +0 -0
  185. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/demo/static/theme/default/ie6-style.css +0 -0
  186. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/demo/static/theme/default/style.css +0 -0
  187. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/demo/static.html +0 -0
  188. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/demo/tms_demo.html +0 -0
  189. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/demo/wms_demo.html +0 -0
  190. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/demo/wmts_demo.html +0 -0
  191. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/ows_exception.xml +0 -0
  192. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/tms_capabilities.xml +0 -0
  193. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/tms_exception.xml +0 -0
  194. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/tms_root_resource.xml +0 -0
  195. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/tms_tilemap_capabilities.xml +0 -0
  196. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/wms100capabilities.xml +0 -0
  197. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/wms100exception.xml +0 -0
  198. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/wms110capabilities.xml +0 -0
  199. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/wms110exception.xml +0 -0
  200. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/wms111capabilities.xml +0 -0
  201. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/wms111exception.xml +0 -0
  202. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/wms130capabilities.xml +0 -0
  203. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/wms130exception.xml +0 -0
  204. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/wmts100capabilities.xml +0 -0
  205. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/templates/wmts100exception.xml +0 -0
  206. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/tile.py +0 -0
  207. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/wms.py +0 -0
  208. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/service/wmts.py +0 -0
  209. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/source/__init__.py +0 -0
  210. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/source/arcgis.py +0 -0
  211. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/source/error.py +0 -0
  212. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/source/mapnik.py +0 -0
  213. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/source/tile.py +0 -0
  214. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/source/wms.py +0 -0
  215. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/srs.py +0 -0
  216. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/template.py +0 -0
  217. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/__init__.py +0 -0
  218. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/conftest.py +0 -0
  219. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/helper.py +0 -0
  220. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/http.py +0 -0
  221. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/image.py +0 -0
  222. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/mocker.py +0 -0
  223. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/common/1.0/common.xsd +0 -0
  224. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_bul.xsd +0 -0
  225. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_cze.xsd +0 -0
  226. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_dan.xsd +0 -0
  227. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_dut.xsd +0 -0
  228. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_eng.xsd +0 -0
  229. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_est.xsd +0 -0
  230. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_fin.xsd +0 -0
  231. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_fre.xsd +0 -0
  232. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_ger.xsd +0 -0
  233. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_gle.xsd +0 -0
  234. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_gre.xsd +0 -0
  235. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_hun.xsd +0 -0
  236. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_ita.xsd +0 -0
  237. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_lav.xsd +0 -0
  238. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_lit.xsd +0 -0
  239. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_mlt.xsd +0 -0
  240. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_pol.xsd +0 -0
  241. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_por.xsd +0 -0
  242. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_rum.xsd +0 -0
  243. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_slo.xsd +0 -0
  244. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_slv.xsd +0 -0
  245. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_spa.xsd +0 -0
  246. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/common/1.0/enums/enum_swe.xsd +0 -0
  247. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/common/1.0/network.xsd +0 -0
  248. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/inspire/inspire_vs/1.0/inspire_vs.xsd +0 -0
  249. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/kml/2.2.0/ReadMe.txt +0 -0
  250. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/kml/2.2.0/atom-author-link.xsd +0 -0
  251. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/kml/2.2.0/ogckml22.xsd +0 -0
  252. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/kml/2.2.0/xAL.xsd +0 -0
  253. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/ows/1.1.0/ReadMe.txt +0 -0
  254. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/ows/1.1.0/ows19115subset.xsd +0 -0
  255. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/ows/1.1.0/owsAll.xsd +0 -0
  256. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/ows/1.1.0/owsCommon.xsd +0 -0
  257. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/ows/1.1.0/owsContents.xsd +0 -0
  258. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/ows/1.1.0/owsDataIdentification.xsd +0 -0
  259. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/ows/1.1.0/owsDomainType.xsd +0 -0
  260. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/ows/1.1.0/owsExceptionReport.xsd +0 -0
  261. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/ows/1.1.0/owsGetCapabilities.xsd +0 -0
  262. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/ows/1.1.0/owsGetResourceByID.xsd +0 -0
  263. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/ows/1.1.0/owsInputOutputData.xsd +0 -0
  264. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/ows/1.1.0/owsManifest.xsd +0 -0
  265. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/ows/1.1.0/owsOperationsMetadata.xsd +0 -0
  266. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/ows/1.1.0/owsServiceIdentification.xsd +0 -0
  267. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/ows/1.1.0/owsServiceProvider.xsd +0 -0
  268. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/sld/1.1.0/sld_capabilities.xsd +0 -0
  269. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wms/1.0.0/capabilities_1_0_0.dtd +0 -0
  270. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wms/1.0.0/capabilities_1_0_0.xml +0 -0
  271. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wms/1.0.7/capabilities_1_0_7.dtd +0 -0
  272. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wms/1.0.7/capabilities_1_0_7.xml +0 -0
  273. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wms/1.1.0/capabilities_1_1_0.dtd +0 -0
  274. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wms/1.1.0/capabilities_1_1_0.xml +0 -0
  275. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wms/1.1.0/exception_1_1_0.dtd +0 -0
  276. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wms/1.1.0/exception_1_1_0.xml +0 -0
  277. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wms/1.1.1/OGC-exception.xsd +0 -0
  278. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wms/1.1.1/WMS_DescribeLayerResponse.dtd +0 -0
  279. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wms/1.1.1/WMS_MS_Capabilities.dtd +0 -0
  280. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wms/1.1.1/WMS_exception_1_1_1.dtd +0 -0
  281. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wms/1.1.1/capabilities_1_1_1.dtd +0 -0
  282. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wms/1.1.1/capabilities_1_1_1.xml +0 -0
  283. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wms/1.1.1/exception_1_1_1.dtd +0 -0
  284. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wms/1.1.1/exception_1_1_1.xml +0 -0
  285. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wms/1.3.0/ReadMe.txt +0 -0
  286. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wms/1.3.0/capabilities_1_3_0.xml +0 -0
  287. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wms/1.3.0/capabilities_1_3_0.xsd +0 -0
  288. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wms/1.3.0/exceptions_1_3_0.xml +0 -0
  289. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wms/1.3.0/exceptions_1_3_0.xsd +0 -0
  290. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wmsc/1.1.1/OGC-exception.xsd +0 -0
  291. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wmsc/1.1.1/WMS_DescribeLayerResponse.dtd +0 -0
  292. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wmsc/1.1.1/WMS_MS_Capabilities.dtd +0 -0
  293. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wmsc/1.1.1/WMS_exception_1_1_1.dtd +0 -0
  294. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wmsc/1.1.1/capabilities_1_1_1.dtd +0 -0
  295. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wmsc/1.1.1/capabilities_1_1_1.xml +0 -0
  296. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wmsc/1.1.1/exception_1_1_1.dtd +0 -0
  297. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wmsc/1.1.1/exception_1_1_1.xml +0 -0
  298. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wmts/1.0/ReadMe.txt +0 -0
  299. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wmts/1.0/wmts.xsd +0 -0
  300. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wmts/1.0/wmtsAbstract.wsdl +0 -0
  301. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wmts/1.0/wmtsGetCapabilities_request.xsd +0 -0
  302. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wmts/1.0/wmtsGetCapabilities_response.xsd +0 -0
  303. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wmts/1.0/wmtsGetFeatureInfo_request.xsd +0 -0
  304. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wmts/1.0/wmtsGetFeatureInfo_response.xsd +0 -0
  305. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wmts/1.0/wmtsGetTile_request.xsd +0 -0
  306. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wmts/1.0/wmtsKVP.xsd +0 -0
  307. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/wmts/1.0/wmtsPayload_response.xsd +0 -0
  308. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/xlink/1.0.0/ReadMe.txt +0 -0
  309. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/xlink/1.0.0/xlinks.xsd +0 -0
  310. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/schemas/xml.xsd +0 -0
  311. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/__init__.py +0 -0
  312. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/arcgis.yaml +0 -0
  313. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/auth.yaml +0 -0
  314. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/cache.mbtiles +0 -0
  315. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/cache_azureblob.yaml +0 -0
  316. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/cache_band_merge.yaml +0 -0
  317. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/cache_bulk_meta_tiles.yaml +0 -0
  318. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/cache_coverage.yaml +0 -0
  319. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/cache_data/dop_cache_EPSG3857/00/000/000/000/000/000/000.png +0 -0
  320. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/cache_data/wms_cache_EPSG900913/01/000/000/000/000/000/001.jpeg +0 -0
  321. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/cache_data/wms_cache_transparent_EPSG900913/01/000/000/000/000/000/001.png +0 -0
  322. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/cache_geopackage.yaml +0 -0
  323. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/cache_grid_names.yaml +0 -0
  324. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/cache_mbtiles.yaml +0 -0
  325. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/cache_s3.yaml +0 -0
  326. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/cache_source.yaml +0 -0
  327. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/combined_sources.yaml +0 -0
  328. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/coverage.yaml +0 -0
  329. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/demo.yaml +0 -0
  330. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/dimension.yaml +0 -0
  331. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/disable_storage.yaml +0 -0
  332. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/empty_ogrdata.geojson +0 -0
  333. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/formats.yaml +0 -0
  334. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/inspire.yaml +0 -0
  335. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/inspire_full.yaml +0 -0
  336. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/kml_layer.yaml +0 -0
  337. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/layer.yaml +0 -0
  338. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/layergroups.yaml +0 -0
  339. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/layergroups_root.yaml +0 -0
  340. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/legendgraphic.yaml +0 -0
  341. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/mapnik_source.yaml +0 -0
  342. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/mapproxy_export.yaml +0 -0
  343. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/mapserver.yaml +0 -0
  344. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/minimal_cgi.py +0 -0
  345. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/mixed_mode.yaml +0 -0
  346. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/multi_cache_layers.yaml +0 -0
  347. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/multiapp1.yaml +0 -0
  348. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/multiapp2.yaml +0 -0
  349. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/renderd_client.yaml +0 -0
  350. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/scalehints.yaml +0 -0
  351. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/seed.yaml +0 -0
  352. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/seed_mapproxy.yaml +0 -0
  353. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/seed_old.yaml +0 -0
  354. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/seed_timeouts.yaml +0 -0
  355. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/seed_timeouts_mapproxy.yaml +0 -0
  356. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/seedonly.yaml +0 -0
  357. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/sld.yaml +0 -0
  358. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/source_errors.yaml +0 -0
  359. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/source_errors_raise.yaml +0 -0
  360. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/tileservice_origin.yaml +0 -0
  361. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/tileservice_refresh.yaml +0 -0
  362. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/tilesource_minmax_res.yaml +0 -0
  363. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/util-conf-base-grids.yaml +0 -0
  364. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/util-conf-overwrite.yaml +0 -0
  365. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/util-conf-wms-111-cap.xml +0 -0
  366. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/util_grids.yaml +0 -0
  367. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/util_wms_capabilities111.xml +0 -0
  368. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/util_wms_capabilities130.xml +0 -0
  369. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/util_wms_capabilities_service_exception.xml +0 -0
  370. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/watermark.yaml +0 -0
  371. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/wms_srs_extent.yaml +0 -0
  372. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/wms_versions.yaml +0 -0
  373. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/wmts.yaml +0 -0
  374. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/wmts_dimensions.yaml +0 -0
  375. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/xslt_featureinfo.yaml +0 -0
  376. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/fixture/xslt_featureinfo_input.yaml +0 -0
  377. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_arcgis.py +0 -0
  378. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_auth.py +0 -0
  379. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_behind_proxy.py +0 -0
  380. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_bulk_meta_tiles.py +0 -0
  381. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_cache_azureblob.py +0 -0
  382. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_cache_band_merge.py +0 -0
  383. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_cache_coverage.py +0 -0
  384. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_cache_geopackage.py +0 -0
  385. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_cache_grid_names.py +0 -0
  386. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_cache_mbtiles.py +0 -0
  387. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_cache_s3.py +0 -0
  388. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_cache_source.py +0 -0
  389. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_combined_sources.py +0 -0
  390. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_coverage.py +0 -0
  391. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_decorate_img.py +0 -0
  392. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_demo.py +0 -0
  393. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_demo_with_extra_service.py +0 -0
  394. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_dimensions.py +0 -0
  395. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_disable_storage.py +0 -0
  396. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_formats.py +0 -0
  397. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_inspire_vs.py +0 -0
  398. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_kml.py +0 -0
  399. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_layergroups.py +0 -0
  400. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_legendgraphic.py +0 -0
  401. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_mapnik.py +0 -0
  402. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_mapserver.py +0 -0
  403. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_mixed_mode_format.py +0 -0
  404. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_multi_cache_layers.py +0 -0
  405. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_multiapp.py +0 -0
  406. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_refresh.py +0 -0
  407. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_renderd_client.py +0 -0
  408. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_response_headers.py +0 -0
  409. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_scalehints.py +0 -0
  410. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_seed.py +0 -0
  411. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_seed_only.py +0 -0
  412. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_sld.py +0 -0
  413. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_source_errors.py +0 -0
  414. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_tilesource_minmax_res.py +0 -0
  415. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_tms.py +0 -0
  416. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_tms_origin.py +0 -0
  417. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_util_conf.py +0 -0
  418. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_util_export.py +0 -0
  419. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_util_grids.py +0 -0
  420. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_util_wms_capabilities.py +0 -0
  421. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_watermark.py +0 -0
  422. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_wms.py +0 -0
  423. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_wms_srs_extent.py +0 -0
  424. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_wms_version.py +0 -0
  425. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_wmsc.py +0 -0
  426. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_wmts.py +0 -0
  427. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_wmts_dimensions.py +0 -0
  428. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_wmts_restful.py +0 -0
  429. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/system/test_xslt_featureinfo.py +0 -0
  430. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/test_http_helper.py +0 -0
  431. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/__init__.py +0 -0
  432. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/epsg +0 -0
  433. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/polygons/polygons.dbf +0 -0
  434. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/polygons/polygons.shp +0 -0
  435. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/polygons/polygons.shx +0 -0
  436. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_async.py +0 -0
  437. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_auth.py +0 -0
  438. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_cache.py +0 -0
  439. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_cache_azureblob.py +0 -0
  440. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_cache_compact.py +0 -0
  441. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_cache_couchdb.py +0 -0
  442. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_cache_geopackage.py +0 -0
  443. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_cache_mbtile.py +0 -0
  444. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_cache_redis.py +0 -0
  445. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_cache_riak.py +0 -0
  446. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_cache_s3.py +0 -0
  447. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_cache_tile.py +0 -0
  448. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_client.py +0 -0
  449. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_client_arcgis.py +0 -0
  450. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_client_cgi.py +0 -0
  451. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_collections.py +0 -0
  452. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_concat_legends.py +0 -0
  453. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_conf_loader.py +0 -0
  454. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_conf_validator.py +0 -0
  455. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_config.py +0 -0
  456. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_decorate_img.py +0 -0
  457. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_exceptions.py +0 -0
  458. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_featureinfo.py +0 -0
  459. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_file_lock_load.py +0 -0
  460. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_fs.py +0 -0
  461. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_geom.py +0 -0
  462. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_grid.py +0 -0
  463. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_image.py +0 -0
  464. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_image_mask.py +0 -0
  465. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_image_messages.py +0 -0
  466. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_image_options.py +0 -0
  467. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_isodate.py +0 -0
  468. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_multiapp.py +0 -0
  469. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_ogr_reader.py +0 -0
  470. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_request.py +0 -0
  471. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_request_wmts.py +0 -0
  472. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_response.py +0 -0
  473. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_seed.py +0 -0
  474. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_seed_cachelock.py +0 -0
  475. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_srs.py +0 -0
  476. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_tiled_source.py +0 -0
  477. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_tilefilter.py +0 -0
  478. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_times.py +0 -0
  479. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_timeutils.py +0 -0
  480. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_util_conf_utils.py +0 -0
  481. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_wms_capabilities.py +0 -0
  482. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_wms_layer.py +0 -0
  483. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/test/unit/test_yaml.py +0 -0
  484. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/tilefilter.py +0 -0
  485. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/__init__.py +0 -0
  486. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/async_.py +0 -0
  487. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/collections.py +0 -0
  488. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/coverage.py +0 -0
  489. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/ext/__init__.py +0 -0
  490. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/ext/dictspec/__init__.py +0 -0
  491. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/ext/dictspec/spec.py +0 -0
  492. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/ext/dictspec/test/__init__.py +0 -0
  493. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/ext/dictspec/test/test_validator.py +0 -0
  494. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/ext/dictspec/validator.py +0 -0
  495. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/ext/local.py +0 -0
  496. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/ext/odict.py +0 -0
  497. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/ext/serving.py +0 -0
  498. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/ext/tempita/__init__.py +0 -0
  499. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/ext/tempita/_looper.py +0 -0
  500. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/ext/tempita/string_utils.py +0 -0
  501. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/ext/wmsparse/__init__.py +0 -0
  502. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/ext/wmsparse/duration.py +0 -0
  503. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/ext/wmsparse/parse.py +0 -0
  504. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/ext/wmsparse/test/__init__.py +0 -0
  505. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/ext/wmsparse/test/test_parse.py +0 -0
  506. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/ext/wmsparse/test/test_util.py +0 -0
  507. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/ext/wmsparse/test/wms-example-111.xml +0 -0
  508. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/ext/wmsparse/test/wms-example-130.xml +0 -0
  509. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/ext/wmsparse/test/wms-large-111.xml +0 -0
  510. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/ext/wmsparse/test/wms_nasa_cap.xml +0 -0
  511. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/ext/wmsparse/util.py +0 -0
  512. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/fs.py +0 -0
  513. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/geom.py +0 -0
  514. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/lib.py +0 -0
  515. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/ogr.py +0 -0
  516. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/py.py +0 -0
  517. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/times.py +0 -0
  518. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/util/yaml.py +0 -0
  519. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/version.py +0 -0
  520. {MapProxy-3.1.0 → MapProxy-3.1.2}/mapproxy/wsgiapp.py +0 -0
  521. {MapProxy-3.1.0 → MapProxy-3.1.2}/setup.cfg +0 -0
@@ -1,3 +1,30 @@
1
+ 3.1.2 2024-11-20
2
+ ~~~~~~~~~~~~~~~~
3
+
4
+ Maintenance:
5
+
6
+ - Several dependencies for the tests and github actions have been updated
7
+
8
+ Fixes:
9
+
10
+ - Metadata URLs are now required to have a `url`, `type` and `format`
11
+ - The layers of a wms `req` are now correctly splitted at `,` for validation
12
+ - The validation for seeding configs is fixed
13
+ - Single color tiles are now created with configured file_permissions
14
+
15
+
16
+ 3.1.1 2024-11-15
17
+ ~~~~~~~~~~~~~~~~
18
+
19
+ Maintenance:
20
+
21
+ - Werkzeug version is no longer pinned and can be chosen freely.
22
+
23
+ Fixes:
24
+
25
+ - The permission handling for file locks now also sets permissions on the files not just on the directories.
26
+
27
+
1
28
  3.1.0 2024-10-22
2
29
  ~~~~~~~~~~~~~~~~
3
30
 
@@ -1,10 +1,12 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: MapProxy
3
- Version: 3.1.0
3
+ Version: 3.1.2
4
4
  Summary: An accelerating proxy for tile and web map services
5
5
  Home-page: https://mapproxy.org
6
6
  Author: Oliver Tonnhofer
7
7
  Author-email: olt@omniscale.de
8
+ Maintainer: terrestris GmbH & Co. KG
9
+ Maintainer-email: info@terrestris.de
8
10
  License: Apache Software License 2.0
9
11
  Platform: UNKNOWN
10
12
  Classifier: Development Status :: 5 - Production/Stable
@@ -18,6 +20,7 @@ Classifier: Programming Language :: Python :: 3.12
18
20
  Classifier: Topic :: Internet :: Proxy Servers
19
21
  Classifier: Topic :: Internet :: WWW/HTTP :: WSGI
20
22
  Classifier: Topic :: Scientific/Engineering :: GIS
23
+ Description-Content-Type: text/x-rst
21
24
  License-File: LICENSE.txt
22
25
  License-File: COPYING.txt
23
26
  License-File: AUTHORS.txt
@@ -34,6 +37,33 @@ The documentation is available at: http://mapproxy.github.io/mapproxy/latest/
34
37
 
35
38
  Changes
36
39
  -------
40
+ 3.1.2 2024-11-20
41
+ ~~~~~~~~~~~~~~~~
42
+
43
+ Maintenance:
44
+
45
+ - Several dependencies for the tests and github actions have been updated
46
+
47
+ Fixes:
48
+
49
+ - Metadata URLs are now required to have a `url`, `type` and `format`
50
+ - The layers of a wms `req` are now correctly splitted at `,` for validation
51
+ - The validation for seeding configs is fixed
52
+ - Single color tiles are now created with configured file_permissions
53
+
54
+
55
+ 3.1.1 2024-11-15
56
+ ~~~~~~~~~~~~~~~~
57
+
58
+ Maintenance:
59
+
60
+ - Werkzeug version is no longer pinned and can be chosen freely.
61
+
62
+ Fixes:
63
+
64
+ - The permission handling for file locks now also sets permissions on the files not just on the directories.
65
+
66
+
37
67
  3.1.0 2024-10-22
38
68
  ~~~~~~~~~~~~~~~~
39
69
 
@@ -114,41 +144,6 @@ Fixes:
114
144
  - Fix doc generation workflow
115
145
 
116
146
 
117
- 2.1.0 2024-07-16
118
- ~~~~~~~~~~~~~~~~
119
- Improvements:
120
-
121
- - Configuration files can no be splitted into multiple files
122
- - Added jsonschema to validate configuration files
123
- - New theme for documentation, overall improvement of the documentation and github workflow for automatic creation
124
- - Improved docker images with better entrypoint and workflow to build docker images with a builder image
125
- - Added release workflow for automatic publishing on pypi and github
126
-
127
- Maintenance:
128
-
129
- - Dependency updates
130
- - Remove python 2 compatibility functions
131
- - Added flake8 linting
132
- - setup.py contains now required libraries
133
- - Remove depracated `pkg_resources` in favor of `importlib_resources`
134
- - Addressed shapely deprecations
135
-
136
- Fixes:
137
-
138
- - Ensure make_app always returns MapProxyApp instance
139
- - Allow feature info responses of combined sources to be empty
140
- - Fix broken TMS demo
141
- - Fix problem with dimensions in load_tile_metadata
142
- - Fix GeoTIFF Headers
143
-
144
-
145
- 2.0.2 2024-01-10
146
- ~~~~~~~~~~~~~~~~
147
-
148
- Fixes:
149
-
150
- - Revert PR "Fix mixed image format for file, S3 and azureblob caches"
151
-
152
147
 
153
148
  Older changes
154
149
  -------------
@@ -3,7 +3,7 @@ PyYAML>=3.0
3
3
  future
4
4
  jsonschema>=4
5
5
  pyproj>=2
6
- werkzeug==1.0.1
6
+ werkzeug<4
7
7
 
8
8
  [:python_version <= "3.8"]
9
9
  importlib_resources
@@ -1,10 +1,12 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: MapProxy
3
- Version: 3.1.0
3
+ Version: 3.1.2
4
4
  Summary: An accelerating proxy for tile and web map services
5
5
  Home-page: https://mapproxy.org
6
6
  Author: Oliver Tonnhofer
7
7
  Author-email: olt@omniscale.de
8
+ Maintainer: terrestris GmbH & Co. KG
9
+ Maintainer-email: info@terrestris.de
8
10
  License: Apache Software License 2.0
9
11
  Platform: UNKNOWN
10
12
  Classifier: Development Status :: 5 - Production/Stable
@@ -18,6 +20,7 @@ Classifier: Programming Language :: Python :: 3.12
18
20
  Classifier: Topic :: Internet :: Proxy Servers
19
21
  Classifier: Topic :: Internet :: WWW/HTTP :: WSGI
20
22
  Classifier: Topic :: Scientific/Engineering :: GIS
23
+ Description-Content-Type: text/x-rst
21
24
  License-File: LICENSE.txt
22
25
  License-File: COPYING.txt
23
26
  License-File: AUTHORS.txt
@@ -34,6 +37,33 @@ The documentation is available at: http://mapproxy.github.io/mapproxy/latest/
34
37
 
35
38
  Changes
36
39
  -------
40
+ 3.1.2 2024-11-20
41
+ ~~~~~~~~~~~~~~~~
42
+
43
+ Maintenance:
44
+
45
+ - Several dependencies for the tests and github actions have been updated
46
+
47
+ Fixes:
48
+
49
+ - Metadata URLs are now required to have a `url`, `type` and `format`
50
+ - The layers of a wms `req` are now correctly splitted at `,` for validation
51
+ - The validation for seeding configs is fixed
52
+ - Single color tiles are now created with configured file_permissions
53
+
54
+
55
+ 3.1.1 2024-11-15
56
+ ~~~~~~~~~~~~~~~~
57
+
58
+ Maintenance:
59
+
60
+ - Werkzeug version is no longer pinned and can be chosen freely.
61
+
62
+ Fixes:
63
+
64
+ - The permission handling for file locks now also sets permissions on the files not just on the directories.
65
+
66
+
37
67
  3.1.0 2024-10-22
38
68
  ~~~~~~~~~~~~~~~~
39
69
 
@@ -114,41 +144,6 @@ Fixes:
114
144
  - Fix doc generation workflow
115
145
 
116
146
 
117
- 2.1.0 2024-07-16
118
- ~~~~~~~~~~~~~~~~
119
- Improvements:
120
-
121
- - Configuration files can no be splitted into multiple files
122
- - Added jsonschema to validate configuration files
123
- - New theme for documentation, overall improvement of the documentation and github workflow for automatic creation
124
- - Improved docker images with better entrypoint and workflow to build docker images with a builder image
125
- - Added release workflow for automatic publishing on pypi and github
126
-
127
- Maintenance:
128
-
129
- - Dependency updates
130
- - Remove python 2 compatibility functions
131
- - Added flake8 linting
132
- - setup.py contains now required libraries
133
- - Remove depracated `pkg_resources` in favor of `importlib_resources`
134
- - Addressed shapely deprecations
135
-
136
- Fixes:
137
-
138
- - Ensure make_app always returns MapProxyApp instance
139
- - Allow feature info responses of combined sources to be empty
140
- - Fix broken TMS demo
141
- - Fix problem with dimensions in load_tile_metadata
142
- - Fix GeoTIFF Headers
143
-
144
-
145
- 2.0.2 2024-01-10
146
- ~~~~~~~~~~~~~~~~
147
-
148
- Fixes:
149
-
150
- - Revert PR "Fix mixed image format for file, S3 and azureblob caches"
151
-
152
147
 
153
148
  Older changes
154
149
  -------------
@@ -41,7 +41,7 @@ All coverages are configured by defining the source of the coverage and the SRS.
41
41
  The configuration of the coverage depends on the type. The SRS can allways be configured with the ``srs`` option.
42
42
 
43
43
  .. versionadded:: 1.5.0
44
- MapProxy can autodetect the type of the coverage. You can now use ``coverage`` instead of the ``bbox``, ``polygons`` or ``ogr_datasource`` option.
44
+ MapProxy can autodetect the type of the coverage. You can now use ``datasource`` instead of the ``bbox``, ``polygons`` or ``ogr_datasource`` option.
45
45
  The old options are still supported.
46
46
 
47
47
  Coverage Types
@@ -98,11 +98,12 @@ if sys.platform == 'win32':
98
98
 
99
99
 
100
100
  class TileLocker(object):
101
- def __init__(self, lock_dir, lock_timeout, lock_cache_id, directory_permissions=None):
101
+ def __init__(self, lock_dir, lock_timeout, lock_cache_id, directory_permissions=None, file_permissions=None):
102
102
  self.lock_dir = lock_dir
103
103
  self.lock_timeout = lock_timeout
104
104
  self.lock_cache_id = lock_cache_id
105
105
  self.directory_permissions = directory_permissions
106
+ self.file_permissions = file_permissions
106
107
 
107
108
  def lock_filename(self, tile):
108
109
  return os.path.join(self.lock_dir, self.lock_cache_id + '-' +
@@ -118,4 +119,5 @@ class TileLocker(object):
118
119
  cleanup_lockdir(self.lock_dir, max_lock_time=self.lock_timeout + 10,
119
120
  force=False)
120
121
  return FileLock(lock_filename, timeout=self.lock_timeout,
121
- remove_on_unlock=REMOVE_ON_UNLOCK, directory_permissions=self.directory_permissions)
122
+ remove_on_unlock=REMOVE_ON_UNLOCK, directory_permissions=self.directory_permissions,
123
+ file_permissions=self.file_permissions)
@@ -192,7 +192,8 @@ class BundleV1(object):
192
192
  data = buf.read()
193
193
  tiles_data.append((t.coord, data))
194
194
 
195
- with FileLock(self.lock_filename, directory_permissions=self.directory_permissions, remove_on_unlock=True):
195
+ with FileLock(self.lock_filename, directory_permissions=self.directory_permissions,
196
+ file_permissions=self.file_permissions, remove_on_unlock=True):
196
197
  with self.data().readwrite() as bundle:
197
198
  with self.index().readwrite() as idx:
198
199
  for tile_coord, data in tiles_data:
@@ -236,7 +237,8 @@ class BundleV1(object):
236
237
  if tile.coord is None:
237
238
  return True
238
239
 
239
- with FileLock(self.lock_filename, directory_permissions=self.directory_permissions, remove_on_unlock=True):
240
+ with FileLock(self.lock_filename, directory_permissions=self.directory_permissions,
241
+ file_permissions=self.file_permissions, remove_on_unlock=True):
240
242
  with self.index().readwrite() as idx:
241
243
  x, y = self._rel_tile_coord(tile.coord)
242
244
  idx.remove_tile_offset(x, y)
@@ -634,7 +636,8 @@ class BundleV2(object):
634
636
  data = buf.read()
635
637
  tiles_data.append((t.coord, data))
636
638
 
637
- with FileLock(self.lock_filename, directory_permissions=self.directory_permissions, remove_on_unlock=True):
639
+ with FileLock(self.lock_filename, directory_permissions=self.directory_permissions,
640
+ file_permissions=self.file_permissions, remove_on_unlock=True):
638
641
  with self._readwrite() as fh:
639
642
  for tile_coord, data in tiles_data:
640
643
  self._store_tile(fh, tile_coord, data, dimensions=dimensions)
@@ -646,7 +649,8 @@ class BundleV2(object):
646
649
  return True
647
650
 
648
651
  self._init_index()
649
- with FileLock(self.lock_filename, directory_permissions=self.directory_permissions, remove_on_unlock=True):
652
+ with FileLock(self.lock_filename, directory_permissions=self.directory_permissions,
653
+ file_permissions=self.file_permissions, remove_on_unlock=True):
650
654
  with self._readwrite() as fh:
651
655
  x, y = self._rel_tile_coord(tile.coord)
652
656
  self._update_tile_offset(fh, x, y, 0, 0)
@@ -165,6 +165,9 @@ class FileCache(TileCacheBase):
165
165
  with tile_buffer(tile) as buf:
166
166
  log.debug('writing %r to %s' % (tile.coord, location))
167
167
  write_atomic(location, buf.read())
168
+ if self.file_permissions:
169
+ permission = int(self.file_permissions, base=8)
170
+ os.chmod(location, permission)
168
171
 
169
172
  def _store_single_color_tile(self, tile, tile_loc, color):
170
173
  real_tile_loc = self._single_color_tile_location(color, create_dir=True)
@@ -112,8 +112,8 @@ class GeopackageCache(TileCacheBase):
112
112
 
113
113
  def ensure_gpkg(self):
114
114
  if not os.path.isfile(self.geopackage_file):
115
- with FileLock(self.geopackage_file + '.init.lck',
116
- remove_on_unlock=REMOVE_ON_UNLOCK, directory_permissions=self.directory_permissions):
115
+ with FileLock(self.geopackage_file + '.init.lck', remove_on_unlock=REMOVE_ON_UNLOCK,
116
+ directory_permissions=self.directory_permissions, file_permissions=self.file_permissions):
117
117
  ensure_directory(self.geopackage_file, self.directory_permissions)
118
118
  self._initialize_gpkg()
119
119
  else:
@@ -77,8 +77,8 @@ class MBTilesCache(TileCacheBase):
77
77
 
78
78
  def ensure_mbtile(self):
79
79
  if not os.path.exists(self.mbtile_file):
80
- with FileLock(self.mbtile_file + '.init.lck',
81
- remove_on_unlock=REMOVE_ON_UNLOCK, directory_permissions=self.directory_permissions):
80
+ with FileLock(self.mbtile_file + '.init.lck', remove_on_unlock=REMOVE_ON_UNLOCK,
81
+ directory_permissions=self.directory_permissions, file_permissions=self.file_permissions):
82
82
  if not os.path.exists(self.mbtile_file):
83
83
  ensure_directory(self.mbtile_file, self.directory_permissions)
84
84
  self._initialize_mbtile()
@@ -769,6 +769,26 @@
769
769
  }
770
770
  }
771
771
  }
772
+ },
773
+ "metadata": {
774
+ "type": "array",
775
+ "minItems": 1,
776
+ "items": {
777
+ "type": "object",
778
+ "additionalProperties": false,
779
+ "properties": {
780
+ "url": {
781
+ "type": "string"
782
+ },
783
+ "type": {
784
+ "type": "string"
785
+ },
786
+ "format": {
787
+ "type": "string"
788
+ }
789
+ },
790
+ "required": ["url", "type", "format"]
791
+ }
772
792
  }
773
793
  }
774
794
  },
@@ -802,9 +802,24 @@ class WMSSourceConfiguration(SourceConfiguration):
802
802
  lock_dir = self.context.globals.get_path('cache.lock_dir', self.conf)
803
803
  lock_timeout = self.context.globals.get_value('http.client_timeout', self.conf)
804
804
  url = urlparse(self.conf['req']['url'])
805
+
806
+ global_directory_permissions = self.context.globals.get_value('directory_permissions', self.conf,
807
+ global_key='cache.directory_permissions')
808
+ if global_directory_permissions:
809
+ log.info(f'Using global directory permission configuration for concurrent file locks:'
810
+ f' {global_directory_permissions}')
811
+
812
+ global_file_permissions = self.context.globals.get_value('file_permissions', self.conf,
813
+ global_key='cache.file_permissions')
814
+ if global_file_permissions:
815
+ log.info(f'Using global file permission configuration for concurrent file locks:'
816
+ f' {global_file_permissions}')
817
+
805
818
  md5 = hashlib.new('md5', url.netloc.encode('ascii'), usedforsecurity=False)
806
819
  lock_file = os.path.join(lock_dir, md5.hexdigest() + '.lck')
807
- lock = lambda: SemLock(lock_file, concurrent_requests, timeout=lock_timeout) # noqa
820
+ lock = lambda: SemLock(lock_file, concurrent_requests, timeout=lock_timeout, # noqa
821
+ directory_permissions=global_directory_permissions,
822
+ file_permissions=global_file_permissions)
808
823
 
809
824
  coverage = self.coverage()
810
825
  res_range = resolution_range(self.conf)
@@ -963,9 +978,24 @@ class MapnikSourceConfiguration(SourceConfiguration):
963
978
  from mapproxy.util.lock import SemLock
964
979
  lock_dir = self.context.globals.get_path('cache.lock_dir', self.conf)
965
980
  mapfile = self.conf['mapfile']
981
+
982
+ global_directory_permissions = self.context.globals.get_value('directory_permissions', self.conf,
983
+ global_key='cache.directory_permissions')
984
+ if global_directory_permissions:
985
+ log.info(f'Using global directory permission configuration for concurrent file locks:'
986
+ f' {global_directory_permissions}')
987
+
988
+ global_file_permissions = self.context.globals.get_value('file_permissions', self.conf,
989
+ global_key='cache.file_permissions')
990
+ if global_file_permissions:
991
+ log.info(f'Using global file permission configuration for concurrent file locks:'
992
+ f' {global_file_permissions}')
993
+
966
994
  md5 = hashlib.new('md5', mapfile.encode('utf-8'), usedforsecurity=False)
967
995
  lock_file = os.path.join(lock_dir, md5.hexdigest() + '.lck')
968
- lock = lambda: SemLock(lock_file, concurrent_requests) # noqa
996
+ lock = lambda: SemLock(lock_file, concurrent_requests, # noqa
997
+ directory_permissions=global_directory_permissions,
998
+ file_permissions=global_file_permissions)
969
999
 
970
1000
  coverage = self.coverage()
971
1001
  res_range = resolution_range(self.conf)
@@ -1761,9 +1791,16 @@ class CacheConfiguration(ConfigurationBase):
1761
1791
  log.info(f'Using global directory permission configuration for tile locks:'
1762
1792
  f' {global_directory_permissions}')
1763
1793
 
1794
+ global_file_permissions = self.context.globals.get_value('file_permissions', self.conf,
1795
+ global_key='cache.file_permissions')
1796
+ if global_file_permissions:
1797
+ log.info(f'Using global file permission configuration for tile locks:'
1798
+ f' {global_file_permissions}')
1799
+
1764
1800
  lock_timeout = self.context.globals.get_value('http.client_timeout', {})
1765
1801
  locker = TileLocker(lock_dir, lock_timeout, identifier + '_renderd',
1766
- global_directory_permissions)
1802
+ directory_permissions=global_directory_permissions,
1803
+ file_permissions=global_file_permissions)
1767
1804
  # TODO band_merger
1768
1805
  tile_creator_class = partial(RenderdTileCreator, renderd_address,
1769
1806
  priority=priority, tile_locker=locker)
@@ -1781,11 +1818,18 @@ class CacheConfiguration(ConfigurationBase):
1781
1818
  log.info(f'Using global directory permission configuration for tile locks:'
1782
1819
  f' {global_directory_permissions}')
1783
1820
 
1821
+ global_file_permissions = self.context.globals.get_value('file_permissions', self.conf,
1822
+ global_key='cache.file_permissions')
1823
+ if global_file_permissions:
1824
+ log.info(f'Using global file permission configuration for tile locks:'
1825
+ f' {global_file_permissions}')
1826
+
1784
1827
  locker = TileLocker(
1785
1828
  lock_dir=self.lock_dir(),
1786
1829
  lock_timeout=self.context.globals.get_value('http.client_timeout', {}),
1787
1830
  lock_cache_id=cache.lock_cache_id,
1788
- directory_permissions=global_directory_permissions
1831
+ directory_permissions=global_directory_permissions,
1832
+ file_permissions=global_file_permissions
1789
1833
  )
1790
1834
 
1791
1835
  mgr = TileManager(tile_grid, cache, sources, image_opts.format.ext,
@@ -172,7 +172,7 @@ def _validate_tagged_layer_source(
172
172
  name: str, supported_layers: Union[str, List[str]], requested_layers: List[str]) -> List[str]:
173
173
  errors = []
174
174
  if isinstance(supported_layers, str):
175
- supported_layers = [supported_layers]
175
+ supported_layers = supported_layers.split(',')
176
176
  if not set(requested_layers).issubset(set(supported_layers)):
177
177
  return [
178
178
  f"Supported layers for source '{name}' are '{', '.join(supported_layers)}' but tagged source requested"
@@ -163,6 +163,8 @@ class SeedingConfiguration(object):
163
163
  raise SeedConfigurationError("invalid geometry in coverage '%s'. %s" % (name, ex))
164
164
  except EmptyGeometryError as ex:
165
165
  raise EmptyCoverageError("coverage '%s' contains no geometries. %s" % (name, ex))
166
+ except Exception:
167
+ raise Exception(f"can't load coverage '{name}'")
166
168
 
167
169
  # without extend we have an empty coverage
168
170
  if not coverage.extent.llbbox:
@@ -262,7 +264,7 @@ class ConfigurationBase(object):
262
264
  else:
263
265
  # check that all caches have the same grids configured
264
266
  last = []
265
- for cache_grids in {cache.keys() for cache in caches.values()}:
267
+ for cache_grids in [cache.keys() for cache in caches.values()]:
266
268
  if not last:
267
269
  last = cache_grids
268
270
  else:
@@ -32,8 +32,7 @@ from mapproxy.util.fs import (
32
32
  )
33
33
  from mapproxy.util.py import reraise_exception
34
34
  from mapproxy.util.times import timestamp_before
35
- from mapproxy.test.helper import Mocker
36
-
35
+ from mapproxy.test.helper import Mocker, assert_permissions
37
36
 
38
37
  is_win = sys.platform == "win32"
39
38
 
@@ -156,6 +155,35 @@ class TestFileLock(Mocker):
156
155
  x.unlock()
157
156
  assert not os.path.exists(self.lock_file)
158
157
 
158
+ def test_file_lock_permissions(self):
159
+ file_permissions = '775'
160
+
161
+ # Test a lock that becomes free during a waiting lock() call.
162
+ class Lock(threading.Thread):
163
+
164
+ def __init__(self, lock_file):
165
+ threading.Thread.__init__(self)
166
+ self.lock_file = lock_file
167
+ self.lock = FileLock(self.lock_file, file_permissions=file_permissions)
168
+
169
+ def run(self):
170
+ self.lock.lock()
171
+ time.sleep(0.2)
172
+ self.lock.unlock()
173
+
174
+ lock_thread = Lock(self.lock_file)
175
+ lock_thread.start()
176
+
177
+ # wait until thread got the locked
178
+ while not lock_thread.lock._locked:
179
+ time.sleep(0.001)
180
+
181
+ # one lock that times out
182
+ assert_locked(self.lock_file)
183
+ assert_permissions(self.lock_file, file_permissions)
184
+
185
+ lock_thread.join()
186
+
159
187
  def _create_lock(self):
160
188
  lock = FileLock(self.lock_file)
161
189
  lock.lock()
@@ -115,10 +115,13 @@ class LockFile:
115
115
 
116
116
  _fp = None
117
117
 
118
- def __init__(self, path):
118
+ def __init__(self, path, file_permissions):
119
119
  self._path = path
120
120
  try:
121
121
  fp = open(path, 'w+')
122
+ if file_permissions:
123
+ permission = int(file_permissions, base=8)
124
+ os.chmod(path, permission)
122
125
  except IOError:
123
126
  raise Exception('Could not create Lock-file, wrong permissions on lock directory?')
124
127
 
@@ -36,13 +36,15 @@ class LockTimeout(Exception):
36
36
 
37
37
 
38
38
  class FileLock(object):
39
- def __init__(self, lock_file, timeout=60.0, step=0.01, remove_on_unlock=False, directory_permissions=None):
39
+ def __init__(self, lock_file, timeout=60.0, step=0.01, remove_on_unlock=False, directory_permissions=None,
40
+ file_permissions=None):
40
41
  self.lock_file = lock_file
41
42
  self.timeout = timeout
42
43
  self.step = step
43
44
  self.remove_on_unlock = remove_on_unlock
44
45
  self._locked = False
45
46
  self.directory_permissions = directory_permissions
47
+ self.file_permissions = file_permissions
46
48
 
47
49
  def __enter__(self):
48
50
  self.lock()
@@ -51,7 +53,7 @@ class FileLock(object):
51
53
  self.unlock()
52
54
 
53
55
  def _try_lock(self):
54
- return LockFile(self.lock_file)
56
+ return LockFile(self.lock_file, self.file_permissions)
55
57
 
56
58
  def lock(self):
57
59
  ensure_directory(self.lock_file, self.directory_permissions)
@@ -116,11 +118,10 @@ def cleanup_lockdir(lockdir, suffix='.lck', max_lock_time=300, force=True):
116
118
  try:
117
119
  if os.path.isfile(name) and name.endswith(suffix):
118
120
  if os.path.getmtime(name) < expire_time:
119
- if os.stat(name).st_uid == os.getuid():
120
- try:
121
- os.unlink(name)
122
- except IOError as ex:
123
- log.warning('could not remove old lock file %s: %s', name, ex)
121
+ try:
122
+ os.unlink(name)
123
+ except IOError as ex:
124
+ log.warning('could not remove old lock file %s: %s', name, ex)
124
125
  except OSError as e:
125
126
  # some one might have removed the file (ENOENT)
126
127
  # or we don't have permissions to remove it (EACCES)
@@ -136,8 +137,9 @@ class SemLock(FileLock):
136
137
  File-lock-based counting semaphore (i.e. this lock can be locked n-times).
137
138
  """
138
139
 
139
- def __init__(self, lock_file, n, timeout=60.0, step=0.01):
140
- FileLock.__init__(self, lock_file, timeout=timeout, step=step)
140
+ def __init__(self, lock_file, n, timeout=60.0, step=0.01, directory_permissions=None, file_permissions=None):
141
+ FileLock.__init__(self, lock_file, timeout=timeout, step=step, directory_permissions=directory_permissions,
142
+ file_permissions=file_permissions)
141
143
  self.n = n
142
144
 
143
145
  def _try_lock(self):
@@ -146,7 +148,7 @@ class SemLock(FileLock):
146
148
  while True:
147
149
  tries += 1
148
150
  try:
149
- return LockFile(self.lock_file + str(i))
151
+ return LockFile(self.lock_file + str(i), self.file_permissions)
150
152
  except LockError:
151
153
  if tries >= self.n:
152
154
  raise
@@ -20,7 +20,8 @@ chardet==5.2.0
20
20
  cryptography==43.0.1
21
21
  decorator==5.1.1
22
22
  docker==7.0.0
23
- docutils==0.20.1
23
+ docutils==0.20.1;python_version<"3.9"
24
+ docutils==0.21.2;python_version>="3.9"
24
25
  ecdsa==0.18.0
25
26
  flake8==7.0.0
26
27
  idna==2.9
@@ -37,10 +38,11 @@ lxml==5.3.0
37
38
  mock==5.1.0
38
39
  more-itertools==10.1.0
39
40
  moto==5.0.13
40
- networkx==3.1
41
+ networkx==3.1;python_version<"3.10"
42
+ networkx==3.4.2;python_version>="3.10"
41
43
  numpy==1.26.0;python_version>="3.9"
42
44
  numpy==1.24.0;python_version=="3.8"
43
- packaging==23.2
45
+ packaging==24.2
44
46
  pluggy==1.5.0
45
47
  py==1.11.0
46
48
  pyasn1==0.5.1
@@ -55,8 +57,8 @@ python-dateutil==2.8.2
55
57
  python-jose==3.3.0
56
58
  pytz==2023.3.post1
57
59
  redis==5.0.1
58
- requests==2.32.2
59
- responses==0.24.1
60
+ requests==2.32.3
61
+ responses==0.25.3
60
62
  riak==2.7.0
61
63
  rsa==4.9
62
64
  s3transfer==0.10.2
@@ -65,7 +67,8 @@ soupsieve==2.6
65
67
  sshpubkeys==3.3.1
66
68
  toml==0.10.2
67
69
  urllib3==1.26.19
68
- waitress==2.1.2
70
+ waitress==2.1.2;python_version<"3.10"
71
+ waitress==3.0.1;python_version>="3.10"
69
72
  websocket-client==1.8.0
70
73
  wrapt==1.16.0
71
74
  xmltodict==0.13.0