plain 0.22.0__py3-none-any.whl → 0.22.1__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.
- plain/urls/resolvers.py +6 -4
- plain/urls/routers.py +34 -12
- {plain-0.22.0.dist-info → plain-0.22.1.dist-info}/METADATA +1 -1
- plain-0.22.1.dist-info/RECORD +145 -0
- plain/.pytype/.gitignore +0 -2
- plain/.pytype/.ninja_log +0 -17
- plain/.pytype/build.ninja +0 -318
- plain/.pytype/imports/..packages.__init__.imports +0 -8
- plain/.pytype/imports/..packages.__init__.imports-1 +0 -4
- plain/.pytype/imports/__main__.imports +0 -0
- plain/.pytype/imports/assets.__init__.imports +0 -0
- plain/.pytype/imports/assets.compile.imports +0 -10
- plain/.pytype/imports/assets.finders.imports +0 -7
- plain/.pytype/imports/assets.fingerprints.imports +0 -7
- plain/.pytype/imports/assets.urls.imports +0 -51
- plain/.pytype/imports/assets.urls.imports-1 +0 -35
- plain/.pytype/imports/assets.views.imports +0 -51
- plain/.pytype/imports/assets.views.imports-1 +0 -35
- plain/.pytype/imports/cli.__init__.imports +0 -16
- plain/.pytype/imports/cli.cli.imports +0 -15
- plain/.pytype/imports/cli.formatting.imports +0 -2
- plain/.pytype/imports/cli.packages.imports +0 -8
- plain/.pytype/imports/cli.print.imports +0 -1
- plain/.pytype/imports/cli.startup.imports +0 -7
- plain/.pytype/imports/debug.imports +0 -2
- plain/.pytype/imports/default.pyi +0 -3
- plain/.pytype/imports/forms.__init__.imports +0 -23
- plain/.pytype/imports/forms.boundfield.imports +0 -0
- plain/.pytype/imports/forms.exceptions.imports +0 -1
- plain/.pytype/imports/forms.fields.imports +0 -13
- plain/.pytype/imports/forms.forms.imports +0 -15
- plain/.pytype/imports/http.__init__.imports +0 -20
- plain/.pytype/imports/http.__init__.imports-1 +0 -17
- plain/.pytype/imports/http.cookie.imports +0 -0
- plain/.pytype/imports/http.multipartparser.imports +0 -14
- plain/.pytype/imports/http.multipartparser.imports-1 +0 -17
- plain/.pytype/imports/http.request.imports +0 -14
- plain/.pytype/imports/http.request.imports-1 +0 -25
- plain/.pytype/imports/http.response.imports +0 -16
- plain/.pytype/imports/internal.__init__.imports +0 -0
- plain/.pytype/imports/internal.files.__init__.imports +0 -1
- plain/.pytype/imports/internal.files.base.imports +0 -2
- plain/.pytype/imports/internal.files.locks.imports +0 -0
- plain/.pytype/imports/internal.files.move.imports +0 -1
- plain/.pytype/imports/internal.files.temp.imports +0 -1
- plain/.pytype/imports/internal.files.uploadedfile.imports +0 -10
- plain/.pytype/imports/internal.files.uploadhandler.imports +0 -12
- plain/.pytype/imports/internal.files.utils.imports +0 -1
- plain/.pytype/imports/internal.handlers.__init__.imports +0 -0
- plain/.pytype/imports/internal.handlers.base.imports +0 -53
- plain/.pytype/imports/internal.handlers.exception.imports +0 -10
- plain/.pytype/imports/internal.handlers.wsgi.imports +0 -29
- plain/.pytype/imports/internal.middleware.__init__.imports +0 -0
- plain/.pytype/imports/internal.middleware.headers.imports +0 -7
- plain/.pytype/imports/internal.middleware.https.imports +0 -8
- plain/.pytype/imports/internal.middleware.slash.imports +0 -51
- plain/.pytype/imports/json.imports +0 -12
- plain/.pytype/imports/json.imports-1 +0 -6
- plain/.pytype/imports/json_encoding.imports +0 -3
- plain/.pytype/imports/logs.configure.imports +0 -0
- plain/.pytype/imports/logs.loggers.imports +0 -0
- plain/.pytype/imports/logs.utils.imports +0 -0
- plain/.pytype/imports/middleware.imports +0 -13
- plain/.pytype/imports/packages.__init__.imports +0 -8
- plain/.pytype/imports/packages.__init__.imports-1 +0 -4
- plain/.pytype/imports/packages.config.imports +0 -0
- plain/.pytype/imports/packages.registry.imports +0 -7
- plain/.pytype/imports/packages.registry.imports-1 +0 -3
- plain/.pytype/imports/paginator.imports +0 -2
- plain/.pytype/imports/preflight.__init__.imports +0 -72
- plain/.pytype/imports/preflight.__init__.imports-1 +0 -53
- plain/.pytype/imports/preflight.files.imports +0 -8
- plain/.pytype/imports/preflight.files.imports-1 +0 -48
- plain/.pytype/imports/preflight.messages.imports +0 -7
- plain/.pytype/imports/preflight.registry.imports +0 -2
- plain/.pytype/imports/preflight.security.imports +0 -11
- plain/.pytype/imports/preflight.urls.imports +0 -51
- plain/.pytype/imports/preflight.urls.imports-1 +0 -48
- plain/.pytype/imports/runtime.global_settings.imports +0 -7
- plain/.pytype/imports/runtime.user_settings.imports +0 -7
- plain/.pytype/imports/runtime.user_settings.imports-1 +0 -3
- plain/.pytype/imports/signals.dispatch.__init__.imports +0 -10
- plain/.pytype/imports/signals.dispatch.dispatcher.imports +0 -8
- plain/.pytype/imports/templates.__init__.imports +0 -51
- plain/.pytype/imports/templates.__init__.imports-1 +0 -35
- plain/.pytype/imports/templates.core.imports +0 -51
- plain/.pytype/imports/templates.core.imports-1 +0 -35
- plain/.pytype/imports/templates.jinja.__init__.imports +0 -51
- plain/.pytype/imports/templates.jinja.__init__.imports-1 +0 -35
- plain/.pytype/imports/templates.jinja.environments.imports +0 -51
- plain/.pytype/imports/templates.jinja.environments.imports-1 +0 -35
- plain/.pytype/imports/templates.jinja.extensions.imports +0 -2
- plain/.pytype/imports/templates.jinja.filters.imports +0 -7
- plain/.pytype/imports/templates.jinja.globals.imports +0 -51
- plain/.pytype/imports/templates.jinja.globals.imports-1 +0 -35
- plain/.pytype/imports/test.__init__.imports +0 -0
- plain/.pytype/imports/test.client.imports +0 -58
- plain/.pytype/imports/urls.base.imports +0 -51
- plain/.pytype/imports/urls.base.imports-1 +0 -35
- plain/.pytype/imports/urls.conf.imports +0 -51
- plain/.pytype/imports/urls.conf.imports-1 +0 -35
- plain/.pytype/imports/urls.converters.imports +0 -0
- plain/.pytype/imports/urls.exceptions.imports +0 -1
- plain/.pytype/imports/urls.resolvers.imports +0 -51
- plain/.pytype/imports/urls.resolvers.imports-1 +0 -35
- plain/.pytype/imports/utils.__init__.imports +0 -0
- plain/.pytype/imports/utils._os.imports +0 -1
- plain/.pytype/imports/utils.cache.imports +0 -28
- plain/.pytype/imports/utils.connection.imports +0 -8
- plain/.pytype/imports/utils.datastructures.imports +0 -0
- plain/.pytype/imports/utils.dateformat.imports +0 -4
- plain/.pytype/imports/utils.dateparse.imports +0 -2
- plain/.pytype/imports/utils.dates.imports +0 -0
- plain/.pytype/imports/utils.deconstruct.imports +0 -0
- plain/.pytype/imports/utils.decorators.imports +0 -0
- plain/.pytype/imports/utils.deprecation.imports +0 -0
- plain/.pytype/imports/utils.duration.imports +0 -0
- plain/.pytype/imports/utils.email.imports +0 -0
- plain/.pytype/imports/utils.encoding.imports +0 -1
- plain/.pytype/imports/utils.hashable.imports +0 -1
- plain/.pytype/imports/utils.html.imports +0 -10
- plain/.pytype/imports/utils.inspect.imports +0 -0
- plain/.pytype/imports/utils.ipv6.imports +0 -1
- plain/.pytype/imports/utils.itercompat.imports +0 -0
- plain/.pytype/imports/utils.module_loading.imports +0 -0
- plain/.pytype/imports/utils.regex_helper.imports +0 -1
- plain/.pytype/imports/utils.safestring.imports +0 -1
- plain/.pytype/imports/utils.text.imports +0 -3
- plain/.pytype/imports/utils.timesince.imports +0 -6
- plain/.pytype/imports/utils.timezone.imports +0 -8
- plain/.pytype/imports/utils.tree.imports +0 -2
- plain/.pytype/imports/validators.imports +0 -7
- plain/.pytype/imports/views.__init__.imports +0 -72
- plain/.pytype/imports/views.__init__.imports-1 +0 -53
- plain/.pytype/imports/views.base.imports +0 -3
- plain/.pytype/imports/views.csrf.imports +0 -1
- plain/.pytype/imports/views.errors.imports +0 -51
- plain/.pytype/imports/views.exceptions.imports +0 -0
- plain/.pytype/imports/views.forms.imports +0 -51
- plain/.pytype/imports/views.forms.imports-1 +0 -35
- plain/.pytype/imports/views.imports +0 -51
- plain/.pytype/imports/views.objects.imports +0 -51
- plain/.pytype/imports/views.objects.imports-1 +0 -35
- plain/.pytype/imports/views.redirect.imports +0 -51
- plain/.pytype/imports/views.redirect.imports-1 +0 -35
- plain/.pytype/imports/views.templates.imports +0 -51
- plain/.pytype/imports/views.templates.imports-1 +0 -35
- plain/.pytype/imports/wsgi.imports +0 -8
- plain/.pytype/pyi/json.pyi +0 -15
- plain/.pytype/pyi/json.pyi-1 +0 -15
- plain/.pytype/pyi/logs/configure.pyi +0 -8
- plain/.pytype/pyi/logs/loggers.pyi +0 -20
- plain/.pytype/pyi/logs/utils.pyi +0 -7
- plain/.pytype/pyi/packages/__init__.pyi +0 -8
- plain/.pytype/pyi/packages/__init__.pyi-1 +0 -8
- plain/.pytype/pyi/packages/config.pyi +0 -35
- plain/.pytype/pyi/packages/registry.pyi +0 -49
- plain/.pytype/pyi/packages/registry.pyi-1 +0 -49
- plain/.pytype/pyi/runtime/user_settings.pyi +0 -64
- plain/.pytype/pyi/runtime/user_settings.pyi-1 +0 -64
- plain/.pytype/pyi/utils/duration.pyi +0 -9
- plain/.pytype/pyi/utils/hashable.pyi +0 -9
- plain/.pytype/pyi/utils/itercompat.pyi +0 -3
- plain/.pytype/pyi/utils/module_loading.pyi +0 -14
- plain-0.22.0.dist-info/RECORD +0 -305
- {plain-0.22.0.dist-info → plain-0.22.1.dist-info}/WHEEL +0 -0
- {plain-0.22.0.dist-info → plain-0.22.1.dist-info}/entry_points.txt +0 -0
- {plain-0.22.0.dist-info → plain-0.22.1.dist-info}/licenses/LICENSE +0 -0
plain/urls/resolvers.py
CHANGED
@@ -97,7 +97,7 @@ def get_resolver(urls_module=None):
|
|
97
97
|
|
98
98
|
@functools.cache
|
99
99
|
def _get_cached_resolver(urls_module):
|
100
|
-
from .routers import
|
100
|
+
from .routers import routers_registry
|
101
101
|
|
102
102
|
if isinstance(urls_module, str):
|
103
103
|
# Need to trigger an import in order for the @register_router
|
@@ -105,7 +105,7 @@ def _get_cached_resolver(urls_module):
|
|
105
105
|
# usually just for the root URLS_MODULE but could be for anything.
|
106
106
|
urls_module = import_module(urls_module)
|
107
107
|
|
108
|
-
router =
|
108
|
+
router = routers_registry.get_module_router(urls_module)
|
109
109
|
return URLResolver(pattern=RegexPattern(r"^/"), router_class=router)
|
110
110
|
|
111
111
|
|
@@ -139,11 +139,9 @@ class URLResolver:
|
|
139
139
|
*,
|
140
140
|
pattern,
|
141
141
|
router_class,
|
142
|
-
namespace=None,
|
143
142
|
):
|
144
143
|
self.pattern = pattern
|
145
144
|
self.router_class = router_class
|
146
|
-
self.namespace = namespace
|
147
145
|
self._reverse_dict = {}
|
148
146
|
self._namespace_dict = {}
|
149
147
|
self._app_dict = {}
|
@@ -320,6 +318,10 @@ class URLResolver:
|
|
320
318
|
# Don't need to instantiate the class because they are just class attributes for now.
|
321
319
|
return self.router_class.urls
|
322
320
|
|
321
|
+
@cached_property
|
322
|
+
def namespace(self):
|
323
|
+
return self.router_class.namespace
|
324
|
+
|
323
325
|
def reverse(self, lookup_view, *args, **kwargs):
|
324
326
|
if args and kwargs:
|
325
327
|
raise ValueError("Don't mix *args and **kwargs in call to reverse()!")
|
plain/urls/routers.py
CHANGED
@@ -1,12 +1,18 @@
|
|
1
|
+
import re
|
1
2
|
from abc import ABC
|
3
|
+
from types import ModuleType
|
4
|
+
from typing import TYPE_CHECKING
|
2
5
|
|
3
6
|
from plain.exceptions import ImproperlyConfigured
|
4
7
|
|
5
|
-
from .patterns import RoutePattern, URLPattern
|
8
|
+
from .patterns import RegexPattern, RoutePattern, URLPattern
|
6
9
|
from .resolvers import (
|
7
10
|
URLResolver,
|
8
11
|
)
|
9
12
|
|
13
|
+
if TYPE_CHECKING:
|
14
|
+
from plain.views import View
|
15
|
+
|
10
16
|
|
11
17
|
class RouterBase(ABC):
|
12
18
|
namespace: str = ""
|
@@ -39,8 +45,18 @@ class RoutersRegistry:
|
|
39
45
|
) from e
|
40
46
|
|
41
47
|
|
42
|
-
def include(
|
43
|
-
|
48
|
+
def include(
|
49
|
+
route: str | re.Pattern, module_or_urls: list | tuple | str | ModuleType
|
50
|
+
) -> URLResolver:
|
51
|
+
"""
|
52
|
+
Include URLs from another module or a nested list of URL patterns.
|
53
|
+
"""
|
54
|
+
if isinstance(route, str):
|
55
|
+
pattern = RoutePattern(route, is_endpoint=False)
|
56
|
+
elif isinstance(route, re.Pattern):
|
57
|
+
pattern = RegexPattern(route.pattern, is_endpoint=False)
|
58
|
+
else:
|
59
|
+
raise TypeError("include() route must be a string or regex")
|
44
60
|
|
45
61
|
if isinstance(module_or_urls, list | tuple):
|
46
62
|
# We were given an explicit list of sub-patterns,
|
@@ -48,24 +64,30 @@ def include(route, module_or_urls, *, Pattern=RoutePattern):
|
|
48
64
|
class _IncludeRouter(RouterBase):
|
49
65
|
urls = module_or_urls
|
50
66
|
|
51
|
-
return URLResolver(pattern=pattern, router_class=_IncludeRouter
|
67
|
+
return URLResolver(pattern=pattern, router_class=_IncludeRouter)
|
52
68
|
else:
|
53
69
|
# We were given a module, so we need to look up the router for that module
|
54
70
|
module = module_or_urls
|
55
|
-
|
56
|
-
namespace = router.namespace
|
71
|
+
router_class = routers_registry.get_module_router(module)
|
57
72
|
|
58
73
|
return URLResolver(
|
59
74
|
pattern=pattern,
|
60
|
-
router_class=
|
61
|
-
namespace=namespace,
|
75
|
+
router_class=router_class,
|
62
76
|
)
|
63
77
|
|
64
78
|
|
65
|
-
def path(route, view, *, name=
|
79
|
+
def path(route: str | re.Pattern, view: "View", *, name: str = "") -> URLPattern:
|
80
|
+
"""
|
81
|
+
Standard URL with a view.
|
82
|
+
"""
|
66
83
|
from plain.views import View
|
67
84
|
|
68
|
-
|
85
|
+
if isinstance(route, str):
|
86
|
+
pattern = RoutePattern(route, name=name, is_endpoint=True)
|
87
|
+
elif isinstance(route, re.Pattern):
|
88
|
+
pattern = RegexPattern(route.pattern, name=name, is_endpoint=True)
|
89
|
+
else:
|
90
|
+
raise TypeError("path() route must be a string or regex")
|
69
91
|
|
70
92
|
# You can't pass a View() instance to path()
|
71
93
|
if isinstance(view, View):
|
@@ -86,5 +108,5 @@ def path(route, view, *, name=None, Pattern=RoutePattern):
|
|
86
108
|
raise TypeError("view must be a View class or View.as_view()")
|
87
109
|
|
88
110
|
|
89
|
-
|
90
|
-
register_router =
|
111
|
+
routers_registry = RoutersRegistry()
|
112
|
+
register_router = routers_registry.register_router
|
@@ -0,0 +1,145 @@
|
|
1
|
+
plain/README.md,sha256=nW3Ioj3IxPb6aoCGaFMN2n7Cd7LMx0s8Lph6pMkKnh4,8
|
2
|
+
plain/__main__.py,sha256=BiYbF-txGNbeRqp_CHQ9EZ_bCbbKq2iw51Z8RRUgIBY,105
|
3
|
+
plain/debug.py,sha256=abPkJY4aSbBYGEYSZST_ZY3ohXPGDdz9uWQBYRqfd3M,730
|
4
|
+
plain/exceptions.py,sha256=pPAO8cIzNoqa2YrxG0d31C4P2V9SZ2OprHcjY9-qhIU,6332
|
5
|
+
plain/json.py,sha256=McJdsbMT1sYwkGRG--f2NSZz0hVXPMix9x3nKaaak2o,1262
|
6
|
+
plain/paginator.py,sha256=zCHCmCG8FEet6C28w2rUko9yiGFnOGCQxRbM_ssa9XY,6037
|
7
|
+
plain/signing.py,sha256=sf7g1Mp-FzdjFAEoLxHyu2YvbUl5w4FOtTVDAfq6TO0,8733
|
8
|
+
plain/validators.py,sha256=2tZh2Bvp955gejltwVtFGwfqw5-9VAOhKqos3Me4paY,19923
|
9
|
+
plain/wsgi.py,sha256=R6k5FiAElvGDApEbMPTT0MPqSD7n2e2Az5chQqJZU0I,236
|
10
|
+
plain/assets/README.md,sha256=048BzyQ2-BcsRiv6NiuLHHijOw96RK-e6lJ_Eq7g2pc,2857
|
11
|
+
plain/assets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
12
|
+
plain/assets/compile.py,sha256=Qg-rMWykij_Jheq4THrPFWlmYv07ihHzWiNsD815HYE,3336
|
13
|
+
plain/assets/finders.py,sha256=wMa0GUi4S5SUXKcWSqEesMgU4NbXXDrC4SMJwDakwNc,1215
|
14
|
+
plain/assets/fingerprints.py,sha256=1NKAnnXVlncY5iimXztr0NL3RIjBKsNlZRIe6nmItJc,931
|
15
|
+
plain/assets/urls.py,sha256=lW7VzKNzTKY11JqbszhJQ1Yy0HtljZlsHDnnkTPdLOM,992
|
16
|
+
plain/assets/views.py,sha256=z7noLzoelGw_8-MXcvGKjXs9KZ43Tivmy2TIfnZIpgw,9253
|
17
|
+
plain/cli/README.md,sha256=TvWCnNwb1rNthPzJglCRMKacN5H_RLeEjYBMe62Uz4M,2461
|
18
|
+
plain/cli/__init__.py,sha256=9ByBOIdM8DebChjNz-RH2atdz4vWe8somlwNEsbhwh4,40
|
19
|
+
plain/cli/cli.py,sha256=0iHzlXWQTLxWxqxGV4f4K9ABT7s5q5gzSqoNzj0XuKg,18383
|
20
|
+
plain/cli/formatting.py,sha256=1hZH13y1qwHcU2K2_Na388nw9uvoeQH8LrWL-O9h8Yc,2207
|
21
|
+
plain/cli/packages.py,sha256=TiLirp0ccj5K96jOfp_pS18rOnk1aQS9ckiTi27aRwE,2740
|
22
|
+
plain/cli/print.py,sha256=XraUYrgODOJquIiEv78wSCYGRBplHXtXSS9QtFG5hqY,217
|
23
|
+
plain/cli/startup.py,sha256=3LIz9JrIZoF52Sa0j0SCypQwEaBDkhvuGaBdtiQLr5Q,680
|
24
|
+
plain/csrf/README.md,sha256=RXMWMtHmzf30gVVNOfj0kD4xlSqFIPgJh-n7dIciaEM,163
|
25
|
+
plain/csrf/middleware.py,sha256=1szNRF-kKJdjhTw_Jw1Cp2IldtrLtbUqAApJOrVP1qc,17449
|
26
|
+
plain/csrf/views.py,sha256=HwQqfI6KPelHP9gSXhjfZaTLQic71PKsoZ6DPhr1rKI,572
|
27
|
+
plain/forms/README.md,sha256=fglB9MmHiEgfGGdZmcRstNl6eYaFljrElu2mzapK52M,377
|
28
|
+
plain/forms/__init__.py,sha256=UxqPwB8CiYPCQdHmUc59jadqaXqDmXBH8y4bt9vTPms,226
|
29
|
+
plain/forms/boundfield.py,sha256=LhydhCVR0okrli0-QBMjGjAJ8-06gTCXVEaBZhBouQk,1741
|
30
|
+
plain/forms/exceptions.py,sha256=XCLDRl5snIEDu5-8mLB0NnU_tegcBfyIHMiJxqvbxnc,164
|
31
|
+
plain/forms/fields.py,sha256=86ZE9jac6Zyg5vKsYGgyOUOIQLKxO--UomGXwA65tk4,35103
|
32
|
+
plain/forms/forms.py,sha256=CiONLo9VhE7E1-u-UejX4XWxxwu6MvR-lVPaVAY7VQM,10441
|
33
|
+
plain/http/README.md,sha256=HjEtoAhn14OoMdgb-wK-uc8No7C4d4gZUhzseOp7Fg4,236
|
34
|
+
plain/http/__init__.py,sha256=DIsDRbBsCGa4qZgq-fUuQS0kkxfbTU_3KpIM9VvH04w,1067
|
35
|
+
plain/http/cookie.py,sha256=11FnSG3Plo6T3jZDbPoCw7SKh9ExdBio3pTmIO03URg,597
|
36
|
+
plain/http/multipartparser.py,sha256=k6BhpilFENQQ1cuGix6aa-jGwbhBVms2A2O01-s3_4c,27304
|
37
|
+
plain/http/request.py,sha256=Kp0q-1obg7ZUJBz7iuyHwPmNMnssZmoIdLp8ylxJNAo,25965
|
38
|
+
plain/http/response.py,sha256=RR2sUG-ONWKWcZyIbztjWvtFyh0cR-CoxQvnWOyN0io,23619
|
39
|
+
plain/internal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
40
|
+
plain/internal/files/README.md,sha256=kMux-NU5qiH0o1K8IajYQT8VjrYl_jLk9LkGG_kGuSc,45
|
41
|
+
plain/internal/files/__init__.py,sha256=VctFgox4Q1AWF3klPaoCC5GIw5KeLafYjY5JmN8mAVw,63
|
42
|
+
plain/internal/files/base.py,sha256=CSq_BPKWY2kUib7pnoIvzi40isEyrKdkx1yHb8nPtLc,4817
|
43
|
+
plain/internal/files/locks.py,sha256=z03q7IZD4tPMK3s1HKF3w_uetkFj6w6FTheLUxZsfB0,3616
|
44
|
+
plain/internal/files/move.py,sha256=jfdD29QhamxZjXRgqmZS4dJoJ4sK6M7QK1Km-69jWeo,3238
|
45
|
+
plain/internal/files/temp.py,sha256=UJJnCI8dqPIC8XXHU3-jG2-0svbkrgGlBs4yhciLm4c,2506
|
46
|
+
plain/internal/files/uploadedfile.py,sha256=JRB7T3quQjg-1y3l1ASPxywtSQZhaeMc45uFPIxvl7c,4192
|
47
|
+
plain/internal/files/uploadhandler.py,sha256=eEnd5onstypjHYtg367PnVWwCaF1kAPlLPSV7goIf_E,7198
|
48
|
+
plain/internal/files/utils.py,sha256=xN4HTJXDRdcoNyrL1dFd528MBwodRlHZM8DGTD_oBIg,2646
|
49
|
+
plain/internal/handlers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
50
|
+
plain/internal/handlers/base.py,sha256=oRKni79ATI_u7sywGFExrzKvP5dpJTqIp1m521A90Ew,4169
|
51
|
+
plain/internal/handlers/exception.py,sha256=rv8shMlTJdIhTm99VacILIiu5JRcmtumg8yWuy7GYto,4592
|
52
|
+
plain/internal/handlers/wsgi.py,sha256=estA1QKHTk3ZqziWxenHsw5UO2cwPp3Zr0XjkDeM5TY,7561
|
53
|
+
plain/internal/middleware/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
54
|
+
plain/internal/middleware/headers.py,sha256=ENIW1Gwat54hv-ejgp2R8QTZm-PlaI7k44WU01YQrNk,964
|
55
|
+
plain/internal/middleware/https.py,sha256=XpuQK8HicYX1jNanQHqNgyQ9rqe4NLUOZO3ZzKdsP8k,1203
|
56
|
+
plain/internal/middleware/slash.py,sha256=FMU8b9w0NSx4eJs9Y7Ew6RAoSTbUqe2oOM68kg3wOng,2817
|
57
|
+
plain/logs/README.md,sha256=H6uVXdInYlasq0Z1WnhWnPmNwYQoZ1MSLPDQ4ZE7u4A,492
|
58
|
+
plain/logs/__init__.py,sha256=rASvo4qFBDIHfkACmGLNGa6lRGbG9PbNjW6FmBt95ys,168
|
59
|
+
plain/logs/configure.py,sha256=6mV7d1IxkDYT3VBz61qhIj0Esuy5l5QdQfsHaGCfI6w,1063
|
60
|
+
plain/logs/loggers.py,sha256=iz9SYcwP9w5QAuwpULl48SFkVyJuuMoQ_fdLgdCHpNg,2121
|
61
|
+
plain/logs/utils.py,sha256=9UzdCCQXJinGDs71Ngw297mlWkhgZStSd67ya4NOW98,1257
|
62
|
+
plain/packages/README.md,sha256=Vq1Nw3mmEmZ2IriQavuVi4BjcQC2nb8k7YIbnm8QjIg,799
|
63
|
+
plain/packages/__init__.py,sha256=DnHN1wwHXiXib4Y9BV__x9WrbUaTovoTIxW-tVyScTU,106
|
64
|
+
plain/packages/config.py,sha256=6j6Y9Uw4Lbye1M7LVgOhL4rAMkSSkleTzHQU9JRBW7k,11070
|
65
|
+
plain/packages/registry.py,sha256=YMYGGrMWPoj4Bg_MXDVNnnoqOAufG_IBT24DB-twAgw,14860
|
66
|
+
plain/preflight/README.md,sha256=-PKVd0RBMh4ROiMkegPS2PgvT1Kq9qqN1KfNkmUSdFc,177
|
67
|
+
plain/preflight/__init__.py,sha256=H-TNRvaddPtOGmv4RXoc1fxDV1AOb7_K3u7ECF8mV58,607
|
68
|
+
plain/preflight/files.py,sha256=wbHCNgps7o1c1zQNBd8FDCaVaqX90UwuvLgEQ_DbUpY,510
|
69
|
+
plain/preflight/messages.py,sha256=HwatjA6MRFfzFAnSOa_uAw1Pvk_CLuNfW3IYi71_1Mk,2322
|
70
|
+
plain/preflight/registry.py,sha256=7s7f_iEwURzv-Ye515P5lJWcHltd5Ca2fsX1Wpbf1wQ,2306
|
71
|
+
plain/preflight/security.py,sha256=sNpv5AHobPcaO48cOUGRNe2EjusTducjY8vyShR8EhI,2645
|
72
|
+
plain/preflight/urls.py,sha256=q3ikavMB8ZFMzzm_JOnm1YKwSONgaHjH4Is4-4mmTKM,3001
|
73
|
+
plain/runtime/README.md,sha256=Q8VVO7JRGuYrDxzuYL6ptoilhclbecxKzpRXKgbWGkU,2061
|
74
|
+
plain/runtime/__init__.py,sha256=ZfypqlhtbWUoJ84vLW4aKgpx2HsdtdJfDZnbbZw6kLE,1510
|
75
|
+
plain/runtime/global_settings.py,sha256=SfOhwzpZe2zpNqSpdx3hHgCN89xdbW9KJVR4KJfS_Gk,5498
|
76
|
+
plain/runtime/user_settings.py,sha256=r6uQ-h0QxX3gSB_toJJekEbSikXXdNSb8ykUtwGTpdY,11280
|
77
|
+
plain/signals/README.md,sha256=cd3tKEgH-xc88CUWyDxl4-qv-HBXx8VT32BXVwA5azA,230
|
78
|
+
plain/signals/__init__.py,sha256=eAs0kLqptuP6I31dWXeAqRNji3svplpAV4Ez6ktjwXM,131
|
79
|
+
plain/signals/dispatch/__init__.py,sha256=FzEygqV9HsM6gopio7O2Oh_X230nA4d5Q9s0sUjMq0E,292
|
80
|
+
plain/signals/dispatch/dispatcher.py,sha256=VxSlqn9PCOTghPPJLOqZPs6FNQZfV2BJpMfFMSg6Dtc,11531
|
81
|
+
plain/signals/dispatch/license.txt,sha256=o9EhDhsC4Q5HbmD-IfNGVTEkXtNE33r5rIt3lleJ8gc,1727
|
82
|
+
plain/templates/README.md,sha256=VfA2HmrklG5weE1md85q9g84cWnMBEiXAynKzM7S1Sk,464
|
83
|
+
plain/templates/__init__.py,sha256=bX76FakE9T7mfK3N0deN85HlwHNQpeigytSC9Z8LcOs,451
|
84
|
+
plain/templates/core.py,sha256=iw58EAmyyv8N5HDA-Sq4-fLgz_qx8v8WJfurgR116jw,625
|
85
|
+
plain/templates/jinja/README.md,sha256=ft4781b4IAVI6fsIdAHIpOigdsZ6wGg06LK7BHxoj-g,6996
|
86
|
+
plain/templates/jinja/__init__.py,sha256=jGjtygVB5Bwknpd3u_pBSrtUSGlFkYo6MDo0E3IWVrs,2653
|
87
|
+
plain/templates/jinja/environments.py,sha256=T5e8rjVteN3-6IWCXNRsvPgMe0OVvTkX-r6_Q9gxhv8,2046
|
88
|
+
plain/templates/jinja/extensions.py,sha256=AEmmmHDbdRW8fhjYDzq9eSSNbp9WHsXenD8tPthjc0s,1351
|
89
|
+
plain/templates/jinja/filters.py,sha256=3KJKKbxcv9dLzUDWPcaa88k3NU2m1GG3iMIgFhzXrBA,860
|
90
|
+
plain/templates/jinja/globals.py,sha256=xx3sQBn0Hkqp9jM0fZDlCM5_35C23FrZL6jKEifL77k,498
|
91
|
+
plain/test/README.md,sha256=Zso3Ir7a8vQerzKB6egjROQWkpveLAbscn7VTROPAiU,37
|
92
|
+
plain/test/__init__.py,sha256=rXe88Y602NP8DBnReSyXb7dUzKoWweLuT43j-qwOUl4,138
|
93
|
+
plain/test/client.py,sha256=36Cir1KbrNEhza-5FTgdwxe1iZ5zaEDtESrqcnyndnY,31318
|
94
|
+
plain/urls/README.md,sha256=pWnCvgYkWN7rG7hSyBOtX4ZUP3iO7FhqM6lvwwYll6c,33
|
95
|
+
plain/urls/__init__.py,sha256=XF-W2GqLMA4bHbDRKnpZ7tiUtJ-BhWN-yAzw4nNnHdc,590
|
96
|
+
plain/urls/converters.py,sha256=s2JZVOdzZC16lgobsI93hygcdH5L0Kj4742WEkXsVcs,1193
|
97
|
+
plain/urls/exceptions.py,sha256=q4iPh3Aa-zHbA-tw8v6WyX1J1n5WdAady2xvxFuyXB0,114
|
98
|
+
plain/urls/patterns.py,sha256=bU_xfhZbKMSgRG9OJ8w_NSuYRm_9zGnqoz_WY44fhUk,9358
|
99
|
+
plain/urls/resolvers.py,sha256=T_N7hZ2VrWWpLNkMbzpNcPK8OJb4yPt6QoK_qIls4D8,15592
|
100
|
+
plain/urls/routers.py,sha256=0vwzL5udLfQDwFfE4_3lzRVq0Lsx9RcDF4rnnEiJJ1w,3613
|
101
|
+
plain/urls/utils.py,sha256=WiGq6hHI-5DLFOxCQTAZ2qm0J-UdGosLcjuxlfK6_Tg,2137
|
102
|
+
plain/utils/README.md,sha256=Bf5OG-MkOJDz_U8RGVreDfAI4M4nnPaLtk-LdinxHSc,99
|
103
|
+
plain/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
104
|
+
plain/utils/_os.py,sha256=oqfiKZRbmHwwWSZP36SIajQnFDbImbB6gcyK0idAGl4,1988
|
105
|
+
plain/utils/cache.py,sha256=3GtF8EU07LmD7CSvWSuF7YTThgeNxVkuU68wBK_35Wk,11489
|
106
|
+
plain/utils/connection.py,sha256=NN7xRhy6qIWuOOhi1x9YdGcFcYhKepTiMUETeEMS0vY,2501
|
107
|
+
plain/utils/crypto.py,sha256=zFDydnaqNMGYFHUc-CAn8f93685a17BhGusAcITH1lI,2662
|
108
|
+
plain/utils/datastructures.py,sha256=g4UYTbxIb_n8F9JWMP4dHPwUz71591fHreGATPO4qEc,10240
|
109
|
+
plain/utils/dateformat.py,sha256=nsy71l16QuPN0ozGpVlCU5Et101fhk9L38F-wqT5p5I,10203
|
110
|
+
plain/utils/dateparse.py,sha256=u9_tF85YteXSjW9KQzNg_pcCEFDZS3EGorCddcWU0vE,5351
|
111
|
+
plain/utils/dates.py,sha256=hSDKz8eIb3W5QjmGiklFZZELB0inYXsfiRUy49Cx-2Q,1226
|
112
|
+
plain/utils/deconstruct.py,sha256=7NwEFIDCiadAArUBFmiErzDgfIgDWeKqqQFDXwSgQoQ,1830
|
113
|
+
plain/utils/decorators.py,sha256=mLHOo2jLdvYRo2z8lkeVn2vQErlj7xC6XoLwZBYf_z8,358
|
114
|
+
plain/utils/duration.py,sha256=l0Gc41-DeyyAmpdy2XG-YO5UKxMf1NDpWIlQuD5hAn0,1162
|
115
|
+
plain/utils/email.py,sha256=puRTBVuz44YvpnqV3LT4nNIKqdqfY3L8zbDJIkqHk2Y,328
|
116
|
+
plain/utils/encoding.py,sha256=z8c7HxYW6wQiE4csx5Ui3WvzgbDzLGXY2aCP04_GZd4,7900
|
117
|
+
plain/utils/functional.py,sha256=Xf51mt5bB8zehR8pTRVnRfV21vJ4n1IGpcwj88SSsUA,14791
|
118
|
+
plain/utils/hashable.py,sha256=uLWobCCh7VcEPJ7xzVGPgigNVuTazYJbyzRzHTCI_wo,739
|
119
|
+
plain/utils/html.py,sha256=K8nJSiNRU54htQOfhezZAYspXaDGN3LjOE3SxmnQml8,13513
|
120
|
+
plain/utils/http.py,sha256=OmnqW_nYUaFN-pAEwjTEh9AkpfjKGmE51Ge6inNGB10,12710
|
121
|
+
plain/utils/inspect.py,sha256=lhDEOtmSLEub5Jj__MIgW3AyWOEVkaA6doJKKwBhZ6A,2235
|
122
|
+
plain/utils/ipv6.py,sha256=pISQ2AIlG8xXlxpphn388q03fq-fOrlu4GZR0YYjQXw,1267
|
123
|
+
plain/utils/itercompat.py,sha256=lacIDjczhxbwG4ON_KfG1H6VNPOGOpbRhnVhbedo2CY,184
|
124
|
+
plain/utils/module_loading.py,sha256=CWl7Shoax9Zkevf1pM9PpS_0V69J5Cukjyj078UPCAw,2252
|
125
|
+
plain/utils/regex_helper.py,sha256=pAdh_xG52BOyXLsiuIMPFgduUAoWOEje1ZpjhcefxiA,12769
|
126
|
+
plain/utils/safestring.py,sha256=SHGhpbX6FFDKSYOY9zYAgAQX0g0exzRba7dM2bJalWs,1873
|
127
|
+
plain/utils/text.py,sha256=qX7vECGH4Xk96qZRH9A1IyZA-mrJ-j62j3kDcLTdWK0,16586
|
128
|
+
plain/utils/timesince.py,sha256=a_-ZoPK_s3Pt998CW4rWp0clZ1XyK2x04hCqak2giII,5928
|
129
|
+
plain/utils/timezone.py,sha256=6u0sE-9RVp0_OCe0Y1KiYYQoq5THWLokZFQYY8jf78g,6221
|
130
|
+
plain/utils/tree.py,sha256=wdWzmfsgc26YDF2wxhAY3yVxXTixQYqYDKE9mL3L3ZY,4383
|
131
|
+
plain/views/README.md,sha256=qndsXKyNMnipPlLaAvgQeGxqXknNQwlFh31Yxk8rHp8,5994
|
132
|
+
plain/views/__init__.py,sha256=a-N1nkklVohJTtz0yD1MMaS0g66HviEjsKydNVVjvVc,392
|
133
|
+
plain/views/base.py,sha256=HxOOOKZDCCZDmy2cJCEhYswVeIHZ9TukYh1zibeUn6w,3160
|
134
|
+
plain/views/csrf.py,sha256=7q6l5xzLWhRnMY64aNj0hR6G-3pxI2yhRwG6k_5j00E,144
|
135
|
+
plain/views/errors.py,sha256=Y4oGX4Z6D2COKcDEfINvXE1acE8Ad15KwNNWPs5BCfc,967
|
136
|
+
plain/views/exceptions.py,sha256=b4euI49ZUKS9O8AGAcFfiDpstzkRAuuj_uYQXzWNHME,138
|
137
|
+
plain/views/forms.py,sha256=RhlaUcZCkeqokY_fvv-NOS-kgZAG4XhDLOPbf9K_Zlc,2691
|
138
|
+
plain/views/objects.py,sha256=g5Lzno0Zsv0K449UpcCtxwCoO7WMRAWqKlxxV2V0_qg,8263
|
139
|
+
plain/views/redirect.py,sha256=9zHZgKvtSkdrMX9KmsRM8hJTPmBktxhc4d8OitbuniI,1724
|
140
|
+
plain/views/templates.py,sha256=cBkFNCSXgVi8cMqQbhsqJ4M_rIQYVl8cUvq9qu4YIes,1951
|
141
|
+
plain-0.22.1.dist-info/METADATA,sha256=lbcAVRTvoSbCtA3Nlt-ShyzQV1UOhb2bk_FSDKL5pS4,319
|
142
|
+
plain-0.22.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
143
|
+
plain-0.22.1.dist-info/entry_points.txt,sha256=DHHprvufgd7xypiBiqMANYRnpJ9xPPYhYbnPGwOkWqE,40
|
144
|
+
plain-0.22.1.dist-info/licenses/LICENSE,sha256=m0D5O7QoH9l5Vz_rrX_9r-C8d9UNr_ciK6Qwac7o6yo,3175
|
145
|
+
plain-0.22.1.dist-info/RECORD,,
|
plain/.pytype/.gitignore
DELETED
plain/.pytype/.ninja_log
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
# ninja log v5
|
2
|
-
1 1354 1737048054743908879 /Users/davegaeddert/Developer/dropseed/plain/plain/plain/.pytype/pyi/logs/utils.pyi 62850f8ecffbaa08
|
3
|
-
1354 2766 1737048056153476123 /Users/davegaeddert/Developer/dropseed/plain/plain/plain/.pytype/pyi/logs/loggers.pyi 46dd3ff1ac7c8539
|
4
|
-
2766 4240 1737048057629135692 /Users/davegaeddert/Developer/dropseed/plain/plain/plain/.pytype/pyi/logs/configure.pyi 2fab9b3dd9186964
|
5
|
-
4240 5442 1737048058833065862 /Users/davegaeddert/Developer/dropseed/plain/plain/plain/.pytype/pyi/utils/duration.pyi 8ca5dc6b2c246376
|
6
|
-
5442 6910 1737048060298365212 /Users/davegaeddert/Developer/dropseed/plain/plain/plain/.pytype/pyi/packages/config.pyi 2d3ca4b4074d6093
|
7
|
-
6910 8382 1737048061767984660 /Users/davegaeddert/Developer/dropseed/plain/plain/plain/.pytype/pyi/packages/registry.pyi-1 54ed2605f20d5375
|
8
|
-
8382 9955 1737048063335306723 /Users/davegaeddert/Developer/dropseed/plain/plain/plain/.pytype/pyi/runtime/user_settings.pyi-1 f3f4f834c2de9c3
|
9
|
-
9955 11493 1737048064877086910 /Users/davegaeddert/Developer/dropseed/plain/plain/plain/.pytype/pyi/packages/registry.pyi 2b291e9f0339095e
|
10
|
-
0 1320 1737048242787566099 /Users/davegaeddert/Developer/dropseed/plain/plain/plain/.pytype/pyi/json.pyi-1 c39fd282a223bbca
|
11
|
-
1320 2840 1737048244303822409 /Users/davegaeddert/Developer/dropseed/plain/plain/plain/.pytype/pyi/runtime/user_settings.pyi-1 f3f4f834c2de9c3
|
12
|
-
1 1236 1737048520263485950 /Users/davegaeddert/Developer/dropseed/plain/plain/plain/.pytype/pyi/packages/__init__.pyi-1 156bf5ffffa13061
|
13
|
-
1236 2472 1737048521498452905 /Users/davegaeddert/Developer/dropseed/plain/plain/plain/.pytype/pyi/packages/__init__.pyi c4d38c996f804f49
|
14
|
-
2472 4038 1737048523057219205 /Users/davegaeddert/Developer/dropseed/plain/plain/plain/.pytype/pyi/packages/registry.pyi 2b291e9f0339095e
|
15
|
-
1 524 1737048588819781640 /Users/davegaeddert/Developer/dropseed/plain/plain/plain/.pytype/pyi/utils/hashable.pyi b80263a6bb5edb11
|
16
|
-
524 1851 1737048590141977101 /Users/davegaeddert/Developer/dropseed/plain/plain/plain/.pytype/pyi/utils/module_loading.pyi 3e2c45469294d5d3
|
17
|
-
1 485 1737048620466116610 /Users/davegaeddert/Developer/dropseed/plain/plain/plain/.pytype/pyi/utils/itercompat.pyi 570382667dd1583c
|