tina4-python 0.2.150__tar.gz → 0.2.151__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 (56) hide show
  1. {tina4_python-0.2.150 → tina4_python-0.2.151}/.gitignore +40 -40
  2. {tina4_python-0.2.150 → tina4_python-0.2.151}/PKG-INFO +1 -1
  3. {tina4_python-0.2.150 → tina4_python-0.2.151}/README.md +92 -92
  4. {tina4_python-0.2.150 → tina4_python-0.2.151}/pyproject.toml +65 -65
  5. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/Api.py +179 -179
  6. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/Auth.py +322 -322
  7. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/CRUD.py +387 -387
  8. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/Constant.py +95 -95
  9. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/Database.py +665 -665
  10. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/DatabaseResult.py +88 -88
  11. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/DatabaseTypes.py +15 -15
  12. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/Debug.py +119 -119
  13. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/Env.py +39 -39
  14. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/FieldTypes.py +271 -271
  15. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/HtmlElement.py +169 -169
  16. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/Localization.py +42 -42
  17. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/Messages.py +30 -30
  18. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/MiddleWare.py +90 -90
  19. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/Migration.py +107 -107
  20. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/ORM.py +424 -424
  21. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/Queue.py +255 -255
  22. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/Request.py +21 -21
  23. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/Response.py +212 -212
  24. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/Router.py +671 -671
  25. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/Session.py +342 -342
  26. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/ShellColors.py +20 -20
  27. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/Swagger.py +381 -381
  28. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/Template.py +245 -247
  29. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/Testing.py +118 -118
  30. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/WSDL.py +445 -445
  31. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/Webserver.py +594 -594
  32. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/Websocket.py +47 -47
  33. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/__init__.py +624 -620
  34. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/cli.py +337 -337
  35. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/messages.pot +83 -83
  36. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/public/js/reconnecting-websocket.js +365 -365
  37. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/public/js/tina4helper.js +361 -361
  38. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/public/swagger/index.html +90 -90
  39. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/public/swagger/oauth2-redirect.html +63 -63
  40. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/templates/components/crud.twig +504 -504
  41. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/templates/errors/403.twig +10 -10
  42. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/templates/errors/404.twig +10 -10
  43. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/templates/errors/500.twig +11 -11
  44. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/translations/en/LC_MESSAGES/messages.po +80 -80
  45. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/translations/fr/LC_MESSAGES/messages.po +84 -84
  46. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/public/css/readme.md +0 -0
  47. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/public/favicon.ico +0 -0
  48. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/public/images/403.png +0 -0
  49. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/public/images/404.png +0 -0
  50. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/public/images/500.png +0 -0
  51. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/public/images/logo.png +0 -0
  52. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/public/images/readme.md +0 -0
  53. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/public/js/readme.md +0 -0
  54. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/templates/readme.md +0 -0
  55. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/translations/en/LC_MESSAGES/messages.mo +0 -0
  56. {tina4_python-0.2.150 → tina4_python-0.2.151}/tina4_python/translations/fr/LC_MESSAGES/messages.mo +0 -0
@@ -1,40 +1,40 @@
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
- /logs/
31
- /migrations/__test_user.sql
32
- /migrations/__test_user_item.sql
33
- /tina4_python.egg-info/
34
- /src/templates/crud/
35
- /.venv/
36
- /publish.bat
37
- /Dockerfile
38
- /data.db
39
- /test_queue.db-shm
40
- /publish.sh
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
+ /logs/
31
+ /migrations/__test_user.sql
32
+ /migrations/__test_user_item.sql
33
+ /tina4_python.egg-info/
34
+ /src/templates/crud/
35
+ /.venv/
36
+ /publish.bat
37
+ /Dockerfile
38
+ /data.db
39
+ /test_queue.db-shm
40
+ /publish.sh
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tina4-python
3
- Version: 0.2.150
3
+ Version: 0.2.151
4
4
  Summary: Tina4Python - This is not another framework for Python
5
5
  Author-email: Andre van Zuydam <andrevanzuydam@gmail.com>
6
6
  Requires-Python: <4.0,>=3.12
