tina4-python 3.1.2__tar.gz → 3.1.3__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 (132) hide show
  1. {tina4_python-3.1.2 → tina4_python-3.1.3}/PKG-INFO +26 -9
  2. {tina4_python-3.1.2 → tina4_python-3.1.3}/README.md +25 -1
  3. {tina4_python-3.1.2 → tina4_python-3.1.3}/pyproject.toml +2 -10
  4. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/core/server.py +1 -1
  5. {tina4_python-3.1.2 → tina4_python-3.1.3}/.gitignore +0 -0
  6. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/CLAUDE.md +0 -0
  7. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/HtmlElement.py +0 -0
  8. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/Testing.py +0 -0
  9. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/__init__.py +0 -0
  10. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/ai/__init__.py +0 -0
  11. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/api/__init__.py +0 -0
  12. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/auth/__init__.py +0 -0
  13. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/cache/__init__.py +0 -0
  14. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/cli/__init__.py +0 -0
  15. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/container/__init__.py +0 -0
  16. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/core/__init__.py +0 -0
  17. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/core/cache.py +0 -0
  18. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/core/constants.py +0 -0
  19. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/core/events.py +0 -0
  20. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/core/middleware.py +0 -0
  21. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/core/request.py +0 -0
  22. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/core/response.py +0 -0
  23. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/core/router.py +0 -0
  24. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/crud/__init__.py +0 -0
  25. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/database/__init__.py +0 -0
  26. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/database/adapter.py +0 -0
  27. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/database/connection.py +0 -0
  28. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/database/firebird.py +0 -0
  29. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/database/mssql.py +0 -0
  30. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/database/mysql.py +0 -0
  31. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/database/odbc.py +0 -0
  32. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/database/postgres.py +0 -0
  33. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/database/sqlite.py +0 -0
  34. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/debug/__init__.py +0 -0
  35. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/debug/error_overlay.py +0 -0
  36. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/dev_admin/__init__.py +0 -0
  37. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/dotenv/__init__.py +0 -0
  38. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/frond/FROND.md +0 -0
  39. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/frond/__init__.py +0 -0
  40. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/frond/engine.py +0 -0
  41. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/gallery/auth/meta.json +0 -0
  42. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/gallery/auth/src/routes/api/gallery_auth.py +0 -0
  43. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/gallery/database/meta.json +0 -0
  44. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/gallery/database/src/routes/api/gallery_db.py +0 -0
  45. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/gallery/error-overlay/meta.json +0 -0
  46. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/gallery/error-overlay/src/routes/api/gallery_crash.py +0 -0
  47. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/gallery/orm/meta.json +0 -0
  48. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/gallery/orm/src/orm/Product.py +0 -0
  49. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/gallery/orm/src/routes/api/gallery_products.py +0 -0
  50. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/gallery/queue/meta.json +0 -0
  51. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/gallery/queue/src/routes/api/gallery_queue.py +0 -0
  52. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/gallery/rest-api/meta.json +0 -0
  53. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/gallery/rest-api/src/routes/api/gallery_hello.py +0 -0
  54. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/gallery/templates/meta.json +0 -0
  55. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/gallery/templates/src/routes/gallery_page.py +0 -0
  56. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/gallery/templates/src/templates/gallery_page.twig +0 -0
  57. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/graphql/__init__.py +0 -0
  58. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/i18n/__init__.py +0 -0
  59. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/messenger/__init__.py +0 -0
  60. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/migration/__init__.py +0 -0
  61. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/migration/runner.py +0 -0
  62. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/orm/__init__.py +0 -0
  63. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/orm/fields.py +0 -0
  64. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/orm/model.py +0 -0
  65. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/public/css/tina4.css +0 -0
  66. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/public/css/tina4.min.css +0 -0
  67. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/public/favicon.ico +0 -0
  68. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/public/images/logo.svg +0 -0
  69. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/public/images/tina4-logo-icon.webp +0 -0
  70. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/public/js/frond.min.js +0 -0
  71. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/public/js/tina4-dev-admin.min.js +0 -0
  72. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/public/js/tina4.min.js +0 -0
  73. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/public/swagger/index.html +0 -0
  74. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/public/swagger/oauth2-redirect.html +0 -0
  75. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/queue/__init__.py +0 -0
  76. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/queue_backends/__init__.py +0 -0
  77. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/queue_backends/kafka_backend.py +0 -0
  78. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/queue_backends/rabbitmq_backend.py +0 -0
  79. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/scss/__init__.py +0 -0
  80. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/scss/tina4css/_alerts.scss +0 -0
  81. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/scss/tina4css/_badges.scss +0 -0
  82. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/scss/tina4css/_buttons.scss +0 -0
  83. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/scss/tina4css/_cards.scss +0 -0
  84. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/scss/tina4css/_forms.scss +0 -0
  85. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/scss/tina4css/_grid.scss +0 -0
  86. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/scss/tina4css/_modals.scss +0 -0
  87. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/scss/tina4css/_nav.scss +0 -0
  88. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/scss/tina4css/_reset.scss +0 -0
  89. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/scss/tina4css/_tables.scss +0 -0
  90. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/scss/tina4css/_typography.scss +0 -0
  91. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/scss/tina4css/_utilities.scss +0 -0
  92. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/scss/tina4css/_variables.scss +0 -0
  93. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/scss/tina4css/base.scss +0 -0
  94. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/scss/tina4css/colors.scss +0 -0
  95. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/scss/tina4css/tina4.scss +0 -0
  96. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/seeder/__init__.py +0 -0
  97. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/service/__init__.py +0 -0
  98. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/session/__init__.py +0 -0
  99. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/session_handlers/__init__.py +0 -0
  100. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/session_handlers/mongodb_handler.py +0 -0
  101. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/session_handlers/redis_handler.py +0 -0
  102. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/session_handlers/valkey_handler.py +0 -0
  103. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/swagger/__init__.py +0 -0
  104. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/templates/components/crud.twig +0 -0
  105. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/templates/docker/distroless/Dockerfile +0 -0
  106. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/templates/docker/poetry/Dockerfile +0 -0
  107. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/templates/docker/python/Dockerfile +0 -0
  108. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/templates/docker/uv/Dockerfile +0 -0
  109. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/templates/errors/302.twig +0 -0
  110. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/templates/errors/401.twig +0 -0
  111. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/templates/errors/403.twig +0 -0
  112. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/templates/errors/404.twig +0 -0
  113. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/templates/errors/500.twig +0 -0
  114. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/templates/errors/502.twig +0 -0
  115. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/templates/errors/503.twig +0 -0
  116. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/templates/errors/base.twig +0 -0
  117. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/templates/frontend/README.md +0 -0
  118. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/templates/readme.md +0 -0
  119. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/translations/af/LC_MESSAGES/messages.mo +0 -0
  120. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/translations/af/LC_MESSAGES/messages.po +0 -0
  121. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/translations/en/LC_MESSAGES/messages.mo +0 -0
  122. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/translations/en/LC_MESSAGES/messages.po +0 -0
  123. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/translations/es/LC_MESSAGES/messages.mo +0 -0
  124. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/translations/es/LC_MESSAGES/messages.po +0 -0
  125. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/translations/fr/LC_MESSAGES/messages.mo +0 -0
  126. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/translations/fr/LC_MESSAGES/messages.po +0 -0
  127. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/translations/ja/LC_MESSAGES/messages.mo +0 -0
  128. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/translations/ja/LC_MESSAGES/messages.po +0 -0
  129. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/translations/zh/LC_MESSAGES/messages.mo +0 -0
  130. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/translations/zh/LC_MESSAGES/messages.po +0 -0
  131. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/websocket/__init__.py +0 -0
  132. {tina4_python-3.1.2 → tina4_python-3.1.3}/tina4_python/wsdl/__init__.py +0 -0
