zrb 1.0.0b5__tar.gz → 1.0.0b7__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 (312) hide show
  1. {zrb-1.0.0b5 → zrb-1.0.0b7}/PKG-INFO +2 -1
  2. {zrb-1.0.0b5 → zrb-1.0.0b7}/pyproject.toml +2 -1
  3. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/__init__.py +2 -0
  4. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/llm/tool/rag.py +6 -8
  5. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_task.py +3 -3
  6. zrb-1.0.0b7/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_task.py +93 -0
  7. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_task.py +3 -3
  8. {zrb-1.0.0b5 → zrb-1.0.0b7}/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 +11 -13
  9. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_task.py +3 -3
  10. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service.py +11 -13
  11. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service.py +20 -18
  12. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service.py +24 -14
  13. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/setup/tmux/tmux.py +1 -1
  14. zrb-1.0.0b7/src/zrb/builtin/setup/zsh/zsh.py +55 -0
  15. zrb-1.0.0b7/src/zrb/builtin/setup/zsh/zsh_config.sh +133 -0
  16. zrb-1.0.0b7/src/zrb/builtin/setup/zsh/zsh_helper.py +13 -0
  17. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/config.py +4 -2
  18. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/context/any_context.py +2 -0
  19. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/context/context.py +7 -5
  20. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/runner/web_route/static/resources/session/current-session.js +19 -12
  21. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/task/cmd_task.py +11 -1
  22. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/task/llm_task.py +0 -2
  23. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/task/rsync_task.py +6 -4
  24. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/util/cmd/command.py +25 -3
  25. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/util/git.py +9 -9
  26. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/util/git_subtree.py +3 -3
  27. zrb-1.0.0b5/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_task.py +0 -14
  28. {zrb-1.0.0b5 → zrb-1.0.0b7}/README.md +0 -0
  29. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/__init__.py +0 -0
  30. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/__main__.py +0 -0
  31. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/attr/__init__.py +0 -0
  32. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/attr/type.py +0 -0
  33. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/base64.py +0 -0
  34. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/git.py +0 -0
  35. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/git_subtree.py +0 -0
  36. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/group.py +0 -0
  37. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/llm/llm_chat.py +0 -0
  38. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/llm/previous-session.js +0 -0
  39. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/llm/tool/api.py +0 -0
  40. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/llm/tool/cli.py +0 -0
  41. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/llm/tool/web.py +0 -0
  42. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/md5.py +0 -0
  43. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/__init__.py +0 -0
  44. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_input.py +0 -0
  45. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.flake8 +0 -0
  46. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.gitignore +0 -0
  47. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/README.md +0 -0
  48. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/__init__.py +0 -0
  49. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/config.py +0 -0
  50. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_util.py +0 -0
  51. {zrb-1.0.0b5 → zrb-1.0.0b7}/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
  52. {zrb-1.0.0b5 → zrb-1.0.0b7}/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
  53. {zrb-1.0.0b5 → zrb-1.0.0b7}/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
  54. {zrb-1.0.0b5 → zrb-1.0.0b7}/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
  55. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/schema/my_entity.py +0 -0
  56. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/client_method.py +0 -0
  57. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/gateway_subroute.py +0 -0
  58. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/format_task.py +0 -0
  59. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/group.py +0 -0
  60. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/input.py +0 -0
  61. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_util.py +0 -0
  62. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/gateway/subroute/my_module.py +0 -0
  63. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/alembic.ini +0 -0
  64. {zrb-1.0.0b5 → zrb-1.0.0b7}/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
  65. {zrb-1.0.0b5 → zrb-1.0.0b7}/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
  66. {zrb-1.0.0b5 → zrb-1.0.0b7}/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
  67. {zrb-1.0.0b5 → zrb-1.0.0b7}/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
  68. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/README +0 -0
  69. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/env.py +0 -0
  70. {zrb-1.0.0b5 → zrb-1.0.0b7}/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
  71. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/versions/.gitkeep +0 -0
  72. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration_metadata.py +0 -0
  73. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/route.py +0 -0
  74. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/service/__init__.py +0 -0
  75. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/module_task_definition.py +0 -0
  76. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task.py +0 -0
  77. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/util.py +0 -0
  78. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/venv_task.py +0 -0
  79. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/__init__.py +0 -0
  80. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/app_factory.py +0 -0
  81. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_db_repository.py +0 -0
  82. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_service.py +0 -0
  83. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/db_engine_factory.py +0 -0
  84. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/error.py +0 -0
  85. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/logger_factory.py +0 -0
  86. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/parser_factory.py +0 -0
  87. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/schema.py +0 -0
  88. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/app.py +0 -0
  89. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/parser.py +0 -0
  90. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/user_agent.py +0 -0
  91. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/view.py +0 -0
  92. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/config.py +0 -0
  93. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/main.py +0 -0
  94. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/migrate.py +0 -0
  95. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/__init__.py +0 -0
  96. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/alembic.ini +0 -0
  97. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_api_client.py +0 -0
  98. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client.py +0 -0
  99. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client_factory.py +0 -0
  100. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_direct_client.py +0 -0
  101. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/README +0 -0
  102. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/env.py +0 -0
  103. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/script.py.mako +0 -0
  104. {zrb-1.0.0b5 → zrb-1.0.0b7}/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.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration_metadata.py +0 -0
  106. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/route.py +0 -0
  107. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/__init__.py +0 -0
  108. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/__init__.py +0 -0
  109. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service_factory.py +0 -0
  110. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_db_repository.py +0 -0
  111. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_repository.py +0 -0
  112. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_repository_factory.py +0 -0
  113. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/__init__.py +0 -0
  114. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_db_repository.py +0 -0
  115. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository.py +0 -0
  116. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository_factory.py +0 -0
  117. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service_factory.py +0 -0
  118. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/__init__.py +0 -0
  119. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_db_repository.py +0 -0
  120. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository.py +0 -0
  121. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository_factory.py +0 -0
  122. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service_factory.py +0 -0
  123. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/alembic.ini +0 -0
  124. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/README +0 -0
  125. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/env.py +0 -0
  126. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/script.py.mako +0 -0
  127. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/versions/.gitkeep +0 -0
  128. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration_metadata.py +0 -0
  129. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/route.py +0 -0
  130. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/subroute/auth.py +0 -0
  131. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/view.py +0 -0
  132. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/error.html +0 -0
  133. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/homepage.html +0 -0
  134. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/android-chrome-192x192.png +0 -0
  135. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/android-chrome-512x512.png +0 -0
  136. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/favicon-32x32.png +0 -0
  137. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.amber.min.css +0 -0
  138. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.blue.min.css +0 -0
  139. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.cyan.min.css +0 -0
  140. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.fuchsia.min.css +0 -0
  141. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.green.min.css +0 -0
  142. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.grey.min.css +0 -0
  143. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.indigo.min.css +0 -0
  144. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.jade.min.css +0 -0
  145. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.lime.min.css +0 -0
  146. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.min.css +0 -0
  147. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.orange.min.css +0 -0
  148. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.pink.min.css +0 -0
  149. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.pumpkin.min.css +0 -0
  150. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.purple.min.css +0 -0
  151. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.red.min.css +0 -0
  152. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.sand.min.css +0 -0
  153. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.slate.min.css +0 -0
  154. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.violet.min.css +0 -0
  155. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.yellow.min.css +0 -0
  156. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.zinc.min.css +0 -0
  157. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/template/default.html +0 -0
  158. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/requirements.txt +0 -0
  159. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/__init__.py +0 -0
  160. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/permission.py +0 -0
  161. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/role.py +0 -0
  162. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/session.py +0 -0
  163. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/user.py +0 -0
  164. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/template.env +0 -0
  165. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/add/fastapp/fastapp_util.py +0 -0
  166. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/create/__init__.py +0 -0
  167. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/create/project-template/README.md +0 -0
  168. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/create/project-template/zrb_init.py +0 -0
  169. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/project/create/project_task.py +0 -0
  170. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/python.py +0 -0
  171. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/random.py +0 -0
  172. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/setup/asdf/asdf.py +0 -0
  173. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/setup/asdf/asdf_helper.py +0 -0
  174. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/setup/common_input.py +0 -0
  175. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/setup/latex/ubuntu.py +0 -0
  176. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/setup/tmux/tmux_config.sh +0 -0
  177. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/setup/tmux/tmux_helper.py +0 -0
  178. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/setup/ubuntu.py +0 -0
  179. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/shell/__init__.py +0 -0
  180. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/shell/autocomplete/__init__.py +0 -0
  181. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/shell/autocomplete/bash.py +0 -0
  182. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/shell/autocomplete/subcmd.py +0 -0
  183. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/shell/autocomplete/zsh.py +0 -0
  184. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/builtin/todo.py +0 -0
  185. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/callback/__init__.py +0 -0
  186. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/callback/any_callback.py +0 -0
  187. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/callback/callback.py +0 -0
  188. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/cmd/__init__.py +0 -0
  189. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/cmd/cmd_result.py +0 -0
  190. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/cmd/cmd_val.py +0 -0
  191. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/content_transformer/__init__.py +0 -0
  192. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/content_transformer/any_content_transformer.py +0 -0
  193. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/content_transformer/content_transformer.py +0 -0
  194. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/context/__init__.py +0 -0
  195. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/context/any_shared_context.py +0 -0
  196. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/context/shared_context.py +0 -0
  197. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/dot_dict/__init__.py +0 -0
  198. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/dot_dict/dot_dict.py +0 -0
  199. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/env/__init__.py +0 -0
  200. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/env/any_env.py +0 -0
  201. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/env/env.py +0 -0
  202. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/env/env_file.py +0 -0
  203. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/env/env_map.py +0 -0
  204. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/group/__init__.py +0 -0
  205. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/group/any_group.py +0 -0
  206. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/group/group.py +0 -0
  207. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/input/__init__.py +0 -0
  208. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/input/any_input.py +0 -0
  209. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/input/base_input.py +0 -0
  210. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/input/bool_input.py +0 -0
  211. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/input/float_input.py +0 -0
  212. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/input/int_input.py +0 -0
  213. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/input/option_input.py +0 -0
  214. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/input/password_input.py +0 -0
  215. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/input/str_input.py +0 -0
  216. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/input/text_input.py +0 -0
  217. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/runner/__init__.py +0 -0
  218. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/runner/cli.py +0 -0
  219. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/runner/common_util.py +0 -0
  220. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/runner/web_app.py +0 -0
  221. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/runner/web_config/config.py +0 -0
  222. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/runner/web_config/config_factory.py +0 -0
  223. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/runner/web_route/__init__.py +0 -0
  224. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/runner/web_route/docs_route.py +0 -0
  225. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/runner/web_route/error_page/serve_default_404.py +0 -0
  226. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/runner/web_route/error_page/show_error_page.py +0 -0
  227. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/runner/web_route/error_page/view.html +0 -0
  228. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/runner/web_route/home_page/__init__.py +0 -0
  229. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/runner/web_route/home_page/home_page_route.py +0 -0
  230. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/runner/web_route/home_page/view.html +0 -0
  231. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/runner/web_route/login_api_route.py +0 -0
  232. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/runner/web_route/login_page/login_page_route.py +0 -0
  233. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/runner/web_route/login_page/view.html +0 -0
  234. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/runner/web_route/logout_api_route.py +0 -0
  235. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/runner/web_route/logout_page/logout_page_route.py +0 -0
  236. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/runner/web_route/logout_page/view.html +0 -0
  237. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/runner/web_route/node_page/group/show_group_page.py +0 -0
  238. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/runner/web_route/node_page/group/view.html +0 -0
  239. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/runner/web_route/node_page/node_page_route.py +0 -0
  240. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/runner/web_route/node_page/task/partial/input.html +0 -0
  241. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/runner/web_route/node_page/task/show_task_page.py +0 -0
  242. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/runner/web_route/node_page/task/view.html +0 -0
  243. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/runner/web_route/refresh_token_api_route.py +0 -0
  244. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/runner/web_route/static/refresh-token.template.js +0 -0
  245. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/runner/web_route/static/resources/common.css +0 -0
  246. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/runner/web_route/static/resources/favicon-32x32.png +0 -0
  247. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/runner/web_route/static/resources/login/event.js +0 -0
  248. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/runner/web_route/static/resources/logout/event.js +0 -0
  249. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/runner/web_route/static/resources/pico.min.css +0 -0
  250. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/runner/web_route/static/resources/session/common-util.js +0 -0
  251. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/runner/web_route/static/resources/session/event.js +0 -0
  252. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/runner/web_route/static/resources/session/past-session.js +0 -0
  253. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/runner/web_route/static/static_route.py +0 -0
  254. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/runner/web_route/task_input_api_route.py +0 -0
  255. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/runner/web_route/task_session_api_route.py +0 -0
  256. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/runner/web_schema/session.py +0 -0
  257. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/runner/web_schema/token.py +0 -0
  258. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/runner/web_schema/user.py +0 -0
  259. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/runner/web_util/cookie.py +0 -0
  260. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/runner/web_util/html.py +0 -0
  261. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/runner/web_util/token.py +0 -0
  262. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/runner/web_util/user.py +0 -0
  263. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/session/__init__.py +0 -0
  264. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/session/any_session.py +0 -0
  265. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/session/session.py +0 -0
  266. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/session_state_log/__init__.py +0 -0
  267. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/session_state_log/session_state_log.py +0 -0
  268. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/session_state_logger/__init__.py +0 -0
  269. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/session_state_logger/any_session_state_logger.py +0 -0
  270. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/session_state_logger/file_session_state_logger.py +0 -0
  271. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/session_state_logger/session_state_logger_factory.py +0 -0
  272. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/task/__init__.py +0 -0
  273. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/task/any_task.py +0 -0
  274. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/task/base_task.py +0 -0
  275. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/task/base_trigger.py +0 -0
  276. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/task/http_check.py +0 -0
  277. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/task/make_task.py +0 -0
  278. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/task/scaffolder.py +0 -0
  279. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/task/scheduler.py +0 -0
  280. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/task/task.py +0 -0
  281. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/task/tcp_check.py +0 -0
  282. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/task_status/__init__.py +0 -0
  283. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/task_status/task_status.py +0 -0
  284. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/util/__init__.py +0 -0
  285. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/util/attr.py +0 -0
  286. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/util/cli/__init__.py +0 -0
  287. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/util/cli/style.py +0 -0
  288. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/util/cli/subcommand.py +0 -0
  289. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/util/cmd/__init__.py +0 -0
  290. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/util/cmd/remote.py +0 -0
  291. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/util/codemod/__init__.py +0 -0
  292. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/util/codemod/append_code_to_class.py +0 -0
  293. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/util/codemod/append_code_to_function.py +0 -0
  294. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/util/codemod/append_code_to_method.py +0 -0
  295. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/util/codemod/append_key_to_dict.py +0 -0
  296. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/util/codemod/append_param_to_function_call.py +0 -0
  297. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/util/codemod/prepend_code_to_module.py +0 -0
  298. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/util/codemod/prepend_parent_to_class.py +0 -0
  299. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/util/codemod/prepend_property_to_class.py +0 -0
  300. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/util/cron.py +0 -0
  301. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/util/file.py +0 -0
  302. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/util/group.py +0 -0
  303. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/util/llm/tool.py +0 -0
  304. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/util/load.py +0 -0
  305. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/util/run.py +0 -0
  306. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/util/string/__init__.py +0 -0
  307. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/util/string/conversion.py +0 -0
  308. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/util/string/format.py +0 -0
  309. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/util/string/name.py +0 -0
  310. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/util/todo.py +0 -0
  311. {zrb-1.0.0b5 → zrb-1.0.0b7}/src/zrb/xcom/__init__.py +0 -0
  312. {zrb-1.0.0b5 → zrb-1.0.0b7}/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.0b5
