kinto 18.1.1__tar.gz → 19.2.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.

Potentially problematic release.


This version of kinto might be problematic. Click here for more details.

Files changed (390) hide show
  1. {kinto-18.1.1/kinto.egg-info → kinto-19.2.0}/PKG-INFO +3 -2
  2. {kinto-18.1.1 → kinto-19.2.0}/README.rst +1 -1
  3. {kinto-18.1.1 → kinto-19.2.0}/constraints.in +1 -0
  4. {kinto-18.1.1 → kinto-19.2.0}/constraints.txt +19 -27
  5. {kinto-18.1.1 → kinto-19.2.0}/docs/configuration/production.rst +2 -7
  6. {kinto-18.1.1 → kinto-19.2.0}/docs/configuration/settings.rst +126 -84
  7. {kinto-18.1.1 → kinto-19.2.0}/docs/requirements.txt +5 -5
  8. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/__init__.py +1 -1
  9. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/initialization.py +82 -53
  10. kinto-19.2.0/kinto/core/metrics.py +57 -0
  11. kinto-19.2.0/kinto/core/statsd.py +1 -0
  12. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/testing.py +5 -1
  13. {kinto-18.1.1 → kinto-19.2.0}/kinto/plugins/history/__init__.py +5 -6
  14. kinto-19.2.0/kinto/plugins/prometheus.py +150 -0
  15. {kinto-18.1.1 → kinto-19.2.0}/kinto/plugins/quotas/__init__.py +5 -6
  16. {kinto-18.1.1/kinto/core → kinto-19.2.0/kinto/plugins}/statsd.py +16 -21
  17. {kinto-18.1.1 → kinto-19.2.0/kinto.egg-info}/PKG-INFO +3 -2
  18. {kinto-18.1.1 → kinto-19.2.0}/kinto.egg-info/SOURCES.txt +6 -1
  19. {kinto-18.1.1 → kinto-19.2.0}/kinto.egg-info/requires.txt +1 -0
  20. {kinto-18.1.1 → kinto-19.2.0}/pyproject.toml +1 -0
  21. {kinto-18.1.1 → kinto-19.2.0}/tests/core/resource/test_events.py +23 -5
  22. {kinto-18.1.1 → kinto-19.2.0}/tests/core/test_initialization.py +113 -48
  23. kinto-19.2.0/tests/core/test_metrics.py +49 -0
  24. {kinto-18.1.1 → kinto-19.2.0}/tests/functional.ini +1 -0
  25. {kinto-18.1.1 → kinto-19.2.0}/tests/plugins/test_history.py +18 -16
  26. kinto-19.2.0/tests/plugins/test_prometheus.py +120 -0
  27. {kinto-18.1.1 → kinto-19.2.0}/tests/plugins/test_quotas.py +18 -15
  28. kinto-19.2.0/tests/plugins/test_statsd.py +61 -0
  29. kinto-18.1.1/tests/core/test_statsd.py +0 -120
  30. {kinto-18.1.1 → kinto-19.2.0}/.dockerignore +0 -0
  31. {kinto-18.1.1 → kinto-19.2.0}/.github/CODE_OF_CONDUCT.md +0 -0
  32. {kinto-18.1.1 → kinto-19.2.0}/.github/CONTRIBUTING.md +0 -0
  33. {kinto-18.1.1 → kinto-19.2.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  34. {kinto-18.1.1 → kinto-19.2.0}/.github/dependabot.yml +0 -0
  35. {kinto-18.1.1 → kinto-19.2.0}/.github/release.yml +0 -0
  36. {kinto-18.1.1 → kinto-19.2.0}/.github/workflows/labels.yaml +0 -0
  37. {kinto-18.1.1 → kinto-19.2.0}/.github/workflows/publish.yml +0 -0
  38. {kinto-18.1.1 → kinto-19.2.0}/.github/workflows/test.yml +0 -0
  39. {kinto-18.1.1 → kinto-19.2.0}/.gitignore +0 -0
  40. {kinto-18.1.1 → kinto-19.2.0}/CHANGELOG.rst +0 -0
  41. {kinto-18.1.1 → kinto-19.2.0}/CONTRIBUTORS.rst +0 -0
  42. {kinto-18.1.1 → kinto-19.2.0}/Dockerfile +0 -0
  43. {kinto-18.1.1 → kinto-19.2.0}/LICENSE +0 -0
  44. {kinto-18.1.1 → kinto-19.2.0}/Makefile +0 -0
  45. {kinto-18.1.1 → kinto-19.2.0}/SECURITY.md +0 -0
  46. {kinto-18.1.1 → kinto-19.2.0}/SUPPORT.md +0 -0
  47. {kinto-18.1.1 → kinto-19.2.0}/app.wsgi +0 -0
  48. {kinto-18.1.1 → kinto-19.2.0}/contribute.json +0 -0
  49. {kinto-18.1.1 → kinto-19.2.0}/docker-compose.yml +0 -0
  50. {kinto-18.1.1 → kinto-19.2.0}/docs/_static/piwik.js +0 -0
  51. {kinto-18.1.1 → kinto-19.2.0}/docs/_static/theme_overrides.css +0 -0
  52. {kinto-18.1.1 → kinto-19.2.0}/docs/_templates/footer.html +0 -0
  53. {kinto-18.1.1 → kinto-19.2.0}/docs/_templates/indexcontent.html +0 -0
  54. {kinto-18.1.1 → kinto-19.2.0}/docs/_templates/layout.html +0 -0
  55. {kinto-18.1.1 → kinto-19.2.0}/docs/api/1.x/_details-delete-list.rst +0 -0
  56. {kinto-18.1.1 → kinto-19.2.0}/docs/api/1.x/_details-delete-object.rst +0 -0
  57. {kinto-18.1.1 → kinto-19.2.0}/docs/api/1.x/_details-get-list.rst +0 -0
  58. {kinto-18.1.1 → kinto-19.2.0}/docs/api/1.x/_details-get-object.rst +0 -0
  59. {kinto-18.1.1 → kinto-19.2.0}/docs/api/1.x/_details-head-list.rst +0 -0
  60. {kinto-18.1.1 → kinto-19.2.0}/docs/api/1.x/_details-patch-object.rst +0 -0
  61. {kinto-18.1.1 → kinto-19.2.0}/docs/api/1.x/_details-post-list.rst +0 -0
  62. {kinto-18.1.1 → kinto-19.2.0}/docs/api/1.x/_details-put-object.rst +0 -0
  63. {kinto-18.1.1 → kinto-19.2.0}/docs/api/1.x/_status-delete-list.rst +0 -0
  64. {kinto-18.1.1 → kinto-19.2.0}/docs/api/1.x/_status-delete-object.rst +0 -0
  65. {kinto-18.1.1 → kinto-19.2.0}/docs/api/1.x/_status-get-list.rst +0 -0
  66. {kinto-18.1.1 → kinto-19.2.0}/docs/api/1.x/_status-get-object.rst +0 -0
  67. {kinto-18.1.1 → kinto-19.2.0}/docs/api/1.x/_status-patch-object.rst +0 -0
  68. {kinto-18.1.1 → kinto-19.2.0}/docs/api/1.x/_status-post-list.rst +0 -0
  69. {kinto-18.1.1 → kinto-19.2.0}/docs/api/1.x/_status-put-object.rst +0 -0
  70. {kinto-18.1.1 → kinto-19.2.0}/docs/api/1.x/accounts.rst +0 -0
  71. {kinto-18.1.1 → kinto-19.2.0}/docs/api/1.x/admin.rst +0 -0
  72. {kinto-18.1.1 → kinto-19.2.0}/docs/api/1.x/authentication.rst +0 -0
  73. {kinto-18.1.1 → kinto-19.2.0}/docs/api/1.x/backoff.rst +0 -0
  74. {kinto-18.1.1 → kinto-19.2.0}/docs/api/1.x/batch.rst +0 -0
  75. {kinto-18.1.1 → kinto-19.2.0}/docs/api/1.x/buckets.rst +0 -0
  76. {kinto-18.1.1 → kinto-19.2.0}/docs/api/1.x/collections.rst +0 -0
  77. {kinto-18.1.1 → kinto-19.2.0}/docs/api/1.x/deprecation.rst +0 -0
  78. {kinto-18.1.1 → kinto-19.2.0}/docs/api/1.x/errors.rst +0 -0
  79. {kinto-18.1.1 → kinto-19.2.0}/docs/api/1.x/filtering.rst +0 -0
  80. {kinto-18.1.1 → kinto-19.2.0}/docs/api/1.x/flush.rst +0 -0
  81. {kinto-18.1.1 → kinto-19.2.0}/docs/api/1.x/groups.rst +0 -0
  82. {kinto-18.1.1 → kinto-19.2.0}/docs/api/1.x/history.rst +0 -0
  83. {kinto-18.1.1 → kinto-19.2.0}/docs/api/1.x/index.rst +0 -0
  84. {kinto-18.1.1 → kinto-19.2.0}/docs/api/1.x/openapi.rst +0 -0
  85. {kinto-18.1.1 → kinto-19.2.0}/docs/api/1.x/openid.rst +0 -0
  86. {kinto-18.1.1 → kinto-19.2.0}/docs/api/1.x/pagination.rst +0 -0
  87. {kinto-18.1.1 → kinto-19.2.0}/docs/api/1.x/permissions.rst +0 -0
  88. {kinto-18.1.1 → kinto-19.2.0}/docs/api/1.x/quotas.rst +0 -0
  89. {kinto-18.1.1 → kinto-19.2.0}/docs/api/1.x/records.rst +0 -0
  90. {kinto-18.1.1 → kinto-19.2.0}/docs/api/1.x/selecting_fields.rst +0 -0
  91. {kinto-18.1.1 → kinto-19.2.0}/docs/api/1.x/sorting.rst +0 -0
  92. {kinto-18.1.1 → kinto-19.2.0}/docs/api/1.x/timestamps.rst +0 -0
  93. {kinto-18.1.1 → kinto-19.2.0}/docs/api/1.x/utilities.rst +0 -0
  94. {kinto-18.1.1 → kinto-19.2.0}/docs/api/index.rst +0 -0
  95. {kinto-18.1.1 → kinto-19.2.0}/docs/api/versioning.rst +0 -0
  96. {kinto-18.1.1 → kinto-19.2.0}/docs/changelog.rst +0 -0
  97. {kinto-18.1.1 → kinto-19.2.0}/docs/commandline.rst +0 -0
  98. {kinto-18.1.1 → kinto-19.2.0}/docs/community.rst +0 -0
  99. {kinto-18.1.1 → kinto-19.2.0}/docs/concepts.rst +0 -0
  100. {kinto-18.1.1 → kinto-19.2.0}/docs/conf.py +0 -0
  101. {kinto-18.1.1 → kinto-19.2.0}/docs/configuration/good-practices.rst +0 -0
  102. {kinto-18.1.1 → kinto-19.2.0}/docs/configuration/index.rst +0 -0
  103. {kinto-18.1.1 → kinto-19.2.0}/docs/core/_static/theme_overrides.css +0 -0
  104. {kinto-18.1.1 → kinto-19.2.0}/docs/core/api.rst +0 -0
  105. {kinto-18.1.1 → kinto-19.2.0}/docs/core/cache.rst +0 -0
  106. {kinto-18.1.1 → kinto-19.2.0}/docs/core/decorators.rst +0 -0
  107. {kinto-18.1.1 → kinto-19.2.0}/docs/core/errors.rst +0 -0
  108. {kinto-18.1.1 → kinto-19.2.0}/docs/core/glossary.rst +0 -0
  109. {kinto-18.1.1 → kinto-19.2.0}/docs/core/images/cliquet-base.png +0 -0
  110. {kinto-18.1.1 → kinto-19.2.0}/docs/core/images/cliquet-mozilla.png +0 -0
  111. {kinto-18.1.1 → kinto-19.2.0}/docs/core/index.rst +0 -0
  112. {kinto-18.1.1 → kinto-19.2.0}/docs/core/notifications.rst +0 -0
  113. {kinto-18.1.1 → kinto-19.2.0}/docs/core/permission.rst +0 -0
  114. {kinto-18.1.1 → kinto-19.2.0}/docs/core/quickstart.rst +0 -0
  115. {kinto-18.1.1 → kinto-19.2.0}/docs/core/rationale.rst +0 -0
  116. {kinto-18.1.1 → kinto-19.2.0}/docs/core/resource.rst +0 -0
  117. {kinto-18.1.1 → kinto-19.2.0}/docs/core/storage.rst +0 -0
  118. {kinto-18.1.1 → kinto-19.2.0}/docs/core/testing.rst +0 -0
  119. {kinto-18.1.1 → kinto-19.2.0}/docs/core/utils.rst +0 -0
  120. {kinto-18.1.1 → kinto-19.2.0}/docs/core/viewsets.rst +0 -0
  121. {kinto-18.1.1 → kinto-19.2.0}/docs/faq.rst +0 -0
  122. {kinto-18.1.1 → kinto-19.2.0}/docs/images/alwaysdata-button.svg +0 -0
  123. {kinto-18.1.1 → kinto-19.2.0}/docs/images/architecture.svg +0 -0
  124. {kinto-18.1.1 → kinto-19.2.0}/docs/images/color-formatter.png +0 -0
  125. {kinto-18.1.1 → kinto-19.2.0}/docs/images/concepts-general.png +0 -0
  126. {kinto-18.1.1 → kinto-19.2.0}/docs/images/concepts-permissions.png +0 -0
  127. {kinto-18.1.1 → kinto-19.2.0}/docs/images/heroku-button.png +0 -0
  128. {kinto-18.1.1 → kinto-19.2.0}/docs/images/kinto-logo.png +0 -0
  129. {kinto-18.1.1 → kinto-19.2.0}/docs/images/kinto-logo.svg +0 -0
  130. {kinto-18.1.1 → kinto-19.2.0}/docs/images/logo-admin.svg +0 -0
  131. {kinto-18.1.1 → kinto-19.2.0}/docs/images/logo-attachment.svg +0 -0
  132. {kinto-18.1.1 → kinto-19.2.0}/docs/images/logo-community.svg +0 -0
  133. {kinto-18.1.1 → kinto-19.2.0}/docs/images/logo-demos.svg +0 -0
  134. {kinto-18.1.1 → kinto-19.2.0}/docs/images/logo-history.svg +0 -0
  135. {kinto-18.1.1 → kinto-19.2.0}/docs/images/logo-indexing.svg +0 -0
  136. {kinto-18.1.1 → kinto-19.2.0}/docs/images/logo-javascript.svg +0 -0
  137. {kinto-18.1.1 → kinto-19.2.0}/docs/images/logo-jsonschema.svg +0 -0
  138. {kinto-18.1.1 → kinto-19.2.0}/docs/images/logo-livesync.svg +0 -0
  139. {kinto-18.1.1 → kinto-19.2.0}/docs/images/logo-multiapps.svg +0 -0
  140. {kinto-18.1.1 → kinto-19.2.0}/docs/images/logo-offline.svg +0 -0
  141. {kinto-18.1.1 → kinto-19.2.0}/docs/images/logo-permissions.svg +0 -0
  142. {kinto-18.1.1 → kinto-19.2.0}/docs/images/logo-python.svg +0 -0
  143. {kinto-18.1.1 → kinto-19.2.0}/docs/images/logo-quotas.svg +0 -0
  144. {kinto-18.1.1 → kinto-19.2.0}/docs/images/logo-selfhostable.svg +0 -0
  145. {kinto-18.1.1 → kinto-19.2.0}/docs/images/logo-signature.svg +0 -0
  146. {kinto-18.1.1 → kinto-19.2.0}/docs/images/logo-synchronisation.svg +0 -0
  147. {kinto-18.1.1 → kinto-19.2.0}/docs/images/overview-deployonce-selfhost.png +0 -0
  148. {kinto-18.1.1 → kinto-19.2.0}/docs/images/overview-features.png +0 -0
  149. {kinto-18.1.1 → kinto-19.2.0}/docs/images/overview-synchronisation.png +0 -0
  150. {kinto-18.1.1 → kinto-19.2.0}/docs/images/overview-use-cases.png +0 -0
  151. {kinto-18.1.1 → kinto-19.2.0}/docs/images/scalingo-button.svg +0 -0
  152. {kinto-18.1.1 → kinto-19.2.0}/docs/images/screenshot-kinto-admin-1.png +0 -0
  153. {kinto-18.1.1 → kinto-19.2.0}/docs/images/screenshot-kinto-admin-2.png +0 -0
  154. {kinto-18.1.1 → kinto-19.2.0}/docs/images/screenshot-kinto-admin-3.png +0 -0
  155. {kinto-18.1.1 → kinto-19.2.0}/docs/images/screenshot-kinto-admin-4.png +0 -0
  156. {kinto-18.1.1 → kinto-19.2.0}/docs/images/sequence-storage.png +0 -0
  157. {kinto-18.1.1 → kinto-19.2.0}/docs/images/sync-both.svg +0 -0
  158. {kinto-18.1.1 → kinto-19.2.0}/docs/images/sync-newest.svg +0 -0
  159. {kinto-18.1.1 → kinto-19.2.0}/docs/images/sync-oldest.svg +0 -0
  160. {kinto-18.1.1 → kinto-19.2.0}/docs/index.rst +0 -0
  161. {kinto-18.1.1 → kinto-19.2.0}/docs/kinto-admin.rst +0 -0
  162. {kinto-18.1.1 → kinto-19.2.0}/docs/overview.rst +0 -0
  163. {kinto-18.1.1 → kinto-19.2.0}/docs/troubleshooting.rst +0 -0
  164. {kinto-18.1.1 → kinto-19.2.0}/docs/tutorials/app-examples.rst +0 -0
  165. {kinto-18.1.1 → kinto-19.2.0}/docs/tutorials/authentication-github.rst +0 -0
  166. {kinto-18.1.1 → kinto-19.2.0}/docs/tutorials/client-side-encryption.rst +0 -0
  167. {kinto-18.1.1 → kinto-19.2.0}/docs/tutorials/custom-id-generator.rst +0 -0
  168. {kinto-18.1.1 → kinto-19.2.0}/docs/tutorials/first-steps.rst +0 -0
  169. {kinto-18.1.1 → kinto-19.2.0}/docs/tutorials/index.rst +0 -0
  170. {kinto-18.1.1 → kinto-19.2.0}/docs/tutorials/install.rst +0 -0
  171. {kinto-18.1.1 → kinto-19.2.0}/docs/tutorials/notifications-custom.rst +0 -0
  172. {kinto-18.1.1 → kinto-19.2.0}/docs/tutorials/notifications-websockets.rst +0 -0
  173. {kinto-18.1.1 → kinto-19.2.0}/docs/tutorials/permission-setups.rst +0 -0
  174. {kinto-18.1.1 → kinto-19.2.0}/docs/tutorials/permissions.rst +0 -0
  175. {kinto-18.1.1 → kinto-19.2.0}/docs/tutorials/synchronisation.rst +0 -0
  176. {kinto-18.1.1 → kinto-19.2.0}/docs/tutorials/write-plugin.rst +0 -0
  177. {kinto-18.1.1 → kinto-19.2.0}/kinto/__init__.py +0 -0
  178. {kinto-18.1.1 → kinto-19.2.0}/kinto/__main__.py +0 -0
  179. {kinto-18.1.1 → kinto-19.2.0}/kinto/authorization.py +0 -0
  180. {kinto-18.1.1 → kinto-19.2.0}/kinto/config/__init__.py +0 -0
  181. {kinto-18.1.1 → kinto-19.2.0}/kinto/config/kinto.tpl +0 -0
  182. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/authentication.py +0 -0
  183. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/authorization.py +0 -0
  184. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/cache/__init__.py +0 -0
  185. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/cache/memcached.py +0 -0
  186. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/cache/memory.py +0 -0
  187. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/cache/postgresql/__init__.py +0 -0
  188. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/cache/postgresql/schema.sql +0 -0
  189. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/cache/testing.py +0 -0
  190. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/decorators.py +0 -0
  191. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/errors.py +0 -0
  192. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/events.py +0 -0
  193. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/listeners/__init__.py +0 -0
  194. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/openapi.py +0 -0
  195. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/permission/__init__.py +0 -0
  196. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/permission/memory.py +0 -0
  197. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/permission/postgresql/__init__.py +0 -0
  198. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/permission/postgresql/migrations/migration_001_002.sql +0 -0
  199. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/permission/postgresql/schema.sql +0 -0
  200. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/permission/testing.py +0 -0
  201. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/resource/__init__.py +0 -0
  202. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/resource/model.py +0 -0
  203. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/resource/schema.py +0 -0
  204. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/resource/viewset.py +0 -0
  205. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/schema.py +0 -0
  206. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/scripts.py +0 -0
  207. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/storage/__init__.py +0 -0
  208. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/storage/exceptions.py +0 -0
  209. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/storage/generators.py +0 -0
  210. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/storage/memory.py +0 -0
  211. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/storage/postgresql/__init__.py +0 -0
  212. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/storage/postgresql/client.py +0 -0
  213. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/storage/postgresql/migrations/migration_001_002.sql +0 -0
  214. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/storage/postgresql/migrations/migration_002_003.sql +0 -0
  215. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/storage/postgresql/migrations/migration_003_004.sql +0 -0
  216. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/storage/postgresql/migrations/migration_004_005.sql +0 -0
  217. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/storage/postgresql/migrations/migration_005_006.sql +0 -0
  218. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/storage/postgresql/migrations/migration_006_007.sql +0 -0
  219. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/storage/postgresql/migrations/migration_007_008.sql +0 -0
  220. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/storage/postgresql/migrations/migration_008_009.sql +0 -0
  221. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/storage/postgresql/migrations/migration_009_010.sql +0 -0
  222. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/storage/postgresql/migrations/migration_010_011.sql +0 -0
  223. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/storage/postgresql/migrations/migration_011_012.sql +0 -0
  224. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/storage/postgresql/migrations/migration_012_013.sql +0 -0
  225. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/storage/postgresql/migrations/migration_013_014.sql +0 -0
  226. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/storage/postgresql/migrations/migration_014_015.sql +0 -0
  227. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/storage/postgresql/migrations/migration_015_016.sql +0 -0
  228. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/storage/postgresql/migrations/migration_016_017.sql +0 -0
  229. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/storage/postgresql/migrations/migration_017_018.sql +0 -0
  230. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/storage/postgresql/migrations/migration_018_019.sql +0 -0
  231. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/storage/postgresql/migrations/migration_019_020.sql +0 -0
  232. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/storage/postgresql/migrations/migration_020_021.sql +0 -0
  233. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/storage/postgresql/migrations/migration_021_022.sql +0 -0
  234. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/storage/postgresql/migrator.py +0 -0
  235. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/storage/postgresql/pool.py +0 -0
  236. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/storage/postgresql/schema.sql +0 -0
  237. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/storage/testing.py +0 -0
  238. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/storage/utils.py +0 -0
  239. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/utils.py +0 -0
  240. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/views/__init__.py +0 -0
  241. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/views/batch.py +0 -0
  242. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/views/errors.py +0 -0
  243. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/views/heartbeat.py +0 -0
  244. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/views/hello.py +0 -0
  245. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/views/openapi.py +0 -0
  246. {kinto-18.1.1 → kinto-19.2.0}/kinto/core/views/version.py +0 -0
  247. {kinto-18.1.1 → kinto-19.2.0}/kinto/events.py +0 -0
  248. {kinto-18.1.1 → kinto-19.2.0}/kinto/plugins/__init__.py +0 -0
  249. {kinto-18.1.1 → kinto-19.2.0}/kinto/plugins/accounts/__init__.py +0 -0
  250. {kinto-18.1.1 → kinto-19.2.0}/kinto/plugins/accounts/authentication.py +0 -0
  251. {kinto-18.1.1 → kinto-19.2.0}/kinto/plugins/accounts/mails.py +0 -0
  252. {kinto-18.1.1 → kinto-19.2.0}/kinto/plugins/accounts/scripts.py +0 -0
  253. {kinto-18.1.1 → kinto-19.2.0}/kinto/plugins/accounts/utils.py +0 -0
  254. {kinto-18.1.1 → kinto-19.2.0}/kinto/plugins/accounts/views/__init__.py +0 -0
  255. {kinto-18.1.1 → kinto-19.2.0}/kinto/plugins/accounts/views/validation.py +0 -0
  256. {kinto-18.1.1 → kinto-19.2.0}/kinto/plugins/admin/README.md +0 -0
  257. {kinto-18.1.1 → kinto-19.2.0}/kinto/plugins/admin/VERSION +0 -0
  258. {kinto-18.1.1 → kinto-19.2.0}/kinto/plugins/admin/__init__.py +0 -0
  259. {kinto-18.1.1 → kinto-19.2.0}/kinto/plugins/admin/build/VERSION +0 -0
  260. {kinto-18.1.1 → kinto-19.2.0}/kinto/plugins/admin/build/assets/asn1-8gHclKtu.js +0 -0
  261. {kinto-18.1.1 → kinto-19.2.0}/kinto/plugins/admin/build/assets/clojure-plf_rynZ.js +0 -0
  262. {kinto-18.1.1 → kinto-19.2.0}/kinto/plugins/admin/build/assets/css-tpsEXL3H.js +0 -0
  263. {kinto-18.1.1 → kinto-19.2.0}/kinto/plugins/admin/build/assets/index-iVTdxamX.js +0 -0
  264. {kinto-18.1.1 → kinto-19.2.0}/kinto/plugins/admin/build/assets/index-vylaZGUr.css +0 -0
  265. {kinto-18.1.1 → kinto-19.2.0}/kinto/plugins/admin/build/assets/javascript-upQ8KtFH.js +0 -0
  266. {kinto-18.1.1 → kinto-19.2.0}/kinto/plugins/admin/build/assets/logo-FQUYikj1.png +0 -0
  267. {kinto-18.1.1 → kinto-19.2.0}/kinto/plugins/admin/build/assets/mllike-ilm95jrV.js +0 -0
  268. {kinto-18.1.1 → kinto-19.2.0}/kinto/plugins/admin/build/assets/python-xljIYvii.js +0 -0
  269. {kinto-18.1.1 → kinto-19.2.0}/kinto/plugins/admin/build/assets/rpm-cddeyEgF.js +0 -0
  270. {kinto-18.1.1 → kinto-19.2.0}/kinto/plugins/admin/build/assets/sql-3IaSLchm.js +0 -0
  271. {kinto-18.1.1 → kinto-19.2.0}/kinto/plugins/admin/build/assets/ttcn-cfg-9oMIyPXS.js +0 -0
  272. {kinto-18.1.1 → kinto-19.2.0}/kinto/plugins/admin/build/index.html +0 -0
  273. {kinto-18.1.1 → kinto-19.2.0}/kinto/plugins/admin/public/help.html +0 -0
  274. {kinto-18.1.1 → kinto-19.2.0}/kinto/plugins/admin/views.py +0 -0
  275. {kinto-18.1.1 → kinto-19.2.0}/kinto/plugins/default_bucket/__init__.py +0 -0
  276. {kinto-18.1.1 → kinto-19.2.0}/kinto/plugins/flush.py +0 -0
  277. {kinto-18.1.1 → kinto-19.2.0}/kinto/plugins/history/listener.py +0 -0
  278. {kinto-18.1.1 → kinto-19.2.0}/kinto/plugins/history/views.py +0 -0
  279. {kinto-18.1.1 → kinto-19.2.0}/kinto/plugins/openid/__init__.py +0 -0
  280. {kinto-18.1.1 → kinto-19.2.0}/kinto/plugins/openid/utils.py +0 -0
  281. {kinto-18.1.1 → kinto-19.2.0}/kinto/plugins/openid/views.py +0 -0
  282. {kinto-18.1.1 → kinto-19.2.0}/kinto/plugins/quotas/listener.py +0 -0
  283. {kinto-18.1.1 → kinto-19.2.0}/kinto/plugins/quotas/scripts.py +0 -0
  284. {kinto-18.1.1 → kinto-19.2.0}/kinto/plugins/quotas/utils.py +0 -0
  285. {kinto-18.1.1 → kinto-19.2.0}/kinto/schema_validation.py +0 -0
  286. {kinto-18.1.1 → kinto-19.2.0}/kinto/scripts.py +0 -0
  287. {kinto-18.1.1 → kinto-19.2.0}/kinto/views/__init__.py +0 -0
  288. {kinto-18.1.1 → kinto-19.2.0}/kinto/views/admin.py +0 -0
  289. {kinto-18.1.1 → kinto-19.2.0}/kinto/views/buckets.py +0 -0
  290. {kinto-18.1.1 → kinto-19.2.0}/kinto/views/collections.py +0 -0
  291. {kinto-18.1.1 → kinto-19.2.0}/kinto/views/contribute.py +0 -0
  292. {kinto-18.1.1 → kinto-19.2.0}/kinto/views/groups.py +0 -0
  293. {kinto-18.1.1 → kinto-19.2.0}/kinto/views/permissions.py +0 -0
  294. {kinto-18.1.1 → kinto-19.2.0}/kinto/views/records.py +0 -0
  295. {kinto-18.1.1 → kinto-19.2.0}/kinto.egg-info/dependency_links.txt +0 -0
  296. {kinto-18.1.1 → kinto-19.2.0}/kinto.egg-info/entry_points.txt +0 -0
  297. {kinto-18.1.1 → kinto-19.2.0}/kinto.egg-info/top_level.txt +0 -0
  298. {kinto-18.1.1 → kinto-19.2.0}/scripts/pull-kinto-admin.sh +0 -0
  299. {kinto-18.1.1 → kinto-19.2.0}/setup.cfg +0 -0
  300. {kinto-18.1.1 → kinto-19.2.0}/tests/__init__.py +0 -0
  301. {kinto-18.1.1 → kinto-19.2.0}/tests/browser.ini +0 -0
  302. {kinto-18.1.1 → kinto-19.2.0}/tests/browser.py +0 -0
  303. {kinto-18.1.1 → kinto-19.2.0}/tests/core/__init__.py +0 -0
  304. {kinto-18.1.1 → kinto-19.2.0}/tests/core/listeners.py +0 -0
  305. {kinto-18.1.1 → kinto-19.2.0}/tests/core/resource/__init__.py +0 -0
  306. {kinto-18.1.1 → kinto-19.2.0}/tests/core/resource/test_base.py +0 -0
  307. {kinto-18.1.1 → kinto-19.2.0}/tests/core/resource/test_cache_expires.py +0 -0
  308. {kinto-18.1.1 → kinto-19.2.0}/tests/core/resource/test_filter.py +0 -0
  309. {kinto-18.1.1 → kinto-19.2.0}/tests/core/resource/test_model.py +0 -0
  310. {kinto-18.1.1 → kinto-19.2.0}/tests/core/resource/test_object.py +0 -0
  311. {kinto-18.1.1 → kinto-19.2.0}/tests/core/resource/test_object_permissions.py +0 -0
  312. {kinto-18.1.1 → kinto-19.2.0}/tests/core/resource/test_pagination.py +0 -0
  313. {kinto-18.1.1 → kinto-19.2.0}/tests/core/resource/test_partial_response.py +0 -0
  314. {kinto-18.1.1 → kinto-19.2.0}/tests/core/resource/test_preconditions.py +0 -0
  315. {kinto-18.1.1 → kinto-19.2.0}/tests/core/resource/test_schema.py +0 -0
  316. {kinto-18.1.1 → kinto-19.2.0}/tests/core/resource/test_sort.py +0 -0
  317. {kinto-18.1.1 → kinto-19.2.0}/tests/core/resource/test_sync.py +0 -0
  318. {kinto-18.1.1 → kinto-19.2.0}/tests/core/resource/test_views.py +0 -0
  319. {kinto-18.1.1 → kinto-19.2.0}/tests/core/resource/test_views_cors.py +0 -0
  320. {kinto-18.1.1 → kinto-19.2.0}/tests/core/resource/test_viewset.py +0 -0
  321. {kinto-18.1.1 → kinto-19.2.0}/tests/core/schema/postgresql-permission-1.sql +0 -0
  322. {kinto-18.1.1 → kinto-19.2.0}/tests/core/schema/postgresql-storage-1.6.sql +0 -0
  323. {kinto-18.1.1 → kinto-19.2.0}/tests/core/schema/postgresql-storage-11.sql +0 -0
  324. {kinto-18.1.1 → kinto-19.2.0}/tests/core/support.py +0 -0
  325. {kinto-18.1.1 → kinto-19.2.0}/tests/core/test_authentication.py +0 -0
  326. {kinto-18.1.1 → kinto-19.2.0}/tests/core/test_authorization.py +0 -0
  327. {kinto-18.1.1 → kinto-19.2.0}/tests/core/test_cache.py +0 -0
  328. {kinto-18.1.1 → kinto-19.2.0}/tests/core/test_decorators.py +0 -0
  329. {kinto-18.1.1 → kinto-19.2.0}/tests/core/test_deprecation.py +0 -0
  330. {kinto-18.1.1 → kinto-19.2.0}/tests/core/test_errors.py +0 -0
  331. {kinto-18.1.1 → kinto-19.2.0}/tests/core/test_listeners.py +0 -0
  332. {kinto-18.1.1 → kinto-19.2.0}/tests/core/test_logging.py +0 -0
  333. {kinto-18.1.1 → kinto-19.2.0}/tests/core/test_openapi.py +0 -0
  334. {kinto-18.1.1 → kinto-19.2.0}/tests/core/test_permission.py +0 -0
  335. {kinto-18.1.1 → kinto-19.2.0}/tests/core/test_schema.py +0 -0
  336. {kinto-18.1.1 → kinto-19.2.0}/tests/core/test_scripts.py +0 -0
  337. {kinto-18.1.1 → kinto-19.2.0}/tests/core/test_storage.py +0 -0
  338. {kinto-18.1.1 → kinto-19.2.0}/tests/core/test_storage_migrations.py +0 -0
  339. {kinto-18.1.1 → kinto-19.2.0}/tests/core/test_storage_pool.py +0 -0
  340. {kinto-18.1.1 → kinto-19.2.0}/tests/core/test_utils.py +0 -0
  341. {kinto-18.1.1 → kinto-19.2.0}/tests/core/test_views_batch.py +0 -0
  342. {kinto-18.1.1 → kinto-19.2.0}/tests/core/test_views_errors.py +0 -0
  343. {kinto-18.1.1 → kinto-19.2.0}/tests/core/test_views_heartbeat.py +0 -0
  344. {kinto-18.1.1 → kinto-19.2.0}/tests/core/test_views_hello.py +0 -0
  345. {kinto-18.1.1 → kinto-19.2.0}/tests/core/test_views_openapi.py +0 -0
  346. {kinto-18.1.1 → kinto-19.2.0}/tests/core/test_views_postgresql.py +0 -0
  347. {kinto-18.1.1 → kinto-19.2.0}/tests/core/test_views_transaction.py +0 -0
  348. {kinto-18.1.1 → kinto-19.2.0}/tests/core/testapp/__init__.py +0 -0
  349. {kinto-18.1.1 → kinto-19.2.0}/tests/core/testapp/static/index.html +0 -0
  350. {kinto-18.1.1 → kinto-19.2.0}/tests/core/testapp/views.py +0 -0
  351. {kinto-18.1.1 → kinto-19.2.0}/tests/core/testplugin/__init__.py +0 -0
  352. {kinto-18.1.1 → kinto-19.2.0}/tests/functional.py +0 -0
  353. {kinto-18.1.1 → kinto-19.2.0}/tests/openapi/__init__.py +0 -0
  354. {kinto-18.1.1 → kinto-19.2.0}/tests/openapi/support.py +0 -0
  355. {kinto-18.1.1 → kinto-19.2.0}/tests/openapi/test_plugins.py +0 -0
  356. {kinto-18.1.1 → kinto-19.2.0}/tests/openapi/test_resources.py +0 -0
  357. {kinto-18.1.1 → kinto-19.2.0}/tests/openapi/test_responses_buckets.py +0 -0
  358. {kinto-18.1.1 → kinto-19.2.0}/tests/openapi/test_responses_collections.py +0 -0
  359. {kinto-18.1.1 → kinto-19.2.0}/tests/openapi/test_responses_errors.py +0 -0
  360. {kinto-18.1.1 → kinto-19.2.0}/tests/openapi/test_responses_groups.py +0 -0
  361. {kinto-18.1.1 → kinto-19.2.0}/tests/openapi/test_responses_records.py +0 -0
  362. {kinto-18.1.1 → kinto-19.2.0}/tests/openapi/test_validation.py +0 -0
  363. {kinto-18.1.1 → kinto-19.2.0}/tests/plugins/__init__.py +0 -0
  364. {kinto-18.1.1 → kinto-19.2.0}/tests/plugins/test_accounts.py +0 -0
  365. {kinto-18.1.1 → kinto-19.2.0}/tests/plugins/test_admin.py +0 -0
  366. {kinto-18.1.1 → kinto-19.2.0}/tests/plugins/test_default_bucket.py +0 -0
  367. {kinto-18.1.1 → kinto-19.2.0}/tests/plugins/test_flush.py +0 -0
  368. {kinto-18.1.1 → kinto-19.2.0}/tests/plugins/test_openid.py +0 -0
  369. {kinto-18.1.1 → kinto-19.2.0}/tests/support.py +0 -0
  370. {kinto-18.1.1 → kinto-19.2.0}/tests/test_authorization.py +0 -0
  371. {kinto-18.1.1 → kinto-19.2.0}/tests/test_config.py +0 -0
  372. {kinto-18.1.1 → kinto-19.2.0}/tests/test_configuration/test.ini +0 -0
  373. {kinto-18.1.1 → kinto-19.2.0}/tests/test_init.py +0 -0
  374. {kinto-18.1.1 → kinto-19.2.0}/tests/test_main.py +0 -0
  375. {kinto-18.1.1 → kinto-19.2.0}/tests/test_scripts.py +0 -0
  376. {kinto-18.1.1 → kinto-19.2.0}/tests/test_views_admin.py +0 -0
  377. {kinto-18.1.1 → kinto-19.2.0}/tests/test_views_buckets.py +0 -0
  378. {kinto-18.1.1 → kinto-19.2.0}/tests/test_views_collections.py +0 -0
  379. {kinto-18.1.1 → kinto-19.2.0}/tests/test_views_collections_cache.py +0 -0
  380. {kinto-18.1.1 → kinto-19.2.0}/tests/test_views_contribute.py +0 -0
  381. {kinto-18.1.1 → kinto-19.2.0}/tests/test_views_disable_default.py +0 -0
  382. {kinto-18.1.1 → kinto-19.2.0}/tests/test_views_groups.py +0 -0
  383. {kinto-18.1.1 → kinto-19.2.0}/tests/test_views_hello.py +0 -0
  384. {kinto-18.1.1 → kinto-19.2.0}/tests/test_views_objects_permissions.py +0 -0
  385. {kinto-18.1.1 → kinto-19.2.0}/tests/test_views_permissions.py +0 -0
  386. {kinto-18.1.1 → kinto-19.2.0}/tests/test_views_records.py +0 -0
  387. {kinto-18.1.1 → kinto-19.2.0}/tests/test_views_schema_collection.py +0 -0
  388. {kinto-18.1.1 → kinto-19.2.0}/tests/test_views_schema_group.py +0 -0
  389. {kinto-18.1.1 → kinto-19.2.0}/tests/test_views_schema_record.py +0 -0
  390. {kinto-18.1.1 → kinto-19.2.0}/tests/test_views_version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: kinto
3
- Version: 18.1.1
3
+ Version: 19.2.0
4
4
  Summary: Kinto Web Service - Store, Sync, Share, and Self-Host.
5
5
  Author-email: Mozilla Services <developers@kinto-storage.org>
6
6
  License: Copyright 2012 - Mozilla Foundation
@@ -61,6 +61,7 @@ Requires-Dist: newrelic; extra == "monitoring"
61
61
  Requires-Dist: sentry-sdk[sqlalchemy]; extra == "monitoring"
62
62
  Requires-Dist: statsd; extra == "monitoring"
63
63
  Requires-Dist: werkzeug; extra == "monitoring"
64
+ Requires-Dist: prometheus-client; extra == "monitoring"
64
65
  Provides-Extra: test
65
66
  Requires-Dist: bravado; extra == "test"
66
67
  Requires-Dist: pytest; extra == "test"
@@ -79,7 +80,7 @@ Kinto
79
80
  |coc| |gitter| |readthedocs| |pypi| |ci| |main-coverage|
80
81
 
81
82
  .. |coc| image:: https://img.shields.io/badge/%E2%9D%A4-code%20of%20conduct-blue.svg
82
- :target: https://github.com/Kinto/kinto/blob/main/CODE_OF_CONDUCT.md
83
+ :target: https://github.com/Kinto/kinto/blob/main/.github/CODE_OF_CONDUCT.md
83
84
  :alt: Code of conduct
84
85
 
85
86
  .. |gitter| image:: https://badges.gitter.im/Kinto/kinto.svg
@@ -4,7 +4,7 @@ Kinto
4
4
  |coc| |gitter| |readthedocs| |pypi| |ci| |main-coverage|
5
5
 
6
6
  .. |coc| image:: https://img.shields.io/badge/%E2%9D%A4-code%20of%20conduct-blue.svg
7
- :target: https://github.com/Kinto/kinto/blob/main/CODE_OF_CONDUCT.md
7
+ :target: https://github.com/Kinto/kinto/blob/main/.github/CODE_OF_CONDUCT.md
8
8
  :alt: Code of conduct
9
9
 
10
10
  .. |gitter| image:: https://badges.gitter.im/Kinto/kinto.svg
@@ -25,6 +25,7 @@ psycopg2
25
25
  zope.sqlalchemy
26
26
  # monitoring
27
27
  newrelic
28
+ prometheus-client
28
29
  sentry-sdk[sqlalchemy]
29
30
  statsd
30
31
  werkzeug
@@ -1,5 +1,5 @@
1
1
  #
2
- # This file is autogenerated by pip-compile with Python 3.10
2
+ # This file is autogenerated by pip-compile with Python 3.12
3
3
  # by the following command:
4
4
  #
5
5
  # pip-compile --output-file=constraints.txt --strip-extras constraints.in
@@ -10,15 +10,15 @@ attrs==23.2.0
10
10
  # via
11
11
  # jsonschema
12
12
  # referencing
13
- bcrypt==4.1.3
13
+ bcrypt==4.2.0
14
14
  # via -r constraints.in
15
15
  beautifulsoup4==4.12.3
16
16
  # via webtest
17
17
  bravado-core==6.1.1
18
18
  # via -r constraints.in
19
- build==1.2.1
19
+ build==1.2.2.post1
20
20
  # via -r constraints.in
21
- certifi==2023.11.17
21
+ certifi==2024.7.4
22
22
  # via
23
23
  # requests
24
24
  # sentry-sdk
@@ -40,16 +40,12 @@ coverage==7.4.0
40
40
  # via pytest-cov
41
41
  dockerflow==2024.4.2
42
42
  # via -r constraints.in
43
- exceptiongroup==1.2.0
44
- # via pytest
45
43
  execnet==2.0.2
46
44
  # via pytest-cache
47
45
  fqdn==1.5.1
48
46
  # via jsonschema
49
47
  greenlet==3.0.3
50
- # via
51
- # playwright
52
- # sqlalchemy
48
+ # via playwright
53
49
  hupper==1.12
54
50
  # via pyramid
55
51
  idna==3.7
@@ -70,7 +66,7 @@ jsonpointer==2.4
70
66
  # jsonschema
71
67
  jsonref==1.1.0
72
68
  # via bravado-core
73
- jsonschema==4.22.0
69
+ jsonschema==4.23.0
74
70
  # via
75
71
  # -r constraints.in
76
72
  # bravado-core
@@ -83,7 +79,7 @@ markupsafe==2.1.4
83
79
  # via werkzeug
84
80
  msgpack==1.0.7
85
81
  # via bravado-core
86
- newrelic==9.11.0
82
+ newrelic==10.1.0
87
83
  # via -r constraints.in
88
84
  packaging==23.2
89
85
  # via
@@ -98,13 +94,15 @@ plaster==1.1.2
98
94
  # pyramid
99
95
  plaster-pastedeploy==1.0.1
100
96
  # via pyramid
101
- playwright==1.44.0
97
+ playwright==1.47.0
102
98
  # via -r constraints.in
103
99
  pluggy==1.5.0
104
100
  # via pytest
101
+ prometheus-client==0.21.0
102
+ # via -r constraints.in
105
103
  psycopg2==2.9.9
106
104
  # via -r constraints.in
107
- pyee==11.1.0
105
+ pyee==12.0.0
108
106
  # via playwright
109
107
  pyproject-hooks==1.0.0
110
108
  # via build
@@ -121,7 +119,7 @@ pyramid-multiauth==1.0.2
121
119
  # via -r constraints.in
122
120
  pyramid-tm==2.5
123
121
  # via -r constraints.in
124
- pytest==8.2.2
122
+ pytest==8.3.3
125
123
  # via
126
124
  # -r constraints.in
127
125
  # pytest-cache
@@ -163,9 +161,9 @@ rpds-py==0.17.1
163
161
  # via
164
162
  # jsonschema
165
163
  # referencing
166
- ruff==0.4.9
164
+ ruff==0.6.9
167
165
  # via -r constraints.in
168
- sentry-sdk==1.39.2
166
+ sentry-sdk==2.8.0
169
167
  # via -r constraints.in
170
168
  simplejson==3.19.2
171
169
  # via bravado-core
@@ -177,7 +175,7 @@ six==1.16.0
177
175
  # rfc3339-validator
178
176
  soupsieve==2.5
179
177
  # via beautifulsoup4
180
- sqlalchemy==2.0.30
178
+ sqlalchemy==2.0.35
181
179
  # via
182
180
  # -r constraints.in
183
181
  # sentry-sdk
@@ -186,13 +184,7 @@ statsd==4.0.1
186
184
  # via -r constraints.in
187
185
  swagger-spec-validator==3.0.3
188
186
  # via bravado-core
189
- tomli==2.0.1
190
- # via
191
- # build
192
- # coverage
193
- # pyproject-hooks
194
- # pytest
195
- transaction==4.0
187
+ transaction==5.0
196
188
  # via
197
189
  # -r constraints.in
198
190
  # pyramid-mailer
@@ -224,15 +216,15 @@ waitress==3.0.0
224
216
  # via
225
217
  # -r constraints.in
226
218
  # webtest
227
- webcolors==1.13
219
+ webcolors==24.6.0
228
220
  # via jsonschema
229
- webob==1.8.7
221
+ webob==1.8.8
230
222
  # via
231
223
  # pyramid
232
224
  # webtest
233
225
  webtest==3.0.0
234
226
  # via -r constraints.in
235
- werkzeug==3.0.3
227
+ werkzeug==3.0.4
236
228
  # via -r constraints.in
237
229
  zope-deprecation==5.0
238
230
  # via pyramid
@@ -220,19 +220,14 @@ In the configuration of the CDN service, you should also:
220
220
  Monitoring
221
221
  ----------
222
222
 
223
- In order to enable monitoring features like *statsd*, install
223
+ In order to enable monitoring features (eg. *Prometheus* or *StatsD*), install
224
224
  extra requirements:
225
225
 
226
226
  ::
227
227
 
228
228
  make install-monitoring
229
229
 
230
- And configure its URL:
231
-
232
- .. code-block :: ini
233
-
234
- # StatsD
235
- kinto.statsd_url = udp://carbon.server:8125
230
+ See :ref:`settings section <monitoring-with-prometheus>` for the configuration aspects.
236
231
 
237
232
  Counters
238
233
  ::::::::
@@ -301,21 +301,86 @@ hello view <api-utilities>`.
301
301
  # kinto.http_host = production.server.com:7777
302
302
 
303
303
 
304
+ .. _configuration-plugins:
305
+
306
+ Plugins
307
+ =======
308
+
309
+ It is possible to extend the default Kinto behaviors by using "plugins".
310
+
311
+ The list of plugins to load at startup can be specified in the settings, as a
312
+ list of Python modules:
313
+
314
+ .. code-block:: ini
315
+
316
+ kinto.includes = kinto.plugins.default_bucket
317
+ kinto.plugins.history
318
+ kinto.plugins.admin
319
+ kinto-attachment
320
+ custom-myplugin
321
+
322
+ +---------------------------------------+--------------------------------------------------------------------------+
323
+ | Built-in plugins | What does it do? |
324
+ +=======================================+==========================================================================+
325
+ | ``kinto.plugins.accounts`` | It allows users to sign-up and authenticate using username and password |
326
+ | | (:ref:`more details <api-accounts>`). |
327
+ +---------------------------------------+--------------------------------------------------------------------------+
328
+ | ``kinto.plugins.admin`` | It is a Web admin UI to manage data from a Kinto server. |
329
+ | | (:ref:`more details <kinto-admin>`). |
330
+ +---------------------------------------+--------------------------------------------------------------------------+
331
+ | ``kinto.plugins.default_bucket`` | It enables a personal bucket ``default``, where collections are created |
332
+ | | implicitly (:ref:`more details <buckets-default-id>`). |
333
+ +---------------------------------------+--------------------------------------------------------------------------+
334
+ | ``kinto.plugins.flush`` | Adds an endpoint to completely remove all data from the database backend |
335
+ | | for testing/staging purposes. (:ref:`more details <api-flush>`). |
336
+ +---------------------------------------+--------------------------------------------------------------------------+
337
+ | ``kinto.plugins.history`` | It tracks every action performed on objects within a bucket |
338
+ | | (:ref:`more details <api-history>`). |
339
+ +---------------------------------------+--------------------------------------------------------------------------+
340
+ | ``kinto.plugins.openid`` | It allows to authenticate users using OpenID Connect from Google, |
341
+ | | Microsoft, Auth0, etc. (:ref:`more details <api-openid>`). |
342
+ +---------------------------------------+--------------------------------------------------------------------------+
343
+ | ``kinto.plugins.quotas`` | It allows to limit storage per collection size, number of records, etc. |
344
+ | | (:ref:`more details <api-quotas>`). |
345
+ +---------------------------------------+--------------------------------------------------------------------------+
346
+ | ``kinto.plugins.prometheus`` | Send metrics about backend duration, authentication, endpoints hits, .. |
347
+ | | (:ref:`more details <monitoring-with-prometheus>`). |
348
+ +---------------------------------------+--------------------------------------------------------------------------+
349
+ | ``kinto.plugins.statsd`` | Send metrics about backend duration, authentication, endpoints hits, .. |
350
+ | | (:ref:`more details <monitoring-with-statsd>`). |
351
+ +---------------------------------------+--------------------------------------------------------------------------+
352
+
353
+
354
+ There are `many available packages`_ in the Pyramid ecosystem, and it is straightforward to build one,
355
+ since the specified module must just define an ``includeme(config)`` function.
356
+
357
+ .. _many available packages: https://github.com/ITCase/awesome-pyramid
358
+
359
+ See `our list of community plugins <https://github.com/Kinto/kinto/wiki/Plugins>`_.
360
+
361
+ See also: :ref:`tutorial-write-plugin` for more in-depth informations on how
362
+ to create your own plugin.
363
+
364
+
365
+ Pluggable components
366
+ ::::::::::::::::::::
367
+
368
+ :term:`Pluggable <pluggable>` components can be substituted from configuration files,
369
+ as long as the replacement follows the original component API.
370
+
371
+ .. code-block:: ini
372
+
373
+ kinto.logging_renderer = your_log_renderer.CustomRenderer
374
+
375
+ This is the simplest way to extend *Kinto*, but will be limited to its
376
+ existing components (cache, storage, log renderer, ...).
377
+
378
+ In order to add extra features, including external packages is the way to go!
379
+
380
+
304
381
  Logging and Monitoring
305
382
  ======================
306
383
 
307
- +------------------------+----------------------------------------+--------------------------------------------------------------------------+
308
- | Setting name | Default | What does it do? |
309
- +========================+========================================+==========================================================================+
310
- | kinto.statsd_backend | ``kinto.core.statsd`` | The Python **dotted** location of the StatsD module that should be used |
311
- | | | for monitoring. Useful to plug custom implementations like Datadog™. |
312
- +------------------------+----------------------------------------+--------------------------------------------------------------------------+
313
- | kinto.statsd_prefix | ``kinto`` | The prefix to use when sending data to statsd. |
314
- +------------------------+----------------------------------------+--------------------------------------------------------------------------+
315
- | kinto.statsd_url | ``None`` | The fully qualified URL to use to connect to the statsd host. e.g. |
316
- | | | ``udp://localhost:8125`` |
317
- +------------------------+----------------------------------------+--------------------------------------------------------------------------+
318
-
319
384
  Standard Logging
320
385
  ::::::::::::::::
321
386
 
@@ -425,109 +490,86 @@ Or the equivalent environment variables:
425
490
  The application sends an event on startup (mainly for setup check).
426
491
 
427
492
 
428
- Monitoring with StatsD
429
- ::::::::::::::::::::::
493
+ .. _monitoring-with-prometheus:
430
494
 
431
- Requires the ``statsd`` package.
495
+ Monitoring with Prometheus
496
+ ::::::::::::::::::::::::::
432
497
 
433
- StatsD metrics can be enabled (disabled by default):
498
+ Requires the ``prometheus-client`` package (installed with ``kinto[monitoring]``).
434
499
 
435
- .. code-block:: ini
436
-
437
- kinto.statsd_url = udp://localhost:8125
438
- # kinto.statsd_prefix = kinto-prod
500
+ Prometheus metrics can be enabled with (disabled by default):
439
501
 
502
+ .. code-block:: ini
440
503
 
441
- Monitoring with New Relic
442
- :::::::::::::::::::::::::
504
+ kinto.includes = kinto.plugins.prometheus
443
505
 
444
- Requires the ``newrelic`` package.
506
+ Metrics can then be crawled from the ``/__metrics__`` endpoint.
445
507
 
446
- +-----------------------+----------+--------------------------------------------------------------------------+
447
- | Setting name | Default | What does it do? |
448
- +=======================+==========+==========================================================================+
449
- | kinto.newrelic_config | ``None`` | Location of the newrelic configuration file. |
450
- +-----------------------+----------+--------------------------------------------------------------------------+
451
- | kinto.newrelic_env | ``dev`` | The environment the server runs into |
452
- +-----------------------+----------+--------------------------------------------------------------------------+
453
508
 
454
- New Relic can be enabled (disabled by default):
509
+ .. _monitoring-with-statsd:
455
510
 
456
- .. code-block:: ini
511
+ Monitoring with StatsD
512
+ ::::::::::::::::::::::
457
513
 
458
- kinto.newrelic_config = /location/of/newrelic.ini
459
- kinto.newrelic_env = prod
514
+ Requires the ``statsd`` package.
460
515
 
516
+ .. note::
461
517
 
462
- .. _configuration-plugins:
518
+ Only one of *Prometheus* and *StatsD* can be enabled. It will take precedence and the other one will be ignored.
463
519
 
464
- Plugins
465
- =======
520
+ +------------------------+----------------------------------------+--------------------------------------------------------------------------+
521
+ | Setting name | Default | What does it do? |
522
+ +========================+========================================+==========================================================================+
523
+ | kinto.statsd_backend | ``kinto.core.statsd`` | The Python **dotted** location of the StatsD module that should be used |
524
+ | | | for monitoring. Useful to plug custom implementations like Datadog™. |
525
+ +------------------------+----------------------------------------+--------------------------------------------------------------------------+
526
+ | kinto.statsd_prefix | ``kinto`` | The prefix to use when sending data to statsd. |
527
+ +------------------------+----------------------------------------+--------------------------------------------------------------------------+
528
+ | kinto.statsd_url | ``None`` | The fully qualified URL to use to connect to the statsd host. e.g. |
529
+ | | | ``udp://host:8125`` |
530
+ +------------------------+----------------------------------------+--------------------------------------------------------------------------+
466
531
 
467
- It is possible to extend the default Kinto behaviors by using "plugins".
468
532
 
469
- The list of plugins to load at startup can be specified in the settings, as a
470
- list of Python modules:
533
+ StatsD metrics can be enabled with (disabled by default):
471
534
 
472
535
  .. code-block:: ini
473
536
 
474
- kinto.includes = kinto.plugins.default_bucket
475
- kinto.plugins.history
476
- kinto.plugins.admin
477
- kinto-attachment
478
- custom-myplugin
537
+ kinto.statsd_url = udp://host:8125
538
+ # kinto.statsd_prefix = kinto-prod
479
539
 
480
- +---------------------------------------+--------------------------------------------------------------------------+
481
- | Built-in plugins | What does it do? |
482
- +=======================================+==========================================================================+
483
- | ``kinto.plugins.accounts`` | It allows users to sign-up and authenticate using username and password |
484
- | | (:ref:`more details <api-accounts>`). |
485
- +---------------------------------------+--------------------------------------------------------------------------+
486
- | ``kinto.plugins.admin`` | It is a Web admin UI to manage data from a Kinto server. |
487
- | | (:ref:`more details <kinto-admin>`). |
488
- +---------------------------------------+--------------------------------------------------------------------------+
489
- | ``kinto.plugins.default_bucket`` | It enables a personal bucket ``default``, where collections are created |
490
- | | implicitly (:ref:`more details <buckets-default-id>`). |
491
- +---------------------------------------+--------------------------------------------------------------------------+
492
- | ``kinto.plugins.flush`` | Adds an endpoint to completely remove all data from the database backend |
493
- | | for testing/staging purposes. (:ref:`more details <api-flush>`). |
494
- +---------------------------------------+--------------------------------------------------------------------------+
495
- | ``kinto.plugins.history`` | It tracks every action performed on objects within a bucket |
496
- | | (:ref:`more details <api-history>`). |
497
- +---------------------------------------+--------------------------------------------------------------------------+
498
- | ``kinto.plugins.openid`` | It allows to authenticate users using OpenID Connect from Google, |
499
- | | Microsoft, Auth0, etc. (:ref:`more details <api-openid>`). |
500
- +---------------------------------------+--------------------------------------------------------------------------+
501
- | ``kinto.plugins.quotas`` | It allows to limit storage per collection size, number of records, etc. |
502
- | | (:ref:`more details <api-quotas>`). |
503
- +---------------------------------------+--------------------------------------------------------------------------+
504
540
 
541
+ StatsD can also be enabled at the *uWSGI* level:
505
542
 
506
- There are `many available packages`_ in Pyramid ecosystem, and it is straightforward to build one,
507
- since the specified module must just define an ``includeme(config)`` function.
543
+ .. code-block:: ini
508
544
 
509
- .. _many available packages: https://github.com/ITCase/awesome-pyramid
545
+ [uwsgi]
510
546
 
511
- See `our list of community plugins <https://github.com/Kinto/kinto/wiki/Plugins>`_.
547
+ # ...
512
548
 
513
- See also: :ref:`tutorial-write-plugin` for more in-depth informations on how
514
- to create your own plugin.
549
+ enable-metrics = true
550
+ plugin = dogstatsd
551
+ stats-push = dogstatsd:host:8125,kinto.{{ $deployment }}
515
552
 
516
553
 
517
- Pluggable components
518
- ::::::::::::::::::::
554
+ Monitoring with New Relic
555
+ :::::::::::::::::::::::::
519
556
 
520
- :term:`Pluggable <pluggable>` components can be substituted from configuration files,
521
- as long as the replacement follows the original component API.
557
+ Requires the ``newrelic`` package.
522
558
 
523
- .. code-block:: ini
559
+ +-----------------------+----------+--------------------------------------------------------------------------+
560
+ | Setting name | Default | What does it do? |
561
+ +=======================+==========+==========================================================================+
562
+ | kinto.newrelic_config | ``None`` | Location of the newrelic configuration file. |
563
+ +-----------------------+----------+--------------------------------------------------------------------------+
564
+ | kinto.newrelic_env | ``dev`` | The environment the server runs into |
565
+ +-----------------------+----------+--------------------------------------------------------------------------+
524
566
 
525
- kinto.logging_renderer = your_log_renderer.CustomRenderer
567
+ New Relic can be enabled (disabled by default):
526
568
 
527
- This is the simplest way to extend *Kinto*, but will be limited to its
528
- existing components (cache, storage, log renderer, ...).
569
+ .. code-block:: ini
529
570
 
530
- In order to add extra features, including external packages is the way to go!
571
+ kinto.newrelic_config = /location/of/newrelic.ini
572
+ kinto.newrelic_env = prod
531
573
 
532
574
 
533
575
  .. _configuration-authentication:
@@ -1,12 +1,12 @@
1
- Sphinx==7.3.7
1
+ Sphinx==7.4.4
2
2
  sphinx_rtd_theme==2.0.0
3
3
  docutils==0.20.1
4
4
  sphinxcontrib-httpdomain==1.8.1
5
- sphinx-github-changelog==1.3.0
5
+ sphinx-github-changelog==1.4.0
6
6
  kinto
7
7
  mock==5.1.0
8
- webtest==3.0.0
8
+ webtest==3.0.1
9
9
  cornice==6.1.0
10
10
  pyramid==2.0.2
11
- python-rapidjson==1.17
12
- SQLAlchemy==2.0.30
11
+ python-rapidjson==1.20
12
+ SQLAlchemy==2.0.35
@@ -66,8 +66,8 @@ DEFAULT_SETTINGS = {
66
66
  "kinto.core.initialization.setup_authentication",
67
67
  "kinto.core.initialization.setup_backoff",
68
68
  "kinto.core.initialization.setup_sentry",
69
- "kinto.core.initialization.setup_statsd",
70
69
  "kinto.core.initialization.setup_listeners",
70
+ "kinto.core.initialization.setup_metrics",
71
71
  "kinto.core.events.setup_transaction_hook",
72
72
  ),
73
73
  "event_listeners": "",
@@ -21,7 +21,7 @@ from pyramid.security import NO_PERMISSION_REQUIRED
21
21
  from pyramid.settings import asbool, aslist
22
22
  from pyramid_multiauth import MultiAuthenticationPolicy, MultiAuthPolicySelected
23
23
 
24
- from kinto.core import cache, errors, permission, storage, utils
24
+ from kinto.core import cache, errors, metrics, permission, storage, utils
25
25
  from kinto.core.events import ACTIONS, ResourceChanged, ResourceRead
26
26
 
27
27
 
@@ -334,51 +334,13 @@ def setup_sentry(config):
334
334
 
335
335
 
336
336
  def setup_statsd(config):
337
- settings = config.get_settings()
338
- config.registry.statsd = None
339
-
340
- if settings["statsd_url"]:
341
- statsd_mod = settings["statsd_backend"]
342
- statsd_mod = config.maybe_dotted(statsd_mod)
343
- client = statsd_mod.load_from_config(config)
344
-
345
- config.registry.statsd = client
346
-
347
- client.watch_execution_time(config.registry.cache, prefix="backend")
348
- client.watch_execution_time(config.registry.storage, prefix="backend")
349
- client.watch_execution_time(config.registry.permission, prefix="backend")
350
-
351
- # Commit so that configured policy can be queried.
352
- config.commit()
353
- policy = config.registry.queryUtility(IAuthenticationPolicy)
354
- if isinstance(policy, MultiAuthenticationPolicy):
355
- for name, subpolicy in policy.get_policies():
356
- client.watch_execution_time(subpolicy, prefix="authentication", classname=name)
357
- else:
358
- client.watch_execution_time(policy, prefix="authentication")
359
-
360
- def on_new_response(event):
361
- request = event.request
362
-
363
- # Count unique users.
364
- user_id = request.prefixed_userid
365
- if user_id:
366
- # Get rid of colons in metric packet (see #1282).
367
- user_id = user_id.replace(":", ".")
368
- client.count("users", unique=user_id)
369
-
370
- # Count authentication verifications.
371
- if hasattr(request, "authn_type"):
372
- client.count(f"authn_type.{request.authn_type}")
373
-
374
- # Count view calls.
375
- service = request.current_service
376
- if service:
377
- client.count(f"view.{service.name}.{request.method}")
378
-
379
- config.add_subscriber(on_new_response, NewResponse)
380
-
381
- return client
337
+ # It would be pretty rare to find users that have a custom ``kinto.initialization_sequence`` setting.
338
+ # But just in case, warn that it will be removed in next major.
339
+ warnings.warn(
340
+ "``setup_statsd()`` is now deprecated. Use ``kinto.core.initialization.setup_metrics()`` instead.",
341
+ DeprecationWarning,
342
+ )
343
+ setup_metrics(config)
382
344
 
383
345
 
384
346
  def install_middlewares(app, settings):
@@ -466,6 +428,75 @@ def setup_logging(config):
466
428
  config.add_subscriber(on_new_response, NewResponse)
467
429
 
468
430
 
431
+ def setup_metrics(config):
432
+ settings = config.get_settings()
433
+
434
+ # This does not fully respect the Pyramid/ZCA patterns, but the rest of Kinto uses
435
+ # `registry.storage`, `registry.cache`, etc. Consistency seems more important.
436
+ config.registry.__class__.metrics = property(
437
+ lambda reg: reg.queryUtility(metrics.IMetricsService)
438
+ )
439
+
440
+ def deprecated_registry(self):
441
+ warnings.warn(
442
+ "``config.registry.statsd`` is now deprecated. Use ``config.registry.metrics`` instead.",
443
+ DeprecationWarning,
444
+ )
445
+ return self.metrics
446
+
447
+ config.registry.__class__.statsd = property(deprecated_registry)
448
+
449
+ def on_app_created(event):
450
+ config = event.app
451
+ metrics_service = config.registry.metrics
452
+ if not metrics_service:
453
+ logger.warning("No metrics service registered.")
454
+ return
455
+
456
+ metrics.watch_execution_time(metrics_service, config.registry.cache, prefix="backend")
457
+ metrics.watch_execution_time(metrics_service, config.registry.storage, prefix="backend")
458
+ metrics.watch_execution_time(metrics_service, config.registry.permission, prefix="backend")
459
+
460
+ policy = config.registry.queryUtility(IAuthenticationPolicy)
461
+ if isinstance(policy, MultiAuthenticationPolicy):
462
+ for name, subpolicy in policy.get_policies():
463
+ metrics.watch_execution_time(
464
+ metrics_service, subpolicy, prefix="authentication", classname=name
465
+ )
466
+ else:
467
+ metrics.watch_execution_time(metrics_service, policy, prefix="authentication")
468
+
469
+ config.add_subscriber(on_app_created, ApplicationCreated)
470
+
471
+ def on_new_response(event):
472
+ request = event.request
473
+ metrics_service = config.registry.metrics
474
+ if not metrics_service:
475
+ return
476
+
477
+ # Count unique users.
478
+ user_id = request.prefixed_userid
479
+ if user_id:
480
+ # Get rid of colons in metric packet (see #1282).
481
+ user_id = user_id.replace(":", ".")
482
+ metrics_service.count("users", unique=user_id)
483
+
484
+ # Count authentication verifications.
485
+ if hasattr(request, "authn_type"):
486
+ metrics_service.count(f"authn_type.{request.authn_type}")
487
+
488
+ # Count view calls.
489
+ service = request.current_service
490
+ if service:
491
+ metrics_service.count(f"view.{service.name}.{request.method}")
492
+
493
+ config.add_subscriber(on_new_response, NewResponse)
494
+
495
+ # While statsd is deprecated, we include its plugin by default for retro-compability.
496
+ if settings["statsd_url"]:
497
+ config.include("kinto.plugins.statsd")
498
+
499
+
469
500
  class EventActionFilter:
470
501
  def __init__(self, actions, config):
471
502
  actions = ACTIONS.from_string_list(actions)
@@ -518,11 +549,9 @@ def setup_listeners(config):
518
549
  listener_mod = config.maybe_dotted(module_value)
519
550
  listener = listener_mod.load_from_config(config, prefix)
520
551
 
521
- # If StatsD is enabled, monitor execution time of listeners.
522
- if getattr(config.registry, "statsd", None):
523
- statsd_client = config.registry.statsd
524
- key = f"listeners.{name}"
525
- listener = statsd_client.timer(key)(listener.__call__)
552
+ wrapped_listener = metrics.listener_with_timer(
553
+ config, f"listeners.{name}", listener.__call__
554
+ )
526
555
 
527
556
  # Optional filter by event action.
528
557
  actions_setting = prefix + "actions"
@@ -548,11 +577,11 @@ def setup_listeners(config):
548
577
  options = dict(for_actions=actions, for_resources=resource_names)
549
578
 
550
579
  if ACTIONS.READ in actions:
551
- config.add_subscriber(listener, ResourceRead, **options)
580
+ config.add_subscriber(wrapped_listener, ResourceRead, **options)
552
581
  actions = [a for a in actions if a != ACTIONS.READ]
553
582
 
554
583
  if len(actions) > 0:
555
- config.add_subscriber(listener, ResourceChanged, **options)
584
+ config.add_subscriber(wrapped_listener, ResourceChanged, **options)
556
585
 
557
586
 
558
587
  def load_default_settings(config, default_settings):