@@ -1,17 +1,10 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tina4-python
3
- Version: 3.1.2
3
+ Version: 3.1.3
4
4
  Summary: Tina4 Python v3 — Zero-dependency, lightweight web framework
5
5
  Author-email: Andre van Zuydam <andrevanzuydam@gmail.com>
6
6
  License: MIT
7
7
  Requires-Python: >=3.12
8
- Requires-Dist: fdb>=2.0.4
9
- Requires-Dist: mysql-connector-python>=9.6.0
10
- Requires-Dist: pika>=1.3.2
11
- Requires-Dist: psycopg2-binary>=2.9.11
12
- Requires-Dist: pymongo>=4.16.0
13
- Requires-Dist: pymssql>=2.3.13
14
- Requires-Dist: redis>=7.3.0
15
8
  Provides-Extra: all-db
16
9
  Requires-Dist: firebird-driver>=1.10; extra == 'all-db'
17
10
  Requires-Dist: mysql-connector-python>=9.0; extra == 'all-db'
@@ -82,7 +75,31 @@ cd my-app && tina4 serve
82
75
 
83
76
  Open http://localhost:7145 — your app is running.
84
77
 
85
- > **Alternative** (without Rust CLI): `pip install tina4-python` then create `app.py` with `from tina4_python.core import run; run()`
78
+ <details>
79
+ <summary><strong>Without the Tina4 CLI</strong></summary>
80
+
81
+ ```bash
82
+ # 1. Create project
83
+ mkdir my-app && cd my-app
84
+ uv init && uv add tina4-python
85
+
86
+ # 2. Create entry point
87
+ echo 'from tina4_python.core import run; run()' > app.py
88
+
89
+ # 3. Create .env
90
+ echo 'TINA4_DEBUG=true' > .env
91
+ echo 'TINA4_LOG_LEVEL=ALL' >> .env
92
+
93
+ # 4. Create route directory
94
+ mkdir -p src/routes
95
+
96
+ # 5. Run
97
+ uv run python app.py
98
+ ```
99
+
100
+ Open http://localhost:7145
101
+
102
+ </details>
86
103
 
