zrb 1.0.0a21__tar.gz → 1.0.0b2__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 (339) hide show
  1. {zrb-1.0.0a21 → zrb-1.0.0b2}/PKG-INFO +1 -1
  2. {zrb-1.0.0a21 → zrb-1.0.0b2}/pyproject.toml +4 -1
  3. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/__init__.py +2 -1
  4. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/__main__.py +0 -3
  5. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/__init__.py +3 -0
  6. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/group.py +1 -0
  7. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/llm/llm_chat.py +2 -2
  8. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/llm/tool/web.py +1 -1
  9. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/add/fastapp/fastapp_task.py +2 -0
  10. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/config.py +5 -2
  11. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_task.py +80 -20
  12. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_util.py +321 -0
  13. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/my_module/service/my_entity/my_entity_service.py +113 -0
  14. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/my_module/service/my_entity/my_entity_service_factory.py +9 -0
  15. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/my_module/service/my_entity/repository/my_entity_db_repository.py +0 -10
  16. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/my_module/service/my_entity/repository/my_entity_repository.py +59 -0
  17. zrb-1.0.0a21/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/my_module/service/my_entity/repository/factory.py → zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/my_module/service/my_entity/repository/my_entity_repository_factory.py +2 -2
  18. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/schema/my_entity.py +47 -0
  19. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/client_method.py +57 -0
  20. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/gateway_subroute.py +72 -0
  21. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/format_task.py +1 -1
  22. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/input.py +13 -0
  23. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_task.py +23 -0
  24. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_util.py +42 -0
  25. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/gateway/subroute/my_module.py +7 -0
  26. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/client/my_module_api_client.py +6 -0
  27. zrb-1.0.0a21/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/client/any_client.py → zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/client/my_module_client.py +1 -1
  28. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/client/my_module_client_factory.py +11 -0
  29. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/client/my_module_direct_client.py +5 -0
  30. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/route.py +11 -11
  31. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/module_task_definition.py +2 -2
  32. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task.py +8 -8
  33. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/util.py +47 -20
  34. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/app_factory.py +29 -0
  35. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_db_repository.py +218 -0
  36. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_service.py +236 -0
  37. zrb-1.0.0a21/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/db_engine.py → zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/db_engine_factory.py +1 -1
  38. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/error.py +20 -0
  39. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/logger_factory.py +10 -0
  40. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/parser_factory.py +7 -0
  41. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/app.py +47 -0
  42. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/parser.py +105 -0
  43. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/user_agent.py +58 -0
  44. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/view.py +37 -0
  45. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/config.py +25 -1
  46. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/main.py +1 -1
  47. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_api_client.py +16 -0
  48. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client.py +163 -0
  49. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client_factory.py +9 -0
  50. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_direct_client.py +15 -0
  51. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/versions/3093c7336477_add_auth_tables.py +160 -0
  52. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration_metadata.py +23 -0
  53. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/route.py +7 -3
  54. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service.py +117 -0
  55. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service_factory.py +11 -0
  56. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_db_repository.py +26 -0
  57. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_repository.py +61 -0
  58. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_repository_factory.py +13 -0
  59. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_db_repository.py +75 -0
  60. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository.py +59 -0
  61. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository_factory.py +13 -0
  62. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service.py +105 -0
  63. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service_factory.py +7 -0
  64. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_db_repository.py +74 -0
  65. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository.py +63 -0
  66. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository_factory.py +2 -2
  67. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service.py +105 -0
  68. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service_factory.py +7 -0
  69. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/route.py +66 -0
  70. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/subroute/auth.py +214 -0
  71. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/view.py +74 -0
  72. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/error.html +6 -0
  73. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/homepage.html +6 -0
  74. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/android-chrome-192x192.png +0 -0
  75. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/android-chrome-512x512.png +0 -0
  76. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/favicon-32x32.png +0 -0
  77. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.amber.min.css +4 -0
  78. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.blue.min.css +4 -0
  79. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.cyan.min.css +4 -0
  80. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.fuchsia.min.css +4 -0
  81. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.green.min.css +4 -0
  82. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.grey.min.css +4 -0
  83. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.indigo.min.css +4 -0
  84. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.jade.min.css +4 -0
  85. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.lime.min.css +4 -0
  86. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.min.css +4 -0
  87. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.orange.min.css +4 -0
  88. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.pink.min.css +4 -0
  89. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.pumpkin.min.css +4 -0
  90. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.purple.min.css +4 -0
  91. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.red.min.css +4 -0
  92. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.sand.min.css +4 -0
  93. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.slate.min.css +4 -0
  94. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.violet.min.css +4 -0
  95. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.yellow.min.css +4 -0
  96. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.zinc.min.css +4 -0
  97. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/template/default.html +34 -0
  98. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/requirements.txt +1 -0
  99. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/permission.py +51 -0
  100. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/role.py +85 -0
  101. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/session.py +52 -0
  102. zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/user.py +64 -0
  103. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/python.py +1 -1
  104. zrb-1.0.0b2/src/zrb/builtin/random.py +61 -0
  105. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/cmd/cmd_val.py +6 -5
  106. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/content_transformer/any_content_transformer.py +7 -0
  107. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/content_transformer/content_transformer.py +6 -0
  108. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/runner/cli.py +14 -7
  109. zrb-1.0.0b2/src/zrb/runner/web_app.py +69 -0
  110. zrb-1.0.0b2/src/zrb/runner/web_config/config.py +91 -0
  111. zrb-1.0.0b2/src/zrb/runner/web_config/config_factory.py +26 -0
  112. zrb-1.0.0b2/src/zrb/runner/web_route/docs_route.py +17 -0
  113. zrb-1.0.0b2/src/zrb/runner/web_route/error_page/serve_default_404.py +28 -0
  114. zrb-1.0.0a21/src/zrb/runner/web_controller/error_page/controller.py → zrb-1.0.0b2/src/zrb/runner/web_route/error_page/show_error_page.py +2 -2
  115. {zrb-1.0.0a21/src/zrb/runner/web_controller → zrb-1.0.0b2/src/zrb/runner/web_route}/error_page/view.html +5 -0
  116. zrb-1.0.0b2/src/zrb/runner/web_route/home_page/home_page_route.py +51 -0
  117. zrb-1.0.0b2/src/zrb/runner/web_route/login_api_route.py +31 -0
  118. zrb-1.0.0b2/src/zrb/runner/web_route/login_page/login_page_route.py +39 -0
  119. zrb-1.0.0b2/src/zrb/runner/web_route/logout_api_route.py +18 -0
  120. zrb-1.0.0b2/src/zrb/runner/web_route/logout_page/logout_page_route.py +40 -0
  121. zrb-1.0.0a21/src/zrb/runner/web_controller/group_info_page/controller.py → zrb-1.0.0b2/src/zrb/runner/web_route/node_page/group/show_group_page.py +3 -3
  122. zrb-1.0.0b2/src/zrb/runner/web_route/node_page/node_page_route.py +50 -0
  123. zrb-1.0.0a21/src/zrb/runner/web_controller/session_page/controller.py → zrb-1.0.0b2/src/zrb/runner/web_route/node_page/task/show_task_page.py +3 -3
  124. zrb-1.0.0b2/src/zrb/runner/web_route/refresh_token_api_route.py +38 -0
  125. zrb-1.0.0b2/src/zrb/runner/web_route/static/static_route.py +44 -0
  126. zrb-1.0.0b2/src/zrb/runner/web_route/task_input_api_route.py +47 -0
  127. zrb-1.0.0b2/src/zrb/runner/web_route/task_session_api_route.py +102 -0
  128. zrb-1.0.0b2/src/zrb/runner/web_schema/session.py +5 -0
  129. zrb-1.0.0b2/src/zrb/runner/web_schema/token.py +11 -0
  130. zrb-1.0.0b2/src/zrb/runner/web_schema/user.py +32 -0
  131. zrb-1.0.0b2/src/zrb/runner/web_util/cookie.py +29 -0
  132. zrb-1.0.0a21/src/zrb/runner/web_util.py → zrb-1.0.0b2/src/zrb/runner/web_util/html.py +1 -23
  133. zrb-1.0.0b2/src/zrb/runner/web_util/token.py +72 -0
  134. zrb-1.0.0b2/src/zrb/runner/web_util/user.py +63 -0
  135. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/session/session.py +6 -4
  136. zrb-1.0.0a21/src/zrb/session_state_logger/default_session_state_logger.py → zrb-1.0.0b2/src/zrb/session_state_logger/session_state_logger_factory.py +1 -1
  137. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/task/base_task.py +53 -6
  138. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/task/base_trigger.py +2 -0
  139. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/task/cmd_task.py +9 -5
  140. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/task/http_check.py +2 -0
  141. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/task/llm_task.py +2 -0
  142. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/task/make_task.py +2 -0
  143. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/task/rsync_task.py +2 -0
  144. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/task/scaffolder.py +8 -5
  145. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/task/scheduler.py +2 -0
  146. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/task/tcp_check.py +2 -0
  147. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/task_status/task_status.py +4 -3
  148. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/util/cmd/command.py +1 -0
  149. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/util/file.py +7 -1
  150. zrb-1.0.0a21/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_util.py +0 -213
  151. zrb-1.0.0a21/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/any_client_method.py +0 -27
  152. zrb-1.0.0a21/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/my_module/service/my_entity/my_entity_usecase.py +0 -65
  153. zrb-1.0.0a21/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/my_module/service/my_entity/repository/my_entity_repository.py +0 -38
  154. zrb-1.0.0a21/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/schema/my_entity.py +0 -37
  155. zrb-1.0.0a21/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/gateway/subroute/my_module.py +0 -0
  156. zrb-1.0.0a21/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/client/api_client.py +0 -6
  157. zrb-1.0.0a21/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/client/direct_client.py +0 -6
  158. zrb-1.0.0a21/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/client/factory.py +0 -9
  159. zrb-1.0.0a21/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/app.py +0 -20
  160. zrb-1.0.0a21/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_db_repository.py +0 -134
  161. zrb-1.0.0a21/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_usecase.py +0 -245
  162. zrb-1.0.0a21/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/error.py +0 -8
  163. zrb-1.0.0a21/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/any_client.py +0 -33
  164. zrb-1.0.0a21/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/api_client.py +0 -7
  165. zrb-1.0.0a21/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/direct_client.py +0 -6
  166. zrb-1.0.0a21/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/factory.py +0 -9
  167. zrb-1.0.0a21/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/versions/3093c7336477_add_user_table.py +0 -37
  168. zrb-1.0.0a21/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration_metadata.py +0 -6
  169. zrb-1.0.0a21/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_db_repository.py +0 -45
  170. zrb-1.0.0a21/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository.py +0 -42
  171. zrb-1.0.0a21/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_usecase.py +0 -53
  172. zrb-1.0.0a21/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_usecase_factory.py +0 -6
  173. zrb-1.0.0a21/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/route.py +0 -37
  174. zrb-1.0.0a21/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/subroute/auth.py +0 -44
  175. zrb-1.0.0a21/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/permission.py +0 -39
  176. zrb-1.0.0a21/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/role.py +0 -39
  177. zrb-1.0.0a21/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/user.py +0 -39
  178. zrb-1.0.0a21/src/zrb/runner/web_app.py +0 -321
  179. zrb-1.0.0a21/src/zrb/runner/web_config.py +0 -274
  180. zrb-1.0.0a21/src/zrb/runner/web_controller/home_page/controller.py +0 -33
  181. zrb-1.0.0a21/src/zrb/runner/web_controller/login_page/controller.py +0 -25
  182. zrb-1.0.0a21/src/zrb/runner/web_controller/logout_page/controller.py +0 -26
  183. {zrb-1.0.0a21 → zrb-1.0.0b2}/README.md +0 -0
  184. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/attr/__init__.py +0 -0
  185. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/attr/type.py +0 -0
  186. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/base64.py +0 -0
  187. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/git.py +0 -0
  188. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/git_subtree.py +0 -0
  189. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/llm/tool/cli.py +0 -0
  190. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/llm/tool/rag.py +0 -0
  191. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/md5.py +0 -0
  192. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/__init__.py +0 -0
  193. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/add/fastapp/fastapp_input.py +0 -0
  194. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.flake8 +0 -0
  195. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.gitignore +0 -0
  196. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/README.md +0 -0
  197. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/__init__.py +0 -0
  198. /zrb-1.0.0a21/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/create_column_task.py → /zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_task.py +0 -0
  199. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/group.py +0 -0
  200. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/alembic.ini +0 -0
  201. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/README +0 -0
  202. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/env.py +0 -0
  203. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/script.py.mako +0 -0
  204. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/versions/.gitkeep +0 -0
  205. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration_metadata.py +0 -0
  206. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/service/__init__.py +0 -0
  207. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/venv_task.py +0 -0
  208. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/__init__.py +0 -0
  209. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/schema.py +0 -0
  210. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/migrate.py +0 -0
  211. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/__init__.py +0 -0
  212. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/alembic.ini +0 -0
  213. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/README +0 -0
  214. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/env.py +0 -0
  215. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/script.py.mako +0 -0
  216. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/__init__.py +0 -0
  217. {zrb-1.0.0a21/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user → zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission}/__init__.py +0 -0
  218. {zrb-1.0.0a21/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema → zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role}/__init__.py +0 -0
  219. {zrb-1.0.0a21/src/zrb/builtin/project/create → zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user}/__init__.py +0 -0
  220. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/alembic.ini +0 -0
  221. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/README +0 -0
  222. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/env.py +0 -0
  223. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/script.py.mako +0 -0
  224. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/versions/.gitkeep +0 -0
  225. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration_metadata.py +0 -0
  226. {zrb-1.0.0a21/src/zrb/builtin/shell → zrb-1.0.0b2/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema}/__init__.py +0 -0
  227. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/template.env +0 -0
  228. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/add/fastapp/fastapp_util.py +0 -0
  229. {zrb-1.0.0a21/src/zrb/builtin/shell/autocomplete → zrb-1.0.0b2/src/zrb/builtin/project/create}/__init__.py +0 -0
  230. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/create/project-template/README.md +0 -0
  231. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/create/project-template/zrb_init.py +0 -0
  232. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/project/create/project_task.py +0 -0
  233. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/setup/asdf/asdf.py +0 -0
  234. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/setup/asdf/asdf_helper.py +0 -0
  235. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/setup/common_input.py +0 -0
  236. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/setup/latex/ubuntu.py +0 -0
  237. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/setup/tmux/tmux.py +0 -0
  238. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/setup/tmux/tmux_config.sh +0 -0
  239. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/setup/tmux/tmux_helper.py +0 -0
  240. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/setup/ubuntu.py +0 -0
  241. {zrb-1.0.0a21/src/zrb/callback → zrb-1.0.0b2/src/zrb/builtin/shell}/__init__.py +0 -0
  242. {zrb-1.0.0a21/src/zrb/cmd → zrb-1.0.0b2/src/zrb/builtin/shell/autocomplete}/__init__.py +0 -0
  243. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/shell/autocomplete/bash.py +0 -0
  244. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/shell/autocomplete/subcmd.py +0 -0
  245. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/shell/autocomplete/zsh.py +0 -0
  246. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/builtin/todo.py +0 -0
  247. {zrb-1.0.0a21/src/zrb/content_transformer → zrb-1.0.0b2/src/zrb/callback}/__init__.py +0 -0
  248. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/callback/any_callback.py +0 -0
  249. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/callback/callback.py +0 -0
  250. {zrb-1.0.0a21/src/zrb/context → zrb-1.0.0b2/src/zrb/cmd}/__init__.py +0 -0
  251. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/cmd/cmd_result.py +0 -0
  252. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/config.py +0 -0
  253. {zrb-1.0.0a21/src/zrb/dot_dict → zrb-1.0.0b2/src/zrb/content_transformer}/__init__.py +0 -0
  254. {zrb-1.0.0a21/src/zrb/env → zrb-1.0.0b2/src/zrb/context}/__init__.py +0 -0
  255. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/context/any_context.py +0 -0
  256. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/context/any_shared_context.py +0 -0
  257. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/context/context.py +0 -0
  258. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/context/shared_context.py +0 -0
  259. {zrb-1.0.0a21/src/zrb/group → zrb-1.0.0b2/src/zrb/dot_dict}/__init__.py +0 -0
  260. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/dot_dict/dot_dict.py +0 -0
  261. {zrb-1.0.0a21/src/zrb/input → zrb-1.0.0b2/src/zrb/env}/__init__.py +0 -0
  262. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/env/any_env.py +0 -0
  263. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/env/env.py +0 -0
  264. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/env/env_file.py +0 -0
  265. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/env/env_map.py +0 -0
  266. {zrb-1.0.0a21/src/zrb/runner → zrb-1.0.0b2/src/zrb/group}/__init__.py +0 -0
  267. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/group/any_group.py +0 -0
  268. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/group/group.py +0 -0
  269. {zrb-1.0.0a21/src/zrb/runner/web_controller → zrb-1.0.0b2/src/zrb/input}/__init__.py +0 -0
  270. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/input/any_input.py +0 -0
  271. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/input/base_input.py +0 -0
  272. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/input/bool_input.py +0 -0
  273. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/input/float_input.py +0 -0
  274. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/input/int_input.py +0 -0
  275. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/input/option_input.py +0 -0
  276. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/input/password_input.py +0 -0
  277. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/input/str_input.py +0 -0
  278. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/input/text_input.py +0 -0
  279. {zrb-1.0.0a21/src/zrb/runner/web_controller/group_info_page → zrb-1.0.0b2/src/zrb/runner}/__init__.py +0 -0
  280. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/runner/common_util.py +0 -0
  281. {zrb-1.0.0a21/src/zrb/runner/web_controller/home_page → zrb-1.0.0b2/src/zrb/runner/web_route}/__init__.py +0 -0
  282. {zrb-1.0.0a21/src/zrb/runner/web_controller/session_page → zrb-1.0.0b2/src/zrb/runner/web_route/home_page}/__init__.py +0 -0
  283. {zrb-1.0.0a21/src/zrb/runner/web_controller → zrb-1.0.0b2/src/zrb/runner/web_route}/home_page/view.html +0 -0
  284. {zrb-1.0.0a21/src/zrb/runner/web_controller → zrb-1.0.0b2/src/zrb/runner/web_route}/login_page/view.html +0 -0
  285. {zrb-1.0.0a21/src/zrb/runner/web_controller → zrb-1.0.0b2/src/zrb/runner/web_route}/logout_page/view.html +0 -0
  286. {zrb-1.0.0a21/src/zrb/runner/web_controller/group_info_page → zrb-1.0.0b2/src/zrb/runner/web_route/node_page/group}/view.html +0 -0
  287. {zrb-1.0.0a21/src/zrb/runner/web_controller/session_page → zrb-1.0.0b2/src/zrb/runner/web_route/node_page/task}/partial/input.html +0 -0
  288. {zrb-1.0.0a21/src/zrb/runner/web_controller/session_page → zrb-1.0.0b2/src/zrb/runner/web_route/node_page/task}/view.html +0 -0
  289. {zrb-1.0.0a21/src/zrb/runner → zrb-1.0.0b2/src/zrb/runner/web_route/static}/refresh-token.template.js +0 -0
  290. {zrb-1.0.0a21/src/zrb/runner/web_controller/static → zrb-1.0.0b2/src/zrb/runner/web_route/static/resources}/common.css +0 -0
  291. {zrb-1.0.0a21/src/zrb/runner/web_controller/static → zrb-1.0.0b2/src/zrb/runner/web_route/static/resources}/favicon-32x32.png +0 -0
  292. {zrb-1.0.0a21/src/zrb/runner/web_controller/static → zrb-1.0.0b2/src/zrb/runner/web_route/static/resources}/login/event.js +0 -0
  293. {zrb-1.0.0a21/src/zrb/runner/web_controller/static → zrb-1.0.0b2/src/zrb/runner/web_route/static/resources}/logout/event.js +0 -0
  294. {zrb-1.0.0a21/src/zrb/runner/web_controller/static → zrb-1.0.0b2/src/zrb/runner/web_route/static/resources}/pico.min.css +0 -0
  295. {zrb-1.0.0a21/src/zrb/runner/web_controller/static → zrb-1.0.0b2/src/zrb/runner/web_route/static/resources}/session/common-util.js +0 -0
  296. {zrb-1.0.0a21/src/zrb/runner/web_controller/static → zrb-1.0.0b2/src/zrb/runner/web_route/static/resources}/session/current-session.js +0 -0
  297. {zrb-1.0.0a21/src/zrb/runner/web_controller/static → zrb-1.0.0b2/src/zrb/runner/web_route/static/resources}/session/event.js +0 -0
  298. {zrb-1.0.0a21/src/zrb/runner/web_controller/static → zrb-1.0.0b2/src/zrb/runner/web_route/static/resources}/session/past-session.js +0 -0
  299. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/session/__init__.py +0 -0
  300. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/session/any_session.py +0 -0
  301. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/session_state_log/__init__.py +0 -0
  302. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/session_state_log/session_state_log.py +0 -0
  303. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/session_state_logger/__init__.py +0 -0
  304. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/session_state_logger/any_session_state_logger.py +0 -0
  305. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/session_state_logger/file_session_state_logger.py +0 -0
  306. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/task/__init__.py +0 -0
  307. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/task/any_task.py +0 -0
  308. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/task/task.py +0 -0
  309. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/task_status/__init__.py +0 -0
  310. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/util/__init__.py +0 -0
  311. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/util/attr.py +0 -0
  312. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/util/cli/__init__.py +0 -0
  313. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/util/cli/style.py +0 -0
  314. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/util/cli/subcommand.py +0 -0
  315. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/util/cmd/__init__.py +0 -0
  316. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/util/cmd/remote.py +0 -0
  317. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/util/codemod/__init__.py +0 -0
  318. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/util/codemod/append_code_to_class.py +0 -0
  319. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/util/codemod/append_code_to_function.py +0 -0
  320. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/util/codemod/append_code_to_method.py +0 -0
  321. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/util/codemod/append_key_to_dict.py +0 -0
  322. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/util/codemod/append_param_to_function_call.py +0 -0
  323. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/util/codemod/prepend_code_to_module.py +0 -0
  324. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/util/codemod/prepend_parent_to_class.py +0 -0
  325. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/util/codemod/prepend_property_to_class.py +0 -0
  326. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/util/cron.py +0 -0
  327. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/util/git.py +0 -0
  328. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/util/git_subtree.py +0 -0
  329. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/util/group.py +0 -0
  330. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/util/llm/tool.py +0 -0
  331. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/util/load.py +0 -0
  332. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/util/run.py +0 -0
  333. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/util/string/__init__.py +0 -0
  334. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/util/string/conversion.py +0 -0
  335. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/util/string/format.py +0 -0
  336. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/util/string/name.py +0 -0
  337. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/util/todo.py +0 -0
  338. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/xcom/__init__.py +0 -0
  339. {zrb-1.0.0a21 → zrb-1.0.0b2}/src/zrb/xcom/xcom.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: zrb