3
+ Version: 1.0.0b7
4
4
  Summary: Your Automation Powerhouse
5
5
  Home-page: https://github.com/state-alchemists/zrb
6
6
  License: AGPL-3.0-or-later
@@ -19,6 +19,7 @@ Requires-Dist: beautifulsoup4 (>=4.12.3,<5.0.0)
19
19
  Requires-Dist: black (>=24.10.0,<24.11.0)
20
20
  Requires-Dist: chromadb (>=0.5.20,<0.6.0) ; extra == "rag"
21
21
  Requires-Dist: fastapi[standard] (>=0.115.6,<0.116.0)
22
+ Requires-Dist: fastembed (>=0.5.1,<0.6.0)
22
23
  Requires-Dist: isort (>=5.13.2,<5.14.0)
23
24
  Requires-Dist: libcst (>=1.5.0,<2.0.0)
24
25
  Requires-Dist: pdfplumber (>=0.11.4,<0.12.0) ; extra == "rag"
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "zrb"
3
- version = "1.0.0b5"
3
+ version = "1.0.0b7"
4
4
  description = "Your Automation Powerhouse"
5
5
  authors = ["Go Frendi Gunawan <gofrendiasgard@gmail.com>"]
6
6
  license = "AGPL-3.0-or-later"
@@ -51,6 +51,7 @@ fastapi = {extras = ["standard"], version = "^0.115.6"}
51
51
  python-jose = {extras = ["cryptography"], version = "^3.3.0"}
