zrb 0.6.0__py3-none-any.whl → 0.6.1__py3-none-any.whl

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 (316) hide show
  1. zrb/__init__.py +24 -20
  2. zrb/__main__.py +5 -5
  3. zrb/action/runner.py +22 -30
  4. zrb/advertisement.py +10 -9
  5. zrb/builtin/__init__.py +18 -16
  6. zrb/builtin/base64.py +13 -18
  7. zrb/builtin/devtool/__init__.py +14 -3
  8. zrb/builtin/devtool/devtool_install.py +207 -221
  9. zrb/builtin/env.py +9 -12
  10. zrb/builtin/eval.py +9 -9
  11. zrb/builtin/explain.py +73 -74
  12. zrb/builtin/generator/__init__.py +7 -11
  13. zrb/builtin/generator/app_generator/add.py +86 -87
  14. zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/add.py +78 -77
  15. zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/_checker.py +6 -6
  16. zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/_common.py +14 -15
  17. zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/container.py +32 -32
  18. zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/deployment.py +29 -30
  19. zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/image.py +1 -3
  20. zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/local.py +5 -4
  21. zrb/builtin/generator/app_generator/template/base/_automate/generate_snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/deployment/__main__.py +24 -32
  22. zrb/builtin/generator/app_generator/template/build-custom-image/_automate/generate_snake_zrb_meta_template_name/add.py +89 -87
  23. zrb/builtin/generator/app_generator/template/build-custom-image/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/_common.py +14 -15
  24. zrb/builtin/generator/app_generator/template/build-custom-image/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/container.py +42 -54
  25. zrb/builtin/generator/app_generator/template/build-custom-image/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/deployment.py +34 -32
  26. zrb/builtin/generator/app_generator/template/build-custom-image/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/image.py +19 -22
  27. zrb/builtin/generator/app_generator/template/build-custom-image/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/local.py +18 -18
  28. zrb/builtin/generator/app_generator/template/http-port/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/_checker.py +10 -10
  29. zrb/builtin/generator/app_generator/template/http-port-build-custom-image/_automate/generate_snake_zrb_meta_template_name/template/_automate/snake_zrb_app_name/local.py +19 -19
  30. zrb/builtin/generator/app_generator/template/use-helm/_automate/generate_snake_zrb_meta_template_name/template/src/kebab-zrb-app-name/deployment/__main__.py +12 -14
  31. zrb/builtin/generator/cmd_task/add.py +23 -25
  32. zrb/builtin/generator/cmd_task/template/_automate/snake_zrb_task_name.py +3 -5
  33. zrb/builtin/generator/common/helper.py +15 -20
  34. zrb/builtin/generator/common/task_factory.py +29 -26
  35. zrb/builtin/generator/common/task_input.py +97 -91
  36. zrb/builtin/generator/docker_compose_task/add.py +38 -39
  37. zrb/builtin/generator/docker_compose_task/template/_automate/snake_zrb_task_name.py +13 -19
  38. zrb/builtin/generator/docker_compose_task/template/src/kebab-zrb-task-name/image/main.py +18 -14
  39. zrb/builtin/generator/fastapp/add.py +94 -90
  40. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/_checker.py +28 -27
  41. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/_config.py +68 -39
  42. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/_env.py +24 -22
  43. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/_env_file.py +12 -12
  44. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/_get_start_microservices.py +43 -41
  45. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/_helper.py +23 -24
  46. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/_input.py +21 -20
  47. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/cmd/app-load-test.sh +1 -1
  48. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/cmd/app-start.sh +1 -1
  49. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/cmd/app-test.sh +2 -2
  50. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/container.py +46 -39
  51. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/deployment.py +28 -20
  52. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/frontend.py +21 -27
  53. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/image.py +23 -18
  54. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/load_test.py +35 -36
  55. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/local.py +68 -58
  56. zrb/builtin/generator/fastapp/template/_automate/snake_zrb_app_name/test.py +24 -38
  57. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/deployment/__main__.py +23 -21
  58. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/deployment/_common.py +72 -75
  59. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/deployment/app_helper.py +70 -75
  60. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/deployment/helm_postgresql_helper.py +18 -21
  61. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/deployment/helm_rabbitmq_helper.py +11 -19
  62. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/deployment/helm_redpanda_helper.py +18 -15
  63. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/deployment/helm_signoz_helper.py +17 -21
  64. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/docker-compose.yml +12 -12
  65. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/loadtest/locustfile.py +10 -12
  66. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/Dockerfile +1 -0
  67. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/component/app.py +35 -30
  68. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/component/app_lifespan.py +21 -17
  69. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/component/app_state.py +3 -2
  70. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/component/db_connection.py +18 -20
  71. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/component/frontend_index.py +5 -6
  72. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/component/log.py +7 -15
  73. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/component/messagebus.py +38 -34
  74. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/component/rpc.py +19 -18
  75. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/config.py +68 -103
  76. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/error.py +11 -10
  77. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/__init__.py +2 -4
  78. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/kafka/admin.py +38 -35
  79. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/kafka/consumer.py +38 -45
  80. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/kafka/publisher.py +26 -29
  81. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/messagebus.py +8 -14
  82. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/mock.py +12 -8
  83. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/rabbitmq/admin.py +37 -44
  84. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/rabbitmq/consumer.py +42 -67
  85. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/messagebus/rabbitmq/publisher.py +32 -55
  86. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/model/repo_model.py +11 -10
  87. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/repo/__init__.py +2 -2
  88. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/repo/db_entity_mixin.py +3 -6
  89. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/repo/db_repo.py +76 -83
  90. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/repo/repo.py +5 -5
  91. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/repo/search_filter.py +1 -0
  92. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/rpc/__init__.py +1 -1
  93. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/rpc/messagebus/caller.py +17 -19
  94. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/rpc/messagebus/server.py +14 -18
  95. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/rpc/rpc.py +15 -28
  96. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/schema/__init__.py +1 -1
  97. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/schema/base_schema.py +6 -5
  98. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/serializer/__init__.py +1 -3
  99. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/core/serializer/serializer.py +3 -4
  100. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/helper/async_task.py +3 -5
  101. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/helper/conversion.py +10 -10
  102. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/helper/migration.py +6 -10
  103. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/migrate.py +3 -2
  104. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/api.py +7 -12
  105. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/__init__.py +4 -6
  106. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/access_token_scheme.py +9 -10
  107. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/access_token_util.py +6 -5
  108. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/authorizer.py +4 -4
  109. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/bearer_token_scheme.py +1 -1
  110. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/model/user_model.py +8 -10
  111. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/password_hasher.py +1 -1
  112. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/refresh_token_util.py +7 -6
  113. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/repo/group_repo.py +3 -8
  114. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/repo/permission_repo.py +3 -7
  115. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/repo/user_repo.py +3 -5
  116. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/component/user.py +12 -7
  117. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/core/__init__.py +7 -12
  118. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/core/access_token/scheme.py +7 -12
  119. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/core/access_token/util.py +20 -30
  120. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/core/authorizer/authorizer.py +1 -3
  121. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/core/authorizer/rpc_authorizer.py +5 -12
  122. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/core/password_hasher/bcrypt_password_hasher.py +3 -8
  123. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/core/password_hasher/password_hasher.py +0 -1
  124. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/core/refresh_token/util.py +15 -21
  125. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/group/api.py +42 -49
  126. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/group/model.py +3 -7
  127. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/group/repo.py +18 -16
  128. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/group/rpc.py +26 -41
  129. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/permission/api.py +46 -51
  130. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/permission/model.py +5 -7
  131. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/permission/repo.py +11 -8
  132. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/permission/rpc.py +28 -45
  133. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/table.py +10 -10
  134. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/user/api.py +60 -72
  135. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/user/model.py +32 -61
  136. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/user/repo.py +33 -36
  137. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/entity/user/rpc.py +42 -61
  138. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/event.py +2 -4
  139. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/migrate.py +3 -5
  140. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/register_module.py +11 -12
  141. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/register_permission.py +19 -26
  142. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/rpc.py +5 -13
  143. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/schema/group.py +6 -4
  144. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/schema/permission.py +3 -1
  145. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/schema/request.py +1 -0
  146. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/schema/token.py +2 -2
  147. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/auth/schema/user.py +4 -3
  148. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/api.py +4 -5
  149. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/component/model/activity_model.py +3 -9
  150. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/component/repo/activity_repo.py +3 -7
  151. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/core/historical_repo_model.py +13 -13
  152. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/entity/activity/api.py +22 -23
  153. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/entity/activity/event.py +5 -7
  154. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/entity/activity/model.py +2 -6
  155. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/entity/activity/repo.py +8 -8
  156. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/entity/activity/rpc.py +28 -45
  157. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/entity/table.py +3 -3
  158. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/event.py +4 -8
  159. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/migrate.py +2 -4
  160. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/register_module.py +10 -11
  161. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/rpc.py +3 -5
  162. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/module/log/schema/activity.py +3 -1
  163. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/src/requirements.txt +12 -12
  164. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/test/auth/test_group_crud.py +76 -106
  165. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/test/auth/test_permission_crud.py +73 -103
  166. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/test/auth/test_user_crud.py +92 -122
  167. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/test/auth/test_user_login.py +107 -134
  168. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/test/conftest.py +2 -2
  169. zrb/builtin/generator/fastapp/template/src/kebab-zrb-app-name/test/test_liveness_and_readiness.py +8 -15
  170. zrb/builtin/generator/fastapp_crud/add.py +74 -79
  171. zrb/builtin/generator/fastapp_crud/helper.py +51 -48
  172. zrb/builtin/generator/fastapp_crud/task_factory.py +17 -14
  173. zrb/builtin/generator/fastapp_crud/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/component/model/snake_zrb_entity_name_model.py +2 -2
  174. zrb/builtin/generator/fastapp_crud/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/component/repo/snake_zrb_entity_name_repo.py +3 -2
  175. zrb/builtin/generator/fastapp_crud/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/entity/snake_zrb_entity_name/api.py +58 -40
  176. zrb/builtin/generator/fastapp_crud/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/entity/snake_zrb_entity_name/model.py +7 -3
  177. zrb/builtin/generator/fastapp_crud/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/entity/snake_zrb_entity_name/repo.py +9 -4
  178. zrb/builtin/generator/fastapp_crud/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/entity/snake_zrb_entity_name/rpc.py +32 -39
  179. zrb/builtin/generator/fastapp_crud/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/schema/snake_zrb_entity_name.py +3 -1
  180. zrb/builtin/generator/fastapp_crud/template/src/kebab-zrb-app-name/test/snake_zrb_module_name/test_snake_zrb_entity_name.py +68 -98
  181. zrb/builtin/generator/fastapp_field/add.py +143 -85
  182. zrb/builtin/generator/fastapp_field/helper.py +184 -125
  183. zrb/builtin/generator/fastapp_module/add.py +90 -67
  184. zrb/builtin/generator/fastapp_module/helper.py +141 -155
  185. zrb/builtin/generator/fastapp_module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/api.py +3 -2
  186. zrb/builtin/generator/fastapp_module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/entity/table.py +3 -3
  187. zrb/builtin/generator/fastapp_module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/event.py +3 -5
  188. zrb/builtin/generator/fastapp_module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/migrate.py +2 -4
  189. zrb/builtin/generator/fastapp_module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/register_module.py +10 -11
  190. zrb/builtin/generator/fastapp_module/template/src/kebab-zrb-app-name/src/module/snake_zrb_module_name/rpc.py +3 -5
  191. zrb/builtin/generator/pip_package/add.py +39 -40
  192. zrb/builtin/generator/pip_package/template/_automate/snake_zrb_package_name/local.py +30 -30
  193. zrb/builtin/generator/pip_package/template/src/kebab-zrb-package-name/src/snake_zrb_package_name/__init__.py +1 -0
  194. zrb/builtin/generator/pip_package/template/src/kebab-zrb-package-name/src/snake_zrb_package_name/__main__.py +1 -0
  195. zrb/builtin/generator/pip_package/template/src/kebab-zrb-package-name/src/snake_zrb_package_name/util.py +2 -2
  196. zrb/builtin/generator/plugin/create.py +39 -36
  197. zrb/builtin/generator/plugin/template/src/snake_zrb_package_name/__init__.py +1 -1
  198. zrb/builtin/generator/plugin/template/src/snake_zrb_package_name/__main__.py +1 -0
  199. zrb/builtin/generator/plugin/template/src/snake_zrb_package_name/task/example_task.py +6 -4
  200. zrb/builtin/generator/plugin/template/zrb_init.py +27 -27
  201. zrb/builtin/generator/project/create.py +38 -46
  202. zrb/builtin/generator/project/template/.flake8 +3 -0
  203. zrb/builtin/generator/project/template/project.sh +19 -10
  204. zrb/builtin/generator/project_task/task_factory.py +60 -61
  205. zrb/builtin/generator/project_task/template/_automate/_project/__init__.py +2 -2
  206. zrb/builtin/generator/project_task/template/_automate/_project/build_project_images.py +4 -4
  207. zrb/builtin/generator/project_task/template/_automate/_project/deploy_project.py +4 -4
  208. zrb/builtin/generator/project_task/template/_automate/_project/destroy_project.py +4 -4
  209. zrb/builtin/generator/project_task/template/_automate/_project/push_project_images.py +4 -4
  210. zrb/builtin/generator/project_task/template/_automate/_project/remove_project_containers.py +4 -4
  211. zrb/builtin/generator/project_task/template/_automate/_project/start_project.py +4 -4
  212. zrb/builtin/generator/project_task/template/_automate/_project/start_project_containers.py +4 -4
  213. zrb/builtin/generator/project_task/template/_automate/_project/stop_project_containers.py +4 -4
  214. zrb/builtin/generator/python_task/add.py +25 -33
  215. zrb/builtin/generator/python_task/template/_automate/snake_zrb_task_name.py +8 -7
  216. zrb/builtin/generator/simple_python_app/add.py +81 -75
  217. zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/_common.py +14 -15
  218. zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/container.py +46 -61
  219. zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/deployment.py +34 -32
  220. zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/image.py +19 -22
  221. zrb/builtin/generator/simple_python_app/template/_automate/snake_zrb_app_name/local.py +23 -25
  222. zrb/builtin/generator/simple_python_app/template/src/kebab-zrb-app-name/deployment/__main__.py +24 -32
  223. zrb/builtin/generator/simple_python_app/template/src/kebab-zrb-app-name/src/main.py +18 -14
  224. zrb/builtin/git.py +46 -46
  225. zrb/builtin/group.py +13 -34
  226. zrb/builtin/helper/reccuring_action.py +26 -29
  227. zrb/builtin/md5.py +17 -30
  228. zrb/builtin/process.py +19 -19
  229. zrb/builtin/project.py +13 -15
  230. zrb/builtin/say.py +69 -88
  231. zrb/builtin/schedule.py +15 -19
  232. zrb/builtin/ubuntu.py +44 -35
  233. zrb/builtin/update.py +5 -5
  234. zrb/builtin/version.py +3 -7
  235. zrb/builtin/watch_changes.py +24 -25
  236. zrb/config/config.py +19 -18
  237. zrb/helper/accessories/color.py +18 -6
  238. zrb/helper/accessories/icon.py +24 -3
  239. zrb/helper/accessories/name.py +120 -28
  240. zrb/helper/advertisement.py +9 -13
  241. zrb/helper/callable.py +2 -4
  242. zrb/helper/cli.py +27 -31
  243. zrb/helper/codemod/add_argument_to_function.py +3 -4
  244. zrb/helper/codemod/add_argument_to_function_call.py +4 -7
  245. zrb/helper/codemod/add_assert_resource.py +7 -7
  246. zrb/helper/codemod/add_function_call.py +3 -5
  247. zrb/helper/codemod/add_import_module.py +15 -26
  248. zrb/helper/codemod/add_key_value_to_dict.py +7 -10
  249. zrb/helper/codemod/add_property_to_class.py +10 -8
  250. zrb/helper/codemod/add_upstream_to_task.py +21 -33
  251. zrb/helper/codemod/append_code_to_function.py +6 -13
  252. zrb/helper/codemod/format_code.py +2 -1
  253. zrb/helper/default_env.py +25 -25
  254. zrb/helper/docker_compose/fetch_external_env.py +18 -18
  255. zrb/helper/docker_compose/file.py +5 -4
  256. zrb/helper/docstring.py +44 -47
  257. zrb/helper/env_map/fetch.py +7 -12
  258. zrb/helper/file/copy_tree.py +12 -17
  259. zrb/helper/file/match.py +6 -7
  260. zrb/helper/file/text.py +8 -6
  261. zrb/helper/git/detect_changes.py +9 -8
  262. zrb/helper/loader/load_module.py +14 -13
  263. zrb/helper/log.py +4 -3
  264. zrb/helper/map/conversion.py +4 -5
  265. zrb/helper/python_task.py +2 -4
  266. zrb/helper/render_data.py +25 -18
  267. zrb/helper/string/constant.py +2 -2
  268. zrb/helper/string/conversion.py +17 -16
  269. zrb/helper/string/jinja.py +2 -2
  270. zrb/helper/typecheck.py +6 -4
  271. zrb/helper/typing.py +10 -2
  272. zrb/helper/util.py +44 -40
  273. zrb/task/any_task.py +251 -251
  274. zrb/task/base_remote_cmd_task.py +76 -59
  275. zrb/task/base_task/base_task.py +95 -108
  276. zrb/task/base_task/component/base_task_model.py +73 -71
  277. zrb/task/base_task/component/common_task_model.py +42 -29
  278. zrb/task/base_task/component/pid_model.py +3 -5
  279. zrb/task/base_task/component/renderer.py +26 -36
  280. zrb/task/base_task/component/trackers.py +6 -9
  281. zrb/task/checker.py +14 -9
  282. zrb/task/cmd_task.py +102 -100
  283. zrb/task/decorator.py +19 -13
  284. zrb/task/docker_compose_task.py +127 -98
  285. zrb/task/flow_task.py +16 -19
  286. zrb/task/http_checker.py +40 -36
  287. zrb/task/notifier.py +50 -38
  288. zrb/task/parallel.py +3 -3
  289. zrb/task/path_checker.py +34 -27
  290. zrb/task/path_watcher.py +49 -40
  291. zrb/task/port_checker.py +33 -26
  292. zrb/task/recurring_task.py +36 -42
  293. zrb/task/remote_cmd_task.py +31 -28
  294. zrb/task/resource_maker.py +66 -52
  295. zrb/task/rsync_task.py +24 -21
  296. zrb/task/task.py +4 -3
  297. zrb/task/time_watcher.py +36 -31
  298. zrb/task_env/constant.py +1 -1
  299. zrb/task_env/env.py +33 -31
  300. zrb/task_env/env_file.py +24 -23
  301. zrb/task_group/group.py +27 -30
  302. zrb/task_input/any_input.py +18 -16
  303. zrb/task_input/base_input.py +26 -26
  304. zrb/task_input/bool_input.py +6 -6
  305. zrb/task_input/choice_input.py +11 -9
  306. zrb/task_input/constant.py +1 -1
  307. zrb/task_input/float_input.py +6 -5
  308. zrb/task_input/int_input.py +8 -8
  309. zrb/task_input/password_input.py +9 -9
  310. zrb/task_input/str_input.py +8 -8
  311. zrb/task_input/task_input.py +4 -2
  312. {zrb-0.6.0.dist-info → zrb-0.6.1.dist-info}/METADATA +3 -1
  313. {zrb-0.6.0.dist-info → zrb-0.6.1.dist-info}/RECORD +316 -315
  314. {zrb-0.6.0.dist-info → zrb-0.6.1.dist-info}/LICENSE +0 -0
  315. {zrb-0.6.0.dist-info → zrb-0.6.1.dist-info}/WHEEL +0 -0
  316. {zrb-0.6.0.dist-info → zrb-0.6.1.dist-info}/entry_points.txt +0 -0
