quantum-framework 0.9.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 (303) hide show
  1. quantum_framework-0.9.0/LICENSE +21 -0
  2. quantum_framework-0.9.0/PKG-INFO +244 -0
  3. quantum_framework-0.9.0/README.md +202 -0
  4. quantum_framework-0.9.0/pyproject.toml +88 -0
  5. quantum_framework-0.9.0/quantum/__init__.py +1 -0
  6. quantum_framework-0.9.0/quantum/cli/__init__.py +2 -0
  7. quantum_framework-0.9.0/quantum/cli/commands/__init__.py +15 -0
  8. quantum_framework-0.9.0/quantum/cli/commands/build.py +417 -0
  9. quantum_framework-0.9.0/quantum/cli/commands/dev.py +185 -0
  10. quantum_framework-0.9.0/quantum/cli/commands/docs.py +329 -0
  11. quantum_framework-0.9.0/quantum/cli/commands/lint.py +523 -0
  12. quantum_framework-0.9.0/quantum/cli/commands/migrate.py +527 -0
  13. quantum_framework-0.9.0/quantum/cli/commands/new.py +622 -0
  14. quantum_framework-0.9.0/quantum/cli/commands/serve.py +190 -0
  15. quantum_framework-0.9.0/quantum/cli/commands/test.py +193 -0
  16. quantum_framework-0.9.0/quantum/cli/deploy.py +810 -0
  17. quantum_framework-0.9.0/quantum/cli/hot_reload.py +951 -0
  18. quantum_framework-0.9.0/quantum/cli/jobs.py +356 -0
  19. quantum_framework-0.9.0/quantum/cli/mq.py +582 -0
  20. quantum_framework-0.9.0/quantum/cli/pkg.py +390 -0
  21. quantum_framework-0.9.0/quantum/cli/runner.py +547 -0
  22. quantum_framework-0.9.0/quantum/cli/server_process.py +159 -0
  23. quantum_framework-0.9.0/quantum/cli/utils.py +334 -0
  24. quantum_framework-0.9.0/quantum/compiler/__init__.py +30 -0
  25. quantum_framework-0.9.0/quantum/compiler/base_generator.py +367 -0
  26. quantum_framework-0.9.0/quantum/compiler/cli.py +295 -0
  27. quantum_framework-0.9.0/quantum/compiler/expression_transformer.py +444 -0
  28. quantum_framework-0.9.0/quantum/compiler/javascript/__init__.py +10 -0
  29. quantum_framework-0.9.0/quantum/compiler/javascript/generator.py +659 -0
  30. quantum_framework-0.9.0/quantum/compiler/optimizer.py +270 -0
  31. quantum_framework-0.9.0/quantum/compiler/python/__init__.py +10 -0
  32. quantum_framework-0.9.0/quantum/compiler/python/generator.py +883 -0
  33. quantum_framework-0.9.0/quantum/compiler/python/runtime.py +863 -0
  34. quantum_framework-0.9.0/quantum/compiler/transpiler.py +330 -0
  35. quantum_framework-0.9.0/quantum/core/__init__.py +3 -0
  36. quantum_framework-0.9.0/quantum/core/ast_nodes.py +2611 -0
  37. quantum_framework-0.9.0/quantum/core/expression_diagnostics.py +87 -0
  38. quantum_framework-0.9.0/quantum/core/expression_stdlib.py +148 -0
  39. quantum_framework-0.9.0/quantum/core/expressions.py +591 -0
  40. quantum_framework-0.9.0/quantum/core/features/agents/src/__init__.py +30 -0
  41. quantum_framework-0.9.0/quantum/core/features/agents/src/ast_node.py +540 -0
  42. quantum_framework-0.9.0/quantum/core/features/conditionals/src/__init__.py +8 -0
  43. quantum_framework-0.9.0/quantum/core/features/conditionals/src/ast_node.py +68 -0
  44. quantum_framework-0.9.0/quantum/core/features/data_fetching/src/__init__.py +21 -0
  45. quantum_framework-0.9.0/quantum/core/features/data_fetching/src/ast_node.py +312 -0
  46. quantum_framework-0.9.0/quantum/core/features/data_fetching/src/desktop_adapter.py +351 -0
  47. quantum_framework-0.9.0/quantum/core/features/data_fetching/src/html_adapter.py +474 -0
  48. quantum_framework-0.9.0/quantum/core/features/data_fetching/src/parser.py +225 -0
  49. quantum_framework-0.9.0/quantum/core/features/data_import/src/__init__.py +0 -0
  50. quantum_framework-0.9.0/quantum/core/features/data_import/src/ast_node.py +291 -0
  51. quantum_framework-0.9.0/quantum/core/features/data_import/src/runtime.py +538 -0
  52. quantum_framework-0.9.0/quantum/core/features/dump/src/__init__.py +12 -0
  53. quantum_framework-0.9.0/quantum/core/features/dump/src/ast_node.py +106 -0
  54. quantum_framework-0.9.0/quantum/core/features/dump/src/parser.py +61 -0
  55. quantum_framework-0.9.0/quantum/core/features/dump/src/runtime.py +246 -0
  56. quantum_framework-0.9.0/quantum/core/features/functions/src/__init__.py +8 -0
  57. quantum_framework-0.9.0/quantum/core/features/functions/src/ast_node.py +149 -0
  58. quantum_framework-0.9.0/quantum/core/features/game_engine_2d/src/__init__.py +19 -0
  59. quantum_framework-0.9.0/quantum/core/features/game_engine_2d/src/ast_nodes.py +1719 -0
  60. quantum_framework-0.9.0/quantum/core/features/game_engine_2d/src/parser.py +983 -0
  61. quantum_framework-0.9.0/quantum/core/features/invocation/src/__init__.py +0 -0
  62. quantum_framework-0.9.0/quantum/core/features/invocation/src/ast_node.py +146 -0
  63. quantum_framework-0.9.0/quantum/core/features/invocation/src/runtime.py +327 -0
  64. quantum_framework-0.9.0/quantum/core/features/knowledge_base/src/__init__.py +6 -0
  65. quantum_framework-0.9.0/quantum/core/features/knowledge_base/src/ast_node.py +113 -0
  66. quantum_framework-0.9.0/quantum/core/features/knowledge_base/src/parser.py +82 -0
  67. quantum_framework-0.9.0/quantum/core/features/logging/src/__init__.py +12 -0
  68. quantum_framework-0.9.0/quantum/core/features/logging/src/ast_node.py +111 -0
  69. quantum_framework-0.9.0/quantum/core/features/logging/src/parser.py +50 -0
  70. quantum_framework-0.9.0/quantum/core/features/logging/src/runtime.py +190 -0
  71. quantum_framework-0.9.0/quantum/core/features/loops/src/__init__.py +8 -0
  72. quantum_framework-0.9.0/quantum/core/features/loops/src/ast_node.py +60 -0
  73. quantum_framework-0.9.0/quantum/core/features/query/src/__init__.py +0 -0
  74. quantum_framework-0.9.0/quantum/core/features/query/src/database_service.py +322 -0
  75. quantum_framework-0.9.0/quantum/core/features/query/src/query_validators.py +20 -0
  76. quantum_framework-0.9.0/quantum/core/features/state_management/src/__init__.py +11 -0
  77. quantum_framework-0.9.0/quantum/core/features/state_management/src/ast_node.py +228 -0
  78. quantum_framework-0.9.0/quantum/core/features/terminal_engine/src/__init__.py +21 -0
  79. quantum_framework-0.9.0/quantum/core/features/terminal_engine/src/ast_nodes.py +560 -0
  80. quantum_framework-0.9.0/quantum/core/features/terminal_engine/src/parser.py +361 -0
  81. quantum_framework-0.9.0/quantum/core/features/testing_engine/src/__init__.py +41 -0
  82. quantum_framework-0.9.0/quantum/core/features/testing_engine/src/ast_nodes.py +1212 -0
  83. quantum_framework-0.9.0/quantum/core/features/testing_engine/src/parser.py +604 -0
  84. quantum_framework-0.9.0/quantum/core/features/theming/src/__init__.py +48 -0
  85. quantum_framework-0.9.0/quantum/core/features/theming/src/ast_node.py +137 -0
  86. quantum_framework-0.9.0/quantum/core/features/theming/src/presets.py +405 -0
  87. quantum_framework-0.9.0/quantum/core/features/ui_engine/src/__init__.py +20 -0
  88. quantum_framework-0.9.0/quantum/core/features/ui_engine/src/ast_nodes.py +1854 -0
  89. quantum_framework-0.9.0/quantum/core/features/ui_engine/src/parser.py +1106 -0
  90. quantum_framework-0.9.0/quantum/core/features/websocket/src/__init__.py +24 -0
  91. quantum_framework-0.9.0/quantum/core/features/websocket/src/ast_node.py +247 -0
  92. quantum_framework-0.9.0/quantum/core/html_compat.py +299 -0
  93. quantum_framework-0.9.0/quantum/core/parser.py +1235 -0
  94. quantum_framework-0.9.0/quantum/core/parser_registry.py +213 -0
  95. quantum_framework-0.9.0/quantum/core/parsers/__init__.py +76 -0
  96. quantum_framework-0.9.0/quantum/core/parsers/ai/__init__.py +12 -0
  97. quantum_framework-0.9.0/quantum/core/parsers/ai/agent_parser.py +106 -0
  98. quantum_framework-0.9.0/quantum/core/parsers/ai/knowledge_parser.py +86 -0
  99. quantum_framework-0.9.0/quantum/core/parsers/ai/llm_parser.py +78 -0
  100. quantum_framework-0.9.0/quantum/core/parsers/ai/team_parser.py +88 -0
  101. quantum_framework-0.9.0/quantum/core/parsers/base.py +322 -0
  102. quantum_framework-0.9.0/quantum/core/parsers/composition/__init__.py +10 -0
  103. quantum_framework-0.9.0/quantum/core/parsers/composition/import_parser.py +50 -0
  104. quantum_framework-0.9.0/quantum/core/parsers/composition/slot_parser.py +48 -0
  105. quantum_framework-0.9.0/quantum/core/parsers/control_flow/__init__.py +11 -0
  106. quantum_framework-0.9.0/quantum/core/parsers/control_flow/if_parser.py +68 -0
  107. quantum_framework-0.9.0/quantum/core/parsers/control_flow/loop_parser.py +105 -0
  108. quantum_framework-0.9.0/quantum/core/parsers/control_flow/set_parser.py +89 -0
  109. quantum_framework-0.9.0/quantum/core/parsers/data/__init__.py +12 -0
  110. quantum_framework-0.9.0/quantum/core/parsers/data/data_parser.py +217 -0
  111. quantum_framework-0.9.0/quantum/core/parsers/data/invoke_parser.py +116 -0
  112. quantum_framework-0.9.0/quantum/core/parsers/data/query_parser.py +188 -0
  113. quantum_framework-0.9.0/quantum/core/parsers/data/transaction_parser.py +77 -0
  114. quantum_framework-0.9.0/quantum/core/parsers/events/__init__.py +9 -0
  115. quantum_framework-0.9.0/quantum/core/parsers/events/dispatch_event_parser.py +44 -0
  116. quantum_framework-0.9.0/quantum/core/parsers/forms/__init__.py +11 -0
  117. quantum_framework-0.9.0/quantum/core/parsers/forms/action_parser.py +54 -0
  118. quantum_framework-0.9.0/quantum/core/parsers/forms/flash_parser.py +34 -0
  119. quantum_framework-0.9.0/quantum/core/parsers/forms/redirect_parser.py +33 -0
  120. quantum_framework-0.9.0/quantum/core/parsers/functions/__init__.py +11 -0
  121. quantum_framework-0.9.0/quantum/core/parsers/functions/function_parser.py +137 -0
  122. quantum_framework-0.9.0/quantum/core/parsers/functions/param_parser.py +66 -0
  123. quantum_framework-0.9.0/quantum/core/parsers/functions/return_parser.py +31 -0
  124. quantum_framework-0.9.0/quantum/core/parsers/html/__init__.py +10 -0
  125. quantum_framework-0.9.0/quantum/core/parsers/html/component_call_parser.py +130 -0
  126. quantum_framework-0.9.0/quantum/core/parsers/html/html_parser.py +115 -0
  127. quantum_framework-0.9.0/quantum/core/parsers/jobs/__init__.py +11 -0
  128. quantum_framework-0.9.0/quantum/core/parsers/jobs/job_parser.py +71 -0
  129. quantum_framework-0.9.0/quantum/core/parsers/jobs/schedule_parser.py +62 -0
  130. quantum_framework-0.9.0/quantum/core/parsers/jobs/thread_parser.py +57 -0
  131. quantum_framework-0.9.0/quantum/core/parsers/messaging/__init__.py +17 -0
  132. quantum_framework-0.9.0/quantum/core/parsers/messaging/message_ack_parser.py +30 -0
  133. quantum_framework-0.9.0/quantum/core/parsers/messaging/message_nack_parser.py +30 -0
  134. quantum_framework-0.9.0/quantum/core/parsers/messaging/message_parser.py +114 -0
  135. quantum_framework-0.9.0/quantum/core/parsers/messaging/queue_parser.py +61 -0
  136. quantum_framework-0.9.0/quantum/core/parsers/messaging/websocket_parser.py +121 -0
  137. quantum_framework-0.9.0/quantum/core/parsers/persistence/__init__.py +9 -0
  138. quantum_framework-0.9.0/quantum/core/parsers/persistence/persist_parser.py +64 -0
  139. quantum_framework-0.9.0/quantum/core/parsers/routing/__init__.py +9 -0
  140. quantum_framework-0.9.0/quantum/core/parsers/routing/route_parser.py +41 -0
  141. quantum_framework-0.9.0/quantum/core/parsers/scripting/__init__.py +12 -0
  142. quantum_framework-0.9.0/quantum/core/parsers/scripting/pyclass_parser.py +62 -0
  143. quantum_framework-0.9.0/quantum/core/parsers/scripting/pydecorator_parser.py +68 -0
  144. quantum_framework-0.9.0/quantum/core/parsers/scripting/pyimport_parser.py +52 -0
  145. quantum_framework-0.9.0/quantum/core/parsers/scripting/python_parser.py +49 -0
  146. quantum_framework-0.9.0/quantum/core/parsers/services/__init__.py +12 -0
  147. quantum_framework-0.9.0/quantum/core/parsers/services/dump_parser.py +52 -0
  148. quantum_framework-0.9.0/quantum/core/parsers/services/file_parser.py +48 -0
  149. quantum_framework-0.9.0/quantum/core/parsers/services/log_parser.py +46 -0
  150. quantum_framework-0.9.0/quantum/core/parsers/services/mail_parser.py +65 -0
  151. quantum_framework-0.9.0/quantum/core/tiers.py +82 -0
  152. quantum_framework-0.9.0/quantum/packages/__init__.py +28 -0
  153. quantum_framework-0.9.0/quantum/packages/manager.py +413 -0
  154. quantum_framework-0.9.0/quantum/packages/manifest.py +351 -0
  155. quantum_framework-0.9.0/quantum/packages/registry.py +399 -0
  156. quantum_framework-0.9.0/quantum/packages/resolver.py +336 -0
  157. quantum_framework-0.9.0/quantum/plugins/__init__.py +33 -0
  158. quantum_framework-0.9.0/quantum/plugins/hooks.py +329 -0
  159. quantum_framework-0.9.0/quantum/plugins/loader.py +479 -0
  160. quantum_framework-0.9.0/quantum/plugins/manifest.py +336 -0
  161. quantum_framework-0.9.0/quantum/plugins/registry.py +371 -0
  162. quantum_framework-0.9.0/quantum/runtime/__init__.py +28 -0
  163. quantum_framework-0.9.0/quantum/runtime/action_handler.py +443 -0
  164. quantum_framework-0.9.0/quantum/runtime/adapters/__init__.py +88 -0
  165. quantum_framework-0.9.0/quantum/runtime/adapters/memory_adapter.py +690 -0
  166. quantum_framework-0.9.0/quantum/runtime/adapters/rabbitmq_adapter.py +715 -0
  167. quantum_framework-0.9.0/quantum/runtime/adapters/redis_adapter.py +582 -0
  168. quantum_framework-0.9.0/quantum/runtime/adapters/sqlite_adapter.py +414 -0
  169. quantum_framework-0.9.0/quantum/runtime/agent_service.py +1133 -0
  170. quantum_framework-0.9.0/quantum/runtime/api_server.py +86 -0
  171. quantum_framework-0.9.0/quantum/runtime/ast_cache.py +506 -0
  172. quantum_framework-0.9.0/quantum/runtime/auth_service.py +267 -0
  173. quantum_framework-0.9.0/quantum/runtime/component.py +990 -0
  174. quantum_framework-0.9.0/quantum/runtime/component_composer.py +319 -0
  175. quantum_framework-0.9.0/quantum/runtime/component_resolver.py +174 -0
  176. quantum_framework-0.9.0/quantum/runtime/database_service.py +598 -0
  177. quantum_framework-0.9.0/quantum/runtime/email_service.py +162 -0
  178. quantum_framework-0.9.0/quantum/runtime/error_handler.py +295 -0
  179. quantum_framework-0.9.0/quantum/runtime/execution_context.py +286 -0
  180. quantum_framework-0.9.0/quantum/runtime/executor_registry.py +171 -0
  181. quantum_framework-0.9.0/quantum/runtime/executors/__init__.py +71 -0
  182. quantum_framework-0.9.0/quantum/runtime/executors/ai/__init__.py +12 -0
  183. quantum_framework-0.9.0/quantum/runtime/executors/ai/agent_executor.py +217 -0
  184. quantum_framework-0.9.0/quantum/runtime/executors/ai/knowledge_executor.py +114 -0
  185. quantum_framework-0.9.0/quantum/runtime/executors/ai/llm_executor.py +153 -0
  186. quantum_framework-0.9.0/quantum/runtime/executors/ai/team_executor.py +171 -0
  187. quantum_framework-0.9.0/quantum/runtime/executors/base.py +262 -0
  188. quantum_framework-0.9.0/quantum/runtime/executors/control_flow/__init__.py +11 -0
  189. quantum_framework-0.9.0/quantum/runtime/executors/control_flow/if_executor.py +93 -0
  190. quantum_framework-0.9.0/quantum/runtime/executors/control_flow/loop_executor.py +307 -0
  191. quantum_framework-0.9.0/quantum/runtime/executors/control_flow/set_executor.py +412 -0
  192. quantum_framework-0.9.0/quantum/runtime/executors/data/__init__.py +12 -0
  193. quantum_framework-0.9.0/quantum/runtime/executors/data/data_executor.py +145 -0
  194. quantum_framework-0.9.0/quantum/runtime/executors/data/invoke_executor.py +176 -0
  195. quantum_framework-0.9.0/quantum/runtime/executors/data/query_executor.py +256 -0
  196. quantum_framework-0.9.0/quantum/runtime/executors/data/transaction_executor.py +91 -0
  197. quantum_framework-0.9.0/quantum/runtime/executors/jobs/__init__.py +11 -0
  198. quantum_framework-0.9.0/quantum/runtime/executors/jobs/job_executor.py +190 -0
  199. quantum_framework-0.9.0/quantum/runtime/executors/jobs/schedule_executor.py +132 -0
  200. quantum_framework-0.9.0/quantum/runtime/executors/jobs/thread_executor.py +127 -0
  201. quantum_framework-0.9.0/quantum/runtime/executors/messaging/__init__.py +17 -0
  202. quantum_framework-0.9.0/quantum/runtime/executors/messaging/message_ack_executor.py +51 -0
  203. quantum_framework-0.9.0/quantum/runtime/executors/messaging/message_executor.py +174 -0
  204. quantum_framework-0.9.0/quantum/runtime/executors/messaging/queue_executor.py +103 -0
  205. quantum_framework-0.9.0/quantum/runtime/executors/messaging/websocket_executor.py +197 -0
  206. quantum_framework-0.9.0/quantum/runtime/executors/scripting/__init__.py +11 -0
  207. quantum_framework-0.9.0/quantum/runtime/executors/scripting/pyclass_executor.py +90 -0
  208. quantum_framework-0.9.0/quantum/runtime/executors/scripting/pyimport_executor.py +81 -0
  209. quantum_framework-0.9.0/quantum/runtime/executors/scripting/python_executor.py +249 -0
  210. quantum_framework-0.9.0/quantum/runtime/executors/services/__init__.py +12 -0
  211. quantum_framework-0.9.0/quantum/runtime/executors/services/dump_executor.py +72 -0
  212. quantum_framework-0.9.0/quantum/runtime/executors/services/file_executor.py +89 -0
  213. quantum_framework-0.9.0/quantum/runtime/executors/services/log_executor.py +77 -0
  214. quantum_framework-0.9.0/quantum/runtime/executors/services/mail_executor.py +81 -0
  215. quantum_framework-0.9.0/quantum/runtime/expression_cache.py +498 -0
  216. quantum_framework-0.9.0/quantum/runtime/file_upload_service.py +326 -0
  217. quantum_framework-0.9.0/quantum/runtime/function_registry.py +118 -0
  218. quantum_framework-0.9.0/quantum/runtime/game_builder.py +166 -0
  219. quantum_framework-0.9.0/quantum/runtime/game_code_generator.py +2371 -0
  220. quantum_framework-0.9.0/quantum/runtime/game_templates.py +2006 -0
  221. quantum_framework-0.9.0/quantum/runtime/godot_code_generator.py +4681 -0
  222. quantum_framework-0.9.0/quantum/runtime/godot_templates.py +1449 -0
  223. quantum_framework-0.9.0/quantum/runtime/job_executor.py +1599 -0
  224. quantum_framework-0.9.0/quantum/runtime/knowledge_service.py +500 -0
  225. quantum_framework-0.9.0/quantum/runtime/llm_cache.py +100 -0
  226. quantum_framework-0.9.0/quantum/runtime/llm_providers.py +704 -0
  227. quantum_framework-0.9.0/quantum/runtime/llm_service.py +287 -0
  228. quantum_framework-0.9.0/quantum/runtime/logging_setup.py +140 -0
  229. quantum_framework-0.9.0/quantum/runtime/message_broker.py +364 -0
  230. quantum_framework-0.9.0/quantum/runtime/message_queue_service.py +571 -0
  231. quantum_framework-0.9.0/quantum/runtime/param_validation.py +184 -0
  232. quantum_framework-0.9.0/quantum/runtime/pypy_compat.py +315 -0
  233. quantum_framework-0.9.0/quantum/runtime/python_bridge.py +698 -0
  234. quantum_framework-0.9.0/quantum/runtime/query_validators.py +304 -0
  235. quantum_framework-0.9.0/quantum/runtime/renderer.py +733 -0
  236. quantum_framework-0.9.0/quantum/runtime/service_container.py +444 -0
  237. quantum_framework-0.9.0/quantum/runtime/terminal_builder.py +76 -0
  238. quantum_framework-0.9.0/quantum/runtime/terminal_code_generator.py +607 -0
  239. quantum_framework-0.9.0/quantum/runtime/terminal_templates.py +243 -0
  240. quantum_framework-0.9.0/quantum/runtime/testing_builder.py +77 -0
  241. quantum_framework-0.9.0/quantum/runtime/testing_code_generator.py +833 -0
  242. quantum_framework-0.9.0/quantum/runtime/testing_templates.py +85 -0
  243. quantum_framework-0.9.0/quantum/runtime/ui_builder.py +188 -0
  244. quantum_framework-0.9.0/quantum/runtime/ui_desktop_adapter.py +1730 -0
  245. quantum_framework-0.9.0/quantum/runtime/ui_desktop_templates.py +307 -0
  246. quantum_framework-0.9.0/quantum/runtime/ui_html_adapter.py +2691 -0
  247. quantum_framework-0.9.0/quantum/runtime/ui_html_templates.py +2297 -0
  248. quantum_framework-0.9.0/quantum/runtime/ui_mobile_adapter.py +1832 -0
  249. quantum_framework-0.9.0/quantum/runtime/ui_mobile_templates.py +1003 -0
  250. quantum_framework-0.9.0/quantum/runtime/ui_textual_adapter.py +1866 -0
  251. quantum_framework-0.9.0/quantum/runtime/ui_textual_templates.py +45 -0
  252. quantum_framework-0.9.0/quantum/runtime/ui_tokens.py +465 -0
  253. quantum_framework-0.9.0/quantum/runtime/ui_validator.py +365 -0
  254. quantum_framework-0.9.0/quantum/runtime/validators.py +256 -0
  255. quantum_framework-0.9.0/quantum/runtime/web_server.py +1766 -0
  256. quantum_framework-0.9.0/quantum/runtime/websocket_adapter.py +501 -0
  257. quantum_framework-0.9.0/quantum/runtime/websocket_service.py +585 -0
  258. quantum_framework-0.9.0/quantum/runtime/websocket_transport.py +289 -0
  259. quantum_framework-0.9.0/quantum/runtime/wsgi.py +101 -0
  260. quantum_framework-0.9.0/quantum/utils/__init__.py +1 -0
  261. quantum_framework-0.9.0/quantum_framework.egg-info/PKG-INFO +244 -0
  262. quantum_framework-0.9.0/quantum_framework.egg-info/SOURCES.txt +301 -0
  263. quantum_framework-0.9.0/quantum_framework.egg-info/dependency_links.txt +1 -0
  264. quantum_framework-0.9.0/quantum_framework.egg-info/entry_points.txt +2 -0
  265. quantum_framework-0.9.0/quantum_framework.egg-info/requires.txt +27 -0
  266. quantum_framework-0.9.0/quantum_framework.egg-info/top_level.txt +1 -0
  267. quantum_framework-0.9.0/setup.cfg +4 -0
  268. quantum_framework-0.9.0/tests/test_agent.py +531 -0
  269. quantum_framework-0.9.0/tests/test_animations.py +616 -0
  270. quantum_framework-0.9.0/tests/test_ast_cache.py +544 -0
  271. quantum_framework-0.9.0/tests/test_cli_commands.py +467 -0
  272. quantum_framework-0.9.0/tests/test_component_library.py +587 -0
  273. quantum_framework-0.9.0/tests/test_data_fetching.py +593 -0
  274. quantum_framework-0.9.0/tests/test_desktop_bridge.py +442 -0
  275. quantum_framework-0.9.0/tests/test_expression_cache.py +442 -0
  276. quantum_framework-0.9.0/tests/test_form_validation.py +595 -0
  277. quantum_framework-0.9.0/tests/test_game_codegen.py +1272 -0
  278. quantum_framework-0.9.0/tests/test_game_e2e.py +350 -0
  279. quantum_framework-0.9.0/tests/test_game_engine.py +277 -0
  280. quantum_framework-0.9.0/tests/test_game_parser.py +1493 -0
  281. quantum_framework-0.9.0/tests/test_godot_codegen.py +4864 -0
  282. quantum_framework-0.9.0/tests/test_job_executor.py +389 -0
  283. quantum_framework-0.9.0/tests/test_llm_providers.py +518 -0
  284. quantum_framework-0.9.0/tests/test_message_broker.py +445 -0
  285. quantum_framework-0.9.0/tests/test_message_queue.py +659 -0
  286. quantum_framework-0.9.0/tests/test_mobile_target.py +465 -0
  287. quantum_framework-0.9.0/tests/test_multi_agent.py +746 -0
  288. quantum_framework-0.9.0/tests/test_packages.py +747 -0
  289. quantum_framework-0.9.0/tests/test_plugins.py +671 -0
  290. quantum_framework-0.9.0/tests/test_projects_blog_components_admin.py +514 -0
  291. quantum_framework-0.9.0/tests/test_pypy_compat.py +376 -0
  292. quantum_framework-0.9.0/tests/test_python_scripting.py +551 -0
  293. quantum_framework-0.9.0/tests/test_state_persistence.py +458 -0
  294. quantum_framework-0.9.0/tests/test_terminal_codegen.py +355 -0
  295. quantum_framework-0.9.0/tests/test_terminal_parser.py +432 -0
  296. quantum_framework-0.9.0/tests/test_testing_codegen.py +787 -0
  297. quantum_framework-0.9.0/tests/test_testing_parser.py +671 -0
  298. quantum_framework-0.9.0/tests/test_theming.py +436 -0
  299. quantum_framework-0.9.0/tests/test_ui_html_adapter.py +361 -0
  300. quantum_framework-0.9.0/tests/test_ui_parity.py +743 -0
  301. quantum_framework-0.9.0/tests/test_ui_parser.py +551 -0
  302. quantum_framework-0.9.0/tests/test_ui_textual_adapter.py +249 -0
  303. quantum_framework-0.9.0/tests/test_websocket.py +508 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Daniel Gregorio
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,244 @@
1
+ Metadata-Version: 2.4
2
+ Name: quantum-framework
3
+ Version: 0.9.0
4
+ Summary: Full-stack declarative framework for building web, desktop, and mobile applications
5
+ Author-email: Daniel Gregorio <danielgregorio2611@gmail.com>
6
+ License: MIT
7
+ Project-URL: Homepage, https://quantum.sargas.cloud
8
+ Project-URL: Documentation, https://quantum.sargas.cloud
9
+ Project-URL: Repository, https://github.com/danielgregorio/quantum
10
+ Keywords: framework,declarative,xml,web,desktop,mobile
11
+ Classifier: Development Status :: 4 - Beta
12
+ Classifier: Framework :: Flask
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Programming Language :: Python :: 3.12
16
+ Requires-Python: >=3.12
17
+ Description-Content-Type: text/markdown
18
+ License-File: LICENSE
19
+ Requires-Dist: flask>=3.0.0
20
+ Requires-Dist: pyyaml>=6.0
21
+ Requires-Dist: sqlparse>=0.4.4
22
+ Requires-Dist: gunicorn>=21.0.0
23
+ Requires-Dist: textual>=0.80.0
24
+ Requires-Dist: requests>=2.31.0
25
+ Requires-Dist: bcrypt>=4.1.0
26
+ Provides-Extra: dev
27
+ Requires-Dist: pytest>=7.4.0; extra == "dev"
28
+ Requires-Dist: pytest-cov>=4.1.0; extra == "dev"
29
+ Requires-Dist: pytest-mock>=3.11.1; extra == "dev"
30
+ Requires-Dist: black>=23.0.0; extra == "dev"
31
+ Requires-Dist: ruff>=0.1.0; extra == "dev"
32
+ Provides-Extra: db
33
+ Requires-Dist: psycopg2-binary>=2.9.9; extra == "db"
34
+ Requires-Dist: pymysql>=1.1.0; extra == "db"
35
+ Provides-Extra: rag
36
+ Requires-Dist: chromadb>=0.5.0; extra == "rag"
37
+ Provides-Extra: jobs
38
+ Requires-Dist: apscheduler>=3.10.0; extra == "jobs"
39
+ Provides-Extra: websocket
40
+ Requires-Dist: websockets>=12.0; extra == "websocket"
41
+ Dynamic: license-file
42
+
43
+ # Quantum
44
+
45
+ [![CI](https://github.com/danielgregorio/quantum/actions/workflows/ci.yml/badge.svg)](https://github.com/danielgregorio/quantum/actions/workflows/ci.yml)
46
+ [![Docker](https://github.com/danielgregorio/quantum/actions/workflows/docker.yml/badge.svg)](https://github.com/danielgregorio/quantum/actions/workflows/docker.yml)
47
+ [![Docs](https://img.shields.io/badge/docs-github.io-blue)](https://danielgregorio.github.io/quantum/)
48
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
49
+
50
+ > **Declarative web apps in XML, with AI and RAG built into the language.
51
+ > No build chain, no JavaScript, no frontend framework.**
52
+
53
+ Quantum is a full-stack framework whose language is markup. State, database queries,
54
+ forms, LLM calls and retrieval-augmented generation are all tags — not libraries you
55
+ wire together. It takes its philosophy from ColdFusion and Adobe Flex: the markup *is*
56
+ the app.
57
+
58
+ > ⚠️ **Pre-1.0, and honest about it.** See [Stability](#stability) — the table there
59
+ > reflects what has actually been executed end-to-end, not what is aspirational.
60
+
61
+ ---
62
+
63
+ ## The part that isn't like the others
64
+
65
+ Retrieval-augmented generation, as a language construct:
66
+
67
+ ```xml
68
+ <q:component name="DocsBot">
69
+ <q:knowledge name="docs" model="phi3" embedModel="nomic-embed-text">
70
+ <q:source type="directory" path="./docs/" pattern="*.md" />
71
+ </q:knowledge>
72
+
73
+ <q:query name="answer" datasource="knowledge:docs" mode="rag">
74
+ SELECT answer FROM chunks WHERE content SIMILAR TO :question
75
+ <q:param name="question" value="{form.question}" type="string" />
76
+ </q:query>
77
+
78
+ <p>{answer.answer}</p>
79
+ </q:component>
80
+ ```
81
+
82
+ That indexes a directory, embeds it, stores the vectors, retrieves the relevant chunks
83
+ and asks the model — in the markup. There is no Python file behind it.
84
+
85
+ An agent with its own tools, same idea:
86
+
87
+ ```xml
88
+ <q:agent name="calc" model="phi3" max_iterations="4">
89
+ <q:instruction>Use the add tool, then answer.</q:instruction>
90
+
91
+ <q:tool name="add" description="Add two numbers">
92
+ <q:param name="a" type="number" required="true" />
93
+ <q:param name="b" type="number" required="true" />
94
+ <q:function name="doAdd">
95
+ <q:set name="sum" value="{a + b}" type="number" />
96
+ <q:return value="{sum}" />
97
+ </q:function>
98
+ </q:tool>
99
+
100
+ <q:execute task="What is 17 plus 25?" />
101
+ </q:agent>
102
+ ```
103
+
104
+ The tool body is Quantum, not Python. The reasoning loop, the tool call and the type
105
+ coercion of the model's arguments are the runtime's job.
106
+
107
+ ---
108
+
109
+ ## The rest of the language
110
+
111
+ ```xml
112
+ <q:component name="Orders">
113
+ <q:query name="orders" datasource="db">
114
+ SELECT id, customer, total FROM orders WHERE total > :min
115
+ <q:param name="min" value="100" type="decimal" />
116
+ </q:query>
117
+
118
+ <table>
119
+ <q:loop query="orders">
120
+ <tr><td>{orders.customer}</td><td>{orders.total}</td></tr>
121
+ </q:loop>
122
+ </table>
123
+ </q:component>
124
+ ```
125
+
126
+ `q:query` refuses to run SQL with an undeclared `:param` — parameterised queries are
127
+ enforced by the parser, not by discipline.
128
+
129
+ Also core: `q:set` with `session.` / `application.` / `request.` scopes, `q:if`,
130
+ `q:function`, `q:action` for form handling, `q:data` for CSV/JSON/XML import,
131
+ `q:import` / `q:slot` for composition.
132
+
133
+ ---
134
+
135
+ ## Quick start
136
+
137
+ **Requirements:** Python 3.11+ and `pip`.
138
+
139
+ ```bash
140
+ git clone https://github.com/danielgregorio/quantum.git
141
+ cd quantum
142
+ pip install -e ".[dev]"
143
+
144
+ quantum run examples/hello.q
145
+ ```
146
+
147
+ ```
148
+ [EXEC] Executing component: HelloWorld
149
+ [SUCCESS] Result: Hello World!
150
+ ```
151
+
152
+ For the AI examples you also need an [Ollama](https://ollama.com) server and the RAG
153
+ extra:
154
+
155
+ ```bash
156
+ pip install -e ".[rag]"
157
+ ollama pull phi3 && ollama pull nomic-embed-text
158
+ export QUANTUM_LLM_BASE_URL=http://localhost:11434
159
+ ```
160
+
161
+ Declare datasources in `quantum.config.yaml` and `q:query` works with nothing else
162
+ running:
163
+
164
+ ```yaml
165
+ datasources:
166
+ db:
167
+ driver: sqlite
168
+ database: ./data/app.db
169
+ ```
170
+
171
+ ### CLI
172
+
173
+ | Command | What it does |
174
+ |---------|--------------|
175
+ | `run <file.q>` | Execute a component, app, or API |
176
+ | `start` | Start the web server |
177
+ | `deploy <dir>` | Deploy an application |
178
+ | `pkg` · `jobs` · `mq` · `migrate` | Packages, jobs, message queues, migrations |
179
+
180
+ ---
181
+
182
+ ## Documentation
183
+
184
+ Full docs (VitePress) at **[danielgregorio.github.io/quantum](https://danielgregorio.github.io/quantum/)** and in
185
+ [`docs/`](docs/):
186
+
187
+ - [Getting Started](docs/guide/getting-started.md) · [Installation](docs/guide/installation.md) · [Quick Start](docs/guide/quick-start.md)
188
+ - [Components](docs/guide/components.md) · [State](docs/guide/state-management.md) · [Loops](docs/guide/loops.md) · [Conditionals](docs/guide/conditionals.md)
189
+ - [Queries](docs/guide/query.md) · [Functions](docs/guide/functions.md) · [Data fetching](docs/guide/data-fetching.md)
190
+
191
+ ---
192
+
193
+ ## Stability
194
+
195
+ Support levels are defined in **[SUPPORT_TIERS.md](SUPPORT_TIERS.md)**. Short version:
196
+
197
+ | Surface | Status |
198
+ |---------|--------|
199
+ | Core language — `q:component`, `q:set`, `q:if`, `q:loop`, `q:function`, `q:query`, `q:action`, `q:invoke`, `q:data` | **Stable** |
200
+ | AI — `q:llm`, `q:knowledge`, `q:agent` | **Beta** — validated end-to-end against a live Ollama server |
201
+ | `q:team` (multi-agent handoff) | Beta, less exercised |
202
+ | Jobs, messaging, websockets, mail, file uploads, `ui:*`, terminal target | **Experimental** — they run, but no API stability promise |
203
+ | Python scripting (`q:python`, `q:pyclass`, `q:pyimport`) | Experimental, and a full-trust escape hatch — see [SECURITY.md](SECURITY.md) |
204
+
205
+ A functional audit in 2026-09 found that several of these surfaces had never been run
206
+ end-to-end despite being documented as complete. The findings and the fixes are in
207
+ [`FULL_AUDIT_2026-09.md`](FULL_AUDIT_2026-09.md) and
208
+ [`AUDIT_FIX_PLAN.md`](AUDIT_FIX_PLAN.md). Feature status is now verified by execution
209
+ rather than asserted by hand.
210
+
211
+ Pre-1.0: APIs may change between minor versions.
212
+
213
+ ---
214
+
215
+ ## Project layout
216
+
217
+ ```
218
+ quantum/
219
+ ├── quantum/
220
+ │ ├── core/ # Parser & AST (registry-based, modular)
221
+ │ ├── runtime/ # Execution engine, web server, renderer
222
+ │ └── cli/ # Command-line entry point
223
+ ├── examples/ # runnable .q examples
224
+ ├── tests/ # pytest suite (~2.4k tests)
225
+ ├── scripts/ # dev tools
226
+ └── docs/ # VitePress documentation
227
+ ```
228
+
229
+ Adding a tag is one parser + one executor + a registry entry — see
230
+ [CONTRIBUTING.md](CONTRIBUTING.md).
231
+
232
+ ---
233
+
234
+ ## Contributing
235
+
236
+ Read **[CONTRIBUTING.md](CONTRIBUTING.md)** for dev setup and how the modular
237
+ parser/executor architecture works. By participating you agree to the
238
+ [Code of Conduct](CODE_OF_CONDUCT.md).
239
+
240
+ Found a security issue? Follow [SECURITY.md](SECURITY.md) — **do not** open a public issue.
241
+
242
+ ## License
243
+
244
+ MIT — see [LICENSE](LICENSE).
@@ -0,0 +1,202 @@
1
+ # Quantum
2
+
3
+ [![CI](https://github.com/danielgregorio/quantum/actions/workflows/ci.yml/badge.svg)](https://github.com/danielgregorio/quantum/actions/workflows/ci.yml)
4
+ [![Docker](https://github.com/danielgregorio/quantum/actions/workflows/docker.yml/badge.svg)](https://github.com/danielgregorio/quantum/actions/workflows/docker.yml)
5
+ [![Docs](https://img.shields.io/badge/docs-github.io-blue)](https://danielgregorio.github.io/quantum/)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
7
+
8
+ > **Declarative web apps in XML, with AI and RAG built into the language.
9
+ > No build chain, no JavaScript, no frontend framework.**
10
+
11
+ Quantum is a full-stack framework whose language is markup. State, database queries,
12
+ forms, LLM calls and retrieval-augmented generation are all tags — not libraries you
13
+ wire together. It takes its philosophy from ColdFusion and Adobe Flex: the markup *is*
14
+ the app.
15
+
16
+ > ⚠️ **Pre-1.0, and honest about it.** See [Stability](#stability) — the table there
17
+ > reflects what has actually been executed end-to-end, not what is aspirational.
18
+
19
+ ---
20
+
21
+ ## The part that isn't like the others
22
+
23
+ Retrieval-augmented generation, as a language construct:
24
+
25
+ ```xml
26
+ <q:component name="DocsBot">
27
+ <q:knowledge name="docs" model="phi3" embedModel="nomic-embed-text">
28
+ <q:source type="directory" path="./docs/" pattern="*.md" />
29
+ </q:knowledge>
30
+
31
+ <q:query name="answer" datasource="knowledge:docs" mode="rag">
32
+ SELECT answer FROM chunks WHERE content SIMILAR TO :question
33
+ <q:param name="question" value="{form.question}" type="string" />
34
+ </q:query>
35
+
36
+ <p>{answer.answer}</p>
37
+ </q:component>
38
+ ```
39
+
40
+ That indexes a directory, embeds it, stores the vectors, retrieves the relevant chunks
41
+ and asks the model — in the markup. There is no Python file behind it.
42
+
43
+ An agent with its own tools, same idea:
44
+
45
+ ```xml
46
+ <q:agent name="calc" model="phi3" max_iterations="4">
47
+ <q:instruction>Use the add tool, then answer.</q:instruction>
48
+
49
+ <q:tool name="add" description="Add two numbers">
50
+ <q:param name="a" type="number" required="true" />
51
+ <q:param name="b" type="number" required="true" />
52
+ <q:function name="doAdd">
53
+ <q:set name="sum" value="{a + b}" type="number" />
54
+ <q:return value="{sum}" />
55
+ </q:function>
56
+ </q:tool>
57
+
58
+ <q:execute task="What is 17 plus 25?" />
59
+ </q:agent>
60
+ ```
61
+
62
+ The tool body is Quantum, not Python. The reasoning loop, the tool call and the type
63
+ coercion of the model's arguments are the runtime's job.
64
+
65
+ ---
66
+
67
+ ## The rest of the language
68
+
69
+ ```xml
70
+ <q:component name="Orders">
71
+ <q:query name="orders" datasource="db">
72
+ SELECT id, customer, total FROM orders WHERE total > :min
73
+ <q:param name="min" value="100" type="decimal" />
74
+ </q:query>
75
+
76
+ <table>
77
+ <q:loop query="orders">
78
+ <tr><td>{orders.customer}</td><td>{orders.total}</td></tr>
79
+ </q:loop>
80
+ </table>
81
+ </q:component>
82
+ ```
83
+
84
+ `q:query` refuses to run SQL with an undeclared `:param` — parameterised queries are
85
+ enforced by the parser, not by discipline.
86
+
87
+ Also core: `q:set` with `session.` / `application.` / `request.` scopes, `q:if`,
88
+ `q:function`, `q:action` for form handling, `q:data` for CSV/JSON/XML import,
89
+ `q:import` / `q:slot` for composition.
90
+
91
+ ---
92
+
93
+ ## Quick start
94
+
95
+ **Requirements:** Python 3.11+ and `pip`.
96
+
97
+ ```bash
98
+ git clone https://github.com/danielgregorio/quantum.git
99
+ cd quantum
100
+ pip install -e ".[dev]"
101
+
102
+ quantum run examples/hello.q
103
+ ```
104
+
105
+ ```
106
+ [EXEC] Executing component: HelloWorld
107
+ [SUCCESS] Result: Hello World!
108
+ ```
109
+
110
+ For the AI examples you also need an [Ollama](https://ollama.com) server and the RAG
111
+ extra:
112
+
113
+ ```bash
114
+ pip install -e ".[rag]"
115
+ ollama pull phi3 && ollama pull nomic-embed-text
116
+ export QUANTUM_LLM_BASE_URL=http://localhost:11434
117
+ ```
118
+
119
+ Declare datasources in `quantum.config.yaml` and `q:query` works with nothing else
120
+ running:
121
+
122
+ ```yaml
123
+ datasources:
124
+ db:
125
+ driver: sqlite
126
+ database: ./data/app.db
127
+ ```
128
+
129
+ ### CLI
130
+
131
+ | Command | What it does |
132
+ |---------|--------------|
133
+ | `run <file.q>` | Execute a component, app, or API |
134
+ | `start` | Start the web server |
135
+ | `deploy <dir>` | Deploy an application |
136
+ | `pkg` · `jobs` · `mq` · `migrate` | Packages, jobs, message queues, migrations |
137
+
138
+ ---
139
+
140
+ ## Documentation
141
+
142
+ Full docs (VitePress) at **[danielgregorio.github.io/quantum](https://danielgregorio.github.io/quantum/)** and in
143
+ [`docs/`](docs/):
144
+
145
+ - [Getting Started](docs/guide/getting-started.md) · [Installation](docs/guide/installation.md) · [Quick Start](docs/guide/quick-start.md)
146
+ - [Components](docs/guide/components.md) · [State](docs/guide/state-management.md) · [Loops](docs/guide/loops.md) · [Conditionals](docs/guide/conditionals.md)
147
+ - [Queries](docs/guide/query.md) · [Functions](docs/guide/functions.md) · [Data fetching](docs/guide/data-fetching.md)
148
+
149
+ ---
150
+
151
+ ## Stability
152
+
153
+ Support levels are defined in **[SUPPORT_TIERS.md](SUPPORT_TIERS.md)**. Short version:
154
+
155
+ | Surface | Status |
156
+ |---------|--------|
157
+ | Core language — `q:component`, `q:set`, `q:if`, `q:loop`, `q:function`, `q:query`, `q:action`, `q:invoke`, `q:data` | **Stable** |
158
+ | AI — `q:llm`, `q:knowledge`, `q:agent` | **Beta** — validated end-to-end against a live Ollama server |
159
+ | `q:team` (multi-agent handoff) | Beta, less exercised |
160
+ | Jobs, messaging, websockets, mail, file uploads, `ui:*`, terminal target | **Experimental** — they run, but no API stability promise |
161
+ | Python scripting (`q:python`, `q:pyclass`, `q:pyimport`) | Experimental, and a full-trust escape hatch — see [SECURITY.md](SECURITY.md) |
162
+
163
+ A functional audit in 2026-09 found that several of these surfaces had never been run
164
+ end-to-end despite being documented as complete. The findings and the fixes are in
165
+ [`FULL_AUDIT_2026-09.md`](FULL_AUDIT_2026-09.md) and
166
+ [`AUDIT_FIX_PLAN.md`](AUDIT_FIX_PLAN.md). Feature status is now verified by execution
167
+ rather than asserted by hand.
168
+
169
+ Pre-1.0: APIs may change between minor versions.
170
+
171
+ ---
172
+
173
+ ## Project layout
174
+
175
+ ```
176
+ quantum/
177
+ ├── quantum/
178
+ │ ├── core/ # Parser & AST (registry-based, modular)
179
+ │ ├── runtime/ # Execution engine, web server, renderer
180
+ │ └── cli/ # Command-line entry point
181
+ ├── examples/ # runnable .q examples
182
+ ├── tests/ # pytest suite (~2.4k tests)
183
+ ├── scripts/ # dev tools
184
+ └── docs/ # VitePress documentation
185
+ ```
186
+
187
+ Adding a tag is one parser + one executor + a registry entry — see
188
+ [CONTRIBUTING.md](CONTRIBUTING.md).
189
+
190
+ ---
191
+
192
+ ## Contributing
193
+
194
+ Read **[CONTRIBUTING.md](CONTRIBUTING.md)** for dev setup and how the modular
195
+ parser/executor architecture works. By participating you agree to the
196
+ [Code of Conduct](CODE_OF_CONDUCT.md).
197
+
198
+ Found a security issue? Follow [SECURITY.md](SECURITY.md) — **do not** open a public issue.
199
+
200
+ ## License
201
+
202
+ MIT — see [LICENSE](LICENSE).
@@ -0,0 +1,88 @@
1
+ [build-system]
2
+ requires = ["setuptools>=61.0", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "quantum-framework"
7
+ version = "0.9.0"
8
+ description = "Full-stack declarative framework for building web, desktop, and mobile applications"
9
+ readme = "README.md"
10
+ license = {text = "MIT"}
11
+ authors = [
12
+ {name = "Daniel Gregorio", email = "danielgregorio2611@gmail.com"}
13
+ ]
14
+ keywords = ["framework", "declarative", "xml", "web", "desktop", "mobile"]
15
+ classifiers = [
16
+ "Development Status :: 4 - Beta",
17
+ "Framework :: Flask",
18
+ "Intended Audience :: Developers",
19
+ "License :: OSI Approved :: MIT License",
20
+ "Programming Language :: Python :: 3.12",
21
+ ]
22
+ requires-python = ">=3.12"
23
+ dependencies = [
24
+ "flask>=3.0.0",
25
+ "pyyaml>=6.0",
26
+ "sqlparse>=0.4.4",
27
+ "gunicorn>=21.0.0",
28
+ "textual>=0.80.0",
29
+ "requests>=2.31.0",
30
+ "bcrypt>=4.1.0",
31
+ ]
32
+
33
+ [project.optional-dependencies]
34
+ dev = [
35
+ "pytest>=7.4.0",
36
+ "pytest-cov>=4.1.0",
37
+ "pytest-mock>=3.11.1",
38
+ "black>=23.0.0",
39
+ "ruff>=0.1.0",
40
+ ]
41
+ db = [
42
+ "psycopg2-binary>=2.9.9",
43
+ "pymysql>=1.1.0",
44
+ ]
45
+ rag = [
46
+ "chromadb>=0.5.0",
47
+ ]
48
+ jobs = [
49
+ # Required by ScheduleService (q:schedule) — was undeclared, so
50
+ # q:schedule failed on any clean install.
51
+ "apscheduler>=3.10.0",
52
+ ]
53
+ websocket = [
54
+ # The transport behind q:websocket. Without it the tag registers a
55
+ # connection and opens nothing — and says so, rather than pretending.
56
+ "websockets>=12.0",
57
+ ]
58
+
59
+ [project.scripts]
60
+ quantum = "quantum.cli.runner:main"
61
+
62
+ [project.urls]
63
+ Homepage = "https://quantum.sargas.cloud"
64
+ Documentation = "https://quantum.sargas.cloud"
65
+ Repository = "https://github.com/danielgregorio/quantum"
66
+
67
+ [tool.setuptools.packages.find]
68
+ # So o pacote `quantum` e seus subpacotes. O glob anterior `quantum*` varria
69
+ # junto `quantum_admin` (app FastAPI separado, com deps proprias que nao sao
70
+ # do core), e as pastas `quantum-as4`/`quantum-lsp` (projetos irmaos,
71
+ # hifenados e nem importaveis) — 91 arquivos de peso morto no wheel. O ponto
72
+ # em `quantum.*` casa subpacotes; sem ele, `quantum_admin` nao entra.
73
+ include = ["quantum", "quantum.*"]
74
+
75
+
76
+ [tool.black]
77
+ line-length = 100
78
+ target-version = ['py311', 'py312']
79
+
80
+ [tool.ruff]
81
+ line-length = 100
82
+ select = ["E", "F", "W", "I"]
83
+ ignore = ["E501"]
84
+
85
+ [tool.pytest.ini_options]
86
+ testpaths = ["tests"]
87
+ python_files = ["test_*.py"]
88
+ addopts = "-v --tb=short"
@@ -0,0 +1 @@
1
+ # Quantum main package
@@ -0,0 +1,2 @@
1
+ # CLI Quantum modules
2
+ from .runner import QuantumRunner, main
@@ -0,0 +1,15 @@
1
+ """
2
+ Quantum CLI Commands
3
+
4
+ Each command module provides a click command group or command.
5
+ """
6
+
7
+ from quantum.cli.commands.new import new
8
+ from quantum.cli.commands.dev import dev
9
+ from quantum.cli.commands.build import build
10
+ from quantum.cli.commands.serve import serve
11
+ from quantum.cli.commands.test import test
12
+ from quantum.cli.commands.lint import lint
13
+ from quantum.cli.commands.docs import docs
14
+
15
+ __all__ = ['new', 'dev', 'build', 'serve', 'test', 'lint', 'docs']