pyweber 1.5.2__tar.gz → 1.6.0.dev0__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 (125) hide show
  1. {pyweber-1.5.2/pyweber.egg-info → pyweber-1.6.0.dev0}/PKG-INFO +14 -1
  2. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyproject.toml +7 -1
  3. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/__init__.py +0 -2
  4. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/cli/commands.py +9 -0
  5. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/components/__init__.py +0 -2
  6. pyweber-1.6.0.dev0/pyweber/components/input.py +663 -0
  7. pyweber-1.6.0.dev0/pyweber/connection/session.py +123 -0
  8. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/connection/websocket.py +43 -1
  9. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/core/window.py +55 -25
  10. pyweber-1.6.0.dev0/pyweber/db/__init__.py +133 -0
  11. pyweber-1.6.0.dev0/pyweber/db/cli.py +236 -0
  12. pyweber-1.6.0.dev0/pyweber/db/config.py +125 -0
  13. pyweber-1.6.0.dev0/pyweber/db/engine.py +64 -0
  14. pyweber-1.6.0.dev0/pyweber/db/model.py +44 -0
  15. pyweber-1.6.0.dev0/pyweber/db/query.py +26 -0
  16. pyweber-1.6.0.dev0/pyweber/db/session.py +49 -0
  17. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/models/routes.py +62 -4
  18. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/pyweber/pyweber.py +49 -374
  19. pyweber-1.6.0.dev0/pyweber/services/__init__.py +13 -0
  20. pyweber-1.6.0.dev0/pyweber/services/openapi_setup.py +73 -0
  21. pyweber-1.6.0.dev0/pyweber/services/response_pipeline.py +239 -0
  22. pyweber-1.6.0.dev0/pyweber/services/static_files.py +68 -0
  23. pyweber-1.6.0.dev0/pyweber/services/template_service.py +126 -0
  24. pyweber-1.6.0.dev0/pyweber/session_store/__init__.py +244 -0
  25. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/static/config.toml +14 -9
  26. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/utils/types.py +8 -0
  27. {pyweber-1.5.2 → pyweber-1.6.0.dev0/pyweber.egg-info}/PKG-INFO +14 -1
  28. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber.egg-info/SOURCES.txt +13 -0
  29. pyweber-1.6.0.dev0/pyweber.egg-info/requires.txt +31 -0
  30. pyweber-1.5.2/pyweber/components/input.py +0 -814
  31. pyweber-1.5.2/pyweber/connection/session.py +0 -50
  32. pyweber-1.5.2/pyweber.egg-info/requires.txt +0 -12
  33. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/LICENSE +0 -0
  34. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/MANIFEST.in +0 -0
  35. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/NOTICE +0 -0
  36. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/README.md +0 -0
  37. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/admin/index.html +0 -0
  38. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/admin/src/script.js +0 -0
  39. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/admin/src/style.css +0 -0
  40. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/auth/__init__.py +0 -0
  41. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/auth/decorators.py +0 -0
  42. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/auth/passwords.py +0 -0
  43. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/auth/rbac.py +0 -0
  44. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/auth/session.py +0 -0
  45. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/cli/__init__.py +0 -0
  46. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/components/form.py +0 -0
  47. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/components/general.py +0 -0
  48. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/config/__init__.py +0 -0
  49. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/config/config.py +0 -0
  50. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/connection/__init__.py +0 -0
  51. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/connection/http.py +0 -0
  52. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/connection/reload.py +0 -0
  53. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/connection/selector.py +0 -0
  54. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/core/__init__.py +0 -0
  55. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/core/element.py +0 -0
  56. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/core/events.py +0 -0
  57. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/core/html_parser.py +0 -0
  58. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/core/template.py +0 -0
  59. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/models/__init__.py +0 -0
  60. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/models/context.py +0 -0
  61. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/models/cookies.py +0 -0
  62. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/models/create_app.py +0 -0
  63. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/models/element.py +0 -0
  64. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/models/error_pages.py +0 -0
  65. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/models/field.py +0 -0
  66. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/models/field_storage.py +0 -0
  67. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/models/file.py +0 -0
  68. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/models/file_stream.py +0 -0
  69. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/models/handoff.py +0 -0
  70. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/models/headers.py +0 -0
  71. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/models/middleware.py +0 -0
  72. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/models/openapi.py +0 -0
  73. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/models/rate_limit.py +0 -0
  74. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/models/request.py +0 -0
  75. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/models/response.py +0 -0
  76. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/models/run.py +0 -0
  77. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/models/security.py +0 -0
  78. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/models/stream_stats.py +0 -0
  79. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/models/strem_stats.py +0 -0
  80. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/models/task_manager.py +0 -0
  81. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/models/template_diff.py +0 -0
  82. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/models/ws_message.py +0 -0
  83. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/pyweber/__init__.py +0 -0
  84. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/static/.gitignore +0 -0
  85. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/static/css.css +0 -0
  86. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/static/docs.html +0 -0
  87. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/static/favicon/android-chrome-192x192.png +0 -0
  88. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/static/favicon/android-chrome-512x512.png +0 -0
  89. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/static/favicon/apple-touch-icon.png +0 -0
  90. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/static/favicon/favicon-16x16.png +0 -0
  91. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/static/favicon/favicon-32x32.png +0 -0
  92. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/static/favicon/favicon.ico +0 -0
  93. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/static/favicon/pyweber.png +0 -0
  94. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/static/favicon/site.webmanifest +0 -0
  95. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/static/handlers.js +0 -0
  96. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/static/html.html +0 -0
  97. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/static/html401.html +0 -0
  98. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/static/html404.html +0 -0
  99. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/static/html500.html +0 -0
  100. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/static/js.js +0 -0
  101. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/static/loading.html +0 -0
  102. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/static/main.py +0 -0
  103. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/static/pyweber.css +0 -0
  104. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/static/update.py +0 -0
  105. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/testing/__init__.py +0 -0
  106. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/testing/client.py +0 -0
  107. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/utils/__init__.py +0 -0
  108. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/utils/async_utils.py +0 -0
  109. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/utils/deprecation.py +0 -0
  110. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/utils/exceptions.py +0 -0
  111. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/utils/icons.py +0 -0
  112. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/utils/loads.py +0 -0
  113. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/utils/mime.py +0 -0
  114. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/utils/security.py +0 -0
  115. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber/utils/utils.py +0 -0
  116. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber.egg-info/dependency_links.txt +0 -0
  117. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber.egg-info/entry_points.txt +0 -0
  118. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/pyweber.egg-info/top_level.txt +0 -0
  119. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/setup.cfg +0 -0
  120. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/tests/test_config.py +0 -0
  121. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/tests/test_context.py +0 -0
  122. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/tests/test_cookies.py +0 -0
  123. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/tests/test_public_api.py +0 -0
  124. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/tests/test_response.py +0 -0
  125. {pyweber-1.5.2 → pyweber-1.6.0.dev0}/tests/test_template_diff.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyweber
3
- Version: 1.5.2
3
+ Version: 1.6.0.dev0
4
4
  Summary: A lightweight Python framework for building and managing web applications.
5
5
  Author-email: DevPythonMZ <pypi.dev@gmail.com>
6
6
  License-Expression: Apache-2.0
@@ -24,6 +24,19 @@ Requires-Dist: pytest-cov; extra == "dev"
24
24
  Requires-Dist: pytest-asyncio; extra == "dev"
25
25
  Provides-Extra: fast-html
26
26
  Requires-Dist: lxml; extra == "fast-html"
27
+ Provides-Extra: db
28
+ Requires-Dist: sqlalchemy[asyncio]>=2.0; extra == "db"
29
+ Requires-Dist: alembic>=1.13; extra == "db"
30
+ Provides-Extra: db-sqlite
31
+ Requires-Dist: aiosqlite>=0.20; extra == "db-sqlite"
32
+ Provides-Extra: db-pg
33
+ Requires-Dist: asyncpg>=0.29; extra == "db-pg"
34
+ Provides-Extra: db-mysql
35
+ Requires-Dist: aiomysql>=0.2; extra == "db-mysql"
36
+ Provides-Extra: db-mssql
37
+ Requires-Dist: aioodbc>=0.5; extra == "db-mssql"
38
+ Provides-Extra: redis
39
+ Requires-Dist: redis[hiredis]>=8.1.0; extra == "redis"
27
40
  Dynamic: license-file
