zrb 1.2.2__py3-none-any.whl → 1.3.0__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 (33) hide show
  1. zrb/builtin/llm/llm_chat.py +42 -6
  2. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_util.py +28 -6
  3. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/gateway/view/content/my-module/my-entity.html +206 -178
  4. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/schema/my_entity.py +3 -1
  5. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_db_repository.py +18 -1
  6. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository.py +4 -0
  7. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service.py +20 -11
  8. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_db_repository.py +17 -2
  9. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository.py +4 -0
  10. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service.py +19 -11
  11. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/permission.html +209 -180
  12. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/role.html +362 -0
  13. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/user.html +377 -0
  14. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/common/util.js +68 -13
  15. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/crud/util.js +50 -29
  16. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/permission.py +3 -1
  17. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/role.py +6 -5
  18. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/user.py +9 -3
  19. zrb/input/any_input.py +5 -0
  20. zrb/input/base_input.py +6 -0
  21. zrb/input/bool_input.py +2 -0
  22. zrb/input/float_input.py +2 -0
  23. zrb/input/int_input.py +2 -0
  24. zrb/input/option_input.py +2 -0
  25. zrb/input/password_input.py +2 -0
  26. zrb/input/text_input.py +2 -0
  27. zrb/runner/cli.py +1 -1
  28. zrb/runner/common_util.py +3 -3
  29. zrb/runner/web_route/task_input_api_route.py +1 -1
  30. {zrb-1.2.2.dist-info → zrb-1.3.0.dist-info}/METADATA +84 -17
  31. {zrb-1.2.2.dist-info → zrb-1.3.0.dist-info}/RECORD +33 -33
  32. {zrb-1.2.2.dist-info → zrb-1.3.0.dist-info}/WHEEL +0 -0
  33. {zrb-1.2.2.dist-info → zrb-1.3.0.dist-info}/entry_points.txt +0 -0
@@ -51,7 +51,9 @@ class UserUpdate(SQLModel):
51
51
  active: bool | None = None
52
52
 
53
53
  def with_audit(self, updated_by: str) -> "UserUpdateWithAudit":
54
- return UserUpdateWithAudit(**self.model_dump(), updated_by=updated_by)
54
+ return UserUpdateWithAudit(
55
+ **self.model_dump(exclude_none=True), updated_by=updated_by
56
+ )
55
57
 
56
58
 
57
59
  class UserUpdateWithAudit(UserUpdate):
@@ -62,7 +64,9 @@ class UserUpdateWithRoles(UserUpdate):
62
64
  role_names: list[str] | None = None
63
65
 
64
66
  def with_audit(self, updated_by: str) -> "UserUpdateWithRolesAndAudit":
65
- return UserUpdateWithRolesAndAudit(**self.model_dump(), updated_by=updated_by)
67
+ return UserUpdateWithRolesAndAudit(
68
+ **self.model_dump(exclude_none=True), updated_by=updated_by
69
+ )
66
70
 
67
71
 
68
72
  class UserUpdateWithRolesAndAudit(UserUpdateWithRoles):
@@ -70,7 +74,9 @@ class UserUpdateWithRolesAndAudit(UserUpdateWithRoles):
70
74
 
71
75
  def get_user_update_with_audit(self) -> UserUpdateWithAudit:
72
76
  data = {
73
- key: val for key, val in self.model_dump().items() if key != "role_names"
77
+ key: val
78
+ for key, val in self.model_dump(exclude_none=True).items()
79
+ if key != "role_names"
74
80
  }
75
81
  return UserUpdateWithAudit(**data)
76
82
 
zrb/input/any_input.py CHANGED
@@ -14,6 +14,11 @@ class AnyInput(ABC):
14
14
  def description(self) -> str:
15
15
  pass
16
16
 
17
+ @property
18
+ @abstractmethod
19
+ def always_prompt(self) -> bool:
20
+ pass
21
+
17
22
  @property
18
23
  @abstractmethod
19
24
  def prompt_message(self) -> str:
zrb/input/base_input.py CHANGED
@@ -17,6 +17,7 @@ class BaseInput(AnyInput):
17
17
  auto_render: bool = True,
18
18
  allow_empty: bool = False,
19
19
  allow_positional_parsing: bool = True,
20
+ always_prompt: bool = True,
20
21
  ):
21
22
  self._name = name
22
23
  self._description = description
@@ -25,6 +26,7 @@ class BaseInput(AnyInput):
25
26
  self._auto_render = auto_render