@@ -1,17 +1,17 @@
1
- from zrb.helper.typing import Any, List, Mapping, Optional, Union
1
+ from zrb.config.config import show_prompt
2
2
  from zrb.helper.typecheck import typechecked
3
+ from zrb.helper.typing import Any, List, Mapping, Optional, Union
3
4
  from zrb.task_input.any_input import AnyInput
4
5
  from zrb.task_input.constant import RESERVED_INPUT_NAMES
5
- from zrb.config.config import show_prompt
6
6
 
7
7
  # flake8: noqa E501
8
8
 
9
9
 
10
10
  @typechecked
11
11
  class BaseInput(AnyInput):
12
- '''
12
+ """
13
13
  A concrete implementation of the AnyInput abstract base class, representing a specific type of task input.
14
- This class allows for the creation of interactive and configurable inputs for tasks, with various attributes
14
+ This class allows for the creation of interactive and configurable inputs for tasks, with various attributes
15
15
  to customize its behavior and appearance.
16
16
 
17
17
  Attributes:
@@ -44,7 +44,7 @@ class BaseInput(AnyInput):
44
44
  >>> Input(name='delay', default=10, description='Delay')
45
45
  >>> ]
46
46
  >>> )
47
- '''
47
+ """
48
48
 
49
49
  def __init__(
50
50
  self,
@@ -67,10 +67,10 @@ class BaseInput(AnyInput):
67
67
  show_choices: bool = True,
68
68
  show_envvar: bool = False,
69
69
  nargs: int = 1,
70
- should_render: bool = True
70
+ should_render: bool = True,
71
71
  ):
72
72
  if name in RESERVED_INPUT_NAMES:
73
- raise ValueError(f'Forbidden input name: {name}')
73
+ raise ValueError(f"Forbidden input name: {name}")
74
74
  self._name = name
75
75
  self._shortcut = shortcut
76
76
  self._prompt = prompt
@@ -99,32 +99,32 @@ class BaseInput(AnyInput):
99
99
  return self._default
100
100
 
101
101
  def get_param_decl(self) -> List[str]:
102
- param_decl: List[str] = [f'--{self._name}']
102
+ param_decl: List[str] = [f"--{self._name}"]
103
103
  if self._shortcut is not None:
104
- param_decl.append(f'-{self._shortcut}')
104
+ param_decl.append(f"-{self._shortcut}")
105
105
  return param_decl
106
106
 
107
107
  def get_options(self) -> Mapping[str, Any]:
108
108
  options: Mapping[str, Any] = {
109
- 'default': self._default,
110
- 'help': self._help,
111
- 'type': self._type,
112
- 'show_default': self._show_default,
113
- 'confirmation_prompt': self._confirmation_prompt,
114
- 'prompt_required': self._prompt_required,
115
- 'hide_input': self._hide_input,
116
- 'is_flag': self._is_flag,
117
- 'flag_value': self._flag_value,
118
- 'multiple': self._multiple,
119
- 'count': self._count,
120
- 'allow_from_autoenv': self._allow_from_autoenv,
121
- 'hidden': self._hidden,
122
- 'show_choices': self._show_choices,
123
- 'show_envvar': self._show_envvar,
124
- 'nargs': self._nargs
109
+ "default": self._default,
110
+ "help": self._help,
111
+ "type": self._type,
112
+ "show_default": self._show_default,
113
+ "confirmation_prompt": self._confirmation_prompt,
114
+ "prompt_required": self._prompt_required,
115
+ "hide_input": self._hide_input,
116
+ "is_flag": self._is_flag,
117
+ "flag_value": self._flag_value,
118
+ "multiple": self._multiple,
119
+ "count": self._count,
120
+ "allow_from_autoenv": self._allow_from_autoenv,
121
+ "hidden": self._hidden,
122
+ "show_choices": self._show_choices,
123
+ "show_envvar": self._show_envvar,
124
+ "nargs": self._nargs,
125
125
  }
126
126
  if show_prompt:
127
- options['prompt'] = self._prompt
127
+ options["prompt"] = self._prompt
128
128
  return options
129
129
 
130
130
  def should_render(self) -> bool:
@@ -1,5 +1,5 @@
1
- from zrb.helper.typing import Any, Optional, Union
2
1
  from zrb.helper.typecheck import typechecked
2
+ from zrb.helper.typing import Any, Optional, Union
3
3
  from zrb.task_input.base_input import BaseInput
4
4
 
5
5
  # flake8: noqa E501
@@ -7,12 +7,12 @@ from zrb.task_input.base_input import BaseInput
7
7
 
8
8
  @typechecked
9
9
  class BoolInput(BaseInput):
10
- '''
10
+ """
11
11
  A specialized input class for handling boolean values in a task input context.
