zrb 1.3.0__tar.gz → 1.4.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 (347) hide show
  1. {zrb-1.3.0 → zrb-1.4.0}/PKG-INFO +26 -24
  2. {zrb-1.3.0 → zrb-1.4.0}/README.md +24 -22
  3. {zrb-1.3.0 → zrb-1.4.0}/pyproject.toml +2 -2
  4. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/__init__.py +2 -0
  5. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/llm/llm_chat.py +36 -44
  6. zrb-1.4.0/src/zrb/builtin/llm/tool/file.py +76 -0
  7. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_task.py +39 -3
  8. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/gateway/view/content/my-module/my-entity.html +14 -14
  9. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/permission.html +14 -14
  10. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/role.html +16 -16
  11. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/user.html +16 -16
  12. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/common/util.js +8 -0
  13. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/config.py +0 -1
  14. zrb-1.4.0/src/zrb/llm_config.py +50 -0
  15. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/task/llm_task.py +51 -12
  16. zrb-1.3.0/src/zrb/builtin/llm/tool/file.py +0 -39
  17. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/__main__.py +0 -0
  18. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/attr/__init__.py +0 -0
  19. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/attr/type.py +0 -0
  20. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/__init__.py +0 -0
  21. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/base64.py +0 -0
  22. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/git.py +0 -0
  23. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/git_subtree.py +0 -0
  24. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/group.py +0 -0
  25. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/llm/previous-session.js +0 -0
  26. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/llm/tool/api.py +0 -0
  27. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/llm/tool/cli.py +0 -0
  28. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/llm/tool/rag.py +0 -0
  29. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/llm/tool/web.py +0 -0
  30. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/md5.py +0 -0
  31. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/__init__.py +0 -0
  32. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_input.py +0 -0
  33. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_task.py +0 -0
  34. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.coveragerc +0 -0
  35. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.flake8 +0 -0
  36. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.gitignore +0 -0
  37. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/README.md +0 -0
  38. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/__init__.py +0 -0
  39. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_util.py +0 -0
  40. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/config.py +0 -0
  41. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_task.py +0 -0
  42. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_util.py +0 -0
  43. {zrb-1.3.0 → zrb-1.4.0}/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 +0 -0
  44. {zrb-1.3.0 → zrb-1.4.0}/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 +0 -0
  45. {zrb-1.3.0 → zrb-1.4.0}/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 -0
  46. {zrb-1.3.0 → zrb-1.4.0}/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 -0
  47. {zrb-1.3.0 → zrb-1.4.0}/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 +0 -0
  48. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/schema/my_entity.py +0 -0
  49. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/test/my_module/my_entity/test_create_my_entity.py +0 -0
  50. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/test/my_module/my_entity/test_delete_my_entity.py +0 -0
  51. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/test/my_module/my_entity/test_read_my_entity.py +0 -0
  52. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/test/my_module/my_entity/test_update_my_entity.py +0 -0
  53. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/client_method.py +0 -0
  54. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/gateway_subroute.py +0 -0
  55. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/navigation_config_file.py +0 -0
  56. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/format_task.py +0 -0
  57. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/group.py +0 -0
  58. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/input.py +0 -0
  59. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_task.py +0 -0
  60. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_util.py +0 -0
  61. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/gateway/subroute/my_module.py +0 -0
  62. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/alembic.ini +0 -0
  63. {zrb-1.3.0 → zrb-1.4.0}/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 +0 -0
  64. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/client/my_module_client.py +0 -0
  65. {zrb-1.3.0 → zrb-1.4.0}/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 +0 -0
  66. {zrb-1.3.0 → zrb-1.4.0}/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 +0 -0
  67. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/README +0 -0
  68. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/env.py +0 -0
  69. {zrb-1.3.0 → zrb-1.4.0}/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
  70. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/versions/.gitkeep +0 -0
  71. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration_metadata.py +0 -0
  72. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/route.py +0 -0
  73. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/service/__init__.py +0 -0
  74. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/module_task_definition.py +0 -0
  75. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/navigation_config_file.py +0 -0
  76. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task.py +0 -0
  77. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task_util.py +0 -0
  78. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/util.py +0 -0
  79. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/venv_task.py +0 -0
  80. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/__init__.py +0 -0
  81. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/app_factory.py +0 -0
  82. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_db_repository.py +0 -0
  83. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_service.py +0 -0
  84. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/db_engine_factory.py +0 -0
  85. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/error.py +0 -0
  86. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/logger_factory.py +0 -0
  87. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/parser_factory.py +0 -0
  88. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/schema.py +0 -0
  89. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/app.py +0 -0
  90. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/parser.py +0 -0
  91. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/user_agent.py +0 -0
  92. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/view.py +0 -0
  93. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/config.py +0 -0
  94. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/main.py +0 -0
  95. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/__init__.py +0 -0
  96. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/alembic.ini +0 -0
  97. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_api_client.py +0 -0
  98. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client.py +0 -0
  99. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client_factory.py +0 -0
  100. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_direct_client.py +0 -0
  101. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/README +0 -0
  102. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/env.py +0 -0
  103. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/script.py.mako +0 -0
  104. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/versions/3093c7336477_add_auth_tables.py +0 -0
  105. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/versions/8ed025bcc845_create_permissions.py +0 -0
  106. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration_metadata.py +0 -0
  107. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/route.py +0 -0
  108. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/__init__.py +0 -0
  109. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/__init__.py +0 -0
  110. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service.py +0 -0
  111. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service_factory.py +0 -0
  112. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_db_repository.py +0 -0
  113. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_repository.py +0 -0
  114. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_repository_factory.py +0 -0
  115. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/__init__.py +0 -0
  116. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_db_repository.py +0 -0
  117. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository.py +0 -0
  118. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository_factory.py +0 -0
  119. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service.py +0 -0
  120. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service_factory.py +0 -0
  121. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/__init__.py +0 -0
  122. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_db_repository.py +0 -0
  123. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository.py +0 -0
  124. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository_factory.py +0 -0
  125. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service.py +0 -0
  126. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service_factory.py +0 -0
  127. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/alembic.ini +0 -0
  128. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/config/navigation.py +0 -0
  129. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/README +0 -0
  130. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/env.py +0 -0
  131. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/script.py.mako +0 -0
  132. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/versions/.gitkeep +0 -0
  133. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration_metadata.py +0 -0
  134. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/route.py +0 -0
  135. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/schema/navigation.py +0 -0
  136. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/subroute/auth.py +0 -0
  137. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/auth.py +0 -0
  138. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/view.py +0 -0
  139. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/error.html +0 -0
  140. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/homepage.html +0 -0
  141. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/login.html +0 -0
  142. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/logout.html +0 -0
  143. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/crud/style.css +0 -0
  144. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/crud/util.js +0 -0
  145. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/pico-style.css +0 -0
  146. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/script.js +0 -0
  147. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/style.css +0 -0
  148. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/android-chrome-192x192.png +0 -0
  149. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/android-chrome-512x512.png +0 -0
  150. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/favicon-32x32.png +0 -0
  151. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.amber.min.css +0 -0
  152. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.blue.min.css +0 -0
  153. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.cyan.min.css +0 -0
  154. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.fuchsia.min.css +0 -0
  155. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.green.min.css +0 -0
  156. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.grey.min.css +0 -0
  157. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.indigo.min.css +0 -0
  158. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.jade.min.css +0 -0
  159. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.lime.min.css +0 -0
  160. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.min.css +0 -0
  161. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.orange.min.css +0 -0
  162. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.pink.min.css +0 -0
  163. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.pumpkin.min.css +0 -0
  164. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.purple.min.css +0 -0
  165. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.red.min.css +0 -0
  166. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.sand.min.css +0 -0
  167. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.slate.min.css +0 -0
  168. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.violet.min.css +0 -0
  169. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.yellow.min.css +0 -0
  170. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.zinc.min.css +0 -0
  171. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/template/default.html +0 -0
  172. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/requirements.txt +0 -0
  173. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/__init__.py +0 -0
  174. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/permission.py +0 -0
  175. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/role.py +0 -0
  176. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/user.py +0 -0
  177. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/template.env +0 -0
  178. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/_util/access_token.py +0 -0
  179. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_create_permission.py +0 -0
  180. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_delete_permission.py +0 -0
  181. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_read_permission.py +0 -0
  182. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_update_permission.py +0 -0
  183. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/test_user_session.py +0 -0
  184. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_health_and_readiness.py +0 -0
  185. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_homepage.py +0 -0
  186. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_not_found_error.py +0 -0
  187. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test.sh +0 -0
  188. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/add/fastapp/fastapp_util.py +0 -0
  189. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/create/__init__.py +0 -0
  190. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/create/project-template/README.md +0 -0
  191. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/create/project-template/zrb_init.py +0 -0
  192. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/project/create/project_task.py +0 -0
  193. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/python.py +0 -0
  194. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/random.py +0 -0
  195. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/setup/asdf/asdf.py +0 -0
  196. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/setup/asdf/asdf_helper.py +0 -0
  197. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/setup/common_input.py +0 -0
  198. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/setup/latex/ubuntu.py +0 -0
  199. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/setup/tmux/tmux.py +0 -0
  200. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/setup/tmux/tmux_config.sh +0 -0
  201. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/setup/tmux/tmux_helper.py +0 -0
  202. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/setup/ubuntu.py +0 -0
  203. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/setup/zsh/zsh.py +0 -0
  204. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/setup/zsh/zsh_config.sh +0 -0
  205. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/setup/zsh/zsh_helper.py +0 -0
  206. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/shell/__init__.py +0 -0
  207. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/shell/autocomplete/__init__.py +0 -0
  208. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/shell/autocomplete/bash.py +0 -0
  209. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/shell/autocomplete/subcmd.py +0 -0
  210. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/shell/autocomplete/zsh.py +0 -0
  211. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/builtin/todo.py +0 -0
  212. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/callback/__init__.py +0 -0
  213. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/callback/any_callback.py +0 -0
  214. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/callback/callback.py +0 -0
  215. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/cmd/__init__.py +0 -0
  216. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/cmd/cmd_result.py +0 -0
  217. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/cmd/cmd_val.py +0 -0
  218. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/content_transformer/__init__.py +0 -0
  219. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/content_transformer/any_content_transformer.py +0 -0
  220. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/content_transformer/content_transformer.py +0 -0
  221. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/context/__init__.py +0 -0
  222. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/context/any_context.py +0 -0
  223. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/context/any_shared_context.py +0 -0
  224. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/context/context.py +0 -0
  225. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/context/shared_context.py +0 -0
  226. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/dot_dict/__init__.py +0 -0
  227. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/dot_dict/dot_dict.py +0 -0
  228. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/env/__init__.py +0 -0
  229. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/env/any_env.py +0 -0
  230. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/env/env.py +0 -0
  231. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/env/env_file.py +0 -0
  232. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/env/env_map.py +0 -0
  233. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/group/__init__.py +0 -0
  234. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/group/any_group.py +0 -0
  235. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/group/group.py +0 -0
  236. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/input/__init__.py +0 -0
  237. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/input/any_input.py +0 -0
  238. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/input/base_input.py +0 -0
  239. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/input/bool_input.py +0 -0
  240. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/input/float_input.py +0 -0
  241. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/input/int_input.py +0 -0
  242. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/input/option_input.py +0 -0
  243. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/input/password_input.py +0 -0
  244. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/input/str_input.py +0 -0
  245. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/input/text_input.py +0 -0
  246. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/runner/__init__.py +0 -0
  247. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/runner/cli.py +0 -0
  248. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/runner/common_util.py +0 -0
  249. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/runner/web_app.py +0 -0
  250. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/runner/web_config/config.py +0 -0
  251. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/runner/web_config/config_factory.py +0 -0
  252. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/runner/web_route/__init__.py +0 -0
  253. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/runner/web_route/docs_route.py +0 -0
  254. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/runner/web_route/error_page/serve_default_404.py +0 -0
  255. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/runner/web_route/error_page/show_error_page.py +0 -0
  256. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/runner/web_route/error_page/view.html +0 -0
  257. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/runner/web_route/home_page/__init__.py +0 -0
  258. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/runner/web_route/home_page/home_page_route.py +0 -0
  259. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/runner/web_route/home_page/view.html +0 -0
  260. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/runner/web_route/login_api_route.py +0 -0
  261. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/runner/web_route/login_page/login_page_route.py +0 -0
  262. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/runner/web_route/login_page/view.html +0 -0
  263. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/runner/web_route/logout_api_route.py +0 -0
  264. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/runner/web_route/logout_page/logout_page_route.py +0 -0
  265. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/runner/web_route/logout_page/view.html +0 -0
  266. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/runner/web_route/node_page/group/show_group_page.py +0 -0
  267. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/runner/web_route/node_page/group/view.html +0 -0
  268. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/runner/web_route/node_page/node_page_route.py +0 -0
  269. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/runner/web_route/node_page/task/partial/input.html +0 -0
  270. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/runner/web_route/node_page/task/show_task_page.py +0 -0
  271. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/runner/web_route/node_page/task/view.html +0 -0
  272. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/runner/web_route/refresh_token_api_route.py +0 -0
  273. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/runner/web_route/static/refresh-token.template.js +0 -0
  274. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/runner/web_route/static/resources/common.css +0 -0
  275. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/runner/web_route/static/resources/favicon-32x32.png +0 -0
  276. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/runner/web_route/static/resources/login/event.js +0 -0
  277. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/runner/web_route/static/resources/logout/event.js +0 -0
  278. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/runner/web_route/static/resources/pico.min.css +0 -0
  279. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/runner/web_route/static/resources/session/common-util.js +0 -0
  280. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/runner/web_route/static/resources/session/current-session.js +0 -0
  281. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/runner/web_route/static/resources/session/event.js +0 -0
  282. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/runner/web_route/static/resources/session/past-session.js +0 -0
  283. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/runner/web_route/static/static_route.py +0 -0
  284. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/runner/web_route/task_input_api_route.py +0 -0
  285. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/runner/web_route/task_session_api_route.py +0 -0
  286. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/runner/web_schema/session.py +0 -0
  287. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/runner/web_schema/token.py +0 -0
  288. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/runner/web_schema/user.py +0 -0
  289. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/runner/web_util/cookie.py +0 -0
  290. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/runner/web_util/html.py +0 -0
  291. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/runner/web_util/token.py +0 -0
  292. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/runner/web_util/user.py +0 -0
  293. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/session/__init__.py +0 -0
  294. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/session/any_session.py +0 -0
  295. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/session/session.py +0 -0
  296. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/session_state_log/__init__.py +0 -0
  297. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/session_state_log/session_state_log.py +0 -0
  298. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/session_state_logger/__init__.py +0 -0
  299. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/session_state_logger/any_session_state_logger.py +0 -0
  300. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/session_state_logger/file_session_state_logger.py +0 -0
  301. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/session_state_logger/session_state_logger_factory.py +0 -0
  302. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/task/__init__.py +0 -0
  303. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/task/any_task.py +0 -0
  304. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/task/base_task.py +0 -0
  305. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/task/base_trigger.py +0 -0
  306. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/task/cmd_task.py +0 -0
  307. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/task/http_check.py +0 -0
  308. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/task/make_task.py +0 -0
  309. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/task/rsync_task.py +0 -0
  310. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/task/scaffolder.py +0 -0
  311. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/task/scheduler.py +0 -0
  312. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/task/task.py +0 -0
  313. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/task/tcp_check.py +0 -0
  314. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/task_status/__init__.py +0 -0
  315. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/task_status/task_status.py +0 -0
  316. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/util/__init__.py +0 -0
  317. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/util/attr.py +0 -0
  318. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/util/cli/__init__.py +0 -0
  319. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/util/cli/style.py +0 -0
  320. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/util/cli/subcommand.py +0 -0
  321. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/util/cmd/__init__.py +0 -0
  322. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/util/cmd/command.py +0 -0
  323. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/util/cmd/remote.py +0 -0
  324. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/util/codemod/__init__.py +0 -0
  325. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/util/codemod/modification_mode.py +0 -0
  326. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/util/codemod/modify_class.py +0 -0
  327. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/util/codemod/modify_class_parent.py +0 -0
  328. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/util/codemod/modify_class_property.py +0 -0
  329. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/util/codemod/modify_dict.py +0 -0
  330. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/util/codemod/modify_function.py +0 -0
  331. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/util/codemod/modify_function_call.py +0 -0
  332. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/util/codemod/modify_method.py +0 -0
  333. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/util/codemod/modify_module.py +0 -0
  334. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/util/cron.py +0 -0
  335. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/util/file.py +0 -0
  336. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/util/git.py +0 -0
  337. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/util/git_subtree.py +0 -0
  338. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/util/group.py +0 -0
  339. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/util/load.py +0 -0
  340. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/util/run.py +0 -0
  341. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/util/string/__init__.py +0 -0
  342. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/util/string/conversion.py +0 -0
  343. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/util/string/format.py +0 -0
  344. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/util/string/name.py +0 -0
  345. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/util/todo.py +0 -0
  346. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/xcom/__init__.py +0 -0
  347. {zrb-1.3.0 → zrb-1.4.0}/src/zrb/xcom/xcom.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: zrb