26
27
  self._allow_empty = allow_empty
27
28
  self._allow_positional_parsing = allow_positional_parsing
29
+ self._always_prompt = always_prompt
28
30
 
29
31
  def __repr__(self):
30
32
  return f"<{self.__class__.__name__} name={self._name}>"
@@ -37,6 +39,10 @@ class BaseInput(AnyInput):
37
39
  def description(self) -> str:
38
40
  return self._description if self._description is not None else self.name
39
41
 
42
+ @property
43
+ def always_prompt(self) -> bool:
44
+ return self._always_prompt
45
+
40
46
  @property
41
47
  def prompt_message(self) -> str:
42
48
  return self._prompt if self._prompt is not None else self.name
zrb/input/bool_input.py CHANGED
@@ -15,6 +15,7 @@ class BoolInput(BaseInput):
15
15
  auto_render: bool = True,
16
16
  allow_empty: bool = False,
17
17
  allow_positional_parsing: bool = True,
18
+ always_prompt: bool = True,
18
19
  ):
19
20
  super().__init__(
20
21
  name=name,
@@ -24,6 +25,7 @@ class BoolInput(BaseInput):
24
25
  auto_render=auto_render,
25
26
  allow_empty=allow_empty,
26
27
  allow_positional_parsing=allow_positional_parsing,
28
+ always_prompt=always_prompt,
27
29
  )
28
30
 
29
31
  def to_html(self, shared_ctx: AnySharedContext) -> str:
zrb/input/float_input.py CHANGED
@@ -14,6 +14,7 @@ class FloatInput(BaseInput):
14
14
  auto_render: bool = True,
15
15
  allow_empty: bool = False,
16
16
  allow_positional_parsing: bool = True,
17
+ always_prompt: bool = True,
17
18
  ):
18
19
  super().__init__(
19
20
  name=name,
@@ -23,6 +24,7 @@ class FloatInput(BaseInput):
23
24
  auto_render=auto_render,
24
25
  allow_empty=allow_empty,
25
26
  allow_positional_parsing=allow_positional_parsing,
27
+ always_prompt=always_prompt,
26
28
  )
27
29
 
28
30
  def to_html(self, shared_ctx: AnySharedContext) -> str:
zrb/input/int_input.py CHANGED
@@ -14,6 +14,7 @@ class IntInput(BaseInput):
14
14
  auto_render: bool = True,
15
15
  allow_empty: bool = False,
16
16
  allow_positional_parsing: bool = True,
17
+ always_prompt: bool = True,
17
18
  ):
18
19
  super().__init__(
19
20
  name=name,
@@ -23,6 +24,7 @@ class IntInput(BaseInput):
23
24
  auto_render=auto_render,
24
25
  allow_empty=allow_empty,
25
26
  allow_positional_parsing=allow_positional_parsing,
27
+ always_prompt=always_prompt,
26
28
  )
27
29
 
28
30
  def to_html(self, shared_ctx: AnySharedContext) -> str:
zrb/input/option_input.py CHANGED
@@ -15,6 +15,7 @@ class OptionInput(BaseInput):
15
15
  auto_render: bool = True,
16
16
  allow_empty: bool = False,
17
17
  allow_positional_parsing: bool = True,
18
+ always_prompt: bool = True,
18
19
  ):
19
20
  super().__init__(
20
21
  name=name,
@@ -24,6 +25,7 @@ class OptionInput(BaseInput):
24
25
  auto_render=auto_render,
25
26
  allow_empty=allow_empty,
26
27
  allow_positional_parsing=allow_positional_parsing,
28
+ always_prompt=always_prompt,
27
29
  )
28
30
  self._options = options
29
31
 
@@ -15,6 +15,7 @@ class PasswordInput(BaseInput):
15
15
  auto_render: bool = True,
16
16
  allow_empty: bool = False,
17
17
  allow_positional_parsing: bool = True,
18
+ always_prompt: bool = True,
18
19
  ):
19
20
  super().__init__(
20
21
  name=name,
@@ -24,6 +25,7 @@ class PasswordInput(BaseInput):
24
25
  auto_render=auto_render,
25
26
  allow_empty=allow_empty,
26
27
  allow_positional_parsing=allow_positional_parsing,
28
+ always_prompt=always_prompt,
27
29
  )
28
30
  self._is_secret = True
29
31
 
zrb/input/text_input.py CHANGED
@@ -19,6 +19,7 @@ class TextInput(BaseInput):
19
19
  auto_render: bool = True,
