plain 0.9.0__tar.gz → 0.10.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.9.0 → plain-0.10.0}/PKG-INFO +1 -2
- {plain-0.9.0 → plain-0.10.0}/plain/runtime/__init__.py +6 -9
- {plain-0.9.0 → plain-0.10.0}/pyproject.toml +1 -2
- {plain-0.9.0 → plain-0.10.0}/LICENSE +0 -0
- {plain-0.9.0 → plain-0.10.0}/README.md +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/README.md +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/__main__.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/assets/README.md +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/assets/__init__.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/assets/compile.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/assets/finders.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/assets/fingerprints.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/assets/urls.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/assets/views.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/cli/README.md +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/cli/__init__.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/cli/cli.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/cli/formatting.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/cli/packages.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/cli/print.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/cli/startup.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/csrf/README.md +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/csrf/middleware.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/csrf/views.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/debug.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/exceptions.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/forms/README.md +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/forms/__init__.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/forms/boundfield.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/forms/exceptions.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/forms/fields.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/forms/forms.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/http/README.md +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/http/__init__.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/http/cookie.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/http/multipartparser.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/http/request.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/http/response.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/internal/__init__.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/internal/files/README.md +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/internal/files/__init__.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/internal/files/base.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/internal/files/locks.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/internal/files/move.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/internal/files/temp.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/internal/files/uploadedfile.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/internal/files/uploadhandler.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/internal/files/utils.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/internal/handlers/__init__.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/internal/handlers/base.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/internal/handlers/exception.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/internal/handlers/wsgi.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/internal/middleware/__init__.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/internal/middleware/headers.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/internal/middleware/https.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/internal/middleware/slash.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/json.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/logs/README.md +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/logs/__init__.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/logs/configure.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/logs/loggers.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/logs/utils.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/packages/README.md +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/packages/__init__.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/packages/config.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/packages/registry.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/paginator.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/preflight/README.md +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/preflight/__init__.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/preflight/files.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/preflight/messages.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/preflight/registry.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/preflight/security/__init__.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/preflight/security/base.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/preflight/security/csrf.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/preflight/urls.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/runtime/README.md +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/runtime/global_settings.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/runtime/user_settings.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/signals/README.md +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/signals/__init__.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/signals/dispatch/__init__.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/signals/dispatch/dispatcher.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/signals/dispatch/license.txt +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/signing.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/templates/README.md +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/templates/__init__.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/templates/core.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/templates/jinja/README.md +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/templates/jinja/__init__.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/templates/jinja/defaults.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/templates/jinja/extensions.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/templates/jinja/filters.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/templates/jinja/globals.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/test/README.md +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/test/__init__.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/test/client.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/urls/README.md +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/urls/__init__.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/urls/base.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/urls/conf.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/urls/converters.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/urls/exceptions.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/urls/resolvers.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/utils/README.md +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/utils/__init__.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/utils/_os.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/utils/cache.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/utils/connection.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/utils/crypto.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/utils/datastructures.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/utils/dateformat.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/utils/dateparse.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/utils/dates.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/utils/deconstruct.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/utils/decorators.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/utils/deprecation.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/utils/duration.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/utils/email.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/utils/encoding.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/utils/functional.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/utils/hashable.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/utils/html.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/utils/http.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/utils/inspect.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/utils/ipv6.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/utils/itercompat.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/utils/module_loading.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/utils/regex_helper.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/utils/safestring.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/utils/termcolors.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/utils/text.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/utils/timesince.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/utils/timezone.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/utils/tree.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/validators.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/views/README.md +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/views/__init__.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/views/base.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/views/csrf.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/views/errors.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/views/exceptions.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/views/forms.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/views/objects.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/views/redirect.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/views/templates.py +0 -0
- {plain-0.9.0 → plain-0.10.0}/plain/wsgi.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: plain
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.10.0
|
4
4
|
Summary: A web framework for building products with Python.
|
5
5
|
Author: Dave Gaeddert
|
6
6
|
Author-email: dave.gaeddert@dropseed.dev
|
@@ -11,7 +11,6 @@ Classifier: Programming Language :: Python :: 3.12
|
|
11
11
|
Classifier: Programming Language :: Python :: 3.13
|
12
12
|
Requires-Dist: click (>=8.0.0)
|
13
13
|
Requires-Dist: jinja2 (>=3.1.2,<4.0.0)
|
14
|
-
Requires-Dist: python-dotenv (>=1.0.0,<2.0.0)
|
15
14
|
Description-Content-Type: text/markdown
|
16
15
|
|
17
16
|
<!-- This file is compiled from plain/plain/README.md. Do not edit this file directly. -->
|
@@ -1,10 +1,8 @@
|
|
1
1
|
import importlib.metadata
|
2
2
|
import sys
|
3
|
-
from
|
3
|
+
from importlib.metadata import entry_points
|
4
4
|
from pathlib import Path
|
5
5
|
|
6
|
-
from dotenv import load_dotenv
|
7
|
-
|
8
6
|
from .user_settings import Settings
|
9
7
|
|
10
8
|
try:
|
@@ -29,6 +27,11 @@ def setup():
|
|
29
27
|
Configure the settings (this happens as a side effect of accessing the
|
30
28
|
first setting), configure logging and populate the app registry.
|
31
29
|
"""
|
30
|
+
|
31
|
+
# Packages can hook into the setup process through an entrypoint.
|
32
|
+
for entry_point in entry_points().select(group="plain.setup"):
|
33
|
+
entry_point.load()()
|
34
|
+
|
32
35
|
from plain.logs import configure_logging
|
33
36
|
from plain.packages import packages
|
34
37
|
|
@@ -43,12 +46,6 @@ def setup():
|
|
43
46
|
if APP_PATH.parent not in sys.path:
|
44
47
|
sys.path.insert(0, APP_PATH.parent.as_posix())
|
45
48
|
|
46
|
-
# Load .env files automatically before settings
|
47
|
-
if app_env := environ.get("PLAIN_ENV", ""):
|
48
|
-
load_dotenv(f".env.{app_env}")
|
49
|
-
else:
|
50
|
-
load_dotenv(".env")
|
51
|
-
|
52
49
|
configure_logging(settings.LOGGING)
|
53
50
|
|
54
51
|
packages.populate(settings.INSTALLED_PACKAGES)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
[tool.poetry]
|
2
2
|
name = "plain"
|
3
|
-
version = "0.
|
3
|
+
version = "0.10.0"
|
4
4
|
description = "A web framework for building products with Python."
|
5
5
|
authors = ["Dave Gaeddert <dave.gaeddert@dropseed.dev>"]
|
6
6
|
readme = "README.md"
|
@@ -15,7 +15,6 @@ plain = "plain.cli:cli"
|
|
15
15
|
[tool.poetry.dependencies]
|
16
16
|
python = "^3.11"
|
17
17
|
jinja2 = "^3.1.2"
|
18
|
-
python-dotenv = "^1.0.0"
|
19
18
|
click = ">=8.0.0"
|
20
19
|
|
21
20
|
[tool.poetry.group.dev.dependencies]
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|