3
- Version: 1.3.0
3
+ Version: 1.4.0
4
4
  Summary: Your Automation Powerhouse
5
5
  Home-page: https://github.com/state-alchemists/zrb
6
6
  License: AGPL-3.0-or-later
@@ -24,7 +24,7 @@ Requires-Dist: isort (>=5.13.2,<5.14.0)
24
24
  Requires-Dist: libcst (>=1.5.0,<2.0.0)
25
25
  Requires-Dist: pdfplumber (>=0.11.4,<0.12.0) ; extra == "rag"
26
26
  Requires-Dist: psutil (>=6.1.1,<7.0.0)
27
- Requires-Dist: pydantic-ai (>=0.0.31,<0.0.32)
27
+ Requires-Dist: pydantic-ai (>=0.0.42,<0.0.43)
28
28
  Requires-Dist: python-dotenv (>=1.0.1,<2.0.0)
29
29
  Requires-Dist: python-jose[cryptography] (>=3.4.0,<4.0.0)
30
30
  Requires-Dist: requests (>=2.32.3,<3.0.0)
@@ -44,47 +44,49 @@ Zrb allows you to write your automation tasks in Python. For example, you can de
44
44
 
45
45
  ```python
46
46
  import os
47
- from zrb import cli, LLMTask, CmdTask, StrInput
48
- from zrb.builtin.llm.tool.file import read_source_code, write_text_file
47
+ from zrb import cli, llm_config, LLMTask, CmdTask, StrInput, Group
48
+ from zrb.builtin.llm.tool.file import read_all_files, write_text_file
49
49
  from pydantic_ai.models.openai import OpenAIModel
50
-
50
+ from pydantic_ai.providers.openai import OpenAIProvider
51
51
 
52
52
  CURRENT_DIR = os.getcwd()
53
- OPENROUTER_BASE_URL = "https://openrouter.ai/api/v1"
54
- OPENROUTER_API_KEY = os.getenv("OPENROUTER_API_KEY", "")
55
- OPENROUTER_MODEL_NAME = os.getenv(
56
- "AGENT_MODEL_NAME", "anthropic/claude-3.7-sonnet"
53
+
54
+ # Setup default LLM Config
55
+ llm_config.set_default_model(
56
+ OpenAIModel(
57
+ model_name="gpt-4o",
58
+ provider=OpenAIProvider(
59
+ base_url="https://openrouter.ai/api/v1",
60
+ api_key=os.getenv("OPENROUTER_API_KEY", "")
61
+ )
62
+ )
57
63
  )
58
64
 
65
+ # Make UML group
66
+ uml_group = cli.add_group(Group(name="uml", description="UML related tasks"))
59
67
 
60
- # Defining a LLM Task to create a Plantuml script based on source code in current directory.
61
- # User can choose the diagram type. By default it is "state diagram"
62
- make_uml = cli.add_task(
68
+ # Generate UML script
69
+ make_uml_script = uml_group.add_task(
63
70
  LLMTask(
64
- name="make-uml",
71
+ name="make-script",
65
72
  description="Creating plantuml diagram based on source code in current directory",
66
73
  input=StrInput(name="diagram", default="state diagram"),
67
- model=OpenAIModel(
68
- OPENROUTER_MODEL_NAME,
69
- base_url=OPENROUTER_BASE_URL,
70
- api_key=OPENROUTER_API_KEY,
71
- ),
72
74
  message=(
73
75
  f"Read source code in {CURRENT_DIR}, "
74
76
  "make a {ctx.input.diagram} in plantuml format. "
75
77
  f"Write the script into {CURRENT_DIR}/{{ctx.input.diagram}}.uml"
76
78
  ),
77
79
  tools=[
78
- read_source_code,
80
+ read_all_files,
79
81
  write_text_file,
80
82
  ],
81
83
  )
82
84
  )
83
85
 
84
86
  # Defining a Cmd Task to transform Plantuml script into a png image.
85
- make_png = cli.add_task(
87
+ make_uml_image = uml_group.add_task(
86
88
  CmdTask(
87
- name="make-png",
89
+ name="make-image",
88
90
  description="Creating png based on source code in current directory",
89
91
  input=StrInput(name="diagram", default="state diagram"),
90
92
  cmd="plantuml -tpng '{ctx.input.diagram}.uml'",
@@ -93,19 +95,19 @@ make_png = cli.add_task(
93
95
  )
94
96
 
95
97
  # Making sure that make_png has make_uml as its dependency.
96
- make_uml >> make_png
98
+ make_uml_script >> make_uml_image
97
99
  ```
