plain 0.21.4__tar.gz → 0.21.5__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.21.4 → plain-0.21.5}/PKG-INFO +1 -1
- {plain-0.21.4 → plain-0.21.5}/plain/cli/packages.py +25 -8
- {plain-0.21.4 → plain-0.21.5}/pyproject.toml +1 -1
- {plain-0.21.4 → plain-0.21.5}/.gitignore +0 -0
- {plain-0.21.4 → plain-0.21.5}/LICENSE +0 -0
- {plain-0.21.4 → plain-0.21.5}/README.md +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/README.md +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/__main__.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/assets/README.md +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/assets/__init__.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/assets/compile.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/assets/finders.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/assets/fingerprints.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/assets/urls.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/assets/views.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/cli/README.md +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/cli/__init__.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/cli/cli.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/cli/formatting.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/cli/print.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/cli/startup.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/csrf/README.md +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/csrf/middleware.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/csrf/views.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/debug.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/exceptions.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/forms/README.md +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/forms/__init__.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/forms/boundfield.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/forms/exceptions.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/forms/fields.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/forms/forms.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/http/README.md +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/http/__init__.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/http/cookie.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/http/multipartparser.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/http/request.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/http/response.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/internal/__init__.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/internal/files/README.md +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/internal/files/__init__.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/internal/files/base.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/internal/files/locks.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/internal/files/move.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/internal/files/temp.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/internal/files/uploadedfile.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/internal/files/uploadhandler.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/internal/files/utils.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/internal/handlers/__init__.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/internal/handlers/base.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/internal/handlers/exception.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/internal/handlers/wsgi.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/internal/middleware/__init__.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/internal/middleware/headers.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/internal/middleware/https.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/internal/middleware/slash.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/json.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/logs/README.md +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/logs/__init__.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/logs/configure.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/logs/loggers.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/logs/utils.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/packages/README.md +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/packages/__init__.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/packages/config.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/packages/registry.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/paginator.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/preflight/README.md +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/preflight/__init__.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/preflight/files.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/preflight/messages.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/preflight/registry.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/preflight/security.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/preflight/urls.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/runtime/README.md +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/runtime/__init__.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/runtime/global_settings.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/runtime/user_settings.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/signals/README.md +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/signals/__init__.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/signals/dispatch/__init__.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/signals/dispatch/dispatcher.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/signals/dispatch/license.txt +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/signing.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/templates/README.md +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/templates/__init__.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/templates/core.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/templates/jinja/README.md +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/templates/jinja/__init__.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/templates/jinja/environments.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/templates/jinja/extensions.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/templates/jinja/filters.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/templates/jinja/globals.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/test/README.md +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/test/__init__.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/test/client.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/urls/README.md +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/urls/__init__.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/urls/base.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/urls/conf.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/urls/converters.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/urls/exceptions.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/urls/resolvers.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/utils/README.md +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/utils/__init__.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/utils/_os.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/utils/cache.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/utils/connection.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/utils/crypto.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/utils/datastructures.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/utils/dateformat.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/utils/dateparse.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/utils/dates.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/utils/deconstruct.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/utils/decorators.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/utils/deprecation.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/utils/duration.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/utils/email.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/utils/encoding.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/utils/functional.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/utils/hashable.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/utils/html.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/utils/http.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/utils/inspect.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/utils/ipv6.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/utils/itercompat.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/utils/module_loading.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/utils/regex_helper.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/utils/safestring.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/utils/text.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/utils/timesince.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/utils/timezone.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/utils/tree.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/validators.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/views/README.md +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/views/__init__.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/views/base.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/views/csrf.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/views/errors.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/views/exceptions.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/views/forms.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/views/objects.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/views/redirect.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/views/templates.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/plain/wsgi.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/tests/.bolt/assets_collected/assets.json +0 -0
- {plain-0.21.4 → plain-0.21.5}/tests/.gitignore +0 -0
- {plain-0.21.4 → plain-0.21.5}/tests/app/.gitignore +0 -0
- {plain-0.21.4 → plain-0.21.5}/tests/app/settings.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/tests/app/test/__init__.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/tests/app/test/default_settings.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/tests/app/urls.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/tests/conftest.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/tests/test_cli.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/tests/test_runtime.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/tests/test_wsgi.py +0 -0
- {plain-0.21.4 → plain-0.21.5}/uv.lock +0 -0
@@ -14,10 +14,11 @@ class InstalledPackagesGroup(click.Group):
|
|
14
14
|
"""
|
15
15
|
|
16
16
|
PLAIN_APPS_PREFIX = "plain."
|
17
|
+
APP_PREFIX = "app."
|
17
18
|
MODULE_NAME = "cli"
|
18
19
|
|
19
20
|
def list_commands(self, ctx):
|
20
|
-
|
21
|
+
command_names = []
|
21
22
|
|
22
23
|
# Get installed packages with a cli.py module
|
23
24
|
for app in packages.get_package_configs():
|
@@ -26,21 +27,37 @@ class InstalledPackagesGroup(click.Group):
|
|
26
27
|
|
27
28
|
cli_name = app.name
|
28
29
|
|
30
|
+
# Change plain.{pkg} to just {pkg}
|
29
31
|
if cli_name.startswith(self.PLAIN_APPS_PREFIX):
|
30
32
|
cli_name = cli_name[len(self.PLAIN_APPS_PREFIX) :]
|
31
33
|
|
32
|
-
|
34
|
+
# Change app.{pkg} to just {pkg}
|
35
|
+
if cli_name.startswith(self.APP_PREFIX):
|
36
|
+
cli_name = cli_name[len(self.APP_PREFIX) :]
|
33
37
|
|
34
|
-
|
38
|
+
if cli_name in command_names:
|
39
|
+
raise ValueError(
|
40
|
+
f"Duplicate command name {cli_name} found in installed packages."
|
41
|
+
)
|
42
|
+
|
43
|
+
command_names.append(cli_name)
|
44
|
+
|
45
|
+
return command_names
|
35
46
|
|
36
47
|
def get_command(self, ctx, name):
|
37
|
-
# Try it as plain.x and just x (we don't know ahead of time which it is
|
38
|
-
for n in [self.PLAIN_APPS_PREFIX + name, name]:
|
39
|
-
|
40
|
-
|
48
|
+
# Try it as plain.x, app.x, and just x (we don't know ahead of time which it is)
|
49
|
+
for n in [self.PLAIN_APPS_PREFIX + name, self.APP_PREFIX + name, name]:
|
50
|
+
try:
|
51
|
+
if not find_spec(n):
|
52
|
+
# plain.<name> doesn't exist at all
|
53
|
+
continue
|
54
|
+
except ModuleNotFoundError:
|
41
55
|
continue
|
42
56
|
|
43
|
-
|
57
|
+
try:
|
58
|
+
if not find_spec(f"{n}.{self.MODULE_NAME}"):
|
59
|
+
continue
|
60
|
+
except ModuleNotFoundError:
|
44
61
|
continue
|
45
62
|
|
46
63
|
cli = importlib.import_module(f"{n}.{self.MODULE_NAME}")
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|