52
52
  ulid-py = "^1.1.0"
53
53
  pydantic-ai = "^0.0.19"
54
+ fastembed = "^0.5.1"
54
55
 
55
56
  [tool.poetry.extras]
56
57
  # poetry install -E rag
@@ -17,6 +17,7 @@ from zrb.builtin.setup.asdf.asdf import setup_asdf
17
17
  from zrb.builtin.setup.latex.ubuntu import setup_latex_on_ubuntu
18
18
  from zrb.builtin.setup.tmux.tmux import setup_tmux
19
19
  from zrb.builtin.setup.ubuntu import setup_ubuntu
20
+ from zrb.builtin.setup.zsh.zsh import setup_zsh
20
21
  from zrb.builtin.shell.autocomplete.bash import make_bash_autocomplete
21
22
  from zrb.builtin.shell.autocomplete.subcmd import get_shell_subcommands
22
23
  from zrb.builtin.shell.autocomplete.zsh import make_zsh_autocomplete
@@ -62,3 +63,4 @@ assert setup_ubuntu
62
63
  assert setup_latex_on_ubuntu
63
64
  assert setup_asdf
64
65
  assert setup_tmux
66
+ assert setup_zsh
@@ -3,7 +3,6 @@ import json
3
3
  import os
4
4
  import sys
