tina4-python 0.2.140__tar.gz → 0.2.141__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 (58) hide show
  1. {tina4_python-0.2.140 → tina4_python-0.2.141}/.gitignore +39 -36
  2. {tina4_python-0.2.140 → tina4_python-0.2.141}/PKG-INFO +47 -2
  3. tina4_python-0.2.141/README.md +92 -0
  4. {tina4_python-0.2.140 → tina4_python-0.2.141}/pyproject.toml +64 -64
  5. {tina4_python-0.2.140 → tina4_python-0.2.141}/tina4_python/Api.py +179 -179
  6. {tina4_python-0.2.140 → tina4_python-0.2.141}/tina4_python/Auth.py +322 -322
  7. {tina4_python-0.2.140 → tina4_python-0.2.141}/tina4_python/CRUD.py +387 -387
  8. {tina4_python-0.2.140 → tina4_python-0.2.141}/tina4_python/Constant.py +95 -95
  9. {tina4_python-0.2.140 → tina4_python-0.2.141}/tina4_python/Database.py +665 -653
  10. {tina4_python-0.2.140 → tina4_python-0.2.141}/tina4_python/DatabaseResult.py +88 -79
  11. {tina4_python-0.2.140 → tina4_python-0.2.141}/tina4_python/DatabaseTypes.py +15 -15
  12. {tina4_python-0.2.140 → tina4_python-0.2.141}/tina4_python/Debug.py +119 -119
  13. {tina4_python-0.2.140 → tina4_python-0.2.141}/tina4_python/Env.py +39 -39
  14. {tina4_python-0.2.140 → tina4_python-0.2.141}/tina4_python/FieldTypes.py +271 -271
  15. {tina4_python-0.2.140 → tina4_python-0.2.141}/tina4_python/HtmlElement.py +169 -169
  16. {tina4_python-0.2.140 → tina4_python-0.2.141}/tina4_python/Localization.py +42 -42
  17. {tina4_python-0.2.140 → tina4_python-0.2.141}/tina4_python/Messages.py +30 -30
  18. {tina4_python-0.2.140 → tina4_python-0.2.141}/tina4_python/MiddleWare.py +90 -90
  19. {tina4_python-0.2.140 → tina4_python-0.2.141}/tina4_python/Migration.py +107 -107
  20. {tina4_python-0.2.140 → tina4_python-0.2.141}/tina4_python/ORM.py +424 -419
  21. tina4_python-0.2.141/tina4_python/Queue.py +222 -0
  22. {tina4_python-0.2.140 → tina4_python-0.2.141}/tina4_python/Request.py +21 -21
  23. {tina4_python-0.2.140 → tina4_python-0.2.141}/tina4_python/Response.py +212 -209
  24. {tina4_python-0.2.140 → tina4_python-0.2.141}/tina4_python/Router.py +684 -672
  25. {tina4_python-0.2.140 → tina4_python-0.2.141}/tina4_python/Session.py +342 -342
  26. {tina4_python-0.2.140 → tina4_python-0.2.141}/tina4_python/ShellColors.py +20 -20
  27. {tina4_python-0.2.140 → tina4_python-0.2.141}/tina4_python/Swagger.py +357 -357
  28. {tina4_python-0.2.140 → tina4_python-0.2.141}/tina4_python/Template.py +244 -244
  29. tina4_python-0.2.141/tina4_python/Testing.py +115 -0
  30. {tina4_python-0.2.140 → tina4_python-0.2.141}/tina4_python/WSDL.py +439 -437
  31. {tina4_python-0.2.140 → tina4_python-0.2.141}/tina4_python/Webserver.py +594 -594
  32. {tina4_python-0.2.140 → tina4_python-0.2.141}/tina4_python/Websocket.py +47 -47
  33. {tina4_python-0.2.140 → tina4_python-0.2.141}/tina4_python/__init__.py +607 -570
  34. {tina4_python-0.2.140 → tina4_python-0.2.141}/tina4_python/cli.py +330 -233
  35. {tina4_python-0.2.140 → tina4_python-0.2.141}/tina4_python/messages.pot +83 -83
  36. {tina4_python-0.2.140 → tina4_python-0.2.141}/tina4_python/public/js/reconnecting-websocket.js +365 -365
  37. {tina4_python-0.2.140 → tina4_python-0.2.141}/tina4_python/public/js/tina4helper.js +361 -361
  38. {tina4_python-0.2.140 → tina4_python-0.2.141}/tina4_python/public/swagger/index.html +90 -90
  39. {tina4_python-0.2.140 → tina4_python-0.2.141}/tina4_python/public/swagger/oauth2-redirect.html +63 -63
  40. {tina4_python-0.2.140 → tina4_python-0.2.141}/tina4_python/templates/components/crud.twig +504 -504
  41. {tina4_python-0.2.140 → tina4_python-0.2.141}/tina4_python/templates/errors/403.twig +10 -10
  42. {tina4_python-0.2.140 → tina4_python-0.2.141}/tina4_python/templates/errors/404.twig +10 -10
  43. {tina4_python-0.2.140 → tina4_python-0.2.141}/tina4_python/templates/errors/500.twig +11 -11
  44. {tina4_python-0.2.140 → tina4_python-0.2.141}/tina4_python/translations/en/LC_MESSAGES/messages.po +80 -80
  45. {tina4_python-0.2.140 → tina4_python-0.2.141}/tina4_python/translations/fr/LC_MESSAGES/messages.po +84 -84
  46. tina4_python-0.2.140/README.md +0 -47
  47. tina4_python-0.2.140/tina4_python/Queue.py +0 -615
  48. {tina4_python-0.2.140 → tina4_python-0.2.141}/tina4_python/public/css/readme.md +0 -0
  49. {tina4_python-0.2.140 → tina4_python-0.2.141}/tina4_python/public/favicon.ico +0 -0
  50. {tina4_python-0.2.140 → tina4_python-0.2.141}/tina4_python/public/images/403.png +0 -0
  51. {tina4_python-0.2.140 → tina4_python-0.2.141}/tina4_python/public/images/404.png +0 -0
  52. {tina4_python-0.2.140 → tina4_python-0.2.141}/tina4_python/public/images/500.png +0 -0
  53. {tina4_python-0.2.140 → tina4_python-0.2.141}/tina4_python/public/images/logo.png +0 -0
  54. {tina4_python-0.2.140 → tina4_python-0.2.141}/tina4_python/public/images/readme.md +0 -0
  55. {tina4_python-0.2.140 → tina4_python-0.2.141}/tina4_python/public/js/readme.md +0 -0
  56. {tina4_python-0.2.140 → tina4_python-0.2.141}/tina4_python/templates/readme.md +0 -0
  57. {tina4_python-0.2.140 → tina4_python-0.2.141}/tina4_python/translations/en/LC_MESSAGES/messages.mo +0 -0
  58. {tina4_python-0.2.140 → tina4_python-0.2.141}/tina4_python/translations/fr/LC_MESSAGES/messages.mo +0 -0
