plain 0.41.0__tar.gz → 0.42.1__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.41.0 → plain-0.42.1}/PKG-INFO +1 -1
- {plain-0.41.0 → plain-0.42.1}/plain/logs/configure.py +9 -4
- {plain-0.41.0 → plain-0.42.1}/plain/templates/jinja/filters.py +2 -0
- {plain-0.41.0 → plain-0.42.1}/plain/urls/patterns.py +1 -33
- {plain-0.41.0 → plain-0.42.1}/pyproject.toml +1 -1
- {plain-0.41.0 → plain-0.42.1}/.gitignore +0 -0
- {plain-0.41.0 → plain-0.42.1}/LICENSE +0 -0
- {plain-0.41.0 → plain-0.42.1}/README.md +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/README.md +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/__main__.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/assets/README.md +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/assets/__init__.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/assets/compile.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/assets/finders.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/assets/fingerprints.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/assets/urls.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/assets/views.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/chores/README.md +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/chores/__init__.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/chores/registry.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/cli/README.md +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/cli/__init__.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/cli/build.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/cli/chores.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/cli/core.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/cli/docs.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/cli/formatting.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/cli/preflight.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/cli/print.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/cli/registry.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/cli/scaffold.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/cli/settings.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/cli/shell.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/cli/startup.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/cli/urls.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/cli/utils.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/csrf/README.md +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/csrf/middleware.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/csrf/views.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/debug.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/exceptions.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/forms/README.md +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/forms/__init__.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/forms/boundfield.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/forms/exceptions.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/forms/fields.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/forms/forms.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/http/README.md +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/http/__init__.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/http/cookie.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/http/multipartparser.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/http/request.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/http/response.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/internal/__init__.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/internal/files/__init__.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/internal/files/base.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/internal/files/locks.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/internal/files/move.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/internal/files/temp.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/internal/files/uploadedfile.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/internal/files/uploadhandler.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/internal/files/utils.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/internal/handlers/__init__.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/internal/handlers/base.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/internal/handlers/exception.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/internal/handlers/wsgi.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/internal/middleware/__init__.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/internal/middleware/headers.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/internal/middleware/https.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/internal/middleware/slash.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/json.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/logs/README.md +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/logs/__init__.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/logs/loggers.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/logs/utils.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/packages/README.md +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/packages/__init__.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/packages/config.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/packages/registry.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/paginator.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/preflight/README.md +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/preflight/__init__.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/preflight/files.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/preflight/messages.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/preflight/registry.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/preflight/security.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/preflight/urls.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/runtime/README.md +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/runtime/__init__.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/runtime/global_settings.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/runtime/user_settings.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/signals/README.md +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/signals/__init__.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/signals/dispatch/__init__.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/signals/dispatch/dispatcher.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/signals/dispatch/license.txt +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/signing.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/templates/README.md +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/templates/__init__.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/templates/core.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/templates/jinja/__init__.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/templates/jinja/environments.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/templates/jinja/extensions.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/templates/jinja/globals.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/test/README.md +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/test/__init__.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/test/client.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/test/encoding.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/test/exceptions.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/urls/README.md +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/urls/__init__.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/urls/converters.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/urls/exceptions.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/urls/resolvers.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/urls/routers.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/urls/utils.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/utils/README.md +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/utils/__init__.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/utils/cache.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/utils/connection.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/utils/crypto.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/utils/datastructures.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/utils/dateparse.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/utils/deconstruct.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/utils/decorators.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/utils/duration.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/utils/encoding.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/utils/functional.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/utils/hashable.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/utils/html.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/utils/http.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/utils/inspect.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/utils/ipv6.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/utils/itercompat.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/utils/module_loading.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/utils/regex_helper.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/utils/safestring.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/utils/text.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/utils/timesince.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/utils/timezone.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/utils/tree.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/validators.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/views/README.md +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/views/__init__.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/views/base.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/views/csrf.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/views/errors.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/views/exceptions.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/views/forms.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/views/objects.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/views/redirect.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/views/templates.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/plain/wsgi.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/tests/.bolt/assets_collected/assets.json +0 -0
- {plain-0.41.0 → plain-0.42.1}/tests/.gitignore +0 -0
- {plain-0.41.0 → plain-0.42.1}/tests/app/.gitignore +0 -0
- {plain-0.41.0 → plain-0.42.1}/tests/app/settings.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/tests/app/test/__init__.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/tests/app/test/default_settings.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/tests/app/urls.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/tests/conftest.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/tests/test_cli.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/tests/test_runtime.py +0 -0
- {plain-0.41.0 → plain-0.42.1}/tests/test_wsgi.py +0 -0
@@ -14,19 +14,24 @@ def configure_logging(logging_settings):
|
|
14
14
|
},
|
15
15
|
},
|
16
16
|
"handlers": {
|
17
|
-
"
|
18
|
-
"level": "INFO",
|
17
|
+
"plain_console": {
|
18
|
+
"level": environ.get("PLAIN_LOG_LEVEL", "INFO"),
|
19
|
+
"class": "logging.StreamHandler",
|
20
|
+
"formatter": "simple",
|
21
|
+
},
|
22
|
+
"app_console": {
|
23
|
+
"level": environ.get("APP_LOG_LEVEL", "INFO"),
|
19
24
|
"class": "logging.StreamHandler",
|
20
25
|
"formatter": "simple",
|
21
26
|
},
|
22
27
|
},
|
23
28
|
"loggers": {
|
24
29
|
"plain": {
|
25
|
-
"handlers": ["
|
30
|
+
"handlers": ["plain_console"],
|
26
31
|
"level": environ.get("PLAIN_LOG_LEVEL", "INFO"),
|
27
32
|
},
|
28
33
|
"app": {
|
29
|
-
"handlers": ["
|
34
|
+
"handlers": ["app_console"],
|
30
35
|
"level": environ.get("APP_LOG_LEVEL", "INFO"),
|
31
36
|
"propagate": False,
|
32
37
|
},
|
@@ -19,6 +19,8 @@ default_filters = {
|
|
19
19
|
# The standard Python ones
|
20
20
|
"strftime": datetime.datetime.strftime,
|
21
21
|
"strptime": datetime.datetime.strptime,
|
22
|
+
"fromtimestamp": datetime.datetime.fromtimestamp,
|
23
|
+
"fromisoformat": datetime.datetime.fromisoformat,
|
22
24
|
# To convert to user time zone
|
23
25
|
"localtime": localtime_filter,
|
24
26
|
"timeuntil": timeuntil,
|
@@ -1,13 +1,10 @@
|
|
1
|
-
import functools
|
2
|
-
import inspect
|
3
1
|
import re
|
4
2
|
import string
|
5
3
|
|
6
4
|
from plain.exceptions import ImproperlyConfigured
|
7
5
|
from plain.internal import internalcode
|
8
|
-
from plain.preflight import
|
6
|
+
from plain.preflight import Warning
|
9
7
|
from plain.runtime import settings
|
10
|
-
from plain.utils.functional import cached_property
|
11
8
|
from plain.utils.regex_helper import _lazy_re_compile
|
12
9
|
|
13
10
|
from .converters import get_converter
|
@@ -226,20 +223,6 @@ class URLPattern:
|
|
226
223
|
else:
|
227
224
|
return []
|
228
225
|
|
229
|
-
def _check_view(self):
|
230
|
-
from plain.views import View
|
231
|
-
|
232
|
-
view = self.view
|
233
|
-
if inspect.isclass(view) and issubclass(view, View):
|
234
|
-
return [
|
235
|
-
Error(
|
236
|
-
f"Your URL pattern {self.pattern.describe()} has an invalid view, pass {view.__name__}.as_view() "
|
237
|
-
f"instead of {view.__name__}.",
|
238
|
-
id="urls.E009",
|
239
|
-
)
|
240
|
-
]
|
241
|
-
return []
|
242
|
-
|
243
226
|
def resolve(self, path):
|
244
227
|
match = self.pattern.match(path)
|
245
228
|
if match:
|
@@ -253,18 +236,3 @@ class URLPattern:
|
|
253
236
|
url_name=self.pattern.name,
|
254
237
|
route=str(self.pattern),
|
255
238
|
)
|
256
|
-
|
257
|
-
@cached_property
|
258
|
-
def lookup_str(self):
|
259
|
-
"""
|
260
|
-
A string that identifies the view (e.g. 'path.to.view_function' or
|
261
|
-
'path.to.ClassBasedView').
|
262
|
-
"""
|
263
|
-
view = self.view
|
264
|
-
if isinstance(view, functools.partial):
|
265
|
-
view = view.func
|
266
|
-
if hasattr(view, "view_class"):
|
267
|
-
view = view.view_class
|
268
|
-
elif not hasattr(view, "__name__"):
|
269
|
-
return view.__module__ + "." + view.__class__.__name__
|
270
|
-
return view.__module__ + "." + view.__qualname__
|
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
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|