12
12
 
13
13
  This class extends `BaseInput` and provides specific functionality for boolean type inputs,
14
14
  including support for default values, prompts, flags, and various customization options.
15
-
15
+
16
16
  Args:
17
17
  name (str): The name of the input.
18
18
  shortcut (Optional[str]): A shortcut string for the input.
@@ -38,7 +38,7 @@ class BoolInput(BaseInput):
38
38
  >>> bool_input = BoolInput(name='confirm', prompt='Do you agree?', default=False)
39
39
  >>> bool_input.get_default()
40
40
  False
41
- '''
41
+ """
42
42
 
43
43
  def __init__(
44
44
  self,
@@ -60,7 +60,7 @@ class BoolInput(BaseInput):
60
60
  show_choices: bool = True,
61
61
  show_envvar: bool = False,
62
62
  nargs: int = 1,
63
- should_render: bool = True
63
+ should_render: bool = True,
64
64
  ):
65
65
  BaseInput.__init__(
66
66
  self,
@@ -83,5 +83,5 @@ class BoolInput(BaseInput):
83
83
  show_choices=show_choices,
84
84
  show_envvar=show_envvar,
85
85
  nargs=nargs,
86
- should_render=should_render
86
+ should_render=should_render,
87
87
  )
@@ -1,19 +1,21 @@
1
- from zrb.helper.typing import Any, Optional, Iterable, Union
1
+ import click
2
+
2
3
  from zrb.helper.typecheck import typechecked
4
+ from zrb.helper.typing import Any, Iterable, Optional, Union
3
5
  from zrb.task_input.base_input import BaseInput
4
- import click
5
6
 
6
7
  # flake8: noqa E501
7
8
 
9
+
8
10
  @typechecked
9
11
  class ChoiceInput(BaseInput):
10
- '''
12
+ """
11
13
  A specialized input class for handling choice-based inputs in a task input context.
12
14
 
13
- This class extends `BaseInput` and provides functionality for inputs where the user
14
- must select from a predefined set of choices. It includes support for default values,
15
+ This class extends `BaseInput` and provides functionality for inputs where the user
16
+ must select from a predefined set of choices. It includes support for default values,
15
17
  prompts, flags, and various customization options.
16
-
18
+
17
19
  Args:
18
20
  name (str): The name of the input.
19
21
  shortcut (Optional[str]): An optional shortcut string for the input.
@@ -40,7 +42,7 @@ class ChoiceInput(BaseInput):
40
42
  >>> choice_input = ChoiceInput(name='color', choices=['red', 'green', 'blue'], default='red')
41
43
  >>> choice_input.get_default()
42
44
  'red'
43
- '''
45
+ """
44
46
 