20
20
  allow_empty: bool = False,
21
21
  allow_positional_parsing: bool = True,
22
+ always_prompt: bool = True,
22
23
  editor: str = DEFAULT_EDITOR,
23
24
  extension: str = ".txt",
24
25
  comment_start: str | None = None,
@@ -32,6 +33,7 @@ class TextInput(BaseInput):
32
33
  auto_render=auto_render,
33
34
  allow_empty=allow_empty,
34
35
  allow_positional_parsing=allow_positional_parsing,
36
+ always_prompt=always_prompt,
35
37
  )
36
38
  self._editor = editor
37
39
  self._extension = extension
zrb/runner/cli.py CHANGED
@@ -33,7 +33,7 @@ class Cli(Group):
33
33
  if "h" in kwargs or "help" in kwargs:
34
34
  self._show_task_info(node)
35
35
  return
36
- run_kwargs = get_run_kwargs(task=node, args=args, kwargs=kwargs, prompt=True)
36
+ run_kwargs = get_run_kwargs(task=node, args=args, kwargs=kwargs, cli_mode=True)
37
37
  try:
38
38
  result = self._run_task(node, args, run_kwargs)
39
39
  if result is not None:
zrb/runner/common_util.py CHANGED
@@ -5,10 +5,10 @@ from zrb.task.any_task import AnyTask
5
5
 
6
6
 
7
7
  def get_run_kwargs(
8
- task: AnyTask, args: list[str], kwargs: dict[str, str], prompt: bool = True
8
+ task: AnyTask, args: list[str], kwargs: dict[str, str], cli_mode: bool
9
9
  ) -> tuple[Any]:
10
10
  arg_index = 0
11
- str_kwargs = {key: val for key, val in kwargs.items()}
11
+ str_kwargs = {key: f"{val}" for key, val in kwargs.items()}
12
12
  run_kwargs = {**str_kwargs}
13
13
  shared_ctx = SharedContext(args=args)
14
14
  for task_input in task.inputs:
