zrb 1.0.0b8__py3-none-any.whl → 1.0.0b10__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 (81) hide show
  1. zrb/__main__.py +3 -0
  2. zrb/builtin/project/add/fastapp/fastapp_task.py +1 -0
  3. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.coveragerc +11 -0
  4. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.gitignore +4 -0
  5. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_task.py +4 -4
  6. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/config.py +5 -0
  7. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_task.py +108 -1
  8. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_util.py +67 -4
  9. 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 +5 -5
  10. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/schema/my_entity.py +1 -0
  11. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/test/my_module/my_entity/test_create_my_entity.py +53 -0
  12. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/test/my_module/my_entity/test_delete_my_entity.py +62 -0
  13. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/test/my_module/my_entity/test_read_my_entity.py +65 -0
  14. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/test/my_module/my_entity/test_update_my_entity.py +61 -0
  15. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/gateway_subroute.py +57 -13
  16. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/input.py +8 -0
  17. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_util.py +2 -2
  18. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/gateway/subroute/my_module.py +6 -1
  19. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/module_task_definition.py +10 -6
  20. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task.py +65 -14
  21. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task_util.py +106 -0
  22. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/util.py +6 -86
  23. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_db_repository.py +27 -11
  24. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_service.py +140 -51
  25. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/error.py +15 -0
  26. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/parser.py +1 -1
  27. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/config.py +22 -4
  28. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client.py +21 -0
  29. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/versions/3093c7336477_add_auth_tables.py +106 -61
  30. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/versions/8ed025bcc845_create_permissions.py +69 -0
  31. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration_metadata.py +3 -4
  32. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/route.py +15 -14
  33. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service.py +4 -4
  34. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_db_repository.py +24 -5
  35. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service.py +14 -12
  36. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_db_repository.py +134 -97
  37. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository.py +28 -11
  38. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service.py +215 -13
  39. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service_factory.py +30 -2
  40. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/subroute/auth.py +216 -41
  41. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/auth.py +57 -0
  42. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/requirements.txt +7 -1
  43. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/permission.py +2 -0
  44. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/role.py +13 -12
  45. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/user.py +64 -12
  46. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/_util/access_token.py +19 -0
  47. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_create_permission.py +59 -0
  48. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_delete_permission.py +68 -0
  49. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_read_permission.py +71 -0
  50. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_update_permission.py +66 -0
  51. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/test_user_session.py +195 -0
  52. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_health_and_readiness.py +28 -0
  53. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_homepage.py +17 -0
  54. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_not_found_error.py +16 -0
  55. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test.sh +7 -0
  56. zrb/task/base_task.py +10 -10
  57. zrb/task/cmd_task.py +2 -5
  58. zrb/util/cmd/command.py +39 -48
  59. zrb/util/codemod/modification_mode.py +3 -0
  60. zrb/util/codemod/modify_class.py +58 -0
  61. zrb/util/codemod/modify_class_parent.py +68 -0
  62. zrb/util/codemod/modify_class_property.py +128 -0
  63. zrb/util/codemod/modify_dict.py +75 -0
  64. zrb/util/codemod/modify_function.py +65 -0
  65. zrb/util/codemod/modify_function_call.py +68 -0
  66. zrb/util/codemod/modify_method.py +88 -0
  67. zrb/util/codemod/{prepend_code_to_module.py → modify_module.py} +2 -3
  68. zrb/util/file.py +3 -2
  69. {zrb-1.0.0b8.dist-info → zrb-1.0.0b10.dist-info}/METADATA +2 -1
  70. {zrb-1.0.0b8.dist-info → zrb-1.0.0b10.dist-info}/RECORD +72 -55
  71. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/migrate.py +0 -3
  72. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/session.py +0 -48
  73. zrb/util/codemod/append_code_to_class.py +0 -35
  74. zrb/util/codemod/append_code_to_function.py +0 -38
  75. zrb/util/codemod/append_code_to_method.py +0 -55
  76. zrb/util/codemod/append_key_to_dict.py +0 -51
  77. zrb/util/codemod/append_param_to_function_call.py +0 -39
  78. zrb/util/codemod/prepend_parent_to_class.py +0 -38
  79. zrb/util/codemod/prepend_property_to_class.py +0 -55
  80. {zrb-1.0.0b8.dist-info → zrb-1.0.0b10.dist-info}/WHEEL +0 -0
  81. {zrb-1.0.0b8.dist-info → zrb-1.0.0b10.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,88 @@
1
+ import libcst as cst
2
+
3
+ from zrb.util.codemod.modification_mode import APPEND, PREPEND, REPLACE
4
+
5
+
6
+ def replace_method_code(
7
+ original_code: str, class_name: str, method_name: str, new_code: str
8
+ ) -> str:
9
+ return _modify_method(original_code, class_name, method_name, new_code, REPLACE)
10
+
11
+
12
+ def prepend_code_to_method(
13
+ original_code: str, class_name: str, method_name: str, new_code: str
14
+ ) -> str:
15
+ return _modify_method(original_code, class_name, method_name, new_code, PREPEND)
16
+
17
+
18
+ def append_code_to_method(
19
+ original_code: str, class_name: str, method_name: str, new_code: str
20
+ ) -> str:
21
+ return _modify_method(original_code, class_name, method_name, new_code, APPEND)
22
+
23
+
24
+ def _modify_method(
25
+ original_code: str, class_name: str, method_name: str, new_code: str, mode: int
26
+ ) -> str:
27
+ # Parse the original code into a module
28
+ module = cst.parse_module(original_code)
29
+ # Initialize the transformer with the necessary information
30
+ transformer = _MethodModifier(class_name, method_name, new_code, mode)
31
+ # Apply the transformation
32
+ modified_module = module.visit(transformer)
33
+ # Error handling: raise an error if the class or function is not found
34
+ if not transformer.class_found:
35
+ raise ValueError(f"Class {class_name} not found in the provided code.")
36
+ if not transformer.method_found:
37
+ raise ValueError(f"Method {method_name} not found in class {class_name}.")
38
+ # Return the modified code
39
+ return modified_module.code
40
+
41
+
42
+ class _MethodModifier(cst.CSTTransformer):
43
+ def __init__(self, class_name: str, method_name: str, new_code: str, mode: int):
44
+ self.class_name = class_name
45
+ self.method_name = method_name
46
+ # Use parse_module to handle multiple statements
47
+ self.new_code = cst.parse_module(new_code).body
48
+ self.class_found = False
49
+ self.method_found = False
50
+ self.mode = mode
51
+
52
+ def leave_ClassDef(
53
+ self, original_node: cst.ClassDef, updated_node: cst.ClassDef
54
+ ) -> cst.ClassDef:
55
+ # Check if the class matches the target class
56
+ if original_node.name.value == self.class_name:
57
+ self.class_found = True
58
+ # Now, modify function definitions inside this class
59
+ new_body = []
60
+ for (
61
+ item
62
+ ) in updated_node.body.body: # Access body.body, not just updated_node.body
63
+ if (
64
+ isinstance(item, cst.FunctionDef)
65
+ and item.name.value == self.method_name
66
+ ):
67
+ # Modify the target function by adding the new code
68
+ if self.mode == REPLACE:
69
+ body_with_new_code = item.body.with_changes(
70
+ body=tuple(self.new_code)
71
+ )
72
+ new_body.append(item.with_changes(body=body_with_new_code))
73
+ if self.mode == PREPEND:
74
+ body_with_new_code = item.body.with_changes(
75
+ body=tuple(self.new_code) + item.body.body
76
+ )
77
+ new_body.append(item.with_changes(body=body_with_new_code))
78
+
79
+ if self.mode == APPEND:
80
+ body_with_new_code = item.body.with_changes(
81
+ body=item.body.body + tuple(self.new_code)
82
+ )
83
+ new_body.append(item.with_changes(body=body_with_new_code))
84
+ self.method_found = True
85
+ else:
86
+ new_body.append(item)
87
+ return updated_node.with_changes(body=cst.IndentedBlock(new_body))
88
+ return updated_node
@@ -5,8 +5,7 @@ def prepend_code_to_module(original_code: str, new_code: str) -> str:
5
5
  stripped_line = line.strip()
6
6
  if stripped_line.startswith("import") or stripped_line.startswith("from"):
7
7
  last_import_index = i
8
- elif stripped_line and not stripped_line.startswith("#"):
8
+ else:
9
9
  break
10
- if last_import_index != -1:
11
- lines.insert(last_import_index + 1, new_code)
10
+ lines.insert(last_import_index + 1, new_code)
12
11
  return "\n".join(lines)
zrb/util/file.py CHANGED
@@ -15,10 +15,11 @@ def write_file(file_path: str, content: str | list[str]):
15
15
  content = "\n".join([line for line in content if line is not None])
16
16
  dir_path = os.path.dirname(file_path)
17
17
  os.makedirs(dir_path, exist_ok=True)
18
+ should_add_eol = content.endswith("\n")
19
+ # Remove trailing newlines, but keep one if the file originally ended up with newline
18
20
  content = re.sub(r"\n{3,}$", "\n\n", content)
19
- # Remove trailing newlines, but keep one if it exists
20
21
  content = content.rstrip("\n")
21
- if content.endswith("\n"):
22
+ if should_add_eol:
22
23
  content += "\n"
23
24
  with open(file_path, "w") as f:
24
25
  f.write(content)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: zrb
3
- Version: 1.0.0b8
3
+ Version: 1.0.0b10
4
4
  Summary: Your Automation Powerhouse
5
5
  Home-page: https://github.com/state-alchemists/zrb
6
6
  License: AGPL-3.0-or-later
@@ -23,6 +23,7 @@ Requires-Dist: fastembed (>=0.5.1,<0.6.0)
23
23
  Requires-Dist: isort (>=5.13.2,<5.14.0)
24
24
  Requires-Dist: libcst (>=1.5.0,<2.0.0)
25
25
  Requires-Dist: pdfplumber (>=0.11.4,<0.12.0) ; extra == "rag"
26
+ Requires-Dist: psutil (>=6.1.1,<7.0.0)
26
27
  Requires-Dist: pydantic-ai (>=0.0.19,<0.0.20)
27
28
  Requires-Dist: python-dotenv (>=1.0.1,<2.0.0)
28
29
  Requires-Dist: python-jose[cryptography] (>=3.3.0,<4.0.0)
@@ -1,5 +1,5 @@
1
1
  zrb/__init__.py,sha256=JYLyBeSv-FP2iVKgsXJH8Ae-Cmjp5nmmIiwqayhCOEE,2964
2
- zrb/__main__.py,sha256=TnWp9Z3uuNb_6uf5FT1fcwh6BLZwGCAJB4R9NxnFLNs,748
2
+ zrb/__main__.py,sha256=QcMnHfAFbDUFw9p9tgfFS4U0Ra9nE-TLU5YoMBiAriE,808
3
3
  zrb/attr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  zrb/attr/type.py,sha256=4TV5gPYMMrKh5V-yB6iRYKCbsXAH_AvGXMsjxKLHcUs,568
5
5
  zrb/builtin/__init__.py,sha256=oXG4Zm_rIp3G81Y7hiSe38jeS2sGZAnADoP_yxxhYEc,1926
@@ -16,29 +16,34 @@ zrb/builtin/llm/tool/web.py,sha256=N2HYuXbKPUpjVAq_UnQMbUrTIE8u0Ut3TeQadZ7_NJc,2
16
16
  zrb/builtin/md5.py,sha256=0pNlrfZA0wlZlHvFHLgyqN0JZJWGKQIF5oXxO44_OJk,949
17
17
  zrb/builtin/project/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
18
  zrb/builtin/project/add/fastapp/fastapp_input.py,sha256=fYD6n8-PlrTyz1Kq5GYAt0PQsyUp2qsPKRJ68hINSXE,314
19
- zrb/builtin/project/add/fastapp/fastapp_task.py,sha256=m48ENwROECcAVzmianijcI2Ct4t9BhPyPjfxTbS3Zy0,2635
19
+ zrb/builtin/project/add/fastapp/fastapp_task.py,sha256=mUMZjC413DhZSKqA6donPTxVbd_DnDFqSV_ZTqQnSHs,2697
20
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.coveragerc,sha256=MsTf0Vlt_pxV-j4mNh-TxSo7sTI_GaVS_oM4tksIykE,181
20
21
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.flake8,sha256=fgvHmuskgYiCvHZHaFtiyOWW0zasVrs0P-sFHOq3W5U,56
21
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.gitignore,sha256=1BMFpr_M5OyTs-weCZZlVlf85sWikzdbvmKu86YD7G0,28
22
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.gitignore,sha256=D-ISOzaKlN_VzeZP5f8aznDSJX4p8PCtaK2JWM5yY1c,61
22
23
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/README.md,sha256=MAo7ZFbg7LLiAfQbXcippMgjJ2-VXMKtiTDEZ3I4AAg,221
23
24
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
24
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_task.py,sha256=x7igeeJl8M0vKw9v0VG6zIFk7qAZD2NIH3_uG-VJimY,2868
25
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/config.py,sha256=rllXYH4LRyt-vXAoMLENx1T-01nxjN6CpWf76b_-ppw,580
26
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_task.py,sha256=l7RAPWZZBHY3Uv6TmbPDuEvF0IwJ_lx3vHz6Cq4tgus,6256
27
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_util.py,sha256=gtWMWdc0QC4vbMtzUJi_ZDlY5dZJCTWdJBCPGn0vkso,11962
28
- 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,sha256=Z8yzVRx_Eew2cnyB82nQMpJfFdvd2LlKv-KZ53a0R1E,3894
25
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_task.py,sha256=NYp9_qG8BsAmx7et-zAqGLF3KXV1JsoeFs_6jckZtD4,2860
26
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/config.py,sha256=uviB4q2iZjoU9_fA1O4VrjpuVAqx2gj5hjospJ0Xzeg,885
27
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_task.py,sha256=LPTAW99f4UTJHzXFSsnjpEWdlBtr7JxKenW3gdTCBbI,10048
28
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_util.py,sha256=I71gqR_K13dzGWpce9Z_OD5-FxWJF8dnElf2Lfdc6C4,14152
29
+ 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,sha256=PgwTsHMHRiFS7JQeAe6wWmIHk6s-OfIybx_mJfuT_G4,3918
29
30
  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,sha256=lnhhpc_AflWnCQbLkYORrshiqIA5wy4SdxDuUxmn7Ts,372
30
31
  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,sha256=GrMxMb98-XD7Rue1v14jBu6HRb8Gy5DywBSKnMhN0iY,770
31
32
  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,sha256=QJmQmeXvkuhpnAFWkATJk7zvr-GY1RSyb5U9bSslFn4,1644
32
33
  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,sha256=XKkHHpH_3N_govvyuPY6yn1PBZKKtwstWtxyo7hYJS8,523
33
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/schema/my_entity.py,sha256=R4LAnfTaIO5nRCDjQXSTUMuESELw4XjI0e1bIUTYuf0,1206
34
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/schema/my_entity.py,sha256=Xu8ELEI_chPmaX6ks4z_bbYO3ZapdWCXcJlmUnED1-I,1240
35
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/test/my_module/my_entity/test_create_my_entity.py,sha256=00aKIcP1_XDsjt2LtOlHYbXbXv3Btpce5rN-0G1UnDw,1815
36
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/test/my_module/my_entity/test_delete_my_entity.py,sha256=pGA2Lb7FbrQRvzRbkJ7z_PZUPMRg8tQfYY3jyCbv7OY,2272
37
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/test/my_module/my_entity/test_read_my_entity.py,sha256=2a6uikwnEldW6_lxIMIu8A2HYPcBjSsrE0ynGpiTbE0,2337
38
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/test/my_module/my_entity/test_update_my_entity.py,sha256=qaktWwjGUL1C06L7Rf0ZUg9y0lYOHGlVe7bMNBAcAfE,2148
34
39
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/client_method.py,sha256=0Bwn1lamv3o6ti68gk35gPiKxbKUQRysNAnHOlVz9TY,1311
35
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/gateway_subroute.py,sha256=-0-ukhgjiHYZ0vf26Ky4tHeFKeV9fb8Gwj3YCi99BAM,2149
40
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/gateway_subroute.py,sha256=ypRoqIizpF0TPI03yyHm1x_O8if_2x9MxrM-CU9IttM,3850
36
41
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/format_task.py,sha256=8YykCthDgjXT8MFvTrPSWYUXsfhafmoSMG9LH2ZiaD0,431
37
42
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/group.py,sha256=S0sKnnABSGy3YzaExH40xJjm4UsEX6AyDE1u94ewk6A,648
38
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/input.py,sha256=PYbPwO5odaQDzRIgKkLmLEKOOYs9gQw3q7L-Fakw90Q,1349
43
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/input.py,sha256=NBy_9xwvbFvKWt2bHRyzNQr4zUrP4lUGd6L7k_eA5do,1523
39
44
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_task.py,sha256=mGD3iHocO3TcmFgrBRHEoOgci3qXmwaSmEpVe7jGjvE,3690
40
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_util.py,sha256=2totrFEzt0sEA4U0HHMy5GAsNM-X6uLv9eq8rsrA9XU,7145
41
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/gateway/subroute/my_module.py,sha256=Ks-TtmuhzFy1H5BGQt7FU09ZHBTWwsSVhHFzOXpnSQg,120
45
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_util.py,sha256=sOXaS2IQLda5g-LNDqODM2MRUTKirjxueiOmxlSJIAs,7130
46
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/gateway/subroute/my_module.py,sha256=6WU441lQjeJqtJsKvsj0RY_amCuFcoImprTuivfIdLM,330
42
47
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/alembic.ini,sha256=mgQyBAIwdkZZJWLu_FQWPx1FkyaARCNp6-rLqSVvMbA,3723
43
48
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/client/my_module_api_client.py,sha256=7Ffk0eF4HX1RLfmacqHvuhNlfWkWAtunUBdF_N-Gq38,186
44
49
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/client/my_module_client.py,sha256=VIkqW4-PKKGJqpwMzEX_kmN6H31m-W11FzdPK9pNNdU,109
@@ -51,57 +56,58 @@ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/templat
51
56
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration_metadata.py,sha256=NbIb5ncy6x5RrFD2TZMDwxBK_wDTyJEIvieMRmNpf9M,55
52
57
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/route.py,sha256=PbWya4KW4OyoJl-5OpZm1gJMLeWOBvyHLlez9r5baOk,960
53
58
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/service/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
54
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/module_task_definition.py,sha256=avqbX7qgfW5KAB7Q_FDrbKcl5NqxSHBx0Ii5fKV0Oec,907
55
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task.py,sha256=wETVTlhiL4kuM-9bM4jQ6cL7JFWF9OncHKTIAloQjgM,4526
56
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/util.py,sha256=pvasVUTar51DOWPmcypa4inm4khBKoh6VLqZPUE3uO8,4332
59
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/module_task_definition.py,sha256=KaI2CiMLdzZH-_C_ckHiQpX4NZFefBCWxEQBIeuSgJ8,1024
60
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task.py,sha256=SgAcqsmJ2bCHWywzFdZRxkl5D_wvKXJH1tcIeOhPjUw,5675
61
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task_util.py,sha256=n2CgAoTC4213sj5m1E1UHvoG3opIZoSuG94uxQPecrE,3077
62
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/util.py,sha256=cyesVckwI4y2IXuvBCI_PNBpXKX07Z-8K-T22SMZDeY,1937
57
63
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/venv_task.py,sha256=ZLS3YnF-bz1AOjMCMHypzjNGX2UHXG-axdYngznC1mk,472
58
64
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
59
65
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/app_factory.py,sha256=9mEGQSNfGeNNrCziw0Ik4JeJWKwhOcfcWN5-uMin7aw,773
60
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_db_repository.py,sha256=b74pggiphsyNoS8FWnjuIjC4cBwMaFuWrnAIXXbHVkA,11015
61
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_service.py,sha256=NS7OjbhcZAZ6vukCnGP0NAy-eJrrKN770-RrDaqkAEQ,8456
66
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_db_repository.py,sha256=LjdeLXxn_2yj3b2X56Qa83sF-dM2sgJMgQA_HaLG0go,11818
67
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_service.py,sha256=YGkoJ0PHlbq586XNQXBjIJEduIq-dFg9k_P4CAK4mFk,12164
62
68
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/db_engine_factory.py,sha256=Ku4iowi5DhkXwdWGljCOiHqcC4sI_mTB0hpvmd1_4x0,198
63
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/error.py,sha256=dbpcpCa-qhxWFqIsC-988oeidJRH0VG5Ow9V2NVBBTU,656
69
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/error.py,sha256=MCPn4hkJiCMgtCqVFusK0RHEQ-eABs_JjzHoWpPtvVs,1219
64
70
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/logger_factory.py,sha256=v_glMWbCZfFRtLq6vSu1fWYcubYhnpD4j2nc9NS6-Wo,241
65
71
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/parser_factory.py,sha256=0dsYhxDec4EBDngkLyyPztDOhNUEyDue8DjIPUd5XvM,238
66
72
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/schema.py,sha256=dbRryeP5u7ObGX3GjF9ZID00yXffOp-AxyXu8oVJP0I,82
67
73
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/app.py,sha256=AeLoeMwQBqCLVUw9DaeOfAabKQxa7bT82QPo-1naiA0,1546
68
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/parser.py,sha256=dvS9cBRx1FjerwHO_HOaHKCKEzwWRJ5C7wYimzHp4i8,4035
74
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/parser.py,sha256=xGAXc3dIkstQwPtckDvN_i-PjizgpHaVY53mHpISLIo,4036
69
75
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/user_agent.py,sha256=eOFJ9gnz0iw7XE-1vc53bx-uPST6m5K3cpR_f61T544,1669
70
76
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/view.py,sha256=vrNAr90GMZnu37EMvi2BnTgWoAOpQwJxWCFkZAtFeFA,1161
71
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/config.py,sha256=v6G1mxrnmPN_aWssM0aTuM9xfDh8lYs2H9T5MsEqzLA,2415
77
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/config.py,sha256=2k3FsKJrUrR-rTkletVnof1cCJ0lzmnvK85jeCPxUwo,3110
72
78
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/main.py,sha256=ouA4P7f7GDuB-0iPJsOjqh_DGlZaOBnMgBgkUy9Os5A,216
73
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/migrate.py,sha256=K20Seket9IlZVaZpHSrpR0Ijndv71Mtqwiujzunx98w,87
74
79
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
75
80
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/alembic.ini,sha256=mgQyBAIwdkZZJWLu_FQWPx1FkyaARCNp6-rLqSVvMbA,3723
76
81
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_api_client.py,sha256=T6fcaGobL2A24PhFbNPb7mlJ9Erxufh0Eh-E6K6Qs4I,628
77
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client.py,sha256=OpjnZR6Eup9J2OQUH3NzNbW-xuB5tyXnAV9EyuW3ppQ,4714
82
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client.py,sha256=PM7y3j6ZD2Ncg4lYA0t7sjRnjErtf1uC5e3e8plzlDU,5377
78
83
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client_factory.py,sha256=g9VFJx8se6f4m-HqOAMd2qm8j5JdJtVhXWsLKJ39Uw4,430
79
84
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_direct_client.py,sha256=5RwYmbuYZnDVNSvYamXoIMPqvA3AjlHcK2TtnCWzr2Y,513
80
85
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/README,sha256=MVlc9TYmr57RbhXET6QxgyCcwWP7w-vLkEsirENqiIQ,38
81
86
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/env.py,sha256=rtUFa4Gaoz3wmq7YfQ-lY8vYA5aWguwe2yvQQ1OLCL8,3343
82
87
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/script.py.mako,sha256=U9DYBoBRd_ooogMfRydCUGEjIDZ-aV8OsjBiBrdTvy4,680
83
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/versions/3093c7336477_add_auth_tables.py,sha256=DrCTijo1w7BW9T-FTvlRxAyKyJYd4uWGB2jmr-Wtdko,7454
84
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration_metadata.py,sha256=n9wDfKIu4oYrdZg1byj6JgyTSMLKFYn23FMJMJceYFg,679
85
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/route.py,sha256=oLKVOCRvupnGmguEO10b7ZE5pXbhTBV8OSZmp_nOkfc,1255
88
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/versions/3093c7336477_add_auth_tables.py,sha256=IRCM8ewmNsgLVDUs0FLipIXu5mahgEv0d5f34wB0d3c,8966
89
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/versions/8ed025bcc845_create_permissions.py,sha256=DiGwt4iL1n5A9COUTF8UE2RceVOeeJM7sxnNrTq85QI,2259
90
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration_metadata.py,sha256=4eF1sqtd87v9yHGR6N6Ko4LVELr3tYYwQmJwhvz9uXM,653
91
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/route.py,sha256=PYW4Wn0yCADI9HwGPxhYzxzRIEJMAT0LwSVs-jC7gJw,1335
86
92
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
87
93
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
88
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service.py,sha256=ro3LOvHNh9VnZwoeOg4T2n1mvXWoiAmOsk15vxvH_2o,4032
94
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service.py,sha256=3paLkQ_VfC2ZhmoXgXZpMQTB1D3zxaq8P7JjxURNsHE,4056
89
95
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service_factory.py,sha256=PhAhpLtk9Qz96DsHTMTeHeWilv_L7SVOU-Wfpmg741Y,380
90
96
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_db_repository.py,sha256=dldy05Jx6hJzWJz6YHIXUVUX7LrPrZLSpQQjZ8C_fTQ,728
91
97
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_repository.py,sha256=qpzSQg_opkq0U2bGjShxS8cGX26zncqNPoZsqqHnRfk,1699
92
98
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_repository_factory.py,sha256=tusBxTVVMIhKn__-9oj3O7DUYNQmvcmqGfMJ-UMrE-c,529
93
99
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
94
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_db_repository.py,sha256=CLjMEGE4sJyT4VpURYfqO6nh_lRWmYupfE86pbVDMBE,3152
100
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_db_repository.py,sha256=XZh1SXYmNWCLPL_UJABgjtGUyCD4JN5qCwTmG_bOPWM,3906
95
101
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository.py,sha256=LWPNu6kURF3xU2n8mVn4Kfq12rFsZq2vxnh-mgT9SDY,1791
96
102
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository_factory.py,sha256=iTEoSP3kKnhpGEFW3veA3lnGb3CfmQJslnneUJ8ktJs,463
97
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service.py,sha256=gCoWt-N10Sg_sSnSx5AS4m_eDboFlKc8beys28hUkWE,5057
103
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service.py,sha256=lO-h9ZXq_HSSpUrvz-osbADUnO6zzpfREmT9Bc1rqYw,5143
98
104
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service_factory.py,sha256=TqQfx0jXGZmBDR1UYPyys8-I6tDKhqr1yjWpp-ezkDA,305
99
105
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
100
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_db_repository.py,sha256=pcR9gFa2_deordx6jvSWNnz4hih3cyMJrJ-gWRTW6UU,8444
101
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository.py,sha256=_mP1VN0TW0TFvzHN6k7uBZt5GST5ueK4G5T6EwXiEsI,2563
106
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_db_repository.py,sha256=V_SUlkZoXhgfHwsyMNmxFiHgC4aMpbx0iI5v3KqQDwg,10228
107
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository.py,sha256=GT1N3XI_eN_Kbjc036jTS43ONrwzA9UlR6NMzvQ_9DA,3069
102
108
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository_factory.py,sha256=Ea9ykNhzYiWu_IEhfpWsg1OIWeQ9pOTCzbZF9rrsZqU,463
103
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service.py,sha256=KgfHIBHvEVY5V7CNm0Y8BnNQ6sd5UJB_wFq6WMnrBvg,4901
104
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service_factory.py,sha256=vyJv-gK4Myo1GH3ZwJm4b2lws35gW04VFW5K8Nw-iCw,305
109
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service.py,sha256=JigJLQ4zYpNGdoPtSNs0Hf-QYTgCCYGuM58nclUEAfs,12652
110
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service_factory.py,sha256=TFqm7_wcU6zDiyV7DSCYc1Q47ppZaIDxlK_R9PmpDI4,1239
105
111
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/alembic.ini,sha256=mgQyBAIwdkZZJWLu_FQWPx1FkyaARCNp6-rLqSVvMbA,3723
106
112
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/README,sha256=MVlc9TYmr57RbhXET6QxgyCcwWP7w-vLkEsirENqiIQ,38
107
113
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/env.py,sha256=xQ4UYy6aaHhE0NssPZ6QkeNFlC1KBd07EhDR0NNzj20,3349
@@ -109,7 +115,8 @@ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migr
109
115
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/versions/.gitkeep,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
110
116
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration_metadata.py,sha256=NbIb5ncy6x5RrFD2TZMDwxBK_wDTyJEIvieMRmNpf9M,55
111
117
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/route.py,sha256=5to7rhN3n-N2-7HqRQf9AE9r6OUJQTEyS-g5dPkjV7Q,2015
112
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/subroute/auth.py,sha256=E9NNR0VA8_5m7yEB7ZsmiwsVjnyfuDE8qtnC-EvWNl4,7064
118
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/subroute/auth.py,sha256=NW5-cX5xW9RvSEeqcBu1LVIGZVK2MdWKESKnqcbtYwM,14208
119
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/auth.py,sha256=NOZkAjH2nhV3ugOz02d2dpxdG8mTldXhigLV5r1Aba4,2265
113
120
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/view.py,sha256=mlYSu1xfL_nztJHPbBRuUQuKBT0zCNgsg6bouw5PfG0,2117
114
121
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/error.html,sha256=K8jJFW99ORUrJqdybmWf191NK7tCFNoc5VmmNAcWqeo,133
115
122
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/homepage.html,sha256=Q8jEwRraYJmn0rJIT1Ct4Dz2NB4S-NWJ1ZrU46oZkkw,126
@@ -137,13 +144,22 @@ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view
137
144
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.yellow.min.css,sha256=mOkvNiE272UAgO8cVewJjU9BYidLxDZ97IcYodW--Ik,82218
138
145
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.zinc.min.css,sha256=s8SdVQv4fX3W0LbfKDgUDczWcCyUfRbZhpyYtLdASC0,82212
139
146
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/template/default.html,sha256=kSQFOLj1urKRbMwVX5S2AHmHUxF1SVjw3NWbt32pYRg,1137
140
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/requirements.txt,sha256=HLwDyB4LmhRkg1ZlLNTTeS5C9Mp9x5JFx43OBc3Ub3g,104
147
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/requirements.txt,sha256=NRd3QLqRXhNwd_YCEHRZ-yzXEQVsUn9D8l9MaxzykhA,194
141
148
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
142
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/permission.py,sha256=muFLcZOc4_VFqD5vRp5LdFZJDEWqPD6SCMATOorlcZs,1330
143
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/role.py,sha256=TworwOj5hnUfm1eAfIxiha7iNtN6pBT9iZBLsY1o-1c,3135
144
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/session.py,sha256=8y9kY0nB0GfNpb0j-agFpM1TOqLBEisMfnwXSUiyjuM,1173
145
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/user.py,sha256=GWvFLb6EcvTfFr3qJBsHGE-cw4wHqAwcQpFNEsQalCE,2919
149
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/permission.py,sha256=95L7B4g5T6a5mgoXGgK2Fb5h2ugRzb5QIbXyRRh9tmE,1385
150
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/role.py,sha256=UKXijAUY0ryXJFv74lCzH5ArYGbeuakX0cUbP7ToAQU,3167
151
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/user.py,sha256=W6c-x0a0xcr3-Gj9CXy8liXM_f8yAYhLGTm9EyJmUgs,4338
146
152
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/template.env,sha256=DquDUGa12Jzg24ATq_I6M-TglO-2vDwr5kE768DoJ-w,61
153
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/_util/access_token.py,sha256=hbSxpc70jaA9nNvVKwUeqFtFr6gtwKwqUD8TED2xvII,605
154
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_create_permission.py,sha256=kY2ZMhj4OZ90d0R54ag6qLDtLemR8jq4XS0fpZyh5-k,2243
155
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_delete_permission.py,sha256=632pQEAj47IJIVXBxJY8riKC4pOmARKeWnB_4mNl40U,2740
156
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_read_permission.py,sha256=mc9QcM3MbCbM05qWAxD4pU5JU9_pklIs4dEfvkEPZn4,2789
157
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_update_permission.py,sha256=AHTUIX7cdR5tKkbxs6JVrp5uoeiwIvqaBrhLFGOYoFg,2498
158
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/test_user_session.py,sha256=RITk3KohVSEzdvyoOefzrx2eabHEhAx3eS3opjZwU5k,7096
159
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_health_and_readiness.py,sha256=nqbRJtGQdaHsj3MqiFrUPpQteRBRPiyHp9dpdUZcMg0,823
160
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_homepage.py,sha256=4lEaqacDTPzf6tjkwO8DUj01r4R9a17tnr-ZAWoI1p4,532
161
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_not_found_error.py,sha256=SBqFRgGUldUtIz-uMf9a5DeWDPFeKbhvnvwiYr-jjns,502
162
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test.sh,sha256=QIwe6InrlEkmxdtj6NTO9JozeECYN0O4vx-x-qid6go,148
147
163
  zrb/builtin/project/add/fastapp/fastapp_util.py,sha256=UVzKfljUDLvlassnKy8pKH4hBP23ZUwEK5Ouh-fr87w,1463
148
164
  zrb/builtin/project/create/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
149
165
  zrb/builtin/project/create/project-template/README.md,sha256=BHeWF_txdTDzKewWdWfGhO3YOTiW8E3YwTMnd0T1LVA,39
@@ -261,9 +277,9 @@ zrb/session_state_logger/file_session_state_logger.py,sha256=1ue7-Bcwg4wlLn2G_7A
261
277
  zrb/session_state_logger/session_state_logger_factory.py,sha256=wXf2DVmeRmx399MFYYty6uNcPZMcf7iayHBYCLGlhfc,189
262
278
  zrb/task/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
263
279
  zrb/task/any_task.py,sha256=9rCdKe-Sayr34Han9AsbhRxFpkbk6Rteg1DOyETulwQ,4917
264
- zrb/task/base_task.py,sha256=ImA0ReyB6neVUfY4nKLnL0h2EMGIJ9wvvNvIAN92-RE,21194
280
+ zrb/task/base_task.py,sha256=SQRf37bylS586KwyW0eYDe9JZ5Hl18FP8kScHae6y3A,21251
265
281
  zrb/task/base_trigger.py,sha256=jC722rDvodaBLeNaFghkTyv1u0QXrK6BLZUUqcmBJ7Q,4581
266
- zrb/task/cmd_task.py,sha256=9t23WLxF-PN_axx2_eFCK0t9OWP49HCsFadc4Fss0-U,10813
282
+ zrb/task/cmd_task.py,sha256=pUKRSR4DZKjbmluB6vi7cxqyhxOLfJ2czSpYeQbiDvo,10705
267
283
  zrb/task/http_check.py,sha256=Gf5rOB2Se2EdizuN9rp65HpGmfZkGc-clIAlHmPVehs,2565
268
284
  zrb/task/llm_task.py,sha256=ptXC3x9Dwn7-4JrGQyEtzOXZ4dNQATDgCeowkvwAu9U,7723
269
285
  zrb/task/make_task.py,sha256=PD3b_aYazthS8LHeJsLAhwKDEgdurQZpymJDKeN60u0,2265
@@ -280,19 +296,20 @@ zrb/util/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
280
296
  zrb/util/cli/style.py,sha256=wxdtE18d4Q3GV7aojinD-XN9iWvazfvLs9MTJPlCNQU,3805
281
297
  zrb/util/cli/subcommand.py,sha256=gYr-CzVeKFQhY43s_FDstPwn8r-ypUz1Q2Rv_l2r-ck,1027
282
298
  zrb/util/cmd/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
283
- zrb/util/cmd/command.py,sha256=fsIIkMNOHzU4FO7SXjfDJg7nhunc0UkEw4Bk9K--O1U,4258
299
+ zrb/util/cmd/command.py,sha256=XSzZlaAyfMXSErg83CmdrL0pORiZ2O9cd80Ta1GmYsM,3925
284
300
  zrb/util/cmd/remote.py,sha256=VklVORobTmE7FqdtYsVLq9xkSYTR2W5r2Zou0-soidw,710
285
301
  zrb/util/codemod/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
286
- zrb/util/codemod/append_code_to_class.py,sha256=5PiGzFqB-q8XQnGnDqWBn4OA4ydSmQWpKQzSr3l6wws,1361
287
- zrb/util/codemod/append_code_to_function.py,sha256=kOCWuaVMoRgyGdyAZOrx8NNUOMUY5scyOegJsqJhUO4,1497
288
- zrb/util/codemod/append_code_to_method.py,sha256=nfTcBkcvPZX0YhQzOb0abqbW3m2EKlbwbb-WRXtMBF4,2368
289
- zrb/util/codemod/append_key_to_dict.py,sha256=ZVaAXCZEXs_j3NrCjvXoOYeDFF0RCLYe7y-dJZIcBvI,2113
290
- zrb/util/codemod/append_param_to_function_call.py,sha256=V8hQor4z0dTSiLzQ7pYOZI2TclUlwc-ZNe5KpqlH7X8,1570
291
- zrb/util/codemod/prepend_code_to_module.py,sha256=O_2PxXdRiIf-aJ3AUAAHuezYzJol83V4Y8TZ2T3-aEE,525
292
- zrb/util/codemod/prepend_parent_to_class.py,sha256=xOcDHv1cXXV_VqLHVifr6jvDoWk_iOLammhNxsWc6r8,1417
293
- zrb/util/codemod/prepend_property_to_class.py,sha256=9L11WaYIUF53Kn_ZMT51ylhm7xTxttNjPp83Mnm9iUQ,2079
302
+ zrb/util/codemod/modification_mode.py,sha256=peqs_Jot9tTEK3HF1P4iD-0LpL2d8oniGEgTnktUCPc,35
303
+ zrb/util/codemod/modify_class.py,sha256=ePZy0QaHfvTdPl5J_n9zezUyA_mXSYkvF-0FjLn0wPc,2396
304
+ zrb/util/codemod/modify_class_parent.py,sha256=Hii1gyTnNqwN5P4DMNXnth-kcUTFmObSLJysmrA8Kt0,2552
305
+ zrb/util/codemod/modify_class_property.py,sha256=WczVHkfcPWc0m8OjTaDgnweFv8YTsdIJiWYCpCekRb0,4707
306
+ zrb/util/codemod/modify_dict.py,sha256=zKRgUmQ2J_lsPjawWFR7tEJHSKOTi-WWyGXe7baiwiY,3119
307
+ zrb/util/codemod/modify_function.py,sha256=hTWaIlaplJ52DRg265V9B0IUKHdMMLWuHsxhuKAxrEw,2584
308
+ zrb/util/codemod/modify_function_call.py,sha256=F7EejY7nzvYVElJPVneMcLIUig_Hj0lLIseD0OhRUFI,2668
309
+ zrb/util/codemod/modify_method.py,sha256=FPPkNtvf2QO2cEfYtiO_GlNDNFOLylEET1NEOqkV7aA,3684
310
+ zrb/util/codemod/modify_module.py,sha256=_P6yq5TA_n72mmZIOrK914zPtv1RrRI8WC3YxpWNsRs,437
294
311
  zrb/util/cron.py,sha256=9fTGatUMYCRgmDFGg-z6_XerT4U5Vq72nD05NnEVUm4,2852
295
- zrb/util/file.py,sha256=cBPkIonfcWytoqtG3ScJd6FFK7HVYeCIuLmfAFO1HIQ,791
312
+ zrb/util/file.py,sha256=mgNobIKCr0eIQUlg6W2Yg1fvg943VyuOUF8WMFpJA5A,859
296
313
  zrb/util/git.py,sha256=TShnMxPAk20Tglp25d_XPVZX-q0mvKeqdprVMeXQ5f0,4787
297
314
  zrb/util/git_subtree.py,sha256=zyWl0aUEZJyUJKjfw1uglozB4R1kF9pWtfKjhu8DN44,2658
298
315
  zrb/util/group.py,sha256=Bg7HrSycoK110U5s_Tca6-uUQuZ5CMgb8wxZSrvDQ98,2790
@@ -306,7 +323,7 @@ zrb/util/string/name.py,sha256=8picJfUBXNpdh64GNaHv3om23QHhUZux7DguFLrXHp8,1163
306
323
  zrb/util/todo.py,sha256=1nDdwPc22oFoK_1ZTXyf3638Bg6sqE2yp_U4_-frHoc,16015
307
324
  zrb/xcom/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
308
325
  zrb/xcom/xcom.py,sha256=o79rxR9wphnShrcIushA0Qt71d_p3ZTxjNf7x9hJB78,1571
309
- zrb-1.0.0b8.dist-info/METADATA,sha256=72M7y3ARtB_n7TIVIA5zzLyX7WhmwS-iO6RcXIBPSAg,4270
310
- zrb-1.0.0b8.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
311
- zrb-1.0.0b8.dist-info/entry_points.txt,sha256=-Pg3ElWPfnaSM-XvXqCxEAa-wfVI6BEgcs386s8C8v8,46
312
- zrb-1.0.0b8.dist-info/RECORD,,
326
+ zrb-1.0.0b10.dist-info/METADATA,sha256=D-MjCfRRAchHzgMopg24mUEsGIf06rXXtecvp1or_wo,4310
327
+ zrb-1.0.0b10.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
328
+ zrb-1.0.0b10.dist-info/entry_points.txt,sha256=-Pg3ElWPfnaSM-XvXqCxEAa-wfVI6BEgcs386s8C8v8,46
329
+ zrb-1.0.0b10.dist-info/RECORD,,
@@ -1,3 +0,0 @@
1
- from my_app_name.module.auth import migration as auth_migration
2
-
3
- assert auth_migration
@@ -1,48 +0,0 @@
1
- import datetime
2
-
3
- import ulid
4
- from pydantic import BaseModel
5
- from sqlmodel import Field, SQLModel
6
-
7
-
8
- class SessionBase(SQLModel):
9
- user_id: str
10
- token: str
11
- expired_at: datetime.datetime | None
12
-
13
-
14
- class SessionCreate(SessionBase):
15
-
16
- def with_audit(self, created_by: str) -> "SessionCreateWithAudit":
17
- return SessionCreateWithAudit(**self.model_dump(), created_by=created_by)
18
-
19
-
20
- class SessionCreateWithAudit(SessionCreate):
21
- created_by: str
22
-
23
-
24
- class SessionUpdate(SessionBase):
25
-
26
- def with_audit(self, updated_by: str) -> "SessionUpdateWithAudit":
27
- return SessionUpdateWithAudit(**self.model_dump(), updated_by=updated_by)
28
-
29
-
30
- class SessionUpdateWithAudit(SessionUpdate):
31
- updated_by: str
32
-
33
-
34
- class SessionResponse(SessionBase):
35
- id: str
36
- created_at: datetime.datetime = Field(index=True)
37
- updated_at: datetime.datetime | None = Field(index=True)
38
-
39
-
40
- class MultipleSessionResponse(BaseModel):
41
- data: list[SessionResponse]
42
- count: int
43
-
44
-
45
- class Session(SQLModel, table=True):
46
- id: str = Field(default_factory=lambda: ulid.new().str, primary_key=True)
47
- user_id: str = Field(index=True)
48
- token: str = Field(index=True, unique=True)
@@ -1,35 +0,0 @@
1
- import libcst as cst
2
-
3
-
4
- class ClassCodeAdder(cst.CSTTransformer):
5
- def __init__(self, class_name: str, new_code: str):
6
- self.class_name = class_name
7
- self.new_code = cst.parse_module(new_code).body
8
- self.class_found = False
9
-
10
- def leave_ClassDef(
11
- self, original_node: cst.ClassDef, updated_node: cst.ClassDef
12
- ) -> cst.ClassDef:
13
- # Check if this is the target class
14
- if original_node.name.value == self.class_name:
15
- self.class_found = True
16
- # Add the method to the class body
17
- new_body = updated_node.body.with_changes(
18
- body=updated_node.body.body + tuple(self.new_code)
19
- )
20
- return updated_node.with_changes(body=new_body)
21
- return updated_node
22
-
23
-
24
- def append_code_to_class(original_code: str, class_name: str, new_code: str) -> str:
25
- # Parse the original code into a module
26
- module = cst.parse_module(original_code)
27
- # Initialize transformer with the class name and method code
28
- transformer = ClassCodeAdder(class_name, new_code)
29
- # Apply the transformation
30
- modified_module = module.visit(transformer)
31
- # Check if the class was found
32
- if not transformer.class_found:
33
- raise ValueError(f"Class {class_name} not found in the provided code.")
34
- # Return the modified code
35
- return modified_module.code
@@ -1,38 +0,0 @@
1
- import libcst as cst
2
-
3
-
4
- class FunctionCodeAdder(cst.CSTTransformer):
5
- def __init__(self, function_name: str, new_code: str):
6
- self.function_name = function_name
7
- # Use parse_module to handle multiple statements
8
- self.new_code = cst.parse_module(new_code).body
9
- self.function_found = False
10
-
11
- def leave_FunctionDef(
12
- self, original_node: cst.ClassDef, updated_node: cst.ClassDef
13
- ) -> cst.ClassDef:
14
- # Check if the class matches the target class
15
- if original_node.name.value == self.function_name:
16
- self.function_found = True
17
- # Add the method to the class body
18
- new_body = updated_node.body.with_changes(
19
- body=updated_node.body.body + tuple(self.new_code)
20
- )
21
- return updated_node.with_changes(body=new_body)
22
- return updated_node
23
-
24
-
25
- def append_code_to_function(
26
- original_code: str, function_name: str, new_code: str
27
- ) -> str:
28
- # Parse the original code into a module
29
- module = cst.parse_module(original_code)
30
- # Initialize the transformer with the necessary information
31
- transformer = FunctionCodeAdder(function_name, new_code)
32
- # Apply the transformation
33
- modified_module = module.visit(transformer)
34
- # Error handling: raise an error if the class or function is not found
35
- if not transformer.function_found:
36
- raise ValueError(f"Function {function_name} not found.")
37
- # Return the modified code
38
- return modified_module.code
@@ -1,55 +0,0 @@
1
- import libcst as cst
2
-
3
-
4
- class MethodCodeAdder(cst.CSTTransformer):
5
- def __init__(self, class_name: str, method_name: str, new_code: str):
6
- self.class_name = class_name
7
- self.method_name = method_name
8
- # Use parse_module to handle multiple statements
9
- self.new_code = cst.parse_module(new_code).body
10
- self.class_found = False
11
- self.method_found = False
12
-
13
- def leave_ClassDef(
14
- self, original_node: cst.ClassDef, updated_node: cst.ClassDef
15
- ) -> cst.ClassDef:
16
- # Check if the class matches the target class
17
- if original_node.name.value == self.class_name:
18
- self.class_found = True
19
- # Now, modify function definitions inside this class
20
- new_body = []
21
- for (
22
- item
23
- ) in updated_node.body.body: # Access body.body, not just updated_node.body
24
- if (
25
- isinstance(item, cst.FunctionDef)
26
- and item.name.value == self.method_name
27
- ):
28
- # Modify the target function by adding the new code
29
- body_with_new_code = item.body.with_changes(
30
- body=item.body.body + tuple(self.new_code) # Add the new code
31
- )
32
- new_body.append(item.with_changes(body=body_with_new_code))
33
- self.method_found = True
34
- else:
35
- new_body.append(item)
36
- return updated_node.with_changes(body=cst.IndentedBlock(new_body))
37
- return updated_node
38
-
39
-
40
- def append_code_to_method(
41
- original_code: str, class_name: str, function_name: str, new_code: str
42
- ) -> str:
43
- # Parse the original code into a module
44
- module = cst.parse_module(original_code)
45
- # Initialize the transformer with the necessary information
46
- transformer = MethodCodeAdder(class_name, function_name, new_code)
47
- # Apply the transformation
48
- modified_module = module.visit(transformer)
49
- # Error handling: raise an error if the class or function is not found
50
- if not transformer.class_found:
51
- raise ValueError(f"Class {class_name} not found in the provided code.")
52
- if not transformer.method_found:
53
- raise ValueError(f"Method {function_name} not found in class {class_name}.")
54
- # Return the modified code
55
- return modified_module.code
@@ -1,51 +0,0 @@
1
- import libcst as cst
2
-
3
-
4
- class DictionaryModifier(cst.CSTTransformer):
5
- def __init__(self, dictionary_name: str, new_key: str, new_value: str):
6
- self.dictionary_name = dictionary_name
7
- self.new_key = new_key
8
- self.new_value = new_value
9
- self.found = False
10
-
11
- def leave_Assign(
12
- self, original_node: cst.Assign, updated_node: cst.Assign
13
- ) -> cst.Assign:
14
- # Extract the first target from updated_node, which will be an AssignTarget
15
- target = updated_node.targets[0]
16
- # Check if the target is a Name (which should represent the dictionary)
17
- if (
18
- isinstance(target.target, cst.Name)
19
- and target.target.value == self.dictionary_name
20
- ):
21
- # Check if it's a dictionary initialization (e.g., my_dict = {...})
22
- if isinstance(updated_node.value, cst.Dict):
23
- self.found = True
24
- # Add new key-value pair to the existing dictionary
25
- new_entries = updated_node.value.elements + (
26
- cst.DictElement(
27
- key=cst.SimpleString(f'"{self.new_key}"'),
28
- value=cst.SimpleString(f'"{self.new_value}"'),
29
- ),
30
- )
31
- new_dict = updated_node.value.with_changes(elements=new_entries)
32
- return updated_node.with_changes(value=new_dict)
33
- return updated_node
34
-
35
-
36
- def append_key_to_dict(
37
- original_code: str, dictionary_name: str, new_key: str, new_value: str
38
- ) -> str:
39
- # Parse the original code into a module
40
- module = cst.parse_module(original_code)
41
- # Initialize the transformer with the necessary information
42
- transformer = DictionaryModifier(dictionary_name, new_key, new_value)
43
- # Apply the transformation
44
- modified_module = module.visit(transformer)
45
- # Error handling: raise an error if the dictionary is not found
46
- if not transformer.found:
47
- raise ValueError(
48
- f"Dictionary {dictionary_name} not found in the provided code."
49
- )
50
- # Return the modified code
51
- return modified_module.code