45
47
  def __init__(
46
48
  self,
@@ -63,7 +65,7 @@ class ChoiceInput(BaseInput):
63
65
  show_choices: bool = True,
64
66
  show_envvar: bool = False,
65
67
  nargs: int = 1,
66
- should_render: bool = True
68
+ should_render: bool = True,
67
69
  ):
68
70
  BaseInput.__init__(
69
71
  self,
@@ -86,5 +88,5 @@ class ChoiceInput(BaseInput):
86
88
  show_choices=show_choices,
87
89
  show_envvar=show_envvar,
88
90
  nargs=nargs,
89
- should_render=should_render
91
+ should_render=should_render,
90
92
  )
@@ -1 +1 @@
1
- RESERVED_INPUT_NAMES = ('_task', '_args')
1
+ RESERVED_INPUT_NAMES = ("_task", "_args")
@@ -1,12 +1,13 @@
1
- from zrb.helper.typing import Any, Optional, Union
2
1
  from zrb.helper.typecheck import typechecked
2
+ from zrb.helper.typing import Any, Optional, Union
3
3
  from zrb.task_input.base_input import BaseInput
4
4
 
5
5
  # flake8: noqa E501
6
6
 
7
+
7
8
  @typechecked
8
9
  class FloatInput(BaseInput):