@@ -21,7 +21,7 @@ def get_run_kwargs(
21
21
  task_input.update_shared_context(shared_ctx, run_kwargs[task_input.name])
22
22
  arg_index += 1
23
23
  else:
24
- if prompt:
24
+ if cli_mode and task_input.always_prompt:
25
25
  str_value = task_input.prompt_cli_str(shared_ctx)
26
26
  else:
27
27
  str_value = task_input.get_default_str(shared_ctx)
@@ -41,7 +41,7 @@ def serve_task_input_api(
41
41
  return JSONResponse(content={"detail": "Forbidden"}, status_code=403)
42
42
  query_dict = json.loads(query)
43
43
  run_kwargs = get_run_kwargs(
44
- task=task, args=[], kwargs=query_dict, prompt=False
44
+ task=task, args=[], kwargs=query_dict, cli_mode=False
45
45
  )
46
46
  return run_kwargs
47
47
  return JSONResponse(content={"detail": "Not found"}, status_code=404)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: zrb
3
- Version: 1.2.2
3
+ Version: 1.3.0
4
4
  Summary: Your Automation Powerhouse
5
5
  Home-page: https://github.com/state-alchemists/zrb
6
6
  License: AGPL-3.0-or-later
@@ -39,29 +39,96 @@ Description-Content-Type: text/markdown
39
39
 
40
40
  # 🤖 Zrb: Your Automation Powerhouse
41
41
 
42
- Zrb allows you to write your automation tasks in Python and declaratively:
42
+ Zrb allows you to write your automation tasks in Python. For example, you can define the following script in your home directory (`/home/<your-user-name>/zrb_init.py`).
43
43
 
44
44
 
45
45
  ```python
46
- # Filename: zrb_init.py
47
- from zrb import cli, Task, Group, IntInput
48
-
49
- math = cli.add_group(Group("math", description="Math tools"))
50
- math.add_task(Task(
51
- name="add",
52
- input=[
53
- IntInput("a", description="First number"),
54
- IntInput("b", description="Second number")
55
- ],
56
- action=lambda ctx: ctx.input.a + ctx.input.b
57
- ))
46
+ import os
47
+ from zrb import cli, LLMTask, CmdTask, StrInput
48
+ from zrb.builtin.llm.tool.file import read_source_code, write_text_file
49
+ from pydantic_ai.models.openai import OpenAIModel
50
+
51
+
52
+ CURRENT_DIR = os.getcwd()
53
+ OPENROUTER_BASE_URL = "https://openrouter.ai/api/v1"
54
+ OPENROUTER_API_KEY = os.getenv("OPENROUTER_API_KEY", "")
55
+ OPENROUTER_MODEL_NAME = os.getenv(
56
+ "AGENT_MODEL_NAME", "anthropic/claude-3.7-sonnet"
57
+ )
58
+
59
+
60
+ # Defining a LLM Task to create a Plantuml script based on source code in current directory.
61
+ # User can choose the diagram type. By default it is "state diagram"
62
+ make_uml = cli.add_task(
63
+ LLMTask(
64
+ name="make-uml",
65
+ description="Creating plantuml diagram based on source code in current directory",
66
+ input=StrInput(name="diagram", default="state diagram"),
67
+ model=OpenAIModel(
68
+ OPENROUTER_MODEL_NAME,
69
+ base_url=OPENROUTER_BASE_URL,
70
+ api_key=OPENROUTER_API_KEY,
71
+ ),
72
+ message=(
73
+ f"Read source code in {CURRENT_DIR}, "
74
+ "make a {ctx.input.diagram} in plantuml format. "
75
+ f"Write the script into {CURRENT_DIR}/{{ctx.input.diagram}}.uml"
76
+ ),
77
+ tools=[
78
+ read_source_code,
79
+ write_text_file,
80
+ ],
81
+ )
82
+ )
83
+
84
+ # Defining a Cmd Task to transform Plantuml script into a png image.
85
+ make_png = cli.add_task(
86
+ CmdTask(
87
+ name="make-png",
88
+ description="Creating png based on source code in current directory",
89
+ input=StrInput(name="diagram", default="state diagram"),
90
+ cmd="plantuml -tpng '{ctx.input.diagram}.uml'",
91
+ cwd=CURRENT_DIR,
92
+ )
93
+ )
94
+
95
+ # Making sure that make_png has make_uml as its dependency.
96
+ make_uml >> make_png
58
97
  ```
59
98
 
60
- Once defined, you will be able to access your automation tasks from the CLI, Web Interface, or via HTTP API.
99
+ Once defined, your automation tasks are immediately accessible from the CLI. You can then invoke the tasks by invoking.
61
100
 
62
- For more complex scenario, you can also defined Task dependencies (upstreams) and retry mechanisms. You can also make a scheduled tasks, just like in Apache Airflow.
101
+ ```bash
102
+ zrb make-png --diagram "state diagram"
103
+ ```
104
+
105
+ Or you can invoke the tasks without parameter.
106
+
107
+ ```bash
108
+ zrb make-png
109
+ ```
110
+
111
+ At this point, Zrb will politely ask you to provide the diagram type.
112
+
113
+ ```
114
+ diagram [state diagram]:
115
+ ```
116
+
117
+ You can just press enter if you want to use the default value.
118
+
119
+ Finally, you can run Zrb as a server and make your tasks available for non technical users by invoking the following command.
120
+
121
+ ```bash
122
+ zrb server start
123
+ ```
124
+
125
+ You will have a nice web interface running on `http://localhost:12123`
126
+
127
+ ![Zrb Web UI](https://raw.githubusercontent.com/state-alchemists/zrb/main/_images/zrb-web-ui.png)
128
+
129
+ Now, let's see how Zrb generate the state diagram. Based on the source code in your current directory, Zrb will generate a `state diagram.uml` and transform it into `state diagram.png`.
63
130
 
64
- Furthermore, Zrb has some builtin tasks to manage monorepo, generate FastAPI application, or play around with LLM.
131
+ ![State Diagram](https://raw.githubusercontent.com/state-alchemists/zrb/main/_images/state-diagram.png)
65
132
 
66
133
  See the [getting started guide](https://github.com/state-alchemists/zrb/blob/main/docs/recipes/getting-started/README.md) for more information. Or just watch the demo:
67
134
 
@@ -7,7 +7,7 @@ zrb/builtin/base64.py,sha256=1YnSwASp7OEAvQcsnHZGpJEvYoI1Z2zTIJ1bCDHfcPQ,921
7
7
  zrb/builtin/git.py,sha256=8_qVE_2lVQEVXQ9vhiw8Tn4Prj1VZB78ZjEJJS5Ab3M,5461
8
8
  zrb/builtin/git_subtree.py,sha256=7BKwOkVTWDrR0DXXQ4iJyHqeR6sV5VYRt8y_rEB0EHg,3505
9
9
  zrb/builtin/group.py,sha256=-phJfVpTX3_gUwS1u8-RbZUHe-X41kxDBSmrVh4rq8E,1682
10
- zrb/builtin/llm/llm_chat.py,sha256=cNAS_AS-Q5NW6qe8dJZh12b6c0zFKdNEvGfwJxNAUmw,5047
10
+ zrb/builtin/llm/llm_chat.py,sha256=yiL16XRy4oh5jKMzH0W7RBxfEwGKflvvrsYKleJFKWc,6221
11
11
  zrb/builtin/llm/previous-session.js,sha256=xMKZvJoAbrwiyHS0OoPrWuaKxWYLoyR5sguePIoCjTY,816
12
12
  zrb/builtin/llm/tool/api.py,sha256=bXFE7jihdhUscxJH8lu5imwlYH735AalbCyUTl28BaQ,826
13
13
  zrb/builtin/llm/tool/cli.py,sha256=to_IjkfrMGs6eLfG0cpVN9oyADWYsJQCtyluUhUdBww,253
@@ -24,17 +24,17 @@ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.gitignore,sha256=D
24
24
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/README.md,sha256=MAo7ZFbg7LLiAfQbXcippMgjJ2-VXMKtiTDEZ3I4AAg,221
25
25
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
26
26
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_task.py,sha256=j24bFnqMCZrYx67HMtOAJMBb2P1-ymvo8_oFjP0uTxg,3726
27
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_util.py,sha256=vJoO24tydx87uVUTYsuLCm-EaFcS7dmyk8OhwuFZ_QI,10176
27
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_util.py,sha256=GycuEtcvO02OwqULfP-qRxnAnJDDhWx_hdRSmbfx5bo,10952
28
28
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/config.py,sha256=uviB4q2iZjoU9_fA1O4VrjpuVAqx2gj5hjospJ0Xzeg,885
29
29
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_task.py,sha256=W0ziCIhSwUbu8vBABEcTvLrTAegJmRbqui6TzG1xqlo,11183
30
30
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_util.py,sha256=M7FSCdq-dzXqa22kFO6HwMIJ2XlHMSys-I0-K1_90xE,16683
31
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/gateway/view/content/my-module/my-entity.html,sha256=lAXQWT5I2kzyWDHX4Rrp6F-y0Ck5xbMDJsDQChKgDpo,10910
31
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/gateway/view/content/my-module/my-entity.html,sha256=AFriF9Vz5889nfIIZbqaNXREMiShPcEiHBvO3aWs-ao,13240
32
32
  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
33
33
  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
34
34
  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
35
35
  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
36
36
  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
37
- 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
37
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/schema/my_entity.py,sha256=0G6GTo0ZaiVk6XjQXk-YArh4WNrUhtikTyTAUfzskUI,1279
38
38
  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
39
39
  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
40
40
  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
@@ -102,16 +102,16 @@ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service
102
102
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_repository.py,sha256=qpzSQg_opkq0U2bGjShxS8cGX26zncqNPoZsqqHnRfk,1699
103
103
  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
104
104
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
105
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_db_repository.py,sha256=XZh1SXYmNWCLPL_UJABgjtGUyCD4JN5qCwTmG_bOPWM,3906
106
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository.py,sha256=LWPNu6kURF3xU2n8mVn4Kfq12rFsZq2vxnh-mgT9SDY,1791
105
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_db_repository.py,sha256=6psTHm0trRYoZf8AMFXy9QzNVKaJ5tq7cLLEiAw6QcI,4699
106
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository.py,sha256=yYSzZfFcutGkyLkZnSu8ZTptbseAH2-bKvKTkhhCmn8,1928
107
107
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository_factory.py,sha256=iTEoSP3kKnhpGEFW3veA3lnGb3CfmQJslnneUJ8ktJs,463
108
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service.py,sha256=lO-h9ZXq_HSSpUrvz-osbADUnO6zzpfREmT9Bc1rqYw,5143
108
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service.py,sha256=Z1FYC0EVW5-b3YdLUrKXE0iCfRXN_yg39eF2tv09MoU,5715
109
109
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service_factory.py,sha256=TqQfx0jXGZmBDR1UYPyys8-I6tDKhqr1yjWpp-ezkDA,305
110
110
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
111
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_db_repository.py,sha256=V_SUlkZoXhgfHwsyMNmxFiHgC4aMpbx0iI5v3KqQDwg,10228
112
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository.py,sha256=GT1N3XI_eN_Kbjc036jTS43ONrwzA9UlR6NMzvQ_9DA,3069
111
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_db_repository.py,sha256=kWihtY_42thI5ssarndmkFVvpkGMlHoZmqmdqJe8TSY,10890
112
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository.py,sha256=qWPcKqYfxh0vMrzMe5LHEOZ7WoNlIzZUptKaKVyiZQk,3188
113
113
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository_factory.py,sha256=Ea9ykNhzYiWu_IEhfpWsg1OIWeQ9pOTCzbZF9rrsZqU,463
114
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service.py,sha256=JigJLQ4zYpNGdoPtSNs0Hf-QYTgCCYGuM58nclUEAfs,12652
114
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service.py,sha256=wdiSRleoSVdb2_jd4qKXAbwZ0Mb7gGua8sIBildScxw,13117
115
115
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service_factory.py,sha256=TFqm7_wcU6zDiyV7DSCYc1Q47ppZaIDxlK_R9PmpDI4,1239
116
116
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/alembic.ini,sha256=mgQyBAIwdkZZJWLu_FQWPx1FkyaARCNp6-rLqSVvMbA,3723
117
117
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/config/navigation.py,sha256=veY3xU8kt1p_CU-zOYvgIRUP4HqOOW2kOLauqBgiG88,797
@@ -125,16 +125,16 @@ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/sche
125
125
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/subroute/auth.py,sha256=KXwia0eexjoxa7OK_VT7NuUL6snxxtOpMIgSjRRbBD0,17678
126
126
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/auth.py,sha256=zThjspTe-pu0r73vXwNb9Se4vCbX2HquTZKg2h9AMY0,2643
127
127
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/view.py,sha256=7C0KlvpUwlQ27p_zyFFxVZZNaQnZ9k2i3yit1cNZHoo,3192
128
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/permission.html,sha256=9cTHiTHpC9hfuMCtMYGqzXKpQIWMg_v7tD4E-jsziR8,11486
129
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/role.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
130
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/user.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
128
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/permission.html,sha256=l2j1GCDIrSTUn1PY8cLf3sLJdVe8D1gjGUShUG20zUA,13782
129
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/role.html,sha256=uVL7ZmbsIuya_RbZLL2qSfc7jJM_FPn2Mg8gten_ZUc,14980
130
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/user.html,sha256=CDeYHfcbThjraIzNIaOnnd7Wpk1Y5vz9eTLJCKiiyyk,15502
131
131
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/error.html,sha256=FISZNhjhfIuoBWI0GR-c5XQxLniy0euWOjKgbtnVlt8,239
132
132
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/homepage.html,sha256=Q8jEwRraYJmn0rJIT1Ct4Dz2NB4S-NWJ1ZrU46oZkkw,126
133
133
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/login.html,sha256=OanTVSQG5T03AX4eformFN69qeSMh5jiWERNth1EAMw,2301
134
134
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/logout.html,sha256=HQnUPE_I9l-aF8LqpKuHCp6zsjYplTfbLfKbxn4hdXo,1571
135
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/common/util.js,sha256=0B9fgNfqwLtwNKqzewP52IazJwUCVt7BhNJU4mIWjN0,5885
135
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/common/util.js,sha256=-O3c441oaxIu9-6i2Foe6PSvdC5ycK_I3gKmTP4fNq8,8407
136
136
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/crud/style.css,sha256=UzmYDiz4dlxKPPKXwTjybK1nrwkk-3DmFEmlpWnnqfo,206
137
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/crud/util.js,sha256=weIDwC8dzXlP4an4ijx7gJKplP6Y2QDKywu5hKPO9HI,4394
137
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/crud/util.js,sha256=7TQftOjZGmx6POLCHzmh08m4q-sc01BRtmcZCQQ5JU8,4376
138
138
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/pico-style.css,sha256=7VEhpZWXz8pcKtTULorjQlWX1fMs7Bcbn1QBDJiJZfY,233
139
139
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/script.js,sha256=JhuxTn6Qs3AkHULEfnL8tG1UHU1YZTPY5gYRi5o1H9I,1357
140
140
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/style.css,sha256=tS7UIUO1AcRgaRJpN7OCTrKvQqDNa3NyAVd7SGtfvJE,1813
@@ -164,9 +164,9 @@ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view
164
164
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/template/default.html,sha256=Lg4vONCLOx8PSORFitg8JZa-4dp-pyUvKSVzCJEFsB8,4048
165
165
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/requirements.txt,sha256=VqHI89r0E8sU5vp3h-AXrZy30vGWVP2E8MYsvVxQ_Wg,194
166
166
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
167
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/permission.py,sha256=95L7B4g5T6a5mgoXGgK2Fb5h2ugRzb5QIbXyRRh9tmE,1385
168
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/role.py,sha256=UKXijAUY0ryXJFv74lCzH5ArYGbeuakX0cUbP7ToAQU,3167
169
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/user.py,sha256=W6c-x0a0xcr3-Gj9CXy8liXM_f8yAYhLGTm9EyJmUgs,4338
167
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/permission.py,sha256=q66LXdZ-QTb30F1VTXNLnjyYBlK_ThVLiHgavtJy4LY,1424
168
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/role.py,sha256=7USbuhHhPc3xXkmwiqTVKsN8-eFWS8Q7emKxCGNGPw0,3244
169
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/user.py,sha256=E7BTCLlQRrvlTL2e9cZiFpdV1AOjLEMckrXQBWxx8ak,4457
170
170
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/template.env,sha256=DquDUGa12Jzg24ATq_I6M-TglO-2vDwr5kE768DoJ-w,61
171
171
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/_util/access_token.py,sha256=hbSxpc70jaA9nNvVKwUeqFtFr6gtwKwqUD8TED2xvII,605
172
172
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_create_permission.py,sha256=kY2ZMhj4OZ90d0R54ag6qLDtLemR8jq4XS0fpZyh5-k,2243
@@ -228,18 +228,18 @@ zrb/group/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
228
228
  zrb/group/any_group.py,sha256=1rNcsi5eu_86JAx_6Jy46SK4BTeppcb89MORynJd-4o,1115
229
229
  zrb/group/group.py,sha256=JFmWVEQ9PVy2WCf5pUG74iwL2xcGxXaAjT-NArAeloM,1861
230
230
  zrb/input/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
231
- zrb/input/any_input.py,sha256=tvls3uJBVPLW5Oawxof9qWCX-lH1h_RErxjYNu1bwtY,899
232
- zrb/input/base_input.py,sha256=J1lvo96YieaceFeReNoon2N4bOgRK7lBrDfRoINLu9g,3599
233
- zrb/input/bool_input.py,sha256=bxX2-T8XTlz5zq4gkk3LMHX8S93gdvTUsZ0I6DH56VU,1762
234
- zrb/input/float_input.py,sha256=Mfl8CygKMkRFv1l6jM28FqQ6SIIB2ZpbaYoM-JMNyXU,1398
235
- zrb/input/int_input.py,sha256=w5ewSxstUYv5LBAzvX_E0jIueXXdmnY2ehoQMTtg-EA,1380
236
- zrb/input/option_input.py,sha256=IrpF0XvFbH5G-IEAnoQ4QOvq7gn2wyT4jKwAdMKwV0s,2058
237
- zrb/input/password_input.py,sha256=Tu8TZx95717YsHICZ0zBzTUPKPf-K9vGlvRyaOTrFEM,1388
231
+ zrb/input/any_input.py,sha256=mmkU7WsqIK-IK8B5rNkWdy6mKS47zasnXJWE60MTRWQ,984
232
+ zrb/input/base_input.py,sha256=2gwIcT9xLXjcrwF-4k6ghDs819E-DWIwijlzfQtauWs,3766
233
+ zrb/input/bool_input.py,sha256=9ir8aTm8zaufrJ84_EerC5vOjyn4hHZ3BiLzFqPgPFM,1839
234
+ zrb/input/float_input.py,sha256=8G9lJKLlb_Upk9m5pBF9JwqlAAiYJLrbIItLnyzPxpg,1475
235
+ zrb/input/int_input.py,sha256=UhxCFYlZdJcgUSGGEkz301zOgRVpK0KDG_IxxWpQfMU,1457
236
+ zrb/input/option_input.py,sha256=TQB82ko5odgzkULEizBZi0e9TIHEbIgvdP0AR3RhA74,2135
237
+ zrb/input/password_input.py,sha256=szBojWxSP9QJecgsgA87OIYwQrY2AQ3USIKdDZY6snU,1465
238
238
  zrb/input/str_input.py,sha256=NevZHX9rf1g8eMatPyy-kUX3DglrVAQpzvVpKAzf7bA,81
239
- zrb/input/text_input.py,sha256=gK5LGa9uEBBLwGqhTVmCVgsAuBYEQt3ANDQaSNtSc78,3300
239
+ zrb/input/text_input.py,sha256=shvVbc2U8Is36h23M5lcW8IEwKc9FR-4uEPZZroj3rU,3377
240
240
  zrb/runner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
241
- zrb/runner/cli.py,sha256=G_ILZCFzpV-kRE3dm1kq6BorB51TLJ34Qmhgy5SIMlU,6734
242
- zrb/runner/common_util.py,sha256=mjEBSmfdY2Sun2U5-8y8gGwF82OiRM8sgiYDOdW9NA4,1338
241
+ zrb/runner/cli.py,sha256=HtfJQecFg2keIMK-7bVATBlTeZC_RvT8DsbUC58TMKU,6736
242
+ zrb/runner/common_util.py,sha256=0zhZn1Jdmr194_nsL5_L-Kn9-_NDpMTI2z6_LXUQJ-U,1369
243
243
  zrb/runner/web_app.py,sha256=Ji2AWeFpJu5guXmur7mAAbjMToyjgmPDdfYu8047FFI,2616
244
244
  zrb/runner/web_config/config.py,sha256=0wR58KreAmawGGfamm0GLZY344HaXs7qfDgHLavBDwo,3125
245
245
  zrb/runner/web_config/config_factory.py,sha256=GNByKviNhQF5qG2ypmC_mV2xglzWHLVQC0x2SQJjrbA,894
@@ -275,7 +275,7 @@ zrb/runner/web_route/static/resources/session/current-session.js,sha256=kAYHoSVj
275
275
  zrb/runner/web_route/static/resources/session/event.js,sha256=X5OlSHefK0SDB9VkFCRyBKE_Pb7mqM319mW9jRGoDOk,4716
276
276
  zrb/runner/web_route/static/resources/session/past-session.js,sha256=RwGJYKSp75K8NZ-iZP58XppWgdzkiKFaiC5wgcMLxDo,5470
277
277
  zrb/runner/web_route/static/static_route.py,sha256=BxFXIhKqkPtSBVkuf6Uho8yLph_EqDTLTVB0KG2-Pbo,1539
278
- zrb/runner/web_route/task_input_api_route.py,sha256=xkZ36vmHXMPj0ekp6ocUysO0QUgl1PLaSHt3YL_OfK8,1749
278
+ zrb/runner/web_route/task_input_api_route.py,sha256=WgkqprftYrtyq9YK0TVr1lQNQF30kEeyEaT6lRGkGLY,1751
279
279
  zrb/runner/web_route/task_session_api_route.py,sha256=RJJ_GVH3RkGrVe906ZIMaucXI-eTPdn2blI9zgs2JR0,5945
280
280
  zrb/runner/web_schema/session.py,sha256=NwbuS2Sv-CXO52nU-EZv8OMlD4vgCQWNeLC_dT0FK7I,92
281
281
  zrb/runner/web_schema/token.py,sha256=Y7XCPS4WzrxslTDtHeLcPTTUpmWhPOkRcl4b99zrC7c,185
@@ -340,7 +340,7 @@ zrb/util/string/name.py,sha256=8picJfUBXNpdh64GNaHv3om23QHhUZux7DguFLrXHp8,1163
340
340
  zrb/util/todo.py,sha256=1nDdwPc22oFoK_1ZTXyf3638Bg6sqE2yp_U4_-frHoc,16015
341
341
  zrb/xcom/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
342
342
  zrb/xcom/xcom.py,sha256=o79rxR9wphnShrcIushA0Qt71d_p3ZTxjNf7x9hJB78,1571
343
- zrb-1.2.2.dist-info/METADATA,sha256=GAm6vQds-lw7StRPEkrq3oTUSBO1jIYpXi9s1-KSfjw,4198
344
- zrb-1.2.2.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
345
- zrb-1.2.2.dist-info/entry_points.txt,sha256=-Pg3ElWPfnaSM-XvXqCxEAa-wfVI6BEgcs386s8C8v8,46
346
- zrb-1.2.2.dist-info/RECORD,,
343
+ zrb-1.3.0.dist-info/METADATA,sha256=3wbbvRet-OzX0DonamEcOLlFxXCVclJufAhAhH28m7U,6303
344
+ zrb-1.3.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
345
+ zrb-1.3.0.dist-info/entry_points.txt,sha256=-Pg3ElWPfnaSM-XvXqCxEAa-wfVI6BEgcs386s8C8v8,46
346
+ zrb-1.3.0.dist-info/RECORD,,
File without changes