3
- Version: 1.0.0a21
3
+ Version: 1.0.0b2
4
4
  Summary: Your Automation Powerhouse
5
5
  Home-page: https://github.com/state-alchemists/zrb
6
6
  License: AGPL-3.0-or-later
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "zrb"
3
- version = "1.0.0a21"
3
+ version = "1.0.0b2"
4
4
  description = "Your Automation Powerhouse"
5
5
  authors = ["Go Frendi Gunawan <gofrendiasgard@gmail.com>"]
6
6
  license = "AGPL-3.0-or-later"
@@ -56,11 +56,14 @@ python-jose = {extras = ["cryptography"], version = "^3.3.0"}
56
56
  rag = ["chromadb", "pdfplumber"]
57
57
 
58
58
  [tool.poetry.dev-dependencies]
59
+ alembic = "^1.14.0" # FastApp dependencies
59
60
  flake8 = "~7.1.1"
60
61
  pytest = "~8.3.3"
61
62
  pytest-cov = "~6.0.0"
62
63
  pytest-asyncio = "~0.24.0"
64
+ sqlmodel = "^0.0.22" # FastApp dependencies
63
65
  tomlkit = "^0.13.2"
66
+ ulid = "^1.1" # FastApp dependencies
64
67
 
65
68
  [tool.pytest.ini_options]
