plain 0.42.1__tar.gz → 0.43.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.
- {plain-0.42.1 → plain-0.43.0}/.gitignore +2 -0
- {plain-0.42.1 → plain-0.43.0}/PKG-INFO +1 -1
- {plain-0.42.1 → plain-0.43.0}/plain/assets/compile.py +2 -2
- {plain-0.42.1 → plain-0.43.0}/plain/assets/fingerprints.py +2 -2
- {plain-0.42.1 → plain-0.43.0}/plain/runtime/__init__.py +1 -0
- {plain-0.42.1 → plain-0.43.0}/plain/runtime/global_settings.py +0 -6
- {plain-0.42.1 → plain-0.43.0}/plain/urls/resolvers.py +0 -17
- plain-0.43.0/plain/urls/utils.py +43 -0
- {plain-0.42.1 → plain-0.43.0}/pyproject.toml +1 -1
- plain-0.42.1/plain/urls/utils.py +0 -62
- plain-0.42.1/tests/.bolt/assets_collected/assets.json +0 -1
- {plain-0.42.1 → plain-0.43.0}/LICENSE +0 -0
- {plain-0.42.1 → plain-0.43.0}/README.md +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/README.md +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/__main__.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/assets/README.md +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/assets/__init__.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/assets/finders.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/assets/urls.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/assets/views.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/chores/README.md +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/chores/__init__.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/chores/registry.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/cli/README.md +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/cli/__init__.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/cli/build.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/cli/chores.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/cli/core.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/cli/docs.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/cli/formatting.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/cli/preflight.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/cli/print.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/cli/registry.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/cli/scaffold.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/cli/settings.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/cli/shell.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/cli/startup.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/cli/urls.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/cli/utils.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/csrf/README.md +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/csrf/middleware.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/csrf/views.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/debug.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/exceptions.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/forms/README.md +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/forms/__init__.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/forms/boundfield.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/forms/exceptions.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/forms/fields.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/forms/forms.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/http/README.md +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/http/__init__.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/http/cookie.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/http/multipartparser.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/http/request.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/http/response.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/internal/__init__.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/internal/files/__init__.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/internal/files/base.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/internal/files/locks.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/internal/files/move.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/internal/files/temp.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/internal/files/uploadedfile.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/internal/files/uploadhandler.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/internal/files/utils.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/internal/handlers/__init__.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/internal/handlers/base.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/internal/handlers/exception.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/internal/handlers/wsgi.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/internal/middleware/__init__.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/internal/middleware/headers.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/internal/middleware/https.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/internal/middleware/slash.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/json.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/logs/README.md +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/logs/__init__.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/logs/configure.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/logs/loggers.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/logs/utils.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/packages/README.md +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/packages/__init__.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/packages/config.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/packages/registry.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/paginator.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/preflight/README.md +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/preflight/__init__.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/preflight/files.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/preflight/messages.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/preflight/registry.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/preflight/security.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/preflight/urls.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/runtime/README.md +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/runtime/user_settings.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/signals/README.md +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/signals/__init__.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/signals/dispatch/__init__.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/signals/dispatch/dispatcher.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/signals/dispatch/license.txt +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/signing.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/templates/README.md +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/templates/__init__.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/templates/core.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/templates/jinja/__init__.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/templates/jinja/environments.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/templates/jinja/extensions.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/templates/jinja/filters.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/templates/jinja/globals.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/test/README.md +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/test/__init__.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/test/client.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/test/encoding.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/test/exceptions.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/urls/README.md +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/urls/__init__.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/urls/converters.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/urls/exceptions.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/urls/patterns.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/urls/routers.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/utils/README.md +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/utils/__init__.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/utils/cache.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/utils/connection.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/utils/crypto.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/utils/datastructures.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/utils/dateparse.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/utils/deconstruct.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/utils/decorators.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/utils/duration.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/utils/encoding.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/utils/functional.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/utils/hashable.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/utils/html.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/utils/http.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/utils/inspect.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/utils/ipv6.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/utils/itercompat.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/utils/module_loading.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/utils/regex_helper.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/utils/safestring.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/utils/text.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/utils/timesince.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/utils/timezone.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/utils/tree.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/validators.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/views/README.md +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/views/__init__.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/views/base.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/views/csrf.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/views/errors.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/views/exceptions.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/views/forms.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/views/objects.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/views/redirect.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/views/templates.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/plain/wsgi.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/tests/.gitignore +0 -0
- {plain-0.42.1 → plain-0.43.0}/tests/app/.gitignore +0 -0
- {plain-0.42.1 → plain-0.43.0}/tests/app/settings.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/tests/app/test/__init__.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/tests/app/test/default_settings.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/tests/app/urls.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/tests/conftest.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/tests/test_cli.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/tests/test_runtime.py +0 -0
- {plain-0.42.1 → plain-0.43.0}/tests/test_wsgi.py +0 -0
@@ -2,7 +2,7 @@ import gzip
|
|
2
2
|
import os
|
3
3
|
import shutil
|
4
4
|
|
5
|
-
from plain.runtime import
|
5
|
+
from plain.runtime import PLAIN_TEMP_PATH
|
6
6
|
|
7
7
|
from .finders import iter_assets
|
8
8
|
from .fingerprints import AssetsFingerprintsManifest, get_file_fingerprint
|
@@ -46,7 +46,7 @@ def get_compiled_path():
|
|
46
46
|
|
47
47
|
There's no reason currently for this to be a user-facing setting.
|
48
48
|
"""
|
49
|
-
return
|
49
|
+
return PLAIN_TEMP_PATH / "assets" / "compiled"
|
50
50
|
|
51
51
|
|
52
52
|
def compile_assets(*, target_dir, keep_original, fingerprint, compress):
|
@@ -2,7 +2,7 @@ import hashlib
|
|
2
2
|
import json
|
3
3
|
from functools import cache
|
4
4
|
|
5
|
-
from plain.runtime import
|
5
|
+
from plain.runtime import PLAIN_TEMP_PATH
|
6
6
|
|
7
7
|
FINGERPRINT_LENGTH = 7
|
8
8
|
|
@@ -13,7 +13,7 @@ class AssetsFingerprintsManifest(dict):
|
|
13
13
|
"""
|
14
14
|
|
15
15
|
def __init__(self):
|
16
|
-
self.path =
|
16
|
+
self.path = PLAIN_TEMP_PATH / "assets" / "fingerprints.json"
|
17
17
|
|
18
18
|
def load(self):
|
19
19
|
if self.path.exists():
|
@@ -3,18 +3,12 @@ Default Plain settings. Override these with settings in the module pointed to
|
|
3
3
|
by the PLAIN_SETTINGS_MODULE environment variable.
|
4
4
|
"""
|
5
5
|
|
6
|
-
from pathlib import Path
|
7
|
-
|
8
|
-
from plain.runtime import APP_PATH as default_app_path
|
9
|
-
|
10
6
|
####################
|
11
7
|
# CORE #
|
12
8
|
####################
|
13
9
|
|
14
10
|
DEBUG: bool = False
|
15
11
|
|
16
|
-
PLAIN_TEMP_PATH: Path = default_app_path.parent / ".plain"
|
17
|
-
|
18
12
|
# Hosts/domain names that are valid for this site.
|
19
13
|
# "*" matches anything, ".example.com" matches example.com and all subdomains
|
20
14
|
ALLOWED_HOSTS: list[str] = []
|
@@ -103,7 +103,6 @@ class URLResolver:
|
|
103
103
|
self.router = router
|
104
104
|
self._reverse_dict = {}
|
105
105
|
self._namespace_dict = {}
|
106
|
-
self._app_dict = {}
|
107
106
|
self._populated = False
|
108
107
|
self._local = local()
|
109
108
|
|
@@ -132,7 +131,6 @@ class URLResolver:
|
|
132
131
|
self._local.populating = True
|
133
132
|
lookups = MultiValueDict()
|
134
133
|
namespaces = {}
|
135
|
-
packages = {}
|
136
134
|
for url_pattern in reversed(self.url_patterns):
|
137
135
|
p_pattern = url_pattern.pattern.regex.pattern
|
138
136
|
p_pattern = p_pattern.removeprefix("^")
|
@@ -158,9 +156,6 @@ class URLResolver:
|
|
158
156
|
else: # url_pattern is a URLResolver.
|
159
157
|
url_pattern._populate()
|
160
158
|
if url_pattern.namespace:
|
161
|
-
packages.setdefault(url_pattern.namespace, []).append(
|
162
|
-
url_pattern.namespace
|
163
|
-
)
|
164
159
|
namespaces[url_pattern.namespace] = (p_pattern, url_pattern)
|
165
160
|
else:
|
166
161
|
for name in url_pattern.reverse_dict:
|
@@ -189,13 +184,7 @@ class URLResolver:
|
|
189
184
|
current_converters = url_pattern.pattern.converters
|
190
185
|
sub_pattern.pattern.converters.update(current_converters)
|
191
186
|
namespaces[namespace] = (p_pattern + prefix, sub_pattern)
|
192
|
-
for (
|
193
|
-
namespace,
|
194
|
-
namespace_list,
|
195
|
-
) in url_pattern.app_dict.items():
|
196
|
-
packages.setdefault(namespace, []).extend(namespace_list)
|
197
187
|
self._namespace_dict = namespaces
|
198
|
-
self._app_dict = packages
|
199
188
|
self._reverse_dict = lookups
|
200
189
|
self._populated = True
|
201
190
|
finally:
|
@@ -213,12 +202,6 @@ class URLResolver:
|
|
213
202
|
self._populate()
|
214
203
|
return self._namespace_dict
|
215
204
|
|
216
|
-
@property
|
217
|
-
def app_dict(self):
|
218
|
-
if not self._app_dict:
|
219
|
-
self._populate()
|
220
|
-
return self._app_dict
|
221
|
-
|
222
205
|
@staticmethod
|
223
206
|
def _join_route(route1, route2):
|
224
207
|
"""Join two routes, without the starting ^ in the second route."""
|
@@ -0,0 +1,43 @@
|
|
1
|
+
from plain.utils.functional import lazy
|
2
|
+
|
3
|
+
from .exceptions import NoReverseMatch
|
4
|
+
from .resolvers import get_ns_resolver, get_resolver
|
5
|
+
|
6
|
+
|
7
|
+
def reverse(url_name: str, *args, **kwargs):
|
8
|
+
resolver = get_resolver()
|
9
|
+
|
10
|
+
*path, view = url_name.split(":")
|
11
|
+
|
12
|
+
current_path = None
|
13
|
+
|
14
|
+
resolved_path = []
|
15
|
+
ns_pattern = ""
|
16
|
+
ns_converters = {}
|
17
|
+
for ns in path:
|
18
|
+
current_ns = current_path.pop() if current_path else None
|
19
|
+
|
20
|
+
if ns != current_ns:
|
21
|
+
current_path = None
|
22
|
+
|
23
|
+
try:
|
24
|
+
extra, resolver = resolver.namespace_dict[ns]
|
25
|
+
resolved_path.append(ns)
|
26
|
+
ns_pattern += extra
|
27
|
+
ns_converters.update(resolver.pattern.converters)
|
28
|
+
except KeyError as key:
|
29
|
+
if resolved_path:
|
30
|
+
raise NoReverseMatch(
|
31
|
+
"{} is not a registered namespace inside '{}'".format(
|
32
|
+
key, ":".join(resolved_path)
|
33
|
+
)
|
34
|
+
)
|
35
|
+
else:
|
36
|
+
raise NoReverseMatch(f"{key} is not a registered namespace")
|
37
|
+
if ns_pattern:
|
38
|
+
resolver = get_ns_resolver(ns_pattern, resolver, tuple(ns_converters.items()))
|
39
|
+
|
40
|
+
return resolver.reverse(view, *args, **kwargs)
|
41
|
+
|
42
|
+
|
43
|
+
reverse_lazy = lazy(reverse, str)
|
plain-0.42.1/plain/urls/utils.py
DELETED
@@ -1,62 +0,0 @@
|
|
1
|
-
from plain.utils.functional import lazy
|
2
|
-
|
3
|
-
from .exceptions import NoReverseMatch
|
4
|
-
from .resolvers import get_ns_resolver, get_resolver
|
5
|
-
|
6
|
-
|
7
|
-
def reverse(viewname, *args, **kwargs):
|
8
|
-
resolver = get_resolver()
|
9
|
-
|
10
|
-
if not isinstance(viewname, str):
|
11
|
-
view = viewname
|
12
|
-
else:
|
13
|
-
*path, view = viewname.split(":")
|
14
|
-
|
15
|
-
current_path = None
|
16
|
-
|
17
|
-
resolved_path = []
|
18
|
-
ns_pattern = ""
|
19
|
-
ns_converters = {}
|
20
|
-
for ns in path:
|
21
|
-
current_ns = current_path.pop() if current_path else None
|
22
|
-
# Lookup the name to see if it could be an app identifier.
|
23
|
-
try:
|
24
|
-
app_list = resolver.app_dict[ns]
|
25
|
-
# Yes! Path part matches an app in the current Resolver.
|
26
|
-
if current_ns and current_ns in app_list:
|
27
|
-
# If we are reversing for a particular app, use that
|
28
|
-
# namespace.
|
29
|
-
ns = current_ns
|
30
|
-
elif ns not in app_list:
|
31
|
-
# The name isn't shared by one of the instances (i.e.,
|
32
|
-
# the default) so pick the first instance as the default.
|
33
|
-
ns = app_list[0]
|
34
|
-
except KeyError:
|
35
|
-
pass
|
36
|
-
|
37
|
-
if ns != current_ns:
|
38
|
-
current_path = None
|
39
|
-
|
40
|
-
try:
|
41
|
-
extra, resolver = resolver.namespace_dict[ns]
|
42
|
-
resolved_path.append(ns)
|
43
|
-
ns_pattern += extra
|
44
|
-
ns_converters.update(resolver.pattern.converters)
|
45
|
-
except KeyError as key:
|
46
|
-
if resolved_path:
|
47
|
-
raise NoReverseMatch(
|
48
|
-
"{} is not a registered namespace inside '{}'".format(
|
49
|
-
key, ":".join(resolved_path)
|
50
|
-
)
|
51
|
-
)
|
52
|
-
else:
|
53
|
-
raise NoReverseMatch(f"{key} is not a registered namespace")
|
54
|
-
if ns_pattern:
|
55
|
-
resolver = get_ns_resolver(
|
56
|
-
ns_pattern, resolver, tuple(ns_converters.items())
|
57
|
-
)
|
58
|
-
|
59
|
-
return resolver.reverse(view, *args, **kwargs)
|
60
|
-
|
61
|
-
|
62
|
-
reverse_lazy = lazy(reverse, str)
|
@@ -1 +0,0 @@
|
|
1
|
-
{"paths": {}, "version": "1.1", "hash": "d75171398898"}
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|