87
104
  ---
88
105
 
@@ -43,7 +43,31 @@ cd my-app && tina4 serve
43
43
 
44
44
  Open http://localhost:7145 — your app is running.
45
45
 
46
- > **Alternative** (without Rust CLI): `pip install tina4-python` then create `app.py` with `from tina4_python.core import run; run()`
46
+ <details>
47
+ <summary><strong>Without the Tina4 CLI</strong></summary>
48
+
49
+ ```bash
50
+ # 1. Create project
51
+ mkdir my-app && cd my-app
52
+ uv init && uv add tina4-python
53
+
54
+ # 2. Create entry point
55
+ echo 'from tina4_python.core import run; run()' > app.py
56
+
57
+ # 3. Create .env
58
+ echo 'TINA4_DEBUG=true' > .env
59
+ echo 'TINA4_LOG_LEVEL=ALL' >> .env
60
+
61
+ # 4. Create route directory
62
+ mkdir -p src/routes
63
+
64
+ # 5. Run
65
+ uv run python app.py
66
+ ```
67
+
68
+ Open http://localhost:7145
69
+
70
+ </details>
47
71
 
48
72
  ---
49
73
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "tina4-python"
3
- version = "3.1.2"
3
+ version = "3.1.3"
4
4
  description = "Tina4 Python v3 — Zero-dependency, lightweight web framework"
5
5
  authors = [
6
6
  {name = "Andre van Zuydam", email = "andrevanzuydam@gmail.com"}
@@ -10,15 +10,7 @@ requires-python = ">=3.12"
10
10
  license = {text = "MIT"}
11
11
 
12
12
  # ZERO core dependencies — this is v3's defining feature
13
- dependencies = [
14
- "fdb>=2.0.4",
15
- "mysql-connector-python>=9.6.0",
16
- "pika>=1.3.2",
17
- "psycopg2-binary>=2.9.11",
18
- "pymongo>=4.16.0",
19
- "pymssql>=2.3.13",
20
- "redis>=7.3.0",
21
- ]
13
+ dependencies = []
22
14
 
23
15
  [project.optional-dependencies]
24
16
  # Database drivers — install what you need
@@ -240,7 +240,7 @@ h1{{font-size:3rem;font-weight:700;margin-bottom:0.25rem;letter-spacing:-1px}}
240
240
  <h2>Getting Started</h2>
241
241
  <pre class="code-block"><code><span style="color:#64748b"># app.py</span>
242
242
  <span style="color:#c084fc">from</span> tina4_python.core <span style="color:#c084fc">import</span> run
243
- <span style="color:#c084fc">from</span> tina4_python.Router <span style="color:#c084fc">import</span> get
243
+ <span style="color:#c084fc">from</span> tina4_python.core.router <span style="color:#c084fc">import</span> get
244
244
 
245
245
  <span style="color:#fbbf24">@get</span>(<span style="color:#4ade80">"/hello"</span>)
246
246
  <span style="color:#c084fc">async def</span> <span style="color:#38bdf8">hello</span>(request, response):
File without changes