simple-module-cli 0.0.17__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.
Files changed (92) hide show
  1. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/PKG-INFO +1 -1
  2. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/pyproject.toml +1 -1
  3. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/skills/simple-module-creating/SKILL.md +1 -1
  4. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/skills/simple-module-database/SKILL.md +3 -15
  5. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/.gitignore +0 -0
  6. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/LICENSE +0 -0
  7. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/README.md +0 -0
  8. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/__init__.py +0 -0
  9. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/_env.py +0 -0
  10. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/app_project.py +0 -0
  11. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/case.py +0 -0
  12. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/catalog.py +0 -0
  13. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/cli.py +0 -0
  14. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/new.py +0 -0
  15. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/package_update.py +0 -0
  16. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/plugins.py +0 -0
  17. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/recipes.py +0 -0
  18. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/scaffolding.py +0 -0
  19. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/skills/README.md +0 -0
  20. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/skills/simple-module-cli/SKILL.md +0 -0
  21. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/skills/simple-module-conventions/SKILL.md +0 -0
  22. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/skills/simple-module-doctor/SKILL.md +0 -0
  23. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/skills/simple-module-inertia-pages/SKILL.md +0 -0
  24. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/skills/simple-module-locales/SKILL.md +0 -0
  25. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/skills/simple-module-migrations/SKILL.md +0 -0
  26. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/skills/simple-module-registries/SKILL.md +0 -0
  27. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/skills/simple-module-testing/SKILL.md +0 -0
  28. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/skills_cmd.py +0 -0
  29. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/.env.example +0 -0
  30. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/.gitignore +0 -0
  31. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/Makefile +0 -0
  32. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/README.md.tpl +0 -0
  33. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/_optional/background_tasks/Makefile.snippet +0 -0
  34. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/_optional/background_tasks/docker-compose.yml +0 -0
  35. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/_optional/background_tasks/host.Dockerfile +0 -0
  36. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/_optional/background_tasks/run_worker.py +0 -0
  37. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/_optional/background_tasks/worker.Dockerfile +0 -0
  38. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/alembic.ini +0 -0
  39. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/client_app/app.tsx +0 -0
  40. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/client_app/main.tsx +0 -0
  41. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/client_app/package.json.tpl +0 -0
  42. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/client_app/pages/Error.tsx +0 -0
  43. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/client_app/pages/Landing.tsx +0 -0
  44. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/client_app/pages.ts +0 -0
  45. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/client_app/styles.css +0 -0
  46. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/client_app/tsconfig.json +0 -0
  47. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/client_app/vite.config.ts +0 -0
  48. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/main.py +0 -0
  49. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/migrations/env.py +0 -0
  50. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/migrations/script.py.mako +0 -0
  51. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/migrations/versions/.gitkeep +0 -0
  52. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/pyproject.toml.tpl +0 -0
  53. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/routes.py +0 -0
  54. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/templates/host/templates/index.html +0 -0
  55. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/templates/module/.github/workflows/ci.yml +0 -0
  56. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/templates/module/.github/workflows/publish.yml.tpl +0 -0
  57. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/templates/module/.gitignore +0 -0
  58. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/templates/module/README.md.tpl +0 -0
  59. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/templates/module/__PACKAGE__/__init__.py +0 -0
  60. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/templates/module/__PACKAGE__/endpoints/__init__.py +0 -0
  61. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/templates/module/__PACKAGE__/endpoints/api.py.tpl +0 -0
  62. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/templates/module/__PACKAGE__/module.py.tpl +0 -0
  63. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/templates/module/__PACKAGE__/pages/.gitkeep +0 -0
  64. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/templates/module/__PACKAGE__/services.py.tpl +0 -0
  65. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/templates/module/__PACKAGE__/settings.py.tpl +0 -0
  66. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/templates/module/package.json.tpl +0 -0
  67. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/templates/module/pyproject.toml.tpl +0 -0
  68. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/templates/module/tests/test_module.py.tpl +0 -0
  69. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/templates/module/tsconfig.json.tpl +0 -0
  70. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/templates/workspace/.env.example +0 -0
  71. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/templates/workspace/.gitignore +0 -0
  72. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/templates/workspace/Makefile +0 -0
  73. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/templates/workspace/README.md.tpl +0 -0
  74. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/templates/workspace/package.json.tpl +0 -0
  75. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/templates/workspace/pyproject.toml.tpl +0 -0
  76. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/simple_module_cli/wizard.py +0 -0
  77. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/tests/test_build_packaging.py +0 -0
  78. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/tests/test_case.py +0 -0
  79. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/tests/test_cli_catalog.py +0 -0
  80. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/tests/test_cli_new.py +0 -0
  81. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/tests/test_cli_new_dest_tolerance.py +0 -0
  82. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/tests/test_cli_new_regressions.py +0 -0
  83. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/tests/test_cli_package_update.py +0 -0
  84. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/tests/test_cli_recipes.py +0 -0
  85. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/tests/test_cli_wizard.py +0 -0
  86. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/tests/test_env_helper.py +0 -0
  87. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/tests/test_no_framework_deps.py +0 -0
  88. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/tests/test_plugin_discovery.py +0 -0
  89. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/tests/test_scaffold_rollback.py +0 -0
  90. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/tests/test_scaffolding_host.py +0 -0
  91. {simple_module_cli-0.0.17 → simple_module_cli-0.0.18}/tests/test_scaffolding_module.py +0 -0
  92. {simple_module_cli-0.0.17 → 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.17
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
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "simple_module_cli"
3
- version = "0.0.17"
3
+ version = "0.0.18"
4
4
  description = "Standalone scaffolder for the SimpleModule framework — `smpy new`, `smpy create-module`, plugin host."
5
5
  readme = "README.md"
6
6
  license = "MIT"
@@ -68,7 +68,7 @@ class OrdersModule(ModuleBase):
68
68
  )
69
69
  ```
70
70
 
71
- `ModuleMeta.name` is load-bearing in three places: the Postgres schema name, the SQLite `__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).
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" # SQLite-safe prefix; required (see below)
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
- The provider is auto-detected from `SM_DATABASE_URL`. Pin it explicitly only in tests:
26
+ ## Table naming
27
27
 
28
- ```python
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