98
100
 
99
101
  Once defined, your automation tasks are immediately accessible from the CLI. You can then invoke the tasks by invoking.
100
102
 
101
103
  ```bash
102
- zrb make-png --diagram "state diagram"
104
+ zrb uml make-image --diagram "state diagram"
103
105
  ```
104
106
 
105
107
  Or you can invoke the tasks without parameter.
106
108
 
107
109
  ```bash
108
- zrb make-png
110
+ zrb uml make-image
109
111
  ```
110
112
 
111
113
  At this point, Zrb will politely ask you to provide the diagram type.
@@ -9,47 +9,49 @@ Zrb allows you to write your automation tasks in Python. For example, you can de
9
9
 
10
10
  ```python
11
11
  import os
12
- from zrb import cli, LLMTask, CmdTask, StrInput
13
- from zrb.builtin.llm.tool.file import read_source_code, write_text_file
12
+ from zrb import cli, llm_config, LLMTask, CmdTask, StrInput, Group
13
+ from zrb.builtin.llm.tool.file import read_all_files, write_text_file
14
14
  from pydantic_ai.models.openai import OpenAIModel
15
-
15
+ from pydantic_ai.providers.openai import OpenAIProvider
16
16
 
17
17
  CURRENT_DIR = os.getcwd()
18
- OPENROUTER_BASE_URL = "https://openrouter.ai/api/v1"
19
- OPENROUTER_API_KEY = os.getenv("OPENROUTER_API_KEY", "")
20
- OPENROUTER_MODEL_NAME = os.getenv(
21
- "AGENT_MODEL_NAME", "anthropic/claude-3.7-sonnet"
18
+
19
+ # Setup default LLM Config
20
+ llm_config.set_default_model(
21
+ OpenAIModel(
22
+ model_name="gpt-4o",
23
+ provider=OpenAIProvider(
24
+ base_url="https://openrouter.ai/api/v1",
25
+ api_key=os.getenv("OPENROUTER_API_KEY", "")
26
+ )
27
+ )
22
28
  )
23
29
 
30
+ # Make UML group
31
+ uml_group = cli.add_group(Group(name="uml", description="UML related tasks"))
24
32
 
25
- # Defining a LLM Task to create a Plantuml script based on source code in current directory.
26
- # User can choose the diagram type. By default it is "state diagram"
27
- make_uml = cli.add_task(
33
+ # Generate UML script
34
+ make_uml_script = uml_group.add_task(
28
35
  LLMTask(
29
- name="make-uml",
36
+ name="make-script",
30
37
  description="Creating plantuml diagram based on source code in current directory",
31
38
  input=StrInput(name="diagram", default="state diagram"),
32
- model=OpenAIModel(
33
- OPENROUTER_MODEL_NAME,
34
- base_url=OPENROUTER_BASE_URL,
35
- api_key=OPENROUTER_API_KEY,
36
- ),
37
39
  message=(
38
40
  f"Read source code in {CURRENT_DIR}, "
39
41
  "make a {ctx.input.diagram} in plantuml format. "
40
42
  f"Write the script into {CURRENT_DIR}/{{ctx.input.diagram}}.uml"
41
43
  ),
42
44
  tools=[
43
- read_source_code,
45
+ read_all_files,
44
46
  write_text_file,
45
47
  ],
46
48
  )
47
49
  )
48
50
 
49
51
  # Defining a Cmd Task to transform Plantuml script into a png image.
50
- make_png = cli.add_task(
52
+ make_uml_image = uml_group.add_task(
51
53
  CmdTask(
52
- name="make-png",
54
+ name="make-image",
53
55
  description="Creating png based on source code in current directory",
54
56
  input=StrInput(name="diagram", default="state diagram"),
55
57
  cmd="plantuml -tpng '{ctx.input.diagram}.uml'",
@@ -58,19 +60,19 @@ make_png = cli.add_task(
58
60
  )
59
61
 
60
62
  # Making sure that make_png has make_uml as its dependency.
61
- make_uml >> make_png
63
+ make_uml_script >> make_uml_image
62
64
  ```