@@ -1,92 +1,92 @@
1
- # Tina4 Python — This is not a framework
2
-
3
- Laravel joy. Python speed. 10× less code.
4
-
5
- ## Quickstart
6
- ```bash
7
- pip install tina4_python
8
- tina4 init my_project
9
- cd my_project
10
- python app.py
11
- ```
12
-
13
- You've just built your first Tina4 app — zero configuration, zero classes, zero boilerplate!
14
-
15
- ## Features
16
-
17
- - Full ASGI compliance, use any ASGI compliant webserver
18
- - Full async support out of the box
19
- - Built-in JWT and Session handling
20
- - Automatic Swagger docs at `/swagger`
21
- - Instant CRUD interfaces with one line: `result.to_crud(request)`
22
- - Built-in Twig templating, migrations, WebSockets, authentication and middleware
23
- - Works with SQLite, PostgreSQL, MySQL, MariaDB, MSSQL, Firebird
24
- - Hot reload in development (`uv run python -m jurigged app.py`)
25
-
26
- ## Install
27
-
28
- ```bash
29
- pip install tina4-python
30
- ```
31
-
32
- ## Routing
33
-
34
- Here are some basic GET routes
35
-
36
- ```python
37
- # .src/__init__.py
38
- from tina4_python import get
39
-
40
- # simple get route
41
- @get("/hello")
42
- async def get_hello(request, response):
43
- return response("Hello, Tina4 Python!")
44
-
45
- # simple get route with inline params
46
- @get("/hello/{world}")
47
- async def get_hello_world(world, request, response):
48
- return response(f"Hello, {world} ")
49
-
50
- # simple route responding with json
51
- @get("/hello/json")
52
- async def get_hello_json(world, request, response):
53
- cars = [{"brand": "BMW"}, {"brand": "Toyota"}]
54
-
55
- return response(cars)
56
-
57
- # respond with a file
58
- @get("/hello/{filename}")
59
- async def get_hello_file(filename, request, response):
60
-
61
- return response.file(filename, './src/public')
62
-
63
- # respond with a redirection to another location
64
- @get("/hello/redirect")
65
- async def get_hello_redirect(request, response):
66
-
67
- return response.redirect("/hello/world")
68
-
69
- @get("/hello/template")
70
- async def get_hello_template(request, response):
71
-
72
- # renders any template in .src/templates
73
- return response.render("index.twig", {"data": request.params})
74
-
75
- ```
76
-
77
- ## Further Documentation
78
-
79
- https://tina4.com/
80
-
81
- ## Community
82
-
83
- - GitHub: https://github.com/tina4stack/tina4-python
84
-
85
- ## License
86
-
87
- MIT © 2007 – 2025 Tina4 Stack
88
- https://opensource.org/licenses/MIT
89
-
90
- ---
91
-
92
- **Tina4** – The framework that keeps out of the way of your coding.
1
+ # Tina4 Python — This is not a framework
2
+
3
+ Laravel joy. Python speed. 10× less code.
4
+
5
+ ## Quickstart
6
+ ```bash
7
+ pip install tina4_python
8
+ tina4 init my_project
9
+ cd my_project
10
+ python app.py
11
+ ```
12
+
13
+ You've just built your first Tina4 app — zero configuration, zero classes, zero boilerplate!
14
+
15
+ ## Features
16
+
17
+ - Full ASGI compliance, use any ASGI compliant webserver
18
+ - Full async support out of the box
19
+ - Built-in JWT and Session handling
20
+ - Automatic Swagger docs at `/swagger`
21
+ - Instant CRUD interfaces with one line: `result.to_crud(request)`
22
+ - Built-in Twig templating, migrations, WebSockets, authentication and middleware
23
+ - Works with SQLite, PostgreSQL, MySQL, MariaDB, MSSQL, Firebird
24
+ - Hot reload in development (`uv run python -m jurigged app.py`)
25
+
26
+ ## Install
27
+
28
+ ```bash
29
+ pip install tina4-python
30
+ ```
31
+
32
+ ## Routing
33
+
34
+ Here are some basic GET routes
35
+
36
+ ```python
37
+ # .src/__init__.py
38
+ from tina4_python import get
39
+
40
+ # simple get route
41
+ @get("/hello")
42
+ async def get_hello(request, response):
43
+ return response("Hello, Tina4 Python!")
44
+
45
+ # simple get route with inline params
46
+ @get("/hello/{world}")
47
+ async def get_hello_world(world, request, response):
48
+ return response(f"Hello, {world} ")
49
+
50
+ # simple route responding with json
51
+ @get("/hello/json")
52
+ async def get_hello_json(world, request, response):
53
+ cars = [{"brand": "BMW"}, {"brand": "Toyota"}]
54
+
55
+ return response(cars)
56
+
57
+ # respond with a file
58
+ @get("/hello/{filename}")
59
+ async def get_hello_file(filename, request, response):
60
+
61
+ return response.file(filename, './src/public')
62
+
63
+ # respond with a redirection to another location
64
+ @get("/hello/redirect")
65
+ async def get_hello_redirect(request, response):
66
+
67
+ return response.redirect("/hello/world")
68
+
69
+ @get("/hello/template")
70
+ async def get_hello_template(request, response):
71
+
72
+ # renders any template in .src/templates
73
+ return response.render("index.twig", {"data": request.params})
74
+
75
+ ```
76
+
77
+ ## Further Documentation
78
+
79
+ https://tina4.com/
80
+
81
+ ## Community
82
+
83
+ - GitHub: https://github.com/tina4stack/tina4-python
84
+
85
+ ## License
86
+
87
+ MIT © 2007 – 2025 Tina4 Stack
88
+ https://opensource.org/licenses/MIT
89
+
90
+ ---
91
+
92
+ **Tina4** – The framework that keeps out of the way of your coding.
@@ -1,65 +1,65 @@
1
- [project]
2
- name = "tina4-python"
3
- version = "0.2.150"
4
- description = "Tina4Python - This is not another framework for Python"
5
- authors = [
6
- {name = "Andre van Zuydam",email = "andrevanzuydam@gmail.com"}
7
- ]
8
- readme = "README.md"
9
- requires-python = ">=3.12,<4.0"
10
- dependencies = [
11
- "jinja2>=3.1.5,<4.0.0",
12
- "libsass (>=0.23.0,<0.24.0)",
13
- "python-dotenv (>=1.0.1,<2.0.0)",
14
- "pyjwt (>=2.10.1,<3.0.0)",
15
- "cryptography (>=44.0.0,<45.0.0)",
16
- "watchdog (>=6.0.0,<7.0.0)",
17
- "bcrypt (>=4.2.1,<5.0.0)",
18
- "litequeue (>=0.9,<0.10)",
19
- "simple-websocket (>=1.1.0,<2.0.0)",
20
- "asyncer>=0.0.8",
21
- "hypercorn>=0.18.0",
22
- "requests>=2.32.5",
23
- ]
24
-
25
- [dependency-groups]
26
- dev = [
27
- "flake8>=7.2.0",
28
- "jurigged>=0.6.0",
29
- "mkdocs>=1.6.1",
30
- "mysql-connector-python>=9.3.0",
31
- "psycopg2-binary>=2.9.10",
32
- "pydoc-markdown>=4.8.2",
33
- "pytest>=8.3.5",
34
- "pytest-asyncio>=1.3.0",
35
- "python-keycloak>=5.8.1",
36
- "ruff>=0.11.9",
37
- "safety>=3.5.0",
38
- ]
39
-
40
- [build-system]
41
- requires = ["hatchling"]
42
- build-backend = "hatchling.build"
43
-
44
- [tool.hatch.build]
45
- include = [
46
- "tina4_python/**/*"
47
- ]
48
-
49
- [project.scripts]
50
- tina4 = "tina4_python.cli:main"
51
-
52
- [[tool.pydoc-markdown.loaders]]
53
- type = "python"
54
- search_path = [ "./tina4_python" ]
55
-
56
- [tool.pydoc-markdown.renderer]
57
- type = "mkdocs"
58
- site_name= "Tina4Python"
59
-
60
- [[tool.pydoc-markdown.renderer.pages]]
61
- title = "API Documentation"
62
- name = "index"
63
-
64
- contents = [ "*" ]
65
-
1
+ [project]
2
+ name = "tina4-python"
3
+ version = "0.2.151"
4
+ description = "Tina4Python - This is not another framework for Python"
5
+ authors = [
6
+ {name = "Andre van Zuydam",email = "andrevanzuydam@gmail.com"}
7
+ ]
8
+ readme = "README.md"
9
+ requires-python = ">=3.12,<4.0"
10
+ dependencies = [
11
+ "jinja2>=3.1.5,<4.0.0",
12
+ "libsass (>=0.23.0,<0.24.0)",
13
+ "python-dotenv (>=1.0.1,<2.0.0)",
14
+ "pyjwt (>=2.10.1,<3.0.0)",
15
+ "cryptography (>=44.0.0,<45.0.0)",
16
+ "watchdog (>=6.0.0,<7.0.0)",
17
+ "bcrypt (>=4.2.1,<5.0.0)",
18
+ "litequeue (>=0.9,<0.10)",
19
+ "simple-websocket (>=1.1.0,<2.0.0)",
20
+ "asyncer>=0.0.8",
21
+ "hypercorn>=0.18.0",
22
+ "requests>=2.32.5",
23
+ ]
24
+
25
+ [dependency-groups]
26
+ dev = [
27
+ "flake8>=7.2.0",
28
+ "jurigged>=0.6.0",
29
+ "mkdocs>=1.6.1",
30
+ "mysql-connector-python>=9.3.0",
31
+ "psycopg2-binary>=2.9.10",
32
+ "pydoc-markdown>=4.8.2",
33
+ "pytest>=8.3.5",
34
+ "pytest-asyncio>=1.3.0",
35
+ "python-keycloak>=5.8.1",
36
+ "ruff>=0.11.9",
37
+ "safety>=3.5.0",
38
+ ]
39
+
40
+ [build-system]
41
+ requires = ["hatchling"]
42
+ build-backend = "hatchling.build"
43
+
44
+ [tool.hatch.build]
45
+ include = [
46
+ "tina4_python/**/*"
47
+ ]
48
+
49
+ [project.scripts]
50
+ tina4 = "tina4_python.cli:main"
51
+
52
+ [[tool.pydoc-markdown.loaders]]
53
+ type = "python"
54
+ search_path = [ "./tina4_python" ]
55
+
56
+ [tool.pydoc-markdown.renderer]
57
+ type = "mkdocs"
58
+ site_name= "Tina4Python"
59
+
60
+ [[tool.pydoc-markdown.renderer.pages]]
61
+ title = "API Documentation"
62
+ name = "index"
63
+
64
+ contents = [ "*" ]
65
+