kinto 19.5.0__py3-none-any.whl → 19.6.0__py3-none-any.whl

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 (37) hide show
  1. kinto/core/__init__.py +3 -3
  2. kinto/core/cornice/__init__.py +93 -0
  3. kinto/core/cornice/cors.py +144 -0
  4. kinto/core/cornice/errors.py +40 -0
  5. kinto/core/cornice/pyramidhook.py +373 -0
  6. kinto/core/cornice/renderer.py +89 -0
  7. kinto/core/cornice/resource.py +205 -0
  8. kinto/core/cornice/service.py +641 -0
  9. kinto/core/cornice/util.py +138 -0
  10. kinto/core/cornice/validators/__init__.py +94 -0
  11. kinto/core/cornice/validators/_colander.py +142 -0
  12. kinto/core/cornice/validators/_marshmallow.py +182 -0
  13. kinto/core/cornice_swagger/__init__.py +92 -0
  14. kinto/core/cornice_swagger/converters/__init__.py +21 -0
  15. kinto/core/cornice_swagger/converters/exceptions.py +6 -0
  16. kinto/core/cornice_swagger/converters/parameters.py +90 -0
  17. kinto/core/cornice_swagger/converters/schema.py +249 -0
  18. kinto/core/cornice_swagger/swagger.py +725 -0
  19. kinto/core/cornice_swagger/templates/index.html +73 -0
  20. kinto/core/cornice_swagger/templates/index_script_template.html +21 -0
  21. kinto/core/cornice_swagger/util.py +42 -0
  22. kinto/core/cornice_swagger/views.py +78 -0
  23. kinto/core/openapi.py +2 -3
  24. kinto/core/resource/viewset.py +1 -1
  25. kinto/core/testing.py +1 -1
  26. kinto/core/utils.py +3 -2
  27. kinto/core/views/batch.py +1 -1
  28. kinto/core/views/openapi.py +1 -1
  29. kinto/plugins/flush.py +1 -1
  30. kinto/plugins/openid/views.py +1 -1
  31. kinto/views/contribute.py +2 -1
  32. {kinto-19.5.0.dist-info → kinto-19.6.0.dist-info}/METADATA +2 -4
  33. {kinto-19.5.0.dist-info → kinto-19.6.0.dist-info}/RECORD +37 -16
  34. {kinto-19.5.0.dist-info → kinto-19.6.0.dist-info}/LICENSE +0 -0
  35. {kinto-19.5.0.dist-info → kinto-19.6.0.dist-info}/WHEEL +0 -0
  36. {kinto-19.5.0.dist-info → kinto-19.6.0.dist-info}/entry_points.txt +0 -0
  37. {kinto-19.5.0.dist-info → kinto-19.6.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,73 @@
1
+ <!-- HTML for static distribution bundle build -->
2
+ <!DOCTYPE html>
3
+ <html lang="en">
4
+ <head>
5
+ <meta charset="UTF-8">
6
+ <title>Swagger UI</title>
7
+ <link href="https://fonts.googleapis.com/css?family=Open+Sans:400,700|Source+Code+Pro:300,600|Titillium+Web:400,600,700" rel="stylesheet">
8
+ <link rel="stylesheet" type="text/css" href="${ui_css_url}" >
9
+ <style>
10
+ html
11
+ {
12
+ box-sizing: border-box;
13
+ overflow: -moz-scrollbars-vertical;
14
+ overflow-y: scroll;
15
+ }
16
+ *,
17
+ *:before,
18
+ *:after
19
+ {
20
+ box-sizing: inherit;
21
+ }
22
+
23
+ body {
24
+ margin:0;
25
+ background: #fafafa;
26
+ }
27
+ </style>
28
+ </head>
29
+
30
+ <body>
31
+
32
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="position:absolute;width:0;height:0">
33
+ <defs>
34
+ <symbol viewBox="0 0 20 20" id="unlocked">
35
+ <path d="M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V6h2v-.801C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8z"></path>
36
+ </symbol>
37
+
38
+ <symbol viewBox="0 0 20 20" id="locked">
39
+ <path d="M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8zM12 8H8V5.199C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8z"/>
40
+ </symbol>
41
+
42
+ <symbol viewBox="0 0 20 20" id="close">
43
+ <path d="M14.348 14.849c-.469.469-1.229.469-1.697 0L10 11.819l-2.651 3.029c-.469.469-1.229.469-1.697 0-.469-.469-.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-.469-.469-.469-1.228 0-1.697.469-.469 1.228-.469 1.697 0L10 8.183l2.651-3.031c.469-.469 1.228-.469 1.697 0 .469.469.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c.469.469.469 1.229 0 1.698z"/>
44
+ </symbol>
45
+
46
+ <symbol viewBox="0 0 20 20" id="large-arrow">
47
+ <path d="M13.25 10L6.109 2.58c-.268-.27-.268-.707 0-.979.268-.27.701-.27.969 0l7.83 7.908c.268.271.268.709 0 .979l-7.83 7.908c-.268.271-.701.27-.969 0-.268-.269-.268-.707 0-.979L13.25 10z"/>
48
+ </symbol>
49
+
50
+ <symbol viewBox="0 0 20 20" id="large-arrow-down">
51
+ <path d="M17.418 6.109c.272-.268.709-.268.979 0s.271.701 0 .969l-7.908 7.83c-.27.268-.707.268-.979 0l-7.908-7.83c-.27-.268-.27-.701 0-.969.271-.268.709-.268.979 0L10 13.25l7.418-7.141z"/>
52
+ </symbol>
53
+
54
+
55
+ <symbol viewBox="0 0 24 24" id="jump-to">
56
+ <path d="M19 7v4H5.83l3.58-3.59L8 6l-6 6 6 6 1.41-1.41L5.83 13H21V7z"/>
57
+ </symbol>
58
+
59
+ <symbol viewBox="0 0 24 24" id="expand">
60
+ <path d="M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z"/>
61
+ </symbol>
62
+
63
+ </defs>
64
+ </svg>
65
+
66
+ <div id="swagger-ui"></div>
67
+
68
+ <script src="${ui_js_bundle_url}"> </script>
69
+ <script src="${ui_js_standalone_url}"> </script>
70
+ ${swagger_ui_script}
71
+ </body>
72
+
73
+ </html>
@@ -0,0 +1,21 @@
1
+ <script>
2
+ window.onload = function() {
3
+
4
+ // Build a system
5
+ const ui = SwaggerUIBundle({
6
+ url: "${swagger_spec_url}",
7
+ dom_id: '#swagger-ui',
8
+ deepLinking: true,
9
+ presets: [
10
+ SwaggerUIBundle.presets.apis,
11
+ SwaggerUIStandalonePreset
12
+ ],
13
+ plugins: [
14
+ SwaggerUIBundle.plugins.DownloadUrl
15
+ ],
16
+ layout: "StandaloneLayout"
17
+ })
18
+
19
+ window.ui = ui
20
+ }
21
+ </script>
@@ -0,0 +1,42 @@
1
+ import colander
2
+
3
+ from kinto.core.cornice.validators import colander_body_validator
4
+
5
+
6
+ def trim(docstring):
7
+ """
8
+ Remove the tabs to spaces, and remove the extra spaces / tabs that are in
9
+ front of the text in docstrings.
10
+
11
+ Implementation taken from http://www.python.org/dev/peps/pep-0257/
12
+ """
13
+ if not docstring:
14
+ return ""
15
+ # Convert tabs to spaces (following the normal Python rules)
16
+ # and split into a list of lines:
17
+ lines = docstring.expandtabs().splitlines()
18
+ lines = [line.strip() for line in lines]
19
+ res = "\n".join(lines)
20
+ return res
21
+
22
+
23
+ def body_schema_transformer(schema, args):
24
+ validators = args.get("validators", [])
25
+ if colander_body_validator in validators:
26
+ body_schema = schema
27
+ schema = colander.MappingSchema()
28
+ schema["body"] = body_schema
29
+ return schema
30
+
31
+
32
+ def merge_dicts(base, changes):
33
+ """Merge b into a recursively, without overwriting values.
34
+
35
+ :param base: the dict that will be altered.
36
+ :param changes: changes to update base.
37
+ """
38
+ for k, v in changes.items():
39
+ if isinstance(v, dict):
40
+ merge_dicts(base.setdefault(k, {}), v)
41
+ else:
42
+ base.setdefault(k, v)
@@ -0,0 +1,78 @@
1
+ import importlib
2
+ from string import Template
3
+
4
+ import cornice
5
+ import cornice_swagger
6
+ import pkg_resources
7
+ from pyramid.response import Response
8
+
9
+
10
+ # hardcode for now since that will work for vast majority of users
11
+ # maybe later add minified resources for behind firewall support?
12
+ ui_css_url = "https://cdnjs.cloudflare.com/ajax/libs/swagger-ui/3.23.11/swagger-ui.css"
13
+ ui_js_bundle_url = "https://cdnjs.cloudflare.com/ajax/libs/swagger-ui/3.23.11/swagger-ui-bundle.js"
14
+ ui_js_standalone_url = (
15
+ "https://cdnjs.cloudflare.com/ajax/libs/swagger-ui/3.23.11/swagger-ui-standalone-preset.js"
16
+ )
17
+
18
+
19
+ def swagger_ui_template_view(request):
20
+ """
21
+ Serves Swagger UI page, default Swagger UI config is used but you can
22
+ override the callable that generates the `<script>` tag by setting
23
+ `cornice_swagger.swagger_ui_script_generator` in pyramid config, it defaults
24
+ to 'cornice_swagger.views:swagger_ui_script_template'
25
+
26
+ :param request:
27
+ :return:
28
+ """
29
+ script_generator = request.registry.settings.get(
30
+ "cornice_swagger.swagger_ui_script_generator",
31
+ "cornice_swagger.views:swagger_ui_script_template",
32
+ )
33
+ package, callable = script_generator.split(":")
34
+ imported_package = importlib.import_module(package)
35
+ script_callable = getattr(imported_package, callable)
36
+ template = pkg_resources.resource_string("cornice_swagger", "templates/index.html").decode(
37
+ "utf8"
38
+ )
39
+
40
+ html = Template(template).safe_substitute(
41
+ ui_css_url=ui_css_url,
42
+ ui_js_bundle_url=ui_js_bundle_url,
43
+ ui_js_standalone_url=ui_js_standalone_url,
44
+ swagger_ui_script=script_callable(request),
45
+ )
46
+ return Response(html)
47
+
48
+
49
+ def open_api_json_view(request):
50
+ """
51
+ :param request:
52
+ :return:
53
+
54
+ Generates JSON representation of Swagger spec
55
+ """
56
+ doc = cornice_swagger.CorniceSwagger(
57
+ cornice.service.get_services(), pyramid_registry=request.registry
58
+ )
59
+ kwargs = request.registry.settings["cornice_swagger.spec_kwargs"]
60
+ my_spec = doc.generate(**kwargs)
61
+ return my_spec
62
+
63
+
64
+ def swagger_ui_script_template(request, **kwargs):
65
+ """
66
+ :param request:
67
+ :return:
68
+
69
+ Generates the <script> code that bootstraps Swagger UI, it will be injected
70
+ into index template
71
+ """
72
+ swagger_spec_url = request.route_url("cornice_swagger.open_api_path")
73
+ template = pkg_resources.resource_string(
74
+ "cornice_swagger", "templates/index_script_template.html"
75
+ ).decode("utf8")
76
+ return Template(template).safe_substitute(
77
+ swagger_spec_url=swagger_spec_url,
78
+ )
kinto/core/openapi.py CHANGED
@@ -1,6 +1,5 @@
1
- from cornice_swagger import CorniceSwagger
2
- from cornice_swagger.converters.schema import TypeConverter
3
-
1
+ from kinto.core.cornice_swagger import CorniceSwagger
2
+ from kinto.core.cornice_swagger.converters.schema import TypeConverter
4
3
  from kinto.core.schema import Any
5
4
 
6
5
 
@@ -2,10 +2,10 @@ import functools
2
2
  import warnings
3
3
 
4
4
  import colander
5
- from cornice.validators import colander_validator
6
5
  from pyramid.settings import asbool
7
6
 
8
7
  from kinto.core import authorization
8
+ from kinto.core.cornice.validators import colander_validator
9
9
 
10
10
  from .schema import (
11
11
  ObjectGetQuerySchema,
kinto/core/testing.py CHANGED
@@ -5,10 +5,10 @@ from collections import defaultdict
5
5
  from unittest import mock
6
6
 
7
7
  import webtest
8
- from cornice import errors as cornice_errors
9
8
  from pyramid.url import parse_url_overrides
10
9
 
11
10
  from kinto.core import DEFAULT_SETTINGS
11
+ from kinto.core.cornice import errors as cornice_errors
12
12
  from kinto.core.storage import generators
13
13
  from kinto.core.utils import encode64, follow_subrequest, memcache, sqlalchemy
14
14
  from kinto.plugins import prometheus, statsd
kinto/core/utils.py CHANGED
@@ -13,7 +13,6 @@ from urllib.parse import unquote
13
13
  import jsonpatch
14
14
  import rapidjson
15
15
  from colander import null
16
- from cornice import cors
17
16
  from pyramid import httpexceptions
18
17
  from pyramid.authorization import Authenticated
19
18
  from pyramid.interfaces import IRoutesMapper
@@ -21,6 +20,8 @@ from pyramid.request import Request, apply_request_extensions
21
20
  from pyramid.settings import aslist
22
21
  from pyramid.view import render_view_to_response
23
22
 
23
+ from kinto.core.cornice import cors
24
+
24
25
 
25
26
  try:
26
27
  import sqlalchemy
@@ -289,7 +290,7 @@ def current_service(request):
289
290
  """Return the Cornice service matching the specified request.
290
291
 
291
292
  :returns: the service or None if unmatched.
292
- :rtype: cornice.Service
293
+ :rtype: kinto.core.cornice.Service
293
294
  """
294
295
  if request.matched_route:
295
296
  services = request.registry.cornice_services
kinto/core/views/batch.py CHANGED
@@ -1,11 +1,11 @@
1
1
  import logging
2
2
 
3
3
  import colander
4
- from cornice.validators import colander_validator
5
4
  from pyramid import httpexceptions
6
5
  from pyramid.security import NO_PERMISSION_REQUIRED
7
6
 
8
7
  from kinto.core import Service, errors
8
+ from kinto.core.cornice.validators import colander_validator
9
9
  from kinto.core.errors import ErrorSchema
10
10
  from kinto.core.resource.viewset import CONTENT_TYPES
11
11
  from kinto.core.utils import build_request, build_response, merge_dicts
@@ -1,8 +1,8 @@
1
1
  import colander
2
- from cornice.service import get_services
3
2
  from pyramid.security import NO_PERMISSION_REQUIRED
4
3
 
5
4
  from kinto.core import Service
5
+ from kinto.core.cornice.service import get_services
6
6
  from kinto.core.openapi import OpenAPI
7
7
 
8
8
 
kinto/plugins/flush.py CHANGED
@@ -1,6 +1,6 @@
1
- from cornice import Service
2
1
  from pyramid.security import NO_PERMISSION_REQUIRED
3
2
 
3
+ from kinto.core import Service
4
4
  from kinto.events import ServerFlushed
5
5
 
6
6
 
@@ -3,10 +3,10 @@ import urllib.parse
3
3
 
4
4
  import colander
5
5
  import requests
6
- from cornice.validators import colander_validator
7
6
  from pyramid import httpexceptions
8
7
 
9
8
  from kinto.core import Service
9
+ from kinto.core.cornice.validators import colander_validator
10
10
  from kinto.core.errors import ERRORS, raise_invalid
11
11
  from kinto.core.resource.schema import ErrorResponseSchema
12
12
  from kinto.core.schema import URL
kinto/views/contribute.py CHANGED
@@ -1,7 +1,8 @@
1
1
  import colander
2
- from cornice import Service
3
2
  from pyramid.security import NO_PERMISSION_REQUIRED
4
3
 
4
+ from kinto.core import Service
5
+
5
6
 
6
7
  contribute = Service(
7
8
  name="contribute.json", description="Open-source information", path="/contribute.json"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: kinto
3
- Version: 19.5.0
3
+ Version: 19.6.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
@@ -33,8 +33,6 @@ Description-Content-Type: text/x-rst
33
33
  License-File: LICENSE
34
34
  Requires-Dist: bcrypt
35
35
  Requires-Dist: colander
36
- Requires-Dist: cornice
37
- Requires-Dist: cornice_swagger
38
36
  Requires-Dist: dockerflow
39
37
  Requires-Dist: jsonschema
40
38
  Requires-Dist: jsonpatch
@@ -54,7 +52,7 @@ Provides-Extra: memcached
54
52
  Requires-Dist: python-memcached; extra == "memcached"
55
53
  Provides-Extra: postgresql
56
54
  Requires-Dist: SQLAlchemy<3; extra == "postgresql"
57
- Requires-Dist: psycopg2; extra == "postgresql"
55
+ Requires-Dist: psycopg2-binary; extra == "postgresql"
58
56
  Requires-Dist: zope.sqlalchemy; extra == "postgresql"
59
57
  Provides-Extra: monitoring
60
58
  Requires-Dist: newrelic; extra == "monitoring"
@@ -6,7 +6,7 @@ kinto/schema_validation.py,sha256=mtAmnl5HwiUsjS2gU8MKH4lkZ1380A5wZht-w9s5X7M,53
6
6
  kinto/scripts.py,sha256=oM8ggBofYVoVhxrbdfzwIO0AOwR6Z2NJ2RqH9op1_lg,1370
7
7
  kinto/config/__init__.py,sha256=av8W0utmjheueFqrjTYEDk_vbpm3XYdHcqv5lppNR4k,2131
8
8
  kinto/config/kinto.tpl,sha256=kdA2RuR8gEpZGJp6VkKqMShQ0CfHDM0gjUttSPeaT7s,8753
9
- kinto/core/__init__.py,sha256=vMPrxTInad09nsWvidn1igX-IqM1M786x9kakm6OILA,8138
9
+ kinto/core/__init__.py,sha256=1torTd1T89nHUdsqmCJ3o85lJVakcsERIglEMu5VmkE,8171
10
10
  kinto/core/authentication.py,sha256=HLA0kREC3GMEsrIsHsQYjVNztYfAF01kb8-pLboByFs,1527
11
11
  kinto/core/authorization.py,sha256=GywY25KEzuSSAI709dFHDfdLnKxy3SLEYGwW5FkQ7Qc,13212
12
12
  kinto/core/decorators.py,sha256=3SAPWXlyPNUSICZ9mz04bcN-UdbnDuFOtU0bQHHzLis,2178
@@ -14,18 +14,39 @@ kinto/core/errors.py,sha256=JXZjkPYjjC0I6x02d2VJRGeaQ2yZYS2zm5o7_ljfyes,8946
14
14
  kinto/core/events.py,sha256=SYpXgKMtVjiD9fwYJA2Omdom9yA3nBqi9btdvU1I_nc,10345
15
15
  kinto/core/initialization.py,sha256=pdrPVONxznp2W3BfY9Uh-2cwXr-biB1OxcAAKjB1uEU,26679
16
16
  kinto/core/metrics.py,sha256=Y6Mt4PUzy2-oudeGr_oCmtX8nIR4SZkzUlPxr58jr-g,2619
17
- kinto/core/openapi.py,sha256=bPHRCVmdZsJCsKm8BId02Q2Wz8etF1xL7Z9rU9JDx5k,3855
17
+ kinto/core/openapi.py,sha256=92sZviff4NCxN0jMnu5lPUnF5iQbrKMGy7Cegf-VAME,3876
18
18
  kinto/core/schema.py,sha256=d5L5TQynRYJPkZ8Mu2X7F72xEh6SKDbrHK1CNTdOf2E,3646
19
19
  kinto/core/scripts.py,sha256=5HSq5QAuin7HuU6icNYkPisny-4JpcdBvjf8X4JImrE,978
20
20
  kinto/core/statsd.py,sha256=2f4s2opiHVdrA02ZlBa5pxIHaEjPuG8tdVLsmdII27s,64
21
- kinto/core/testing.py,sha256=6iKT2q5f1suIavYGdM7lkqbqaIG5h38iM5S6jKU4AQI,5897
22
- kinto/core/utils.py,sha256=orPPQBLmMhNYT-25VzPrVGkTiqYxhHj-BRRH2WdTm_Q,17046
21
+ kinto/core/testing.py,sha256=kZ-75EiiZwTNDBpHZyKBBHute6jEmUwXd7nRMK9kwr4,5908
22
+ kinto/core/utils.py,sha256=EDlZfHsgcaUvxg-AG_dn9IcQCq7j7RxpBjnFrx8b11E,17069
23
23
  kinto/core/cache/__init__.py,sha256=NJT_39WFTuUd-OHuVqgoQTQUYv5zS9PIc3W_Kq9tabc,2726
24
24
  kinto/core/cache/memcached.py,sha256=WuYyq6-QykRNryLA_bKdeGAY_Hvwq0c1ejS_8G94cY4,2914
25
25
  kinto/core/cache/memory.py,sha256=603vuyV5nKxsmUlkVxZFZWKPAbxMSTQKqkpqK4ttFas,2748
26
26
  kinto/core/cache/testing.py,sha256=KVNz1tVYv_A33HF66SObM1WTgOx1UY47MuwPsaaQRag,6980
27
27
  kinto/core/cache/postgresql/__init__.py,sha256=04OetGaxI89XAHUhtrNtRyipsZTe0bn_ZjoUQms_3VA,6026
28
28
  kinto/core/cache/postgresql/schema.sql,sha256=a-6lbhqzlNMcig7DCGQ_ULP-Z5nzhNWrZWCpaHTiJPw,503
29
+ kinto/core/cornice/__init__.py,sha256=P07QaR_5qIXuFxAXciJZYlUlQSH5bYD2LNsv5v9E_tY,3685
30
+ kinto/core/cornice/cors.py,sha256=nA61VsAamFovkpk5aYVoSWASLnXWVl6XJdMw17IDIKA,5159
31
+ kinto/core/cornice/errors.py,sha256=_8Jxhm7ic2obRSMkEKqRtJEK2tg9Fp75DhJ0kJ5OxLI,1433
32
+ kinto/core/cornice/pyramidhook.py,sha256=iy5I8nFTg29aIjPKrwmak5_hy_GjGK1nLwPkmvB7mYM,13936
33
+ kinto/core/cornice/renderer.py,sha256=Rk1BNrPnpFxIZVE1jdQmgqcpsOVf37378Ge1Fm4gidc,3341
34
+ kinto/core/cornice/resource.py,sha256=jpjZdvOfJNe9XMDvetBhVIcoJsQot5D6K3gcrH2DQGE,6181
35
+ kinto/core/cornice/service.py,sha256=3qZteBmR9aVjL9ZQDylnWCZeac51IE9iBtUVnFqv3so,23261
36
+ kinto/core/cornice/util.py,sha256=N6KbypHKkz5YmCARilY_xatGUePwreH3ThhiafrgCh8,4106
37
+ kinto/core/cornice/validators/__init__.py,sha256=tJAewtgSYL2Fpye0pQ-jsbA3vLJ3A6d3hhm9yXUO2Yc,3325
38
+ kinto/core/cornice/validators/_colander.py,sha256=qlh1jR3xEOkRvMgS-F-CxtyKohzJFPjaaOYPi5Lb2Ns,4752
39
+ kinto/core/cornice/validators/_marshmallow.py,sha256=auiqi9chYk2H1y47Xd0UDi5FMO-umis20pNqOTx9-oU,6278
40
+ kinto/core/cornice_swagger/__init__.py,sha256=ls4uB23VcamRxoBo2IDVA4cadBlzbp5x99jbTY_pmK4,2815
41
+ kinto/core/cornice_swagger/swagger.py,sha256=a4QProdgZ7XUDFNUWsC0zLwmroxwtWbALm0Jjd00stQ,26001
42
+ kinto/core/cornice_swagger/util.py,sha256=xNKQ9kY8gkIJdVoWIDqEzrK0v8o-vfdAxxKvbXMeTwE,1210
43
+ kinto/core/cornice_swagger/views.py,sha256=h3Ehwidak0CeCr3oTy5Eh4_rLTDEAYm2Ubxb_opqaUc,2572
44
+ kinto/core/cornice_swagger/converters/__init__.py,sha256=DaSaL-e2TKtqrhWk91dZolPOk_e-oPbzgctjZNXjnj0,640
45
+ kinto/core/cornice_swagger/converters/exceptions.py,sha256=YDtm7yDay_PRxCZWOKgdWZc549JTMCi_n8Z5-PtKvCA,94
46
+ kinto/core/cornice_swagger/converters/parameters.py,sha256=VWx3NzKqaC12U2BrflYCuLJHt0W3_UJqcXiTNfeQ414,2757
47
+ kinto/core/cornice_swagger/converters/schema.py,sha256=Ga9qJMso90U0a43JHFyQ1NVKjnAGOYd0jRWmCgFqbCA,6922
48
+ kinto/core/cornice_swagger/templates/index.html,sha256=rgDT8vx6Pu4amI2vym2BC0utGPbDM8kJ2KCQWJwtgBY,2957
49
+ kinto/core/cornice_swagger/templates/index_script_template.html,sha256=vq92R0oZE5kSJ0c0NuvUq_RCSC1_325ht_cu7aCrD2s,518
29
50
  kinto/core/listeners/__init__.py,sha256=mBBo0LxNOjL8h8IqRweG1sY_G142FAakhimzKcgQBDQ,203
30
51
  kinto/core/permission/__init__.py,sha256=RoI8UJYl3X8ZmuUfVGC8QH1g4EGNrRknUao97D3jKRE,7331
31
52
  kinto/core/permission/memory.py,sha256=ymageLrGfgYxa0j8erOvVq2WPDBgtTo75R0wcL3Wx3Y,6171
@@ -36,7 +57,7 @@ kinto/core/permission/postgresql/migrations/migration_001_002.sql,sha256=ey5rDVQ
36
57
  kinto/core/resource/__init__.py,sha256=B-1X3nPzIZOiN8Dc_tSersAP-Wn4jXf3GcrctN2Ck1k,50746
37
58
  kinto/core/resource/model.py,sha256=xjZ6shnhelXCdWvgw6yeOWXodxiKMm9iyDqLTk0i8Bs,15626
38
59
  kinto/core/resource/schema.py,sha256=EhPKDMlBjx60hXztMvywfo4IrRfwaZ3V-7sY_sl-BYk,16126
39
- kinto/core/resource/viewset.py,sha256=3Uck_7Fp1lIDunDoAU6yDzswBr3ZDSPn16sIckRHdko,7602
60
+ kinto/core/resource/viewset.py,sha256=Wo7mQwmI08IGnSetaqGF66fCqYPB1pDUdZa3U92NIic,7613
40
61
  kinto/core/storage/__init__.py,sha256=EiGmwovOzB3j_d3pgQCgsVyoe0_Op9Ylgo2MfZW7Ugo,13258
41
62
  kinto/core/storage/exceptions.py,sha256=o10f7LohwyCHOTlR-dOdnB4us_MdCGOJUxZO8HZ3Akc,1304
42
63
  kinto/core/storage/generators.py,sha256=rxWN9hOfOsB-PLeryhPGO-aE670sivr3LFRIExImpxc,1829
@@ -70,14 +91,14 @@ kinto/core/storage/postgresql/migrations/migration_019_020.sql,sha256=yDQDdzU65c
70
91
  kinto/core/storage/postgresql/migrations/migration_020_021.sql,sha256=cEgfGNDLH3RyLswxy9YZazZtOvidxNsi57z7SGR8VsQ,2369
71
92
  kinto/core/storage/postgresql/migrations/migration_021_022.sql,sha256=MUIAfgbBDQLy8JfklEs6ekK93nr1buVRtmBAHaaMXug,1993
72
93
  kinto/core/views/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
73
- kinto/core/views/batch.py,sha256=t6mKtxlJq6URXyIdGEXQQ2hpjsjaWLnUWUsP5O6QaLs,5646
94
+ kinto/core/views/batch.py,sha256=sWNn67YqfTbiqwpbwbm1QyumcVGi8aNhlT5AtLToElI,5657
74
95
  kinto/core/views/errors.py,sha256=hjXugB1CE4MrfShKyitZBfKl7R9dtdwYrXsjX7l1QOU,5955
75
96
  kinto/core/views/heartbeat.py,sha256=qidZ7fTvuPoJMo7miDnclAm_WsbgqubzsARrv9aCo5U,3336
76
97
  kinto/core/views/hello.py,sha256=tTjJ2PHKPnmLL41cwF6e0AzPhm4WmojIc0VWHcZNOgI,1961
77
- kinto/core/views/openapi.py,sha256=YZ7akBoMqmiu0b4AOxlupHU01_kQEHtmzPxJq_iS79Y,947
98
+ kinto/core/views/openapi.py,sha256=PgxplQX1D0zqzlvRxBvd5SzrNMJmsaLfDta_fh-Pr-A,958
78
99
  kinto/core/views/version.py,sha256=-m5G_o0oHTpCgrtfFrHFve6Zqw_gs_szT0Bd8jnNmD4,1419
79
100
  kinto/plugins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
80
- kinto/plugins/flush.py,sha256=mG3J6KI9xP2ICYaxQEscEhUfdkDky-qN0klYap9YPMM,809
101
+ kinto/plugins/flush.py,sha256=poiBOLGXjml0xXHjqDMRdbXJSd6N3SL0mfeGK2vxeHY,812
81
102
  kinto/plugins/prometheus.py,sha256=oGpm1H4-CTVK4kd_GWDyn4nKBCSVq1fypdBoewDMRPk,6209
82
103
  kinto/plugins/statsd.py,sha256=-VasJZM1xkhTfFa6_0GgWwfPqKnYS2722bSMDLzZ3pI,2469
83
104
  kinto/plugins/accounts/__init__.py,sha256=KX3rTxHf520JNXfAa1RwCMZijSR6kPjOrMbTxMig8yk,4346
@@ -112,7 +133,7 @@ kinto/plugins/history/listener.py,sha256=Tq5ZHpIOIzQs9yPXA1exEftPoYCuFQJvgxbaIb6
112
133
  kinto/plugins/history/views.py,sha256=NoBP-S7epeH5TLZZbIqfBmwMA2KaWmxP7lqPAS11BTU,2293
113
134
  kinto/plugins/openid/__init__.py,sha256=1Iv5SCa6vwEvoJkmGd45-TYm_mxz2okFj6u2VTNuVrk,4863
114
135
  kinto/plugins/openid/utils.py,sha256=n3KGS-ogXR2sg6j4QtdPe_DtEsqD7AGVT2K7vhl8yE8,273
115
- kinto/plugins/openid/views.py,sha256=RVUlS_Ov26NM8SFlrIlpm7ev9OuaMlJTtPA6pUi6ngk,6508
136
+ kinto/plugins/openid/views.py,sha256=RRLBH6uipqafPSyQG5bi8nQOGGO6kT4fGLW4H3blU3E,6519
116
137
  kinto/plugins/quotas/__init__.py,sha256=7yKJkux2WzhSBRO2BG9dgFlkaWW2RE8Dvgup4YlKdsc,613
117
138
  kinto/plugins/quotas/listener.py,sha256=WKKaCNRJw8XoIfnJb3S0ogYhzAo28RcfLE-MzP6Cs2U,8564
118
139
  kinto/plugins/quotas/scripts.py,sha256=a3KuzUwtCp_yu78yqr3XdbaHvZyBcUy6o_keNtsuU-M,2941
@@ -121,13 +142,13 @@ kinto/views/__init__.py,sha256=mItMqadROvEieXtxm0AoDReH3PwxOlM4rzECPCQfK_s,1187
121
142
  kinto/views/admin.py,sha256=m4JKApzUUQNmmbHOfoc2n0CK01OrNiho21nYW_f5zlo,7439
122
143
  kinto/views/buckets.py,sha256=3dc5cURZEP4vPKfk3f9W3BDbloG3QZ2lefhIoo-BiSQ,1868
123
144
  kinto/views/collections.py,sha256=KrqJuje88er1VS2mtspMnXU6eYeZQTqUw0zB1ova9Bo,2206
124
- kinto/views/contribute.py,sha256=NEDr2g1HhVwcMBg0qHEZDmWVJ1V31WsM8cRs0Vm6hfc,1180
145
+ kinto/views/contribute.py,sha256=07uQXDtlBCC-gt1O1AhVxiPstNVmDtagfVtk6NgyzYA,1184
125
146
  kinto/views/groups.py,sha256=jOq5fX0-4lwZE8k1q5HME2tU7x9052rtBPF7YqcJ-Qg,3181
126
147
  kinto/views/permissions.py,sha256=F0_eKx201WyLonXJ5vLdGKa9RcFKjvAihrEEhU1JuLw,9069
127
148
  kinto/views/records.py,sha256=lYfACW2L8qcQoyYBD5IX-fTPjFWmGp7GjHq_U4InlyE,5037
128
- kinto-19.5.0.dist-info/LICENSE,sha256=oNEIMTuTJzppR5ZEyi86yvvtSagveMYXTYFn56zF0Uk,561
129
- kinto-19.5.0.dist-info/METADATA,sha256=Kct1ODlUKyK7w2dEOub1OH7kHzwTOCCi-240v7Yvklc,8898
130
- kinto-19.5.0.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
131
- kinto-19.5.0.dist-info/entry_points.txt,sha256=3KlqBWPKY81mrCe_oX0I5s1cRO7Q53nCLbnVr5P9LH4,85
132
- kinto-19.5.0.dist-info/top_level.txt,sha256=EG_YmbZL6FAug9VwopG7JtF9SvH_r0DEnFp-3twPPys,6
133
- kinto-19.5.0.dist-info/RECORD,,
149
+ kinto-19.6.0.dist-info/LICENSE,sha256=oNEIMTuTJzppR5ZEyi86yvvtSagveMYXTYFn56zF0Uk,561
150
+ kinto-19.6.0.dist-info/METADATA,sha256=jx5ZAr7FjHmL3ej9XQgQN6CBw4lovSL5ADarD7rxA98,8851
151
+ kinto-19.6.0.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
152
+ kinto-19.6.0.dist-info/entry_points.txt,sha256=3KlqBWPKY81mrCe_oX0I5s1cRO7Q53nCLbnVr5P9LH4,85
153
+ kinto-19.6.0.dist-info/top_level.txt,sha256=EG_YmbZL6FAug9VwopG7JtF9SvH_r0DEnFp-3twPPys,6
154
+ kinto-19.6.0.dist-info/RECORD,,
File without changes