63
65
 
64
66
  Once defined, your automation tasks are immediately accessible from the CLI. You can then invoke the tasks by invoking.
65
67
 
66
68
  ```bash
67
- zrb make-png --diagram "state diagram"
69
+ zrb uml make-image --diagram "state diagram"
68
70
  ```
69
71
 
70
72
  Or you can invoke the tasks without parameter.
71
73
 
72
74
  ```bash
73
- zrb make-png
75
+ zrb uml make-image
74
76
  ```
75
77
 
76
78
  At this point, Zrb will politely ask you to provide the diagram type.
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "zrb"
3
- version = "1.3.0"
3
+ version = "1.4.0"
4
4
  description = "Your Automation Powerhouse"
5
5
  authors = ["Go Frendi Gunawan <gofrendiasgard@gmail.com>"]
6
6
  license = "AGPL-3.0-or-later"
@@ -50,7 +50,7 @@ beautifulsoup4 = "^4.12.3"
50
50
  fastapi = {extras = ["standard"], version = "^0.115.6"}
51
51
  python-jose = {extras = ["cryptography"], version = "^3.4.0"}
52
52
  ulid-py = "^1.1.0"
53
- pydantic-ai = "^0.0.31"
53
+ pydantic-ai = "^0.0.42"
54
54
  fastembed = "^0.5.1"