66
69
  asyncio_default_fixture_loop_scope = "function"
@@ -34,7 +34,8 @@ from zrb.input.password_input import PasswordInput
34
34
  from zrb.input.str_input import StrInput
35
35
  from zrb.input.text_input import TextInput
36
36
  from zrb.runner.cli import cli
37
- from zrb.runner.web_config import User, web_config
37
+ from zrb.runner.web_config.config_factory import web_config
38
+ from zrb.runner.web_schema.user import User
38
39
  from zrb.session.session import Session
39
40
  from zrb.task.any_task import AnyTask
40
41
  from zrb.task.base_task import BaseTask
@@ -14,9 +14,6 @@ def serve_cli():
14
14
  for init_script in INIT_SCRIPTS:
15
15
  load_file(init_script, -1)
16
16
  cli.run(sys.argv[1:])
17
- except RuntimeError as e:
18
- if "Event loop is closed" not in f"{e}":
19
- raise e
20
17
  except KeyboardInterrupt:
21
18
  print(stylize_warning("\nStopped"), file=sys.stderr)
22
19
  except NodeNotFoundError as e:
@@ -12,6 +12,7 @@ from zrb.builtin.md5 import hash_md5, sum_md5
12
12
  from zrb.builtin.project.add.fastapp.fastapp_task import add_fastapp_to_project