9
- '''
10
+ """
10
11
  A specialized input class designed to handle floating-point numbers in a task input context.
11
12
 
12
13
  Extending `BaseInput`, this class facilitates the handling of float-type inputs, accommodating
@@ -37,7 +38,7 @@ class FloatInput(BaseInput):
37
38
  >>> float_input = FloatInput(name='threshold', default=0.5, description='Set the threshold value')
38
39
  >>> float_input.get_default()
39
40
  0.5
40
- '''
41
+ """
41
42
 
42
43
  def __init__(
43
44
  self,
@@ -59,7 +60,7 @@ class FloatInput(BaseInput):
59
60
  show_choices: bool = True,
60
61
  show_envvar: bool = False,
61
62
  nargs: int = 1,
62
- should_render: bool = True
63
+ should_render: bool = True,
63
64
  ):
64
65
  BaseInput.__init__(
65
66
  self,
@@ -82,5 +83,5 @@ class FloatInput(BaseInput):
82
83
  show_choices=show_choices,
83
84
  show_envvar=show_envvar,
84
85
  nargs=nargs,
85
- should_render=should_render
86
+ should_render=should_render,
86
87
  )
@@ -1,17 +1,17 @@
1
- from zrb.helper.typing import Any, Optional, Union
2
1
  from zrb.helper.typecheck import typechecked
3
-
2
+ from zrb.helper.typing import Any, Optional, Union
4
3
  from zrb.task_input.base_input import BaseInput
5
4
 
6
5
  # flake8: noqa E501
7
6
 
7
+
8
8
  @typechecked
9
9
  class IntInput(BaseInput):
10
- '''
10
+ """
11
11
  A specialized input class for handling integer values in task inputs.
