simple-module-cli 0.0.16__tar.gz → 0.0.18__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.
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/PKG-INFO +1 -1
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/pyproject.toml +1 -1
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/skills/simple-module-creating/SKILL.md +1 -1
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/skills/simple-module-database/SKILL.md +3 -15
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/tests/test_cli_package_update.py +11 -2
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/.gitignore +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/LICENSE +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/README.md +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/__init__.py +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/_env.py +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/app_project.py +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/case.py +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/catalog.py +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/cli.py +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/new.py +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/package_update.py +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/plugins.py +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/recipes.py +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/scaffolding.py +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/skills/README.md +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/skills/simple-module-cli/SKILL.md +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/skills/simple-module-conventions/SKILL.md +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/skills/simple-module-doctor/SKILL.md +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/skills/simple-module-inertia-pages/SKILL.md +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/skills/simple-module-locales/SKILL.md +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/skills/simple-module-migrations/SKILL.md +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/skills/simple-module-registries/SKILL.md +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/skills/simple-module-testing/SKILL.md +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/skills_cmd.py +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/.env.example +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/.gitignore +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/Makefile +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/README.md.tpl +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/_optional/background_tasks/Makefile.snippet +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/_optional/background_tasks/docker-compose.yml +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/_optional/background_tasks/host.Dockerfile +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/_optional/background_tasks/run_worker.py +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/_optional/background_tasks/worker.Dockerfile +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/alembic.ini +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/client_app/app.tsx +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/client_app/main.tsx +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/client_app/package.json.tpl +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/client_app/pages/Error.tsx +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/client_app/pages/Landing.tsx +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/client_app/pages.ts +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/client_app/styles.css +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/client_app/tsconfig.json +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/client_app/vite.config.ts +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/main.py +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/migrations/env.py +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/migrations/script.py.mako +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/migrations/versions/.gitkeep +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/pyproject.toml.tpl +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/routes.py +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/templates/index.html +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/module/.github/workflows/ci.yml +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/module/.github/workflows/publish.yml.tpl +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/module/.gitignore +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/module/README.md.tpl +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/module/__PACKAGE__/__init__.py +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/module/__PACKAGE__/endpoints/__init__.py +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/module/__PACKAGE__/endpoints/api.py.tpl +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/module/__PACKAGE__/module.py.tpl +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/module/__PACKAGE__/pages/.gitkeep +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/module/__PACKAGE__/services.py.tpl +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/module/__PACKAGE__/settings.py.tpl +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/module/package.json.tpl +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/module/pyproject.toml.tpl +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/module/tests/test_module.py.tpl +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/module/tsconfig.json.tpl +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/workspace/.env.example +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/workspace/.gitignore +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/workspace/Makefile +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/workspace/README.md.tpl +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/workspace/package.json.tpl +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/workspace/pyproject.toml.tpl +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/wizard.py +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/tests/test_build_packaging.py +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/tests/test_case.py +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/tests/test_cli_catalog.py +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/tests/test_cli_new.py +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/tests/test_cli_new_dest_tolerance.py +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/tests/test_cli_new_regressions.py +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/tests/test_cli_recipes.py +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/tests/test_cli_wizard.py +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/tests/test_env_helper.py +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/tests/test_no_framework_deps.py +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/tests/test_plugin_discovery.py +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/tests/test_scaffold_rollback.py +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/tests/test_scaffolding_host.py +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/tests/test_scaffolding_module.py +0 -0
- {simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/tests/test_skills_cmd.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: simple_module_cli
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.18
|
|
4
4
|
Summary: Standalone scaffolder for the SimpleModule framework — `smpy new`, `smpy create-module`, plugin host.
|
|
5
5
|
Project-URL: Homepage, https://github.com/antosubash/simple_module_python
|
|
6
6
|
Project-URL: Repository, https://github.com/antosubash/simple_module_python
|
|
@@ -68,7 +68,7 @@ class OrdersModule(ModuleBase):
|
|
|
68
68
|
)
|
|
69
69
|
```
|
|
70
70
|
|
|
71
|
-
`ModuleMeta.name` is load-bearing in
|
|
71
|
+
`ModuleMeta.name` is load-bearing in two places: the `__tablename__` prefix you author and the PascalCase Inertia component namespace. So directory `blog_posts` → `name="BlogPosts"` → `inertia.render("BlogPosts/Index", ...)` → `pages/Index.tsx`. Mismatches fire diagnostic codes `SM003` (orphan page) / `SM004` (phantom render).
|
|
72
72
|
|
|
73
73
|
For modules you intend to publish, also add `version=` (your module's semver) and `requires_framework=` (a PEP 440 spec for the framework API range, e.g. `">=1.0,<2.0"`) so the host can reject incompatible installs at boot.
|
|
74
74
|
|
|
@@ -18,26 +18,14 @@ from simple_module_db.mixins import AuditMixin
|
|
|
18
18
|
Base = create_module_base("orders")
|
|
19
19
|
|
|
20
20
|
class Order(Base, AuditMixin, table=True):
|
|
21
|
-
__tablename__ = "orders_order" #
|
|
21
|
+
__tablename__ = "orders_order" # module-name prefix; required
|
|
22
22
|
id: int | None = Field(default=None, primary_key=True)
|
|
23
23
|
name: str = Field(max_length=200)
|
|
24
24
|
```
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
## Table naming
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
from simple_module_db.base import create_module_base, DatabaseProvider
|
|
30
|
-
Base = create_module_base("orders", provider=DatabaseProvider.SQLITE)
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
## Postgres vs SQLite — the same code, different physical layout
|
|
34
|
-
|
|
35
|
-
| Provider | Physical placement | Required convention |
|
|
36
|
-
|---|---|---|
|
|
37
|
-
| **PostgreSQL** | One **schema** per module (`orders.order`, `users.user`). Created automatically. | Set `__tablename__` to a name unique within the module. |
|
|
38
|
-
| **SQLite** | Single schema. Cross-module name collisions break things. | Prefix `__tablename__` with the module name (`orders_order`). |
|
|
39
|
-
|
|
40
|
-
Always include the module-name prefix in `__tablename__`. It's redundant on Postgres (the schema already namespaces it) and **required** on SQLite. Code that runs in CI on SQLite and prod on Postgres needs both — pick the prefix.
|
|
28
|
+
All modules — on Postgres and SQLite alike — share the host's single schema. Cross-module name collisions break things, so `__tablename__` must be prefixed with the module name (e.g. `orders_order`, `users_user`). The framework does not enforce the prefix; it's a convention the migrations and diagnostics rely on.
|
|
41
29
|
|
|
42
30
|
## Mixins
|
|
43
31
|
|
|
@@ -157,14 +157,23 @@ def test_excludes_prereleases_by_default(tmp_path: Path) -> None:
|
|
|
157
157
|
|
|
158
158
|
|
|
159
159
|
def test_missing_pyproject_exits_nonzero(tmp_path: Path) -> None:
|
|
160
|
-
|
|
160
|
+
# typer >= 0.26 vendors click as ``typer._click``; the raised ``Exit``
|
|
161
|
+
# no longer inherits from ``click.exceptions.Exit``. Catch both.
|
|
162
|
+
_exit_types: tuple[type[BaseException], ...] = (click.exceptions.Exit,)
|
|
163
|
+
try:
|
|
164
|
+
from typer._click.exceptions import Exit as _TyExit
|
|
165
|
+
|
|
166
|
+
_exit_types = (*_exit_types, _TyExit)
|
|
167
|
+
except ImportError:
|
|
168
|
+
pass
|
|
169
|
+
with pytest.raises(_exit_types) as exc:
|
|
161
170
|
pu.run_update(
|
|
162
171
|
path=tmp_path,
|
|
163
172
|
dry_run=False,
|
|
164
173
|
include_pre=False,
|
|
165
174
|
fetcher=_fake_pypi({}),
|
|
166
175
|
)
|
|
167
|
-
assert exc.value
|
|
176
|
+
assert getattr(exc.value, "exit_code", getattr(exc.value, "code", None)) == 1
|
|
168
177
|
|
|
169
178
|
|
|
170
179
|
def test_cli_command_registered() -> None:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/.env.example
RENAMED
|
File without changes
|
{simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/.gitignore
RENAMED
|
File without changes
|
{simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/Makefile
RENAMED
|
File without changes
|
{simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/README.md.tpl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/alembic.ini
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/main.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/routes.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/module/.gitignore
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{simple_module_cli-0.0.16 → simple_module_cli-0.0.18}/simple_module_cli/templates/workspace/Makefile
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|