55
55
  psutil = "^6.1.1"
56
56
 
@@ -33,6 +33,7 @@ from zrb.input.option_input import OptionInput
33
33
  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
+ from zrb.llm_config import llm_config
36
37
  from zrb.runner.cli import cli
37
38
  from zrb.runner.web_config.config_factory import web_config
38
39
  from zrb.runner.web_schema.user import User
@@ -101,6 +102,7 @@ assert ContentTransformer
101
102
  assert Scaffolder
102
103
  assert Scheduler
103
104
  assert cli
105
+ assert llm_config
104
106
  assert Xcom
105
107
  assert web_config
106
108
  assert User
@@ -2,14 +2,12 @@ import json
2
2
  import os
3
3
  from typing import Any
4
4
 
5
- from pydantic_ai.models import Model
6
-
7
5
  from zrb.builtin.group import llm_group
8
6
  from zrb.builtin.llm.tool.api import get_current_location, get_current_weather
9
7
  from zrb.builtin.llm.tool.cli import run_shell_command
10
8
  from zrb.builtin.llm.tool.file import (
11
- list_file,
12
- read_source_code,
9
+ list_files,
10
+ read_all_files,
13
11
  read_text_file,
14
12
  write_text_file,
15
13
  )
@@ -24,18 +22,14 @@ from zrb.config import (
24
22
  LLM_ALLOW_ACCESS_LOCAL_FILE,
25
23
  LLM_ALLOW_ACCESS_SHELL,
26
24
  LLM_HISTORY_DIR,
27
- LLM_MODEL,
28
25
  LLM_SYSTEM_PROMPT,
29
26
  SERP_API_KEY,
30
27
  )
31
- from zrb.context.any_context import AnyContext
32
28
  from zrb.context.any_shared_context import AnySharedContext
33
- from zrb.input.any_input import AnyInput
34
29
  from zrb.input.bool_input import BoolInput
35
30
  from zrb.input.str_input import StrInput
36
31
  from zrb.input.text_input import TextInput
37
32
  from zrb.task.llm_task import LLMTask
38
- from zrb.util.attr import get_attr
39
33
  from zrb.util.file import read_file, write_file
40
34
  from zrb.util.string.conversion import to_pascal_case
41
35
 