12
12
 
13
- `IntInput` extends `BaseInput` to specifically handle inputs where integer values are required.
14
- It supports various features like default values, prompts, flags, and other customization options,
13
+ `IntInput` extends `BaseInput` to specifically handle inputs where integer values are required.
14
+ It supports various features like default values, prompts, flags, and other customization options,
15
15
  making it suitable for tasks that require numerical input in the form of integers.
16
16
 
17
17
  Args:
@@ -39,7 +39,7 @@ class IntInput(BaseInput):
39
39
  >>> int_input = IntInput(name='age', default=30, description='Enter your age')
40
40
  >>> int_input.get_default()
41
41
  30
42
- '''
42
+ """
43
43
 
44
44
  def __init__(
45
45
  self,
@@ -61,7 +61,7 @@ class IntInput(BaseInput):
61
61
  show_choices: bool = True,
62
62
  show_envvar: bool = False,
63
63
  nargs: int = 1,
64
- should_render: bool = True
64
+ should_render: bool = True,
65
65
  ):
66
66
  BaseInput.__init__(
67
67
  self,
@@ -84,5 +84,5 @@ class IntInput(BaseInput):
84
84
  show_choices=show_choices,
85
85
  show_envvar=show_envvar,
86
86
  nargs=nargs,
87
- should_render=should_render
87
+ should_render=should_render,
88
88
  )
@@ -1,18 +1,18 @@
1
- from zrb.helper.typing import Any, Optional, Union
2
1
  from zrb.helper.typecheck import typechecked
3
-
2
+ from zrb.helper.typing import Any, Optional, Union
4
3
  from zrb.task_input.base_input import BaseInput
5
4
 
6
5
  # flake8: noqa E501
7
6
 
7
+
8
8
  @typechecked
9
9
  class PasswordInput(BaseInput):
10
- '''
10
+ """
11
11
  A specialized input class for handling password or sensitive data inputs in tasks.
12
12
 
13
- `PasswordInput` extends `BaseInput` to manage inputs that should be treated as sensitive,
14
- such as passwords. It ensures that the input is hidden when entered, providing an added
15
- layer of security and privacy. This class supports various features like default values,
13
+ `PasswordInput` extends `BaseInput` to manage inputs that should be treated as sensitive,
14
+ such as passwords. It ensures that the input is hidden when entered, providing an added
15
+ layer of security and privacy. This class supports various features like default values,
16
16
  prompts, and flags, tailored for the safe handling of sensitive information.
17
17
 
18
18
  Args:
@@ -39,7 +39,7 @@ class PasswordInput(BaseInput):
39
39
  >>> password_input = PasswordInput(name='password', description='Enter your password')
40
40
  >>> password_input.is_hidden()
41
41
  True
42
- '''
42
+ """
43
43
 