13
13
  from zrb.builtin.project.create.project_task import create_project
14
14
  from zrb.builtin.python import format_python_code
15
+ from zrb.builtin.random import shuffle_values, throw_dice
15
16
  from zrb.builtin.setup.asdf.asdf import setup_asdf
16
17
  from zrb.builtin.setup.latex.ubuntu import setup_latex_on_ubuntu
17
18
  from zrb.builtin.setup.tmux.tmux import setup_tmux
@@ -55,6 +56,8 @@ assert edit_todo
55
56
  assert complete_todo
56
57
  assert log_todo
57
58
  assert show_todo
59
+ assert throw_dice
60
+ assert shuffle_values
58
61
  assert setup_ubuntu
59
62
  assert setup_latex_on_ubuntu
60
63
  assert setup_asdf
@@ -2,6 +2,7 @@ from zrb.group.group import Group
2
2
  from zrb.runner.cli import cli
3
3
 
4
4
  base64_group = cli.add_group(Group(name="base64", description="📄 Base64 operations"))
5
+ random_group = cli.add_group(Group(name="random", description="🔀 Random operation"))
5
6
  git_group = cli.add_group(Group(name="git", description="🌱 Git related commands"))
6
7
  git_branch_group = git_group.add_group(
7
8
  Group(name="branch", description="🌿 Git branch related commands")
@@ -1,6 +1,6 @@
1
1
  from zrb.builtin.group import llm_group
2
2
  from zrb.builtin.llm.tool.cli import run_shell_command
3
- from zrb.builtin.llm.tool.web import open_web_page, query_internet
3
+ from zrb.builtin.llm.tool.web import open_web_route, query_internet
4
4
  from zrb.config import (
5
5
  LLM_ALLOW_ACCESS_SHELL,
6
6
  LLM_ALLOW_ACCESS_WEB,
@@ -43,5 +43,5 @@ if LLM_ALLOW_ACCESS_SHELL:
43
43
  llm_chat.add_tool(run_shell_command)
44
44
 
45
45
  if LLM_ALLOW_ACCESS_WEB:
46
- llm_chat.add_tool(open_web_page)
46
+ llm_chat.add_tool(open_web_route)
47
47
  llm_chat.add_tool(query_internet)
@@ -2,7 +2,7 @@ import json
2
2
  from typing import Annotated
3
3
 
4
4
 
5
- def open_web_page(url: str) -> str:
5
+ def open_web_route(url: str) -> str:
6
6
  """Get content from a web page."""
7
7
  import requests
8
8
 
@@ -49,6 +49,7 @@ scaffold_fastapp = Scaffolder(
49
49
  transform_content=[
50
50
  # Common transformation (project_dir/app_dir/**/*)
51
51
  ContentTransformer(
52
+ name="transform-app-dir",
52
53
  match=is_in_project_app_dir,
53
54
  transform={
54
55
  "My App Name": "{ctx.input.app.title()}",
@@ -60,6 +61,7 @@ scaffold_fastapp = Scaffolder(
60
61
  ),
61
62
  # Register fastapp's tasks to project's zrb_init (project_dir/zrb_init.py)
62
63
  ContentTransformer(
64
+ name="trasnform-zrb-init",
63
65
  match=is_project_zrb_init_file,
64
66
  transform=update_project_zrb_init_file,
65
67
  ),
@@ -9,9 +9,12 @@ MICROSERVICES_ENV_VARS = {
9
9
  "MY_APP_NAME_MODE": "microservices",
10
10
  "MY_APP_NAME_AUTH_BASE_URL": "http://localhost:3002",
11
11
  }
12
- MONOLITH_ENV_VARS = {"MY_APP_NAME_MODE": "monolith"}
12
+ MONOLITH_ENV_VARS = {
13
+ "MY_APP_NAME_MODE": "monolith",
14
+ "MY_APP_NAME_MODULES": "",
15
+ }
13
16
 
14
17
  if platform.system() == "Windows":
15
18
  ACTIVATE_VENV_SCRIPT = "Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser; . .venv\\Scripts\\Activate" # noqa
16
19
  else:
17
- ACTIVATE_VENV_SCRIPT = "source .venv/bin/activate"
20
+ ACTIVATE_VENV_SCRIPT = ". .venv/bin/activate"
@@ -1,19 +1,21 @@
1
1
  import os
2
2
 
3
- from my_app_name._zrb.config import APP_DIR
3
+ from my_app_name._zrb.config import ACTIVATE_VENV_SCRIPT, APP_DIR
4
4
  from my_app_name._zrb.entity.add_entity_util import (
5
5
  is_in_app_schema_dir,
6
6
  is_in_module_entity_dir,
7
- is_module_any_client_file,
8
7
  is_module_api_client_file,
8
+ is_module_client_file,
9
9
  is_module_direct_client_file,
10
+ is_module_gateway_subroute_file,
10
11
  is_module_migration_metadata_file,
11
12
  is_module_route_file,
12
- update_any_client,
13
- update_api_client,
14
- update_direct_client,
15
- update_migration_metadata,
16
- update_route,
13
+ update_api_client_file,
14
+ update_client_file,
15
+ update_direct_client_file,
16
+ update_gateway_subroute_file,
17
+ update_migration_metadata_file,
18
+ update_route_file,
17
19
  )
18
20
  from my_app_name._zrb.format_task import format_my_app_name_code
19
21
  from my_app_name._zrb.group import app_create_group
@@ -23,9 +25,25 @@ from my_app_name._zrb.input import (
23
25
  new_entity_input,
24
26
  plural_entity_input,
25
27
  )
26
- from my_app_name._zrb.util import get_existing_module_names, get_existing_schema_names
28
+ from my_app_name._zrb.util import (
29
+ cd_module_script,
30
+ get_existing_module_names,
31
+ get_existing_schema_names,
32
+ set_create_migration_db_url_env,
33
+ set_env,
34
+ )
35
+ from my_app_name._zrb.venv_task import prepare_venv
27
36
 
28
- from zrb import AnyContext, ContentTransformer, Scaffolder, Task, make_task
37
+ from zrb import (
38
+ AnyContext,
39
+ Cmd,
40
+ CmdTask,
41
+ ContentTransformer,
42
+ EnvFile,
43
+ Scaffolder,
44
+ Task,
45
+ make_task,
46
+ )
29
47
  from zrb.util.string.conversion import to_snake_case
30
48
 
31
49
 
@@ -66,6 +84,7 @@ scaffold_my_app_name_entity = Scaffolder(
66
84
  transform_content=[
67
85
  # Schema tranformation (my_app_name/schema/snake_entity_name)
68
86
  ContentTransformer(
87
+ name="transform-schema-file",
69
88
  match=is_in_app_schema_dir,
70
89
  transform={
71
90
  "MyEntity": "{to_pascal_case(ctx.input.entity)}",
@@ -75,6 +94,7 @@ scaffold_my_app_name_entity = Scaffolder(
75
94
  # Common module's entity transformation
76
95
  # (my_app_name/module/snake_module_name/service/snake_entity_name)
77
96
  ContentTransformer(
97
+ name="transform-module-entity-dir",
78
98
  match=is_in_module_entity_dir,
79
99
  transform={
80
100
  "my_module": "{to_snake_case(ctx.input.module)}",
@@ -87,40 +107,80 @@ scaffold_my_app_name_entity = Scaffolder(
87
107
  # Add entity to migration metadata
88
108
  # (my_app_name/module/snake_module_name/migration_metadata.py)
89
109
  ContentTransformer(
110
+ name="transform-module-migration-metadata",
90
111
  match=is_module_migration_metadata_file,
91
- transform=update_migration_metadata,
112
+ transform=update_migration_metadata_file,
92
113
  ),
93
- # Update API Client (my_app_name/module/snake_module_name/client/api_client.py)
114
+ # Update API Client
115
+ # (my_app_name/module/snake_module_name/client/snake_module_name_api_client.py)
94
116
  ContentTransformer(
117
+ name="transform-module-api-client",
95
118
  match=is_module_api_client_file,
96
- transform=update_api_client,
119
+ transform=update_api_client_file,
97
120
  ),
98
- # Update Direct Client (my_app_name/module/snake_module_name/client/direct_client.py)
121
+ # Update Direct Client
122
+ # (my_app_name/module/snake_module_name/client/snake_module_name_direct_client.py)
99
123
  ContentTransformer(
124
+ name="transform-module-direct-client",
100
125
  match=is_module_direct_client_file,
101
- transform=update_direct_client,
126
+ transform=update_direct_client_file,
102
127
  ),
103
- # Update Any Client (my_app_name/module/snake_module_name/client/any_client.py)
128
+ # Update Client
129
+ # (my_app_name/module/snake_module_name/client/snake_module_name_client.py)
104
130
  ContentTransformer(
105
- match=is_module_any_client_file,
106
- transform=update_any_client,
131
+ name="transform-module-any-client",
132
+ match=is_module_client_file,
133
+ transform=update_client_file,
107
134
  ),
108
135
  # Update module route (my_app_name/module/route.py)
109
136
  ContentTransformer(
137
+ name="transform-module-route",
110
138
  match=is_module_route_file,
111
- transform=update_route,
139
+ transform=update_route_file,
140
+ ),
141
+ # Update module gateway subroute
142
+ # (my_app_name/module/gateway/subroute/snake_module_name.py)
143
+ ContentTransformer(
144
+ name="transform-module-gateway-subroute",
145
+ match=is_module_gateway_subroute_file,
146
+ transform=update_gateway_subroute_file,
112
147
  ),
113
- # TODO: Register gateway route
114
148
  ],
115
149
  retries=0,
116
150
  upstream=validate_create_my_app_name_entity,
117
151
  )
118
152
 
153
+ create_my_app_name_entity_migration = CmdTask(
154
+ name="create-my-app-name-entity-migration",
155
+ input=[
156
+ existing_module_input,
157
+ new_entity_input,
158
+ ],
159
+ env=EnvFile(path=os.path.join(APP_DIR, "template.env")),
160
+ cwd=APP_DIR,
161
+ cmd=[
162
+ ACTIVATE_VENV_SCRIPT,
163
+ Cmd(lambda ctx: set_create_migration_db_url_env(ctx.input.module)),
164
+ Cmd(lambda ctx: set_env("MY_APP_NAME_MODULES", ctx.input.module)),
165
+ Cmd(lambda ctx: cd_module_script(ctx.input.module)),
166
+ "alembic upgrade head",
167
+ Cmd(
168
+ 'alembic revision --autogenerate -m "create_{to_snake_case(ctx.input.entity)}_table"', # noqa
169
+ ),
170
+ ],
171
+ render_cmd=False,
172
+ retries=0,
173
+ upstream=[
174
+ prepare_venv,
175
+ scaffold_my_app_name_entity,
176
+ ],
177
+ )
178
+
119
179
  add_my_app_name_entity = app_create_group.add_task(
120
180
  Task(
121
181
  name="add-my-app-name-entity",
122
182
  description="🏗️ Create new entity on a module",
123
- upstream=scaffold_my_app_name_entity,
183
+ upstream=create_my_app_name_entity_migration,
124
184
  successor=format_my_app_name_code,
125
185
  retries=0,
126
186
  ),
@@ -0,0 +1,321 @@
1
+ import os
2
+
3
+ from my_app_name._zrb.config import APP_DIR
4
+
5
+ from zrb.context.any_context import AnyContext
6
+ from zrb.util.codemod.append_code_to_class import append_code_to_class
7
+ from zrb.util.codemod.append_code_to_function import append_code_to_function
8
+ from zrb.util.codemod.prepend_code_to_module import prepend_code_to_module
9
+ from zrb.util.codemod.prepend_parent_to_class import prepend_parent_class
10
+ from zrb.util.file import read_file, write_file
11
+ from zrb.util.string.conversion import to_kebab_case, to_pascal_case, to_snake_case
12
+
13
+
14
+ def is_in_app_schema_dir(ctx: AnyContext, file_path: str) -> bool:
15
+ return file_path.startswith(
16
+ os.path.join(APP_DIR, "schema", to_snake_case(ctx.input.entity))
17
+ )
18
+
19
+
20
+ def is_in_module_entity_dir(ctx: AnyContext, file_path: str) -> bool:
21
+ return file_path.startswith(
22
+ os.path.join(
23
+ APP_DIR,
24
+ "module",
25
+ to_snake_case(ctx.input.module),
26
+ "service",
27
+ to_snake_case(ctx.input.entity),
28
+ )
29
+ )
30
+
31
+
32
+ def is_module_route_file(ctx: AnyContext, file_path: str) -> bool:
33
+ module_route_file = os.path.join(
34
+ APP_DIR,
35
+ "module",
36
+ to_snake_case(ctx.input.module),
37
+ "route.py",
38
+ )
39
+ return file_path == module_route_file
40
+
41
+
42
+ def is_module_migration_metadata_file(ctx: AnyContext, file_path: str) -> bool:
43
+ module_migration_metadata_file = os.path.join(
44
+ APP_DIR,
45
+ "module",
46
+ to_snake_case(ctx.input.module),
47
+ "migration_metadata.py",
48
+ )
49
+ return file_path == module_migration_metadata_file
50
+
51
+
52
+ def is_module_client_file(ctx: AnyContext, file_path: str) -> bool:
53
+ module_any_client_file = os.path.join(
54
+ APP_DIR,
55
+ "module",
56
+ to_snake_case(ctx.input.module),
57
+ "client",
58
+ f"{to_snake_case(ctx.input.module)}_client.py",
59
+ )
60
+ return file_path == module_any_client_file
61
+
62
+
63
+ def is_module_api_client_file(ctx: AnyContext, file_path: str) -> bool:
64
+ module_api_client_file = os.path.join(
65
+ APP_DIR,
66
+ "module",
67
+ to_snake_case(ctx.input.module),
68
+ "client",
69
+ f"{to_snake_case(ctx.input.module)}_api_client.py",
70
+ )
71
+ return file_path == module_api_client_file
72
+
73
+
74
+ def is_module_direct_client_file(ctx: AnyContext, file_path: str) -> bool:
75
+ module_direct_client_file = os.path.join(
76
+ APP_DIR,
77
+ "module",
78
+ to_snake_case(ctx.input.module),
79
+ "client",
80
+ f"{to_snake_case(ctx.input.module)}_direct_client.py",
81
+ )
82
+ return file_path == module_direct_client_file
83
+
84
+
85
+ def is_module_gateway_subroute_file(ctx: AnyContext, file_path: str) -> bool:
86
+ module_gateway_subroute_file = os.path.join(
87
+ APP_DIR,
88
+ "module",
89
+ "gateway",
90
+ "subroute",
91
+ f"{to_snake_case(ctx.input.module)}.py",
92
+ )
93
+ return file_path == module_gateway_subroute_file
94
+
95
+
96
+ def update_migration_metadata_file(ctx: AnyContext, migration_metadata_file_path: str):
97
+ app_name = os.path.basename(APP_DIR)
98
+ existing_migration_metadata_code = read_file(migration_metadata_file_path)
99
+ write_file(
100
+ file_path=migration_metadata_file_path,
101
+ content=[
102
+ _get_migration_import_schema_code(
103
+ existing_migration_metadata_code, app_name, ctx.input.entity
104
+ ),
105
+ existing_migration_metadata_code.strip(),
106
+ _get_migration_entity_metadata_assignment_code(
107
+ existing_migration_metadata_code, ctx.input.entity
108
+ ),
109
+ ],
110
+ )
111
+
112
+
113
+ def _get_migration_import_schema_code(
114
+ existing_code: str, app_name: str, entity_name: str
115
+ ) -> str | None:
116
+ snake_entity_name = to_snake_case(entity_name)
117
+ pascal_entity_name = to_pascal_case(entity_name)
118
+ import_module_path = f"{app_name}.schema.{snake_entity_name}"
119
+ import_schema_code = f"from {import_module_path} import {pascal_entity_name}"
120
+ if import_schema_code in existing_code:
121
+ return None
122
+ return import_schema_code
123
+
124
+
125
+ def _get_migration_entity_metadata_assignment_code(
126
+ existing_code: str, entity_name: str
127
+ ) -> str | None:
128
+ pascal_entity_name = to_pascal_case(entity_name)
129
+ entity_metadata_assignment_code = "\n".join(
130
+ [
131
+ f"{pascal_entity_name}.metadata = metadata",
132
+ f"{pascal_entity_name}.__table__.tometadata(metadata)",
133
+ ]
134
+ )
135
+ if entity_metadata_assignment_code in existing_code:
136
+ return None
137
+ return entity_metadata_assignment_code
138
+
139
+
140
+ def update_client_file(ctx: AnyContext, client_file_path: str):
141
+ existing_client_code = read_file(client_file_path)
142
+ pascal_module_name = to_pascal_case(ctx.input.module)
143
+ snake_entity_name = to_snake_case(ctx.input.entity)
144
+ snake_plural_entity_name = to_snake_case(ctx.input.plural)
145
+ pascal_entity_name = to_pascal_case(ctx.input.entity)
146
+ write_file(
147
+ file_path=client_file_path,
148
+ content=[
149
+ _get_import_schema_for_client_code(
150
+ existing_code=existing_client_code, entity_name=ctx.input.entity
151
+ ),
152
+ append_code_to_class(
153
+ original_code=existing_client_code,
154
+ class_name=f"{pascal_module_name}Client",
155
+ new_code=read_file(
156
+ file_path=os.path.join(
157
+ os.path.dirname(__file__), "template", "client_method.py"
158
+ ),
159
+ replace_map={
160
+ "my_entity": snake_entity_name,
161
+ "my_entities": snake_plural_entity_name,
162
+ "MyEntity": pascal_entity_name,
163
+ },
164
+ ),
165
+ ),
166
+ ],
167
+ )
168
+
169
+
170
+ def _get_import_schema_for_client_code(
171
+ existing_code: str, entity_name: str
172
+ ) -> str | None:
173
+ snake_entity_name = to_snake_case(entity_name)
174
+ pascal_entity_name = to_pascal_case(entity_name)
175
+ schema_import_path = f"my_app_name.schema.{snake_entity_name}"
176
+ new_code = "\n".join(
177
+ [
178
+ f"from {schema_import_path} import (",
179
+ f" Multiple{pascal_entity_name}Response,",
180
+ f" {pascal_entity_name}Create,",
181
+ f" {pascal_entity_name}CreateWithAudit,",
182
+ f" {pascal_entity_name}Response,",
183
+ f" {pascal_entity_name}Update,",
184
+ f" {pascal_entity_name}UpdateWithAudit,",
185
+ ")",
186
+ ]
187
+ )
188
+ if new_code in existing_code:
189
+ return None
190
+ return new_code
191
+
192
+
193
+ def update_api_client_file(ctx: AnyContext, api_client_file_path: str):
194
+ existing_api_client_code = read_file(api_client_file_path)
195
+ upper_snake_module_name = to_snake_case(ctx.input.module).upper()
196
+ app_name = os.path.basename(APP_DIR)
197
+ snake_entity_name = to_snake_case(ctx.input.entity)
198
+ snake_module_name = to_snake_case(ctx.input.module)
199
+ pascal_module_name = to_pascal_case(ctx.input.module)
200
+ write_file(
201
+ file_path=api_client_file_path,
202
+ content=[
203
+ f"from {app_name}.module.{snake_module_name}.service.{snake_entity_name}.{snake_entity_name}_service_factory import {snake_entity_name}_service", # noqa
204
+ prepend_code_to_module(
205
+ prepend_parent_class(
206
+ original_code=existing_api_client_code,
207
+ class_name=f"{pascal_module_name}APIClient",
208
+ parent_class_name=f"{snake_entity_name}_api_client",
209
+ ),
210
+ f"{snake_entity_name}_api_client = {snake_entity_name}_service.as_api_client(base_url=APP_{upper_snake_module_name}_BASE_URL)", # noqa
211
+ ),
212
+ ],
213
+ )
214
+
215
+
216
+ def update_direct_client_file(ctx: AnyContext, direct_client_file_path: str):
217
+ existing_direct_client_code = read_file(direct_client_file_path)
218
+ app_name = os.path.basename(APP_DIR)
219
+ snake_entity_name = to_snake_case(ctx.input.entity)
220
+ snake_module_name = to_snake_case(ctx.input.module)
221
+ pascal_module_name = to_pascal_case(ctx.input.module)
222
+ write_file(
223
+ file_path=direct_client_file_path,
224
+ content=[
225
+ f"from {app_name}.module.{snake_module_name}.service.{snake_entity_name}.{snake_entity_name}_service_factory import {snake_entity_name}_service", # noqa
226
+ prepend_code_to_module(
227
+ prepend_parent_class(
228
+ original_code=existing_direct_client_code,
229
+ class_name=f"{pascal_module_name}DirectClient",
230
+ parent_class_name=f"{snake_entity_name}_direct_client",
231
+ ),
232
+ f"{snake_entity_name}_direct_client = {snake_entity_name}_service.as_direct_client()", # noqa
233
+ ).strip(),
234
+ ],
235
+ )
236
+
237
+
238
+ def update_route_file(ctx: AnyContext, route_file_path: str):
239
+ existing_route_code = read_file(route_file_path)
240
+ entity_name = to_snake_case(ctx.input.entity)
241
+ app_name = os.path.basename(APP_DIR)
242
+ module_name = to_snake_case(ctx.input.module)
243
+ write_file(
244
+ file_path=route_file_path,
245
+ content=[
246
+ f"from {app_name}.module.{module_name}.service.{entity_name}.{entity_name}_service_factory import {entity_name}_service", # noqa
247
+ append_code_to_function(
248
+ existing_route_code,
249
+ "serve_route",
250
+ f"{entity_name}_service.serve_route(app)",
251
+ ),
252
+ ],
253
+ )
254
+
255
+
256
+ def update_gateway_subroute_file(ctx: AnyContext, module_gateway_subroute_path: str):
257
+ snake_module_name = to_snake_case(ctx.input.module)
258
+ snake_entity_name = to_snake_case(ctx.input.entity)
259
+ snake_plural_entity_name = to_snake_case(ctx.input.plural)
260
+ kebab_plural_entity_name = to_kebab_case(ctx.input.plural)
261
+ pascal_entity_name = to_pascal_case(ctx.input.entity)
262
+ existing_gateway_subroute_code = read_file(module_gateway_subroute_path)
263
+ write_file(
264
+ file_path=module_gateway_subroute_path,
265
+ content=[
266
+ _get_import_client_for_gateway_subroute_code(
267
+ existing_gateway_subroute_code, module_name=ctx.input.module
268
+ ),
269
+ _get_import_schema_for_gateway_subroute_code(
270
+ existing_gateway_subroute_code, entity_name=ctx.input.entity
271
+ ),
272
+ append_code_to_function(
273
+ original_code=existing_gateway_subroute_code,
274
+ function_name=f"serve_{snake_module_name}_route",
275
+ new_code=read_file(
276
+ file_path=os.path.join(
277
+ os.path.dirname(__file__), "template", "gateway_subroute.py"
278
+ ),
279
+ replace_map={
280
+ "my_module": snake_module_name,
281
+ "my_entity": snake_entity_name,
282
+ "my_entities": snake_plural_entity_name,
283
+ "my-entities": kebab_plural_entity_name,
284
+ "MyEntity": pascal_entity_name,
285
+ },
286
+ ),
287
+ ),
288
+ ],
289
+ )
290
+
291
+
292
+ def _get_import_client_for_gateway_subroute_code(
293
+ existing_code: str, module_name: str
294
+ ) -> str | None:
295
+ snake_module_name = to_snake_case(module_name)
296
+ client_import_path = f"my_app_name.module.{snake_module_name}.client.{snake_module_name}_client_factory" # noqa
297
+ new_code = f"from {client_import_path} import {snake_module_name}_client"
298
+ if new_code in existing_code:
299
+ return None
300
+ return new_code
301
+
302
+
303
+ def _get_import_schema_for_gateway_subroute_code(
304
+ existing_code: str, entity_name: str
305
+ ) -> str | None:
306
+ snake_entity_name = to_snake_case(entity_name)
307
+ pascal_entity_name = to_pascal_case(entity_name)
308
+ schema_import_path = f"my_app_name.schema.{snake_entity_name}"
309
+ new_code = "\n".join(
310
+ [
311
+ f"from {schema_import_path} import (",
312
+ f" Multiple{pascal_entity_name}Response,",
313
+ f" {pascal_entity_name}Create,",
314
+ f" {pascal_entity_name}Response,",
315
+ f" {pascal_entity_name}Update,",
316
+ ")",
317
+ ]
318
+ )
319
+ if new_code in existing_code:
320
+ return None
321
+ return new_code