5
5
 
6
- import litellm
7
6
  import ulid
8
7
 
9
8
  from zrb.config import (
@@ -30,7 +29,9 @@ def create_rag_from_directory(
30
29
  async def retrieve(query: str) -> str:
31
30
  from chromadb import PersistentClient
32
31
  from chromadb.config import Settings
32
+ from fastembed import TextEmbedding
33
33
 
34
+ embedding_model = TextEmbedding(model_name=model)
34
35
  client = PersistentClient(
35
36
  path=vector_db_path, settings=Settings(allow_reset=True)
36
37
  )
@@ -75,10 +76,8 @@ def create_rag_from_directory(
75
76
  ),
76
77
  file=sys.stderr,
77
78
  )
78
- response = await litellm.aembedding(
79
- model=model, input=[chunk]
80
- )
81
- vector = response["data"][0]["embedding"]
79
+ embedding_result = list(embedding_model.embed([chunk]))
80
+ vector = embedding_result[0]
82
81
  collection.upsert(
83
82
  ids=[chunk_id],
84
83
  embeddings=[vector],
@@ -102,9 +101,8 @@ def create_rag_from_directory(
102
101
  )
103
102
 
104
103
  print(stylize_faint("Vectorizing query"), file=sys.stderr)
105
- query_response = await litellm.aembedding(model=model, input=[query])
106
- query_vector = query_response["data"][0]["embedding"]
107
-
104
+ embedding_result = list(embedding_model.embed([query]))
105
+ query_vector = embedding_result[0]
108
106
  print(stylize_faint("Searching documents"), file=sys.stderr)
109
107
  results = collection.query(
110
108
  query_embeddings=query_vector,
@@ -20,11 +20,11 @@ from zrb.util.string.name import get_random_name
20
20
 
21
21
 
22
22
  @make_task(
23
- name="validate-create-fastapp",
23
+ name="validate-add-fastapp",
24
24
  input=[project_dir_input, app_name_input],
25
25
  retries=0,
26
26
  )
27
- async def validate_create_fastapp(ctx: AnyContext):
27
+ async def validate_add_fastapp(ctx: AnyContext):
28
28
  project_dir = ctx.input.project_dir
29
29
  if not os.path.isdir(project_dir):
30
30
  raise ValueError(f"Project directory not exists: {project_dir}")
@@ -39,7 +39,7 @@ scaffold_fastapp = Scaffolder(
39
39
  project_dir_input,
40
40
  app_name_input,
41
41
  ],
42
- upstream=validate_create_fastapp,
42
+ upstream=validate_add_fastapp,
43
43
  source_path=os.path.join(os.path.dirname(__file__), "fastapp_template"),
44
44
  render_source_path=False,
45
45
  destination_path="{ctx.input.project_dir}",
@@ -0,0 +1,93 @@
1
+ import os
2
+
3
+ from my_app_name._zrb.config import APP_DIR
4
+ from my_app_name._zrb.format_task import format_my_app_name_code
5
+ from my_app_name._zrb.group import app_create_group
6
+ from my_app_name._zrb.input import (
7
+ existing_entity_input,
8
+ new_column_input,
9
+ new_column_type_input,
10
+ )
11
+ from my_app_name._zrb.util import get_existing_schema_names
12
+
13
+ from zrb import AnyContext, Task, make_task
14
+ from zrb.util.codemod.prepend_property_to_class import prepend_property_to_class
15
+ from zrb.util.file import read_file, write_file
16
+ from zrb.util.string.conversion import to_pascal_case, to_snake_case
17
+
18
+
19
+ @make_task(
20
+ name="validate-add-my-app-name-column",
21
+ input=existing_entity_input,
22
+ retries=0,
23
+ )
24
+ async def validate_add_my_app_name_column(ctx: AnyContext):
25
+ schema_name = ctx.input.entity
26
+ if schema_name not in get_existing_schema_names():
27
+ raise ValueError(f"Schema not exist: {schema_name}")
28
+
29
+
30
+ @make_task(
31
+ name="update-my-app-name-schema",
32
+ input=[
33
+ existing_entity_input,
34
+ new_column_input,
35
+ new_column_type_input,
36
+ ],
37
+ retries=0,
38
+ upstream=validate_add_my_app_name_column,
39
+ )
40
+ def update_my_app_name_schema(ctx: AnyContext):
41
+ snake_entity_name = to_snake_case(ctx.input.entity)
42
+ pascal_entity_name = to_pascal_case(ctx.input.entity)
43
+ schema_file_path = os.path.join(APP_DIR, "schema", f"{snake_entity_name}.py")
44
+ existing_code = read_file(schema_file_path)
45
+ snake_column_name = to_snake_case(ctx.input.column)
46
+ column_type = ctx.input.type
47
+ # Base
48
+ new_code = prepend_property_to_class(
49
+ original_code=existing_code,
50
+ class_name=f"{pascal_entity_name}Base",
51
+ property_name=snake_column_name,
52
+ annotation=column_type,
53
+ default_value=_get_default_value(column_type),
54
+ )
55
+ # Update
56
+ new_code = prepend_property_to_class(
57
+ original_code=new_code,
58
+ class_name=f"{pascal_entity_name}Update",
59
+ property_name=snake_column_name,
60
+ annotation=f"{column_type} | None",
61
+ default_value="None",
62
+ )
63
+ # Table
64
+ new_code = prepend_property_to_class(
65
+ original_code=new_code,
66
+ class_name=f"{pascal_entity_name}",
67
+ property_name=snake_column_name,
68
+ annotation=f"{column_type} | None",
69
+ default_value="Field(index=False)",
70
+ )
71
+ write_file(schema_file_path, new_code)
72
+
73
+
74
+ add_my_app_name_column = app_create_group.add_task(
75
+ Task(
76
+ name="add-my-app-name-column",
77
+ description="📊 Create new column on an entity",
78
+ upstream=update_my_app_name_schema,
79
+ successor=format_my_app_name_code,
80
+ retries=0,
81
+ ),
82
+ alias="column",
83
+ )
84
+
85
+
86
+ def _get_default_value(data_type: str) -> str:
87
+ if data_type == "str":
88
+ return '""'
89
+ if data_type in ("int", "float"):
90
+ return "0"
91
+ if data_type == "bool":
92
+ return "True"
93
+ return "None"
@@ -48,7 +48,7 @@ from zrb.util.string.conversion import to_snake_case
48
48
 
49
49
 
50
50
  @make_task(
51
- name="validate-create-my-app-name-entity",
51
+ name="validate-add-my-app-name-entity",
52
52
  input=[
53
53
  existing_module_input,
54
54
  new_entity_input,
@@ -57,7 +57,7 @@ from zrb.util.string.conversion import to_snake_case
57
57
  ],
58
58
  retries=0,
59
59
  )
60
- async def validate_create_my_app_name_entity(ctx: AnyContext):
60
+ async def validate_add_my_app_name_entity(ctx: AnyContext):
61
61
  module_name = to_snake_case(ctx.input.module)
62
62
  if module_name not in get_existing_module_names():
63
63
  raise ValueError(f"Module not exist: {module_name}")
@@ -147,7 +147,7 @@ scaffold_my_app_name_entity = Scaffolder(
147
147
  ),
148
148
  ],
149
149
  retries=0,
150
- upstream=validate_create_my_app_name_entity,
150
+ upstream=validate_add_my_app_name_entity,
151
151
  )
152
152
 
153
153
  create_my_app_name_entity_migration = CmdTask(
@@ -72,10 +72,8 @@ class MyEntityService(BaseService):
72
72
  async def update_my_entity_bulk(
73
73
  self, my_entity_ids: list[str], data: MyEntityUpdateWithAudit
74
74
  ) -> MyEntityResponse:
75
- my_entities = await self.my_entity_repository.update_bulk(my_entity_ids, data)
76
- return await self.my_entity_repository.get_by_ids(
77
- [my_entity.id for my_entity in my_entities]
78
- )
75
+ await self.my_entity_repository.update_bulk(my_entity_ids, data)
76
+ return await self.my_entity_repository.get_by_ids(my_entity_ids)
79
77
 
80
78
  @BaseService.route(
81
79
  "/api/v1/my-entities/{my_entity_id}",
@@ -85,21 +83,20 @@ class MyEntityService(BaseService):
85
83
  async def update_my_entity(
86
84
  self, my_entity_id: str, data: MyEntityUpdateWithAudit
87
85
  ) -> MyEntityResponse:
88
- my_entity = await self.my_entity_repository.update(my_entity_id, data)
89
- return await self.my_entity_repository.get_by_id(my_entity.id)
86
+ await self.my_entity_repository.update(my_entity_id, data)
87
+ return await self.my_entity_repository.get_by_id(my_entity_id)
90
88
 
91
89
  @BaseService.route(
92
- "/api/v1/my-entities/{my_entity_id}",
90
+ "/api/v1/my-entities/bulk",
93
91
  methods=["delete"],
94
92
  response_model=MyEntityResponse,
95
93
  )
96
94
  async def delete_my_entity_bulk(
97
95
  self, my_entity_ids: list[str], deleted_by: str
98
96
  ) -> MyEntityResponse:
99
- my_entities = await self.my_entity_repository.delete_bulk(my_entity_ids)
100
- return await self.my_entity_repository.get_by_ids(
101
- [my_entity.id for my_entity in my_entities]
102
- )
97
+ my_entities = await self.my_entity_repository.get_by_ids(my_entity_ids)
98
+ await self.my_entity_repository.delete_bulk(my_entity_ids)
99
+ return my_entities
103
100
 
104
101
  @BaseService.route(
105
102
  "/api/v1/my-entities/{my_entity_id}",
@@ -109,5 +106,6 @@ class MyEntityService(BaseService):
109
106
  async def delete_my_entity(
110
107
  self, my_entity_id: str, deleted_by: str
111
108
  ) -> MyEntityResponse:
112
- my_entity = await self.my_entity_repository.delete(my_entity_id)
113
- return await self.my_entity_repository.get_by_id(my_entity.id)
109
+ my_entity = await self.my_entity_repository.get_by_id(my_entity.id)
110
+ await self.my_entity_repository.delete(my_entity_id)
111
+ return my_entity
@@ -24,11 +24,11 @@ from zrb import AnyContext, ContentTransformer, Scaffolder, Task, make_task
24
24
 
25
25
 
26
26
  @make_task(
27
- name="validate-create-my-app-name-module",
27
+ name="validate-add-my-app-name-module",
28
28
  input=new_module_input,
29
29
  retries=0,
30
30
  )
31
- async def validate_create_my_app_name_module(ctx: AnyContext):
31
+ async def validate_add_my_app_name_module(ctx: AnyContext):
32
32
  if ctx.input.module in get_existing_module_names():
33
33
  raise ValueError(f"Module already exists: {ctx.input.module}")
34
34
 
@@ -93,7 +93,7 @@ scaffold_my_app_name_module = Scaffolder(
93
93
  ),
94
94
  ],
95
95
  retries=0,
96
- upstream=validate_create_my_app_name_module,
96
+ upstream=validate_add_my_app_name_module,
97
97
  )
98
98
 
99
99
  add_my_app_name_module = app_create_group.add_task(
@@ -76,10 +76,8 @@ class PermissionService(BaseService):
76
76
  async def update_permission_bulk(
77
77
  self, permission_ids: list[str], data: PermissionUpdateWithAudit
78
78
  ) -> PermissionResponse:
79
- permissions = await self.permission_repository.update_bulk(permission_ids, data)
80
- return await self.permission_repository.get_by_ids(
81
- [permission.id for permission in permissions]
82
- )
79
+ await self.permission_repository.update_bulk(permission_ids, data)
80
+ return await self.permission_repository.get_by_ids(permission_ids)
83
81
 
84
82
  @BaseService.route(
85
83
  "/api/v1/permissions/{permission_id}",
@@ -89,21 +87,20 @@ class PermissionService(BaseService):
89
87
  async def update_permission(
90
88
  self, permission_id: str, data: PermissionUpdateWithAudit
91
89
  ) -> PermissionResponse:
92
- permission = await self.permission_repository.update(permission_id, data)
93
- return await self.permission_repository.get_by_id(permission.id)
90
+ await self.permission_repository.update(permission_id, data)
91
+ return await self.permission_repository.get_by_id(permission_id)
94
92
 
95
93
  @BaseService.route(
96
- "/api/v1/permissions/{permission_id}",
94
+ "/api/v1/permissions/bulk",
97
95
  methods=["delete"],
98
96
  response_model=PermissionResponse,
99
97
  )
100
98
  async def delete_permission_bulk(
101
99
  self, permission_ids: list[str], deleted_by: str
102
100
  ) -> PermissionResponse:
103
- permissions = await self.permission_repository.delete_bulk(permission_ids)
104
- return await self.permission_repository.get_by_ids(
105
- [permission.id for permission in permissions]
106
- )
101
+ permissions = await self.permission_repository.get_by_ids(permission_ids)
102
+ await self.permission_repository.delete_bulk(permission_ids)
103
+ return permissions
107
104
 
108
105
  @BaseService.route(
109
106
  "/api/v1/permissions/{permission_id}",
@@ -113,5 +110,6 @@ class PermissionService(BaseService):
113
110
  async def delete_permission(
114
111
  self, permission_id: str, deleted_by: str
115
112
  ) -> PermissionResponse:
116
- permission = await self.permission_repository.delete(permission_id)
117
- return await self.permission_repository.get_by_id(permission.id)
113
+ permission = await self.permission_repository.get_by_id(permission_id)
114
+ await self.permission_repository.delete(permission_id)
115
+ return permission
@@ -87,17 +87,15 @@ class RoleService(BaseService):
87
87
  ) -> RoleResponse:
88
88
  permission_ids = [row.get_permission_ids() for row in data]
89
89
  data = [row.get_role_update_with_audit() for row in data]
90
- roles = await self.role_repository.update_bulk(role_ids, data)
91
- if len(roles) > 0:
92
- updated_by = roles[0].updated_by
93
- await self.role_repository.remove_all_permissions(
94
- [role.id for role in roles]
95
- )
90
+ await self.role_repository.update_bulk(role_ids, data)
91
+ if len(role_ids) > 0:
92
+ updated_by = data[0].updated_by
93
+ await self.role_repository.remove_all_permissions(role_ids)
96
94
  await self.role_repository.add_permissions(
97
- data={role.id: permission_ids[i] for i, role in enumerate(roles)},
95
+ data={role_id: permission_ids[i] for i, role_id in enumerate(role_ids)},
98
96
  created_by=updated_by,
99
97
  )
100
- return await self.role_repository.get_by_ids([role.id for role in roles])
98
+ return await self.role_repository.get_by_ids(role_ids)
101
99
 
102
100
  @BaseService.route(
103
101
  "/api/v1/roles/{role_id}",
@@ -108,24 +106,26 @@ class RoleService(BaseService):
108
106
  self, role_id: str, data: RoleUpdateWithPermissionsAndAudit
109
107
  ) -> RoleResponse:
110
108
  permission_ids = data.get_permission_ids()
111
- data = data.get_role_update_with_audit()
112
- role = await self.role_repository.update(role_id, data)
113
- await self.role_repository.remove_all_permissions([role.id])
109
+ role_data = data.get_role_update_with_audit()
110
+ await self.role_repository.update(role_id, role_data)
111
+ await self.role_repository.remove_all_permissions([role_id])
114
112
  await self.role_repository.add_permissions(
115
- data={role.id: permission_ids}, created_by=role.updated_by
113
+ data={role_id: permission_ids}, created_by=role_data.updated_by
116
114
  )
117
- return await self.role_repository.get_by_id(role.id)
115
+ return await self.role_repository.get_by_id(role_id)
118
116
 
119
117
  @BaseService.route(
120
- "/api/v1/roles/{role_id}",
118
+ "/api/v1/roles/bulk",
121
119
  methods=["delete"],
122
120
  response_model=RoleResponse,
123
121
  )
124
122
  async def delete_role_bulk(
125
123
  self, role_ids: list[str], deleted_by: str
126
124
  ) -> RoleResponse:
127
- roles = await self.role_repository.delete_bulk(role_ids)
128
- return await self.role_repository.get_by_ids([role.id for role in roles])
125
+ roles = await self.role_repository.get_by_ids(role_ids)
126
+ await self.role_repository.delete_bulk(role_ids)
127
+ await self.role_repository.remove_all_permissions(role_ids)
128
+ return roles
129
129
 
130
130
  @BaseService.route(
131
131
  "/api/v1/roles/{role_id}",
@@ -133,5 +133,7 @@ class RoleService(BaseService):
133
133
  response_model=RoleResponse,
134
134
  )
135
135
  async def delete_role(self, role_id: str, deleted_by: str) -> RoleResponse:
136
- role = await self.role_repository.delete(role_id)
137
- return await self.role_repository.get_by_id(role.id)
136
+ role = await self.role_repository.get_by_id(role_id)
137
+ await self.role_repository.delete(role_id)
138
+ await self.role_repository.remove_all_permissions([role_id])
139
+ return role
@@ -84,16 +84,16 @@ class UserService(BaseService):
84
84
  self, user_ids: list[str], data: UserUpdateWithRolesAndAudit
85
85
  ) -> UserResponse:
86
86
  role_ids = [row.get_role_ids() for row in data]
87
- data = [row.get_user_create_with_audit() for row in data]
88
- users = await self.user_repository.update_bulk(user_ids, data)
89
- if len(users) > 0:
90
- updated_by = users[0].updated_by
91
- await self.user_repository.remove_all_roles([user.id for user in users])
87
+ user_data = [row.get_user_create_with_audit() for row in data]
88
+ await self.user_repository.update_bulk(user_ids, user_data)
89
+ if len(user_ids) > 0:
90
+ updated_by = user_data[0].updated_by
91
+ await self.user_repository.remove_all_roles(user_ids)
92
92
  await self.user_repository.add_roles(
93
- data={user.id: role_ids[i] for i, user in enumerate(data)},
93
+ data={user_id: role_ids[i] for i, user_id in enumerate(user_ids)},
94
94
  updated_by=updated_by,
95
95
  )
96
- return await self.user_repository.get_by_ids([user.id for user in users])
96
+ return await self.user_repository.get_by_ids(user_ids)
97
97
 
98
98
  @BaseService.route(
99
99
  "/api/v1/users/{user_id}",
@@ -103,19 +103,27 @@ class UserService(BaseService):
103
103
  async def update_user(
104
104
  self, user_id: str, data: UserUpdateWithRolesAndAudit
105
105
  ) -> UserResponse:
106
- user = await self.user_repository.update(user_id, data)
107
- return await self.user_repository.get_by_id(user.id)
106
+ role_ids = data.get_role_ids()
107
+ user_data = data.get_user_update_with_audit()
108
+ await self.user_repository.update(user_id, user_data)
109
+ await self.user_repository.remove_all_roles([user_id])
110
+ await self.user_repository.add_roles(
111
+ data={user_id: role_ids}, created_by=user_data.updated_by
112
+ )
113
+ return await self.user_repository.get_by_id(user_id)
108
114
 
109
115
  @BaseService.route(
110
- "/api/v1/users/{user_id}",
116
+ "/api/v1/users/bulk",
111
117
  methods=["delete"],
112
118
  response_model=UserResponse,
113
119
  )
114
120
  async def delete_user_bulk(
115
121
  self, user_ids: list[str], deleted_by: str
116
122
  ) -> UserResponse:
117
- users = await self.user_repository.delete_bulk(user_ids)
118
- return await self.user_repository.get_by_ids([user.id for user in users])
123
+ roles = await self.user_repository.get_by_ids(user_ids)
124
+ await self.user_repository.delete_bulk(user_ids)
125
+ await self.user_repository.remove_all_roles(user_ids)
126
+ return roles
119
127
 
120
128
  @BaseService.route(
121
129
  "/api/v1/users/{user_id}",
@@ -123,5 +131,7 @@ class UserService(BaseService):
123
131
  response_model=UserResponse,
124
132
  )
125
133
  async def delete_user(self, user_id: str, deleted_by: str) -> UserResponse:
126
- user = await self.user_repository.delete(user_id)
127
- return await self.user_repository.get_by_id(user.id)
134
+ user = await self.user_repository.get_by_id(user_id)
135
+ await self.user_repository.delete(user_id)
136
+ await self.user_repository.remove_all_roles([user_id])
137
+ return user
@@ -24,7 +24,7 @@ install_tmux = CmdTask(
24
24
  prompt="Tmux config file",
25
25
  default_str="~/.tmux.conf",
26
26
  ),
27
- description="🖥️ Setup `tmux`.",
27
+ description="📺 Setup `tmux`.",
28
28
  group=setup_group,
29
29
  alias="tmux",
30
30
  )
@@ -0,0 +1,55 @@
1
+ import os
2
+
3
+ from zrb.builtin.group import setup_group
4
+ from zrb.builtin.setup.common_input import package_manager_input, use_sudo_input
5
+ from zrb.builtin.setup.zsh.zsh_helper import get_install_zsh_cmd
6
+ from zrb.context.any_context import AnyContext
7
+ from zrb.input.str_input import StrInput
8
+ from zrb.task.cmd_task import CmdTask
9
+ from zrb.task.make_task import make_task
10
+ from zrb.util.file import read_file, write_file
11
+
12
+ install_zsh = CmdTask(
13
+ name="install-zsh",
14
+ input=[package_manager_input, use_sudo_input],
15
+ cmd=get_install_zsh_cmd,
16
+ )
17
+
18
+ install_omz = CmdTask(
19
+ name="install-omz",
20
+ cmd='sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"', # noqa
21
+ upstream=install_zsh,
22
+ )
23
+
24
+ install_zinit = CmdTask(
25
+ name="install-zinit",
26
+ cmd='bash -c "$(curl --fail --show-error --silent --location https://raw.githubusercontent.com/zdharma-continuum/zinit/HEAD/scripts/install.sh)"', # noqa
27
+ upstream=install_zsh,
28
+ )
29
+
30
+
31
+ @make_task(
32
+ name="setup-zsh",
33
+ input=StrInput(
34
+ name="zsh-config",
35
+ description="zsh config file",
36
+ prompt="zsh config file",
37
+ default_str="~/.zshrc",
38
+ ),
39
+ upstream=[install_omz, install_zinit],
40
+ description="💻 Setup `zsh`.",
41
+ group=setup_group,
42
+ alias="zsh",
43
+ )
44
+ def setup_zsh(ctx: AnyContext):
45
+ zsh_config = read_file(os.path.join(os.path.dirname(__file__), "zsh_config.sh"))
46
+ zsh_config_file = os.path.expanduser(ctx.input["zsh-config"])
47
+ # Make sure config file exists
48
+ if not os.path.isfile(zsh_config_file):
49
+ write_file(zsh_config_file, "")
50
+ content = read_file(zsh_config_file)
51
+ if zsh_config in content:
52
+ return
53
+ # Write config
54
+ write_file(zsh_config_file, [content, zsh_config, ""])
55
+ ctx.print("Setup complete, restart your terminal to continue")