44
44
  def __init__(
45
45
  self,
@@ -60,7 +60,7 @@ class PasswordInput(BaseInput):
60
60
  show_choices: bool = True,
61
61
  show_envvar: bool = False,
62
62
  nargs: int = 1,
63
- should_render: bool = True
63
+ should_render: bool = True,
64
64
  ):
65
65
  BaseInput.__init__(
66
66
  self,
@@ -83,7 +83,7 @@ class PasswordInput(BaseInput):
83
83
  show_choices=show_choices,
84
84
  show_envvar=show_envvar,
85
85
  nargs=nargs,
86
- should_render=should_render
86
+ should_render=should_render,
87
87
  )
88
88
 
89
89
  def is_hidden(self) -> bool:
@@ -1,17 +1,17 @@
1
- from zrb.helper.typing import Any, Optional, Union
2
1
  from zrb.helper.typecheck import typechecked
3
-
2
+ from zrb.helper.typing import Any, Optional, Union
4
3
  from zrb.task_input.base_input import BaseInput
5
4
 
6
5
  # flake8: noqa E501
7
6
 
7
+
8
8
  @typechecked
9
9
  class StrInput(BaseInput):
10
- '''
10
+ """
11
11
  A specialized input class for handling string-based inputs in various tasks.
12
12
 
13
- `StrInput` extends `BaseInput` to manage string-type inputs, supporting features like
14
- default values, prompts, flags, and other customization options. This class is useful
13
+ `StrInput` extends `BaseInput` to manage string-type inputs, supporting features like
14
+ default values, prompts, flags, and other customization options. This class is useful
15
15
  for tasks requiring textual input, such as names, descriptions, or any other string parameters.
16
16
 
17
17
  Args:
@@ -39,7 +39,7 @@ class StrInput(BaseInput):
39
39
  >>> str_input = StrInput(name='username', default='user123', description='Enter your username')
40
40
  >>> str_input.get_default()
41
41
  'user123'
42
- '''
42
+ """
43
43
 
44
44
  def __init__(
45
45
  self,
@@ -61,7 +61,7 @@ class StrInput(BaseInput):
61
61
  show_choices: bool = True,
62
62
  show_envvar: bool = False,
63
63
  nargs: int = 1,
64
- should_render: bool = True
64
+ should_render: bool = True,
65
65
  ):
66
66
  BaseInput.__init__(
67
67
  self,
@@ -84,5 +84,5 @@ class StrInput(BaseInput):
84
84
  show_choices=show_choices,
85
85
  show_envvar=show_envvar,
86
86
  nargs=nargs,
87
- should_render=should_render
87
+ should_render=should_render,
88
88
  )
@@ -2,8 +2,9 @@ from zrb.task_input.base_input import BaseInput
2
2
 
3
3
  # flake8: noqa E501
4
4
 
5
+
5
6
  class Input(BaseInput):
6
- '''
7
+ """
7
8
  Alias for BaseInput