28
41
 
29
42
  # Pyweber Framework
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "pyweber"
7
- version = "1.5.2"
7
+ version = "1.6.0.dev0"
8
8
  description = "A lightweight Python framework for building and managing web applications."
9
9
  readme = "README.md"
10
10
  authors = [{ name = "DevPythonMZ", email = "pypi.dev@gmail.com" }]
@@ -29,6 +29,12 @@ include = ["pyweber*"]
29
29
  [project.optional-dependencies]
30
30
  dev = ["pytest", "pytest-cov", "pytest-asyncio"]
31
31
  fast-html = ["lxml"]
32
+ db = ["sqlalchemy[asyncio]>=2.0", "alembic>=1.13"]
33
+ db-sqlite = ["aiosqlite>=0.20"]
34
+ db-pg = ["asyncpg>=0.29"]
35
+ db-mysql = ["aiomysql>=0.2"]
36
+ db-mssql = ["aioodbc>=0.5"]
37
+ redis = ["redis[hiredis]>=8.1.0"]
32
38
 
33
39
  [tool.setuptools.package-data]
34
40
  pyweber = ["static/**/*", "admin/**/*"]
@@ -148,7 +148,6 @@ from .components.input import (
148
148
  Input,
149
149
  InputButton,
150
150
  InputCheckbox,
151
- InputCheckbox,
152
151
  InputColor,
153
152
  InputDate,
154
153
  InputEmail,
@@ -287,7 +286,6 @@ __all__ = [
287
286
  'Input',
288
287
  'InputButton',
289
288
  'InputCheckbox',
290
- 'InputCheckbox',
291
289
  'InputColor',
292
290
  'InputDate',
293
291
  'InputEmail',
@@ -36,6 +36,11 @@ class CLI:
36
36
  self.add_cert_command()
37
37
  self._add_run_command()
38
38
  self.add_build_command()
39
+ try:
40
+ from pyweber.db.cli import build_parser as build_db_parser
41
+ build_db_parser(self.subparsers)
42
+ except Exception:
43
+ pass
39
44
 
40
45
  self.commands_funcs = CommandFunctions()
41
46
  self.edit_cli_parameters = ConfigManagerCLI()
@@ -301,6 +306,10 @@ class CLI:
301
306
  elif args.command == 'build':
302
307
  project_name = getattr(args, 'project_name')
303
308
  self.commands_funcs.build_project(project_name=project_name)
309
+
310
+ elif args.command == 'db':
311
+ from pyweber.db.cli import handle_db_command
312
+ raise SystemExit(handle_db_command(args))
304
313
  else:
305
314
  self.parser.print_help()
306
315
  exit(code=1)
@@ -12,7 +12,6 @@ from .input import (
12
12
  Input,
13
13
  InputButton,
14
14
  InputCheckbox,
15
- InputCheckbox,
16
15
  InputColor,
17
16
  InputDate,
18
17
  InputEmail,
@@ -39,7 +38,6 @@ __all__ = [
39
38
  'Input',
40
39
  'InputButton',
41
40
  'InputCheckbox',
42
- 'InputCheckbox',
43
41
  'InputColor',
44
42
  'InputDate',
45
43
  'InputEmail',