tina4-python 3.1.2__tar.gz → 3.2.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.
Files changed (132) hide show
  1. {tina4_python-3.1.2 → tina4_python-3.2.0}/.gitignore +60 -60
  2. {tina4_python-3.1.2 → tina4_python-3.2.0}/PKG-INFO +26 -9
  3. {tina4_python-3.1.2 → tina4_python-3.2.0}/README.md +725 -701
  4. {tina4_python-3.1.2 → tina4_python-3.2.0}/pyproject.toml +70 -78
  5. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/CLAUDE.md +1780 -1780
  6. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/HtmlElement.py +124 -124
  7. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/Testing.py +183 -183
  8. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/__init__.py +40 -40
  9. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/ai/__init__.py +412 -412
  10. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/api/__init__.py +144 -144
  11. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/auth/__init__.py +183 -183
  12. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/cache/__init__.py +727 -727
  13. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/cli/__init__.py +524 -524
  14. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/container/__init__.py +85 -85
  15. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/core/__init__.py +32 -32
  16. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/core/cache.py +161 -161
  17. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/core/constants.py +47 -47
  18. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/core/events.py +130 -130
  19. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/core/middleware.py +139 -139
  20. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/core/request.py +162 -162
  21. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/core/response.py +234 -234
  22. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/core/router.py +240 -240
  23. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/core/server.py +966 -950
  24. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/crud/__init__.py +264 -264
  25. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/database/__init__.py +17 -17
  26. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/database/adapter.py +345 -345
  27. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/database/connection.py +278 -278
  28. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/database/firebird.py +254 -254
  29. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/database/mssql.py +243 -243
  30. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/database/mysql.py +213 -213
  31. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/database/odbc.py +172 -172
  32. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/database/postgres.py +235 -235
  33. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/database/sqlite.py +211 -211
  34. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/debug/__init__.py +225 -225
  35. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/debug/error_overlay.py +245 -241
  36. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/dev_admin/__init__.py +1731 -1731
  37. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/dotenv/__init__.py +159 -159
  38. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/frond/FROND.md +490 -490
  39. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/frond/__init__.py +12 -12
  40. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/frond/engine.py +1314 -1314
  41. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/gallery/auth/meta.json +1 -1
  42. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/gallery/auth/src/routes/api/gallery_auth.py +121 -121
  43. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/gallery/database/meta.json +1 -1
  44. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/gallery/database/src/routes/api/gallery_db.py +48 -48
  45. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/gallery/error-overlay/meta.json +1 -1
  46. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/gallery/error-overlay/src/routes/api/gallery_crash.py +19 -19
  47. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/gallery/orm/meta.json +1 -1
  48. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/gallery/orm/src/orm/Product.py +10 -10
  49. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/gallery/orm/src/routes/api/gallery_products.py +17 -17
  50. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/gallery/queue/meta.json +1 -1
  51. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/gallery/queue/src/routes/api/gallery_queue.py +259 -259
  52. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/gallery/rest-api/meta.json +1 -1
  53. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/gallery/rest-api/src/routes/api/gallery_hello.py +19 -19
  54. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/gallery/templates/meta.json +1 -1
  55. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/gallery/templates/src/routes/gallery_page.py +15 -15
  56. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/gallery/templates/src/templates/gallery_page.twig +255 -255
  57. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/graphql/__init__.py +622 -622
  58. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/i18n/__init__.py +108 -108
  59. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/messenger/__init__.py +833 -833
  60. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/migration/__init__.py +13 -13
  61. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/migration/runner.py +244 -244
  62. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/orm/__init__.py +38 -38
  63. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/orm/fields.py +295 -295
  64. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/orm/model.py +682 -682
  65. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/public/css/tina4.css +2463 -2463
  66. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/public/css/tina4.min.css +1 -1
  67. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/public/images/logo.svg +5 -5
  68. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/public/js/frond.min.js +419 -419
  69. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/public/js/tina4-dev-admin.min.js +326 -326
  70. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/public/js/tina4.min.js +92 -92
  71. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/public/swagger/index.html +90 -90
  72. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/public/swagger/oauth2-redirect.html +63 -63
  73. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/queue/__init__.py +505 -505
  74. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/queue_backends/__init__.py +20 -20
  75. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/queue_backends/kafka_backend.py +358 -358
  76. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/queue_backends/rabbitmq_backend.py +425 -425
  77. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/scss/__init__.py +456 -456
  78. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/scss/tina4css/_alerts.scss +34 -34
  79. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/scss/tina4css/_badges.scss +22 -22
  80. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/scss/tina4css/_buttons.scss +69 -69
  81. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/scss/tina4css/_cards.scss +49 -49
  82. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/scss/tina4css/_forms.scss +156 -156
  83. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/scss/tina4css/_grid.scss +81 -81
  84. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/scss/tina4css/_modals.scss +84 -84
  85. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/scss/tina4css/_nav.scss +149 -149
  86. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/scss/tina4css/_reset.scss +94 -94
  87. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/scss/tina4css/_tables.scss +54 -54
  88. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/scss/tina4css/_typography.scss +55 -55
  89. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/scss/tina4css/_utilities.scss +197 -197
  90. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/scss/tina4css/_variables.scss +117 -117
  91. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/scss/tina4css/base.scss +1 -1
  92. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/scss/tina4css/colors.scss +48 -48
  93. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/scss/tina4css/tina4.scss +17 -17
  94. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/seeder/__init__.py +182 -182
  95. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/service/__init__.py +414 -414
  96. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/session/__init__.py +253 -253
  97. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/session_handlers/__init__.py +18 -18
  98. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/session_handlers/mongodb_handler.py +339 -339
  99. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/session_handlers/redis_handler.py +206 -206
  100. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/session_handlers/valkey_handler.py +208 -208
  101. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/swagger/__init__.py +285 -285
  102. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/templates/components/crud.twig +516 -516
  103. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/templates/docker/distroless/Dockerfile +61 -61
  104. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/templates/docker/poetry/Dockerfile +57 -57
  105. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/templates/docker/python/Dockerfile +61 -61
  106. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/templates/docker/uv/Dockerfile +58 -58
  107. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/templates/errors/302.twig +14 -14
  108. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/templates/errors/401.twig +9 -9
  109. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/templates/errors/403.twig +29 -29
  110. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/templates/errors/404.twig +29 -29
  111. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/templates/errors/500.twig +38 -38
  112. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/templates/errors/502.twig +9 -9
  113. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/templates/errors/503.twig +12 -12
  114. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/templates/errors/base.twig +37 -37
  115. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/templates/frontend/README.md +130 -130
  116. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/translations/af/LC_MESSAGES/messages.po +233 -233
  117. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/translations/en/LC_MESSAGES/messages.po +233 -233
  118. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/translations/es/LC_MESSAGES/messages.po +233 -233
  119. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/translations/fr/LC_MESSAGES/messages.po +233 -233
  120. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/translations/ja/LC_MESSAGES/messages.po +233 -233
  121. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/translations/zh/LC_MESSAGES/messages.po +233 -233
  122. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/websocket/__init__.py +492 -492
  123. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/wsdl/__init__.py +356 -356
  124. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/public/favicon.ico +0 -0
  125. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/public/images/tina4-logo-icon.webp +0 -0
  126. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/templates/readme.md +0 -0
  127. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/translations/af/LC_MESSAGES/messages.mo +0 -0
  128. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/translations/en/LC_MESSAGES/messages.mo +0 -0
  129. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/translations/es/LC_MESSAGES/messages.mo +0 -0
  130. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/translations/fr/LC_MESSAGES/messages.mo +0 -0
  131. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/translations/ja/LC_MESSAGES/messages.mo +0 -0
  132. {tina4_python-3.1.2 → tina4_python-3.2.0}/tina4_python/translations/zh/LC_MESSAGES/messages.mo +0 -0