8
9
 
9
10
  Attributes:
@@ -36,5 +37,6 @@ class Input(BaseInput):
36
37
  >>> Input(name='delay', default=10, description='Delay')
37
38
  >>> ]
38
39
  >>> )
39
- '''
40
+ """
41
+
40
42
  pass
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: zrb
3
- Version: 0.6.0
3
+ Version: 0.6.1
4
4
  Summary: A Framework to Enhance Your Workflow
5
5
  Author-email: Go Frendi Gunawan <gofrendiasgard@gmail.com>
6
6
  Requires-Python: >=3.10.0
@@ -21,6 +21,8 @@ Requires-Dist: setuptools ~= 68.0.0
21
21
  Requires-Dist: autopep8 ~= 2.0.2
22
22
  Requires-Dist: croniter ~= 2.0.1
23
23
  Requires-Dist: flake8 ~= 6.0.0 ; extra == "dev"
24
+ Requires-Dist: black~=23.12.1 ; extra == "dev"
25
+ Requires-Dist: isort~=5.13.2 ; extra == "dev"
24
26
  Requires-Dist: pytest ~= 7.4.0 ; extra == "dev"
25
27
  Requires-Dist: pytest-cov ~= 4.1.0 ; extra == "dev"
26
28
  Requires-Dist: pytest-asyncio ~= 0.21.0 ; extra == "dev"