@@ -90,46 +84,37 @@ def _write_chat_conversation(
90
84
  write_file(last_session_file_path, current_session_name)
91
85
 
92
86
 
93
- class _LLMChat(LLMTask):
94
-
95
- _default_model: Model | str | None = None
96
-
97
- def set_default_model(self, model: Model | str):
98
- self._default_model = model
99
-
100
- @property
101
- def inputs(self) -> list[AnyInput]:
102
- task_inputs = super().inputs
103
- model_input_default = LLM_MODEL if self._default_model is None else "default"
104
- return [
87
+ llm_chat: LLMTask = llm_group.add_task(
88
+ LLMTask(
89
+ name="llm-chat",
90
+ input=[
105
91
  StrInput(
106
92
  "model",
107
93
  description="LLM Model",
108
94
  prompt="LLM Model",
109
- default=model_input_default,
95
+ default="",
110
96
  allow_positional_parsing=False,
111
97
  always_prompt=False,
98
+ allow_empty=True,
99
+ ),
100
+ StrInput(
101
+ "base-url",
102
+ description="LLM API Base URL",
103
+ prompt="LLM API Base URL",
104
+ default="",
105
+ allow_positional_parsing=False,
106
+ always_prompt=False,
107
+ allow_empty=True,
108
+ ),
109
+ StrInput(
110
+ "api-key",
111
+ description="LLM API Key",
112
+ prompt="LLM API Key",
113
+ default="",
114
+ allow_positional_parsing=False,
115
+ always_prompt=False,
116
+ allow_empty=True,
112
117
  ),
113
- *task_inputs,
114
- ]
115
-
116
- def _get_model(self, ctx: AnyContext) -> str | Model | None:
117
- if ctx.input.model == "default":
118
- if self._default_model is not None:
119
- return self._default_model
120
- return super()._get_model(ctx)
121
- model = get_attr(
122
- ctx, ctx.input.model, "ollama_chat/llama3.1", auto_render=self._render_model
123
- )
124
- if isinstance(model, (Model, str)) or model is None:
125
- return model
126
- raise ValueError("Invalid model")
127
-
128
-
129
- llm_chat: LLMTask = llm_group.add_task(
130
- _LLMChat(
131
- name="llm-chat",
132
- input=[
133
118
  TextInput(
134
119
  "system-prompt",
135
120
  description="System prompt",
@@ -156,10 +141,17 @@ llm_chat: LLMTask = llm_group.add_task(
156
141
  always_prompt=False,
157
142
  ),
158
143
  ],
144
+ model=lambda ctx: None if ctx.input.model == "" else ctx.input.model,
145
+ model_base_url=lambda ctx: (
146
+ None if ctx.input.base_url == "" else ctx.input.base_url
147
+ ),
148
+ model_api_key=lambda ctx: (
149
+ None if ctx.input.api_key == "" else ctx.input.api_key
150
+ ),
159
151
  conversation_history_reader=_read_chat_conversation,
160
152
  conversation_history_writer=_write_chat_conversation,
161
153
  description="Chat with LLM",
162
- system_prompt="{ctx.input['system-prompt']}",
154
+ system_prompt="{ctx.input.system_prompt}",
163
155
  message="{ctx.input.message}",
164
156
  retries=0,
165
157
  ),
@@ -168,8 +160,8 @@ llm_chat: LLMTask = llm_group.add_task(
168
160
 
169
161
 
170
162
  if LLM_ALLOW_ACCESS_LOCAL_FILE:
171
- llm_chat.add_tool(read_source_code)
172
- llm_chat.add_tool(list_file)
163
+ llm_chat.add_tool(read_all_files)
164
+ llm_chat.add_tool(list_files)
173
165
  llm_chat.add_tool(read_text_file)
174
166
  llm_chat.add_tool(write_text_file)
175
167
 
@@ -0,0 +1,76 @@
1
+ import fnmatch
2
+ import os
3
+
4
+ from zrb.util.file import read_file, write_file
5
+
6
+
7
+ def list_files(
8
+ directory: str = ".",
9
+ included_patterns: list[str] = [
10
+ "*.py",
11
+ "*.go",
12
+ "*.js",
13
+ "*.ts",
14
+ "*.java",
15
+ "*.c",
16
+ "*.cpp",
17
+ ],
18
+ excluded_patterns: list[str] = [
19
+ "venv",
20
+ ".venv",
21
+ "node_modules",
22
+ ".git",
23
+ "__pycache__",
24
+ ],
25
+ ) -> list[str]:
26
+ """List all files in a directory that match any of the included glob patterns
27
+ and do not reside in any directory matching an excluded pattern.
28
+ Patterns are evaluated using glob-style matching.
29
+ """
30
+ all_files: list[str] = []
31
+ for root, dirs, files in os.walk(directory):
32
+ for filename in files:
33
+ if any(fnmatch.fnmatch(filename, pat) for pat in included_patterns):
34
+ full_path = os.path.join(root, filename)
35
+ # Check each component of the full path for excluded patterns.
36
+ if any(
37
+ any(fnmatch.fnmatch(part, pat) for pat in excluded_patterns)
38
+ for part in os.path.normpath(full_path).split(os.sep)
39
+ ):
40
+ continue
41
+ all_files.append(full_path)
42
+ return all_files
43
+
44
+
45
+ def read_text_file(file: str) -> str:
46
+ """Read a text file"""
47
+ return read_file(os.path.abspath(file))
48
+
49
+
50
+ def write_text_file(file: str, content: str):
51
+ """Write a text file"""
52
+ return write_file(os.path.abspath(file), content)
53
+
54
+
55
+ def read_all_files(
56
+ directory: str = ".",
57
+ included_patterns: list[str] = [
58
+ "*.py",
59
+ "*.go",
60
+ "*.js",
61
+ "*.ts",
62
+ "*.java",
63
+ "*.c",
64
+ "*.cpp",
65
+ ],
66
+ excluded_patterns: list[str] = [],
67
+ ) -> list[str]:
68
+ """Read all files in a directory that match any of the included glob patterns
69
+ and do not match any of the excluded glob patterns.
70
+ Patterns are evaluated using glob-style matching.
71
+ """
72
+ files = list_files(directory, included_patterns, excluded_patterns)
73
+ for index, file in enumerate(files):
74
+ content = read_text_file(file)
75
+ files[index] = f"# {file}\n```\n{content}\n```"
76
+ return files
@@ -8,7 +8,7 @@ from my_app_name._zrb.column.add_column_util import (
8
8
  update_my_app_name_test_update,
9
9
  update_my_app_name_ui,
10
10
  )
11
- from my_app_name._zrb.config import APP_DIR
11
+ from my_app_name._zrb.config import ACTIVATE_VENV_SCRIPT, APP_DIR
12
12
  from my_app_name._zrb.format_task import format_my_app_name_code
13
13
  from my_app_name._zrb.group import app_create_group
14
14
  from my_app_name._zrb.input import (
@@ -17,9 +17,16 @@ from my_app_name._zrb.input import (
17
17
  new_column_input,
18
18
  new_column_type_input,
19
19
  )
20
- from my_app_name._zrb.util import get_existing_module_names, get_existing_schema_names
20
+ from my_app_name._zrb.util import (
21
+ cd_module_script,
22
+ get_existing_module_names,
23
+ get_existing_schema_names,
24
+ set_create_migration_db_url_env,
25
+ set_env,
26
+ )
27
+ from my_app_name._zrb.venv_task import prepare_venv
21
28
 
22
- from zrb import AnyContext, Task, make_task
29
+ from zrb import AnyContext, Cmd, CmdTask, EnvFile, Task, make_task
23
30
 
24
31
 
25
32
  @make_task(
@@ -118,6 +125,34 @@ update_my_app_name_test_delete_task = Task(
118
125
  )
119
126
 
120
127
 
128
+ create_my_app_name_entity_migration = CmdTask(
129
+ name="create-my-app-name-entity-migration",
130
+ input=[
131
+ existing_module_input,
132
+ existing_entity_input,
133
+ new_column_input,
134
+ ],
135
+ env=EnvFile(path=os.path.join(APP_DIR, "template.env")),
136
+ cwd=APP_DIR,
137
+ cmd=[
138
+ ACTIVATE_VENV_SCRIPT,
139
+ Cmd(lambda ctx: set_create_migration_db_url_env(ctx.input.module)),
140
+ Cmd(lambda ctx: set_env("MY_APP_NAME_MODULES", ctx.input.module)),
141
+ Cmd(lambda ctx: cd_module_script(ctx.input.module)),
142
+ "alembic upgrade head",
143
+ Cmd(
144
+ 'alembic revision --autogenerate -m "create_{to_snake_case(ctx.input.entity)}_{to_snake_case(ctx.input.column)}_column"', # noqa
145
+ ),
146
+ ],
147
+ render_cmd=False,
148
+ retries=0,
149
+ upstream=[
150
+ prepare_venv,
151
+ update_my_app_name_schema_task,
152
+ ],
153
+ )
154
+
155
+
121
156
  add_my_app_name_column = app_create_group.add_task(
122
157
  Task(
123
158
  name="add-my-app-name-column",
@@ -129,6 +164,7 @@ add_my_app_name_column = app_create_group.add_task(
129
164
  update_my_app_name_test_read_task,
130
165
  update_my_app_name_test_update_task,
131
166
  update_my_app_name_test_delete_task,
167
+ create_my_app_name_entity_migration,
132
168
  ],
133
169
  successor=format_my_app_name_code,
134
170
  retries=0,
@@ -2,13 +2,13 @@
2
2
 
3
3
  <main id="crud-app"
4
4
  class="container"
5
- data-page-size='{{ page_size | tojson }}'
6
- data-page='{{ page | tojson }}'
7
- data-sort='{{ sort | tojson }}'
8
- data-filter='{{ filter | tojson }}'
9
- data-allow-create='{{ allow_create | tojson }}'
10
- data-allow-update='{{ allow_update | tojson }}'
11
- data-allow-delete='{{ allow_delete | tojson }}'>
5
+ data-page-size='{{ page_size | tojson | safe }}'
6
+ data-page='{{ page | tojson | safe }}'
7
+ data-sort='{{ sort | tojson | safe }}'
8
+ data-filter='{{ filter | tojson | safe }}'
9
+ data-allow-create='{{ allow_create | tojson | safe }}'
10
+ data-allow-update='{{ allow_update | tojson | safe }}'
11
+ data-allow-delete='{{ allow_delete | tojson | safe }}'>
12
12
  <article>
13
13
  <h1>My Entity</h1>
14
14
 
@@ -311,13 +311,13 @@
311
311
  document.addEventListener("DOMContentLoaded", () => {
312
312
  const app = document.getElementById("crud-app");
313
313
  new CrudApp("/api/v1/my-entities", {
314
- pageSize: JSON.parse(app.dataset.pageSize),
315
- currentPage: JSON.parse(app.dataset.page),
316
- sort: JSON.parse(app.dataset.sort),
317
- filter: JSON.parse(app.dataset.filter),
318
- allowCreate: JSON.parse(app.dataset.allowCreate),
319
- allowUpdate: JSON.parse(app.dataset.allowUpdate),
320
- allowDelete: JSON.parse(app.dataset.allowDelete),
314
+ pageSize: UTIL.tryParseJSON(app.dataset.pageSize),
315
+ currentPage: UTIL.tryParseJSON(app.dataset.page),
316
+ sort: UTIL.tryParseJSON(app.dataset.sort),
317
+ filter: UTIL.tryParseJSON(app.dataset.filter),
318
+ allowCreate: UTIL.tryParseJSON(app.dataset.allowCreate),
319
+ allowUpdate: UTIL.tryParseJSON(app.dataset.allowUpdate),
320
+ allowDelete: UTIL.tryParseJSON(app.dataset.allowDelete),
321
321
  updatedRowId: null,
322
322
  deletedRowId: null,
323
323
  });
@@ -2,13 +2,13 @@
2
2
 
3
3
  <main id="crud-app"
4
4
  class="container"
5
- data-page-size='{{ page_size | tojson }}'
6
- data-page='{{ page | tojson }}'
7
- data-sort='{{ sort | tojson }}'
8
- data-filter='{{ filter | tojson }}'
9
- data-allow-create='{{ allow_create | tojson }}'
10
- data-allow-update='{{ allow_update | tojson }}'
11
- data-allow-delete='{{ allow_delete | tojson }}'>
5
+ data-page-size='{{ page_size | tojson | safe }}'
6
+ data-page='{{ page | tojson | safe }}'
7
+ data-sort='{{ sort | tojson | safe }}'
8
+ data-filter='{{ filter | tojson | safe }}'
9
+ data-allow-create='{{ allow_create | tojson | safe }}'
10
+ data-allow-update='{{ allow_update | tojson | safe }}'
11
+ data-allow-delete='{{ allow_delete | tojson | safe }}'>
12
12
  <article>
13
13
  <h1>Permission</h1>
14
14
 
@@ -326,13 +326,13 @@
326
326
  document.addEventListener("DOMContentLoaded", () => {
327
327
  const app = document.getElementById("crud-app");
328
328
  new CrudApp("/api/v1/permissions", {
329
- pageSize: JSON.parse(app.dataset.pageSize),
330
- currentPage: JSON.parse(app.dataset.page),
331
- sort: JSON.parse(app.dataset.sort),
332
- filter: JSON.parse(app.dataset.filter),
333
- allowCreate: JSON.parse(app.dataset.allowCreate),
334
- allowUpdate: JSON.parse(app.dataset.allowUpdate),
335
- allowDelete: JSON.parse(app.dataset.allowDelete),
329
+ pageSize: UTIL.tryParseJSON(app.dataset.pageSize),
330
+ currentPage: UTIL.tryParseJSON(app.dataset.page),
331
+ sort: UTIL.tryParseJSON(app.dataset.sort),
332
+ filter: UTIL.tryParseJSON(app.dataset.filter),
333
+ allowCreate: UTIL.tryParseJSON(app.dataset.allowCreate),
334
+ allowUpdate: UTIL.tryParseJSON(app.dataset.allowUpdate),
335
+ allowDelete: UTIL.tryParseJSON(app.dataset.allowDelete),
336
336
  updatedRowId: null,
337
337
  deletedRowId: null,
338
338
  });
@@ -2,13 +2,13 @@
2
2
 
3
3
  <main id="crud-app"
4
4
  class="container"
5
- data-page-size='{{ page_size | tojson }}'
6
- data-page='{{ page | tojson }}'
7
- data-sort='{{ sort | tojson }}'
8
- data-filter='{{ filter | tojson }}'
9
- data-allow-create='{{ allow_create | tojson }}'
10
- data-allow-update='{{ allow_update | tojson }}'
11
- data-allow-delete='{{ allow_delete | tojson }}'>
5
+ data-page-size='{{ page_size | tojson | safe }}'
6
+ data-page='{{ page | tojson | safe }}'
7
+ data-sort='{{ sort | tojson | safe }}'
8
+ data-filter='{{ filter | tojson | safe }}'
9
+ data-allow-create='{{ allow_create | tojson | safe }}'
10
+ data-allow-update='{{ allow_update | tojson | safe }}'
11
+ data-allow-delete='{{ allow_delete | tojson | safe }}'>
12
12
  <article>
13
13
  <h1>Role</h1>
14
14
 
@@ -251,7 +251,7 @@
251
251
  try {
252
252
  const createForm = document.getElementById("crud-create-form");
253
253
  const formData = UTIL.getFormData(createForm);
254
- formData.permission_names = JSON.parse(formData.permission_names);
254
+ formData.permission_names = UTIL.tryParseJSON(formData.permission_names);
255
255
  await UTIL.fetchAPI(this.apiUrl, { method: "POST", body: JSON.stringify(formData) });
256
256
  await this.fetchRows();
257
257
  this.hideCreateForm();
@@ -283,7 +283,7 @@
283
283
  try {
284
284
  const updateForm = document.getElementById("crud-update-form");
285
285
  const formData = UTIL.getFormData(updateForm);
286
- formData.permission_names = JSON.parse(formData.permission_names);
286
+ formData.permission_names = UTIL.tryParseJSON(formData.permission_names);
287
287
  await UTIL.fetchAPI(`${this.apiUrl}/${this.state.updatedRowId}`, {
288
288
  method: "PUT",
289
289
  body: JSON.stringify(formData)
@@ -348,13 +348,13 @@
348
348
  document.addEventListener("DOMContentLoaded", () => {
349
349
  const app = document.getElementById("crud-app");
350
350
  new CrudApp("/api/v1/roles", {
351
- pageSize: JSON.parse(app.dataset.pageSize),
352
- currentPage: JSON.parse(app.dataset.page),
353
- sort: JSON.parse(app.dataset.sort),
354
- filter: JSON.parse(app.dataset.filter),
355
- allowCreate: JSON.parse(app.dataset.allowCreate),
356
- allowUpdate: JSON.parse(app.dataset.allowUpdate),
357
- allowDelete: JSON.parse(app.dataset.allowDelete),
351
+ pageSize: UTIL.tryParseJSON(app.dataset.pageSize),
352
+ currentPage: UTIL.tryParseJSON(app.dataset.page),
353
+ sort: UTIL.tryParseJSON(app.dataset.sort),
354
+ filter: UTIL.tryParseJSON(app.dataset.filter),
355
+ allowCreate: UTIL.tryParseJSON(app.dataset.allowCreate),
356
+ allowUpdate: UTIL.tryParseJSON(app.dataset.allowUpdate),
357
+ allowDelete: UTIL.tryParseJSON(app.dataset.allowDelete),
358
358
  updatedRowId: null,
359
359
  deletedRowId: null,
360
360
  });