@@ -1,36 +1,39 @@
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
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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tina4-python
3
- Version: 0.2.140
3
+ Version: 0.2.141
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
@@ -48,7 +48,52 @@ You've just built your first Tina4 app — zero configuration, zero classes, zer
48
48
  pip install tina4-python
49
49
  ```
50
50
 
51
- ## Documentation
51
+ ## Routing
52
+
53
+ Here are some basic GET routes
54
+
55
+ ```python
56
+ # .src/__init__.py
57
+ from tina4_python import get
58
+
59
+ # simple get route
60
+ @get("/hello")
61
+ async def get_hello(request, response):
62
+ return response("Hello, Tina4 Python!")
63
+
64
+ # simple get route with inline params
65
+ @get("/hello/{world}")
66
+ async def get_hello_world(world, request, response):
67
+ return response(f"Hello, {world} ")
68
+
69
+ # simple route responding with json
70
+ @get("/hello/json")
71
+ async def get_hello_json(world, request, response):
72
+ cars = [{"brand": "BMW"}, {"brand": "Toyota"}]
73
+
74
+ return response(cars)
75
+
76
+ # respond with a file
77
+ @get("/hello/{filename}")
78
+ async def get_hello_file(filename, request, response):
79
+
80
+ return response.file(filename, './src/public')
81
+
82
+ # respond with a redirection to another location
83
+ @get("/hello/redirect")
84
+ async def get_hello_redirect(request, response):
85
+
86
+ return response.redirect("/hello/world")
87
+
88
+ @get("/hello/template")
89
+ async def get_hello_template(request, response):
90
+
91
+ # renders any template in .src/templates
92
+ return response.render("index.twig", {"data": request.params})
93
+
94
+ ```
95
+
96
+ ## Further Documentation
52
97
 
53
98
  https://tina4.com/
54
99
 
@@ -0,0 +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,64 +1,64 @@
1
- [project]
2
- name = "tina4-python"
3
- version = "0.2.140"
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
- ]
23
-
24
- [dependency-groups]
25
- dev = [
26
- "flake8>=7.2.0",
27
- "jurigged>=0.6.0",
28
- "mkdocs>=1.6.1",
29
- "mysql-connector-python>=9.3.0",
30
- "psycopg2-binary>=2.9.10",
31
- "pydoc-markdown>=4.8.2",
32
- "pytest>=8.3.5",
33
- "pytest-asyncio>=1.3.0",
34
- "python-keycloak>=5.8.1",
35
- "ruff>=0.11.9",
36
- "safety>=3.5.0",
37
- ]
38
-
39
- [build-system]
40
- requires = ["hatchling"]
41
- build-backend = "hatchling.build"
42
-
43
- [tool.hatch.build]
44
- include = [
45
- "tina4_python/**/*"
46
- ]
47
-
48
- [project.scripts]
49
- tina4 = "tina4_python.cli:main"
50
-
51
- [[tool.pydoc-markdown.loaders]]
52
- type = "python"
53
- search_path = [ "./tina4_python" ]
54
-
55
- [tool.pydoc-markdown.renderer]
56
- type = "mkdocs"
57
- site_name= "Tina4Python"
58
-
59
- [[tool.pydoc-markdown.renderer.pages]]
60
- title = "API Documentation"
61
- name = "index"
62
-
63
- contents = [ "*" ]
64
-
1
+ [project]
2
+ name = "tina4-python"
3
+ version = "0.2.141"
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
+ ]
23
+
24
+ [dependency-groups]
25
+ dev = [
26
+ "flake8>=7.2.0",
27
+ "jurigged>=0.6.0",
28
+ "mkdocs>=1.6.1",
29
+ "mysql-connector-python>=9.3.0",
30
+ "psycopg2-binary>=2.9.10",
31
+ "pydoc-markdown>=4.8.2",
32
+ "pytest>=8.3.5",
33
+ "pytest-asyncio>=1.3.0",
34
+ "python-keycloak>=5.8.1",
35
+ "ruff>=0.11.9",
36
+ "safety>=3.5.0",
37
+ ]
38
+
39
+ [build-system]
40
+ requires = ["hatchling"]
41
+ build-backend = "hatchling.build"
42
+
43
+ [tool.hatch.build]
44
+ include = [
45
+ "tina4_python/**/*"
46
+ ]
47
+
48
+ [project.scripts]
49
+ tina4 = "tina4_python.cli:main"
50
+
51
+ [[tool.pydoc-markdown.loaders]]
52
+ type = "python"
53
+ search_path = [ "./tina4_python" ]
54
+
55
+ [tool.pydoc-markdown.renderer]
56
+ type = "mkdocs"
57
+ site_name= "Tina4Python"
58
+
59
+ [[tool.pydoc-markdown.renderer.pages]]
60
+ title = "API Documentation"
61
+ name = "index"
62
+
63
+ contents = [ "*" ]
64
+