@@ -1,60 +1,60 @@
1
- /.idea/
2
- /venv/
3
- /dist/
4
- /src/public/
5
- /.pypirc
6
- /src/templates/index.twig
7
- /secrets/
8
- /.env
9
- /public/css/test.css
10
- /sessions/
11
- /tests/secrets/domain.cert
12
- /tests/secrets/private.key
13
- /tests/secrets/public.key
14
- /tests/src/public/css/readme.md
15
- /tests/src/public/images/403.png
16
- /tests/src/public/images/404.png
17
- /tests/src/public/images/logo.png
18
- /tests/src/public/images/readme.md
19
- /tests/src/public/js/readme.md
20
- /tests/src/public/swagger/index.html
21
- /tests/src/public/swagger/oauth2-redirect.html
22
- /tests/src/public/favicon.ico
23
- /tests/src/templates/errors/403.twig
24
- /tests/src/templates/errors/404.twig
25
- /tests/src/templates/readme.md
26
- /tests/src/__init__.py
27
- /tests/.env
28
- /tests/app.py
29
- /test.db
30
- *.db-wal
31
- *.db-shm
32
- *.db-journal
33
- test_queue*.db
34
- /queue.db
35
- /logs/
36
- /migrations/__test_user.sql
37
- /migrations/__test_user_item.sql
38
- /tina4_python.egg-info/
39
- /src/templates/crud/
40
- /.venv/
41
- /publish.bat
42
- /Dockerfile
43
- /data.db
44
- /publish.sh
45
- /src/scss/
46
- /broken
47
- __pycache__/
48
- .DS_Store
49
- .coverage
50
- /benchmarks/.env
51
- /benchmarks/data.db
52
- /benchmarks/logs/
53
- /benchmarks/sessions/
54
- /benchmarks/secrets/
55
- /benchmarks/results/
56
- /benchmarks/__pycache__/
57
- .claude/
58
- *.c
59
- *.so
60
- build/
1
+ /.idea/
2
+ /venv/
3
+ /dist/
4
+ /src/public/
5
+ /.pypirc
6
+ /src/templates/index.twig
7
+ /secrets/
8
+ /.env
9
+ /public/css/test.css
10
+ /sessions/
11
+ /tests/secrets/domain.cert
12
+ /tests/secrets/private.key
13
+ /tests/secrets/public.key
14
+ /tests/src/public/css/readme.md
15
+ /tests/src/public/images/403.png
16
+ /tests/src/public/images/404.png
17
+ /tests/src/public/images/logo.png
18
+ /tests/src/public/images/readme.md
19
+ /tests/src/public/js/readme.md
20
+ /tests/src/public/swagger/index.html
21
+ /tests/src/public/swagger/oauth2-redirect.html
22
+ /tests/src/public/favicon.ico
23
+ /tests/src/templates/errors/403.twig
24
+ /tests/src/templates/errors/404.twig
25
+ /tests/src/templates/readme.md
26
+ /tests/src/__init__.py
27
+ /tests/.env
28
+ /tests/app.py
29
+ /test.db
30
+ *.db-wal
31
+ *.db-shm
32
+ *.db-journal
33
+ test_queue*.db
34
+ /queue.db
35
+ /logs/
36
+ /migrations/__test_user.sql
37
+ /migrations/__test_user_item.sql
38
+ /tina4_python.egg-info/
39
+ /src/templates/crud/
40
+ /.venv/
41
+ /publish.bat
42
+ /Dockerfile
43
+ /data.db
44
+ /publish.sh
45
+ /src/scss/
46
+ /broken
47
+ __pycache__/
48
+ .DS_Store
49
+ .coverage
50
+ /benchmarks/.env
51
+ /benchmarks/data.db
52
+ /benchmarks/logs/
53
+ /benchmarks/sessions/
54
+ /benchmarks/secrets/
55
+ /benchmarks/results/
56
+ /benchmarks/__pycache__/
57
+ .claude/
58
+ *.c
59
+ *.so
60
+ build/
@@ -1,17 +1,10 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tina4-python
3
- Version: 3.1.2
3
+ Version: 3.2.0
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