zrb 1.0.0b10__py3-none-any.whl → 1.2.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 (61) hide show
  1. zrb/builtin/git.py +8 -8
  2. zrb/builtin/llm/llm_chat.py +3 -3
  3. zrb/builtin/project/add/fastapp/fastapp_input.py +1 -1
  4. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_task.py +99 -55
  5. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_util.py +301 -0
  6. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_task.py +24 -1
  7. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_util.py +61 -1
  8. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/gateway/view/content/my-module/my-entity.html +297 -0
  9. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/gateway_subroute.py +24 -0
  10. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/navigation_config_file.py +8 -0
  11. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/input.py +3 -3
  12. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_task.py +8 -0
  13. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_util.py +40 -1
  14. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/gateway/subroute/my_module.py +2 -0
  15. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/navigation_config_file.py +6 -0
  16. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/parser.py +2 -2
  17. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/view.py +1 -1
  18. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/config.py +18 -8
  19. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/config/navigation.py +39 -0
  20. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/route.py +52 -11
  21. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/schema/navigation.py +95 -0
  22. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/subroute/auth.py +91 -8
  23. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/auth.py +9 -0
  24. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/view.py +33 -8
  25. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/permission.html +311 -0
  26. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/role.html +0 -0
  27. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/user.html +0 -0
  28. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/error.html +4 -1
  29. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/login.html +67 -0
  30. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/logout.html +49 -0
  31. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/common/util.js +160 -0
  32. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/crud/style.css +14 -0
  33. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/crud/util.js +94 -0
  34. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/pico-style.css +23 -0
  35. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/script.js +44 -0
  36. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/style.css +102 -0
  37. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/template/default.html +73 -18
  38. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/requirements.txt +1 -1
  39. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_homepage.py +2 -4
  40. zrb/builtin/project/create/project_task.py +2 -2
  41. zrb/builtin/random.py +3 -3
  42. zrb/builtin/setup/common_input.py +5 -5
  43. zrb/builtin/setup/tmux/tmux.py +1 -1
  44. zrb/builtin/setup/zsh/zsh.py +1 -1
  45. zrb/builtin/todo.py +4 -4
  46. zrb/input/base_input.py +17 -12
  47. zrb/input/bool_input.py +12 -5
  48. zrb/input/float_input.py +12 -5
  49. zrb/input/int_input.py +12 -5
  50. zrb/input/option_input.py +5 -5
  51. zrb/input/password_input.py +5 -5
  52. zrb/input/text_input.py +4 -4
  53. zrb/runner/web_route/refresh_token_api_route.py +1 -1
  54. zrb/runner/web_route/static/refresh-token.template.js +9 -0
  55. zrb/runner/web_route/static/static_route.py +1 -1
  56. zrb/util/load.py +13 -7
  57. {zrb-1.0.0b10.dist-info → zrb-1.2.0.dist-info}/METADATA +2 -2
  58. {zrb-1.0.0b10.dist-info → zrb-1.2.0.dist-info}/RECORD +60 -44
  59. zrb/util/llm/tool.py +0 -87
  60. {zrb-1.0.0b10.dist-info → zrb-1.2.0.dist-info}/WHEEL +0 -0
  61. {zrb-1.0.0b10.dist-info → zrb-1.2.0.dist-info}/entry_points.txt +0 -0
zrb/input/float_input.py CHANGED
@@ -1,6 +1,7 @@
1
- from zrb.attr.type import StrAttr
1
+ from zrb.attr.type import FloatAttr
2
2
  from zrb.context.any_shared_context import AnySharedContext
3
3
  from zrb.input.base_input import BaseInput
4
+ from zrb.util.attr import get_float_attr
4
5
 
5
6
 
6
7
  class FloatInput(BaseInput):
@@ -9,7 +10,7 @@ class FloatInput(BaseInput):
9
10
  name: str,
10
11
  description: str | None = None,
11
12
  prompt: str | None = None,
12
- default_str: StrAttr = "0.0",
13
+ default: FloatAttr = 0.0,
13
14
  auto_render: bool = True,
14
15
  allow_empty: bool = False,
15
16
  allow_positional_parsing: bool = True,
@@ -18,17 +19,23 @@ class FloatInput(BaseInput):
18
19
  name=name,
19
20
  description=description,
20
21
  prompt=prompt,
21
- default_str=default_str,
22
+ default=default,
22
23
  auto_render=auto_render,
23
24
  allow_empty=allow_empty,
24
25
  allow_positional_parsing=allow_positional_parsing,
25
26
  )
26
27
 
27
- def to_html(self, ctx: AnySharedContext) -> str:
28
+ def to_html(self, shared_ctx: AnySharedContext) -> str:
28
29
  name = self.name
29
30
  description = self.description
30
- default = self.get_default_str(ctx)
31
+ default = self.get_default_str(shared_ctx)
31
32
  return f'<input type="number" name="{name}" placeholder="{description}" value="{default}" step="any" />' # noqa
32
33
 
34
+ def get_default_str(self, shared_ctx: AnySharedContext) -> str:
35
+ default_value = get_float_attr(
36
+ shared_ctx, self._default_value, auto_render=self._auto_render
37
+ )
38
+ return f"{default_value}"
39
+
33
40
  def _parse_str_value(self, str_value: str) -> float:
34
41
  return float(str_value)
zrb/input/int_input.py CHANGED
@@ -1,6 +1,7 @@
1
- from zrb.attr.type import StrAttr
1
+ from zrb.attr.type import IntAttr
2
2
  from zrb.context.any_shared_context import AnySharedContext
3
3
  from zrb.input.base_input import BaseInput
4
+ from zrb.util.attr import get_int_attr
4
5
 
5
6
 
6
7
  class IntInput(BaseInput):
@@ -9,7 +10,7 @@ class IntInput(BaseInput):
9
10
  name: str,
10
11
  description: str | None = None,
11
12
  prompt: str | None = None,
12
- default_str: StrAttr = "0",
13
+ default: IntAttr = 0,
13
14
  auto_render: bool = True,
14
15
  allow_empty: bool = False,
15
16
  allow_positional_parsing: bool = True,
@@ -18,17 +19,23 @@ class IntInput(BaseInput):
18
19
  name=name,
19
20
  description=description,
20
21
  prompt=prompt,
21
- default_str=default_str,
22
+ default=default,
22
23
  auto_render=auto_render,
23
24
  allow_empty=allow_empty,
24
25
  allow_positional_parsing=allow_positional_parsing,
25
26
  )
26
27
 
27
- def to_html(self, ctx: AnySharedContext) -> str:
28
+ def to_html(self, shared_ctx: AnySharedContext) -> str:
28
29
  name = self.name
29
30
  description = self.description
30
- default = self.get_default_str(ctx)
31
+ default = self.get_default_str(shared_ctx)
31
32
  return f'<input type="number" step="1" name="{name}" placeholder="{description}" value="{default}" />' # noqa
32
33
 
33
34
  def _parse_str_value(self, str_value: str) -> int:
34
35
  return int(str_value)
36
+
37
+ def get_default_str(self, shared_ctx: AnySharedContext) -> str:
38
+ default_value = get_int_attr(
39
+ shared_ctx, self._default_value, auto_render=self._auto_render
40
+ )
41
+ return f"{default_value}"
zrb/input/option_input.py CHANGED
@@ -11,7 +11,7 @@ class OptionInput(BaseInput):
11
11
  description: str | None = None,
12
12
  prompt: str | None = None,
13
13
  options: StrListAttr = [],
14
- default_str: StrAttr = "",
14
+ default: StrAttr = "",
15
15
  auto_render: bool = True,
16
16
  allow_empty: bool = False,
17
17
  allow_positional_parsing: bool = True,
@@ -20,19 +20,19 @@ class OptionInput(BaseInput):
20
20
  name=name,
21
21
  description=description,
22
22
  prompt=prompt,
23
- default_str=default_str,
23
+ default=default,
24
24
  auto_render=auto_render,
25
25
  allow_empty=allow_empty,
26
26
  allow_positional_parsing=allow_positional_parsing,
27
27
  )
28
28
  self._options = options
29
29
 
30
- def to_html(self, ctx: AnySharedContext) -> str:
30
+ def to_html(self, shared_ctx: AnySharedContext) -> str:
31
31
  name = self.name
32
32
  description = self.description
33
- default = self.get_default_str(ctx)
33
+ default = self.get_default_str(shared_ctx)
34
34
  html = [f'<select name="{name}" placeholder="{description}">']
35
- for value in get_str_list_attr(ctx, self._options, self._auto_render):
35
+ for value in get_str_list_attr(shared_ctx, self._options, self._auto_render):
36
36
  selected = "selected" if value == default else ""
37
37
  html.append(f'<option value="{value}" {selected}>{value}</option>')
38
38
  html.append("</select>")
@@ -1,6 +1,6 @@
1
1
  import getpass
2
- from collections.abc import Callable
3
2
 
3
+ from zrb.attr.type import StrAttr
4
4
  from zrb.context.any_shared_context import AnySharedContext
5
5
  from zrb.input.base_input import BaseInput
6
6
 
@@ -11,7 +11,7 @@ class PasswordInput(BaseInput):
11
11
  name: str,
12
12
  description: str | None = None,
13
13
  prompt: str | None = None,
14
- default_str: str | Callable[[AnySharedContext], str] = "",
14
+ default: StrAttr = "",
15
15
  auto_render: bool = True,
16
16
  allow_empty: bool = False,
17
17
  allow_positional_parsing: bool = True,
@@ -20,17 +20,17 @@ class PasswordInput(BaseInput):
20
20
  name=name,
21
21
  description=description,
22
22
  prompt=prompt,
23
- default_str=default_str,
23
+ default=default,
24
24
  auto_render=auto_render,
25
25
  allow_empty=allow_empty,
26
26
  allow_positional_parsing=allow_positional_parsing,
27
27
  )
28
28
  self._is_secret = True
29
29
 
30
- def to_html(self, ctx: AnySharedContext) -> str:
30
+ def to_html(self, shared_ctx: AnySharedContext) -> str:
31
31
  name = self.name
32
32
  description = self.description
33
- default = self.get_default_str(ctx)
33
+ default = self.get_default_str(shared_ctx)
34
34
  return f'<input type="password" name="{name}" placeholder="{description}" value="{default}" />' # noqa
35
35
 
36
36
  def _prompt_cli_str(self, shared_ctx: AnySharedContext) -> str:
zrb/input/text_input.py CHANGED
@@ -15,7 +15,7 @@ class TextInput(BaseInput):
15
15
  name: str,
16
16
  description: str | None = None,
17
17
  prompt: str | None = None,
18
- default_str: str | Callable[[AnySharedContext], str] = "",
18
+ default: str | Callable[[AnySharedContext], str] = "",
19
19
  auto_render: bool = True,
20
20
  allow_empty: bool = False,
21
21
  allow_positional_parsing: bool = True,
@@ -28,7 +28,7 @@ class TextInput(BaseInput):
28
28
  name=name,
29
29
  description=description,
30
30
  prompt=prompt,
31
- default_str=default_str,
31
+ default=default,
32
32
  auto_render=auto_render,
33
33
  allow_empty=allow_empty,
34
34
  allow_positional_parsing=allow_positional_parsing,
@@ -56,10 +56,10 @@ class TextInput(BaseInput):
56
56
  return " -->"
57
57
  return ""
58
58
 
59
- def to_html(self, ctx: AnySharedContext) -> str:
59
+ def to_html(self, shared_ctx: AnySharedContext) -> str:
60
60
  name = self.name
61
61
  description = self.description
62
- default = self.get_default_str(ctx)
62
+ default = self.get_default_str(shared_ctx)
63
63
  return "\n".join(
64
64
  [
65
65
  f'<textarea name="{name}" placeholder="{description}">',
@@ -30,7 +30,7 @@ def serve_refresh_token_api(app: "FastAPI", web_config: WebConfig) -> None:
30
30
  # If we still don't have a refresh token, raise an exception
31
31
  if not refresh_token:
32
32
  return JSONResponse(
33
- content={"detail": "Refresh token not provided"}, status_code=400
33
+ content={"detail": "Refresh token not provided"}, status_code=401
34
34
  )
35
35
  # Get token
36
36
  new_token = regenerate_tokens(web_config, refresh_token)
@@ -1,6 +1,10 @@
1
1
  function refreshAuthToken(){
2
2
  const refreshUrl = "/api/v1/refresh-token";
3
+ let shouldRefresh = true;
3
4
  async function refresh() {
5
+ if (!shouldRefresh) {
6
+ return;
7
+ }
4
8
  try {
5
9
  const response = await fetch(refreshUrl, {
6
10
  method: "POST",
@@ -9,6 +13,11 @@ function refreshAuthToken(){
9
13
  });
10
14
 
11
15
  if (!response.ok) {
16
+ if (response.status === 401 || response.status === 403) {
17
+ console.warn("Skipping token refresh, authentication required.");
18
+ shouldRefresh = false;
19
+ return;
20
+ }
12
21
  throw new Error(`HTTP error! Status: ${response.status}`);
13
22
  }
14
23
  console.log("Token refreshed successfully");
@@ -30,7 +30,7 @@ def serve_static_resources(app: "FastAPI", web_config: WebConfig) -> None:
30
30
  async def refresh_token_js():
31
31
  return PlainTextResponse(
32
32
  content=_get_refresh_token_js(
33
- 60 * web_config.refresh_token_expire_minutes / 3
33
+ 60 * web_config.access_token_expire_minutes / 3
34
34
  ),
35
35
  media_type="application/javascript",
36
36
  )
zrb/util/load.py CHANGED
@@ -12,13 +12,17 @@ pattern = re.compile("[^a-zA-Z0-9]")
12
12
  def load_zrb_init(dir_path: str | None = None) -> Any | None:
13
13
  if dir_path is None:
14
14
  dir_path = os.getcwd()
15
- script_path = os.path.join(dir_path, "zrb_init.py")
16
- if os.path.isfile(script_path):
17
- return load_file(script_path, -1)
18
- new_dir_path = os.path.dirname(dir_path)
19
- if new_dir_path == dir_path:
20
- return
21
- return load_zrb_init(new_dir_path)
15
+ # get path list from current path to the absolute root
16
+ current_path = os.path.abspath(dir_path)
17
+ path_list = [current_path]
18
+ while current_path != os.path.dirname(current_path): # Stop at root
19
+ current_path = os.path.dirname(current_path)
20
+ path_list.append(current_path)
21
+ # loop from root to current path to load zrb_init
22
+ for current_path in path_list[::-1]:
23
+ script_path = os.path.join(current_path, "zrb_init.py")
24
+ if os.path.isfile(script_path):
25
+ load_file(script_path)
22
26
 
23
27
 
24
28
  @lru_cache
@@ -29,6 +33,8 @@ def load_file(script_path: str, sys_path_index: int = 0) -> Any | None:
29
33
  # Append script dir path
30
34
  script_dir_path = os.path.dirname(script_path)
31
35
  if script_dir_path not in sys.path:
36
+ if sys_path_index == -1:
37
+ sys_path_index = len(sys.path)
32
38
  sys.path.insert(sys_path_index, script_dir_path)
33
39
  # Add script dir path to Python path
34
40
  os.environ["PYTHONPATH"] = _get_new_python_path(script_dir_path)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: zrb
3
- Version: 1.0.0b10
3
+ Version: 1.2.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
@@ -26,7 +26,7 @@ Requires-Dist: pdfplumber (>=0.11.4,<0.12.0) ; extra == "rag"
26
26
  Requires-Dist: psutil (>=6.1.1,<7.0.0)
27
27
  Requires-Dist: pydantic-ai (>=0.0.19,<0.0.20)
28
28
  Requires-Dist: python-dotenv (>=1.0.1,<2.0.0)
29
- Requires-Dist: python-jose[cryptography] (>=3.3.0,<4.0.0)
29
+ Requires-Dist: python-jose[cryptography] (>=3.4.0,<4.0.0)
30
30
  Requires-Dist: requests (>=2.32.3,<3.0.0)
31
31
  Requires-Dist: ulid-py (>=1.1.0,<2.0.0)
32
32
  Project-URL: Documentation, https://github.com/state-alchemists/zrb
@@ -4,10 +4,10 @@ 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
6
6
  zrb/builtin/base64.py,sha256=1YnSwASp7OEAvQcsnHZGpJEvYoI1Z2zTIJ1bCDHfcPQ,921
7
- zrb/builtin/git.py,sha256=PhkTcW36aY5vnL3dnJexyO9OLjoajfzdszh57iVqUyk,5493
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=vUUchYKJuHr-N_HarpKRFsV0EdQDAFZzAfbK4C0vx88,4508
10
+ zrb/builtin/llm/llm_chat.py,sha256=UVhfJR0APXRC3tEv5i5vYbEANWqi04QD_WsAiARJ7j4,4494
11
11
  zrb/builtin/llm/previous-session.js,sha256=xMKZvJoAbrwiyHS0OoPrWuaKxWYLoyR5sguePIoCjTY,816
12
12
  zrb/builtin/llm/tool/api.py,sha256=yQ3XV8O7Fx7hHssLSOcmiHDnevPhz9ktWi44HK7zTls,801
13
13
  zrb/builtin/llm/tool/cli.py,sha256=to_IjkfrMGs6eLfG0cpVN9oyADWYsJQCtyluUhUdBww,253
@@ -15,17 +15,19 @@ zrb/builtin/llm/tool/rag.py,sha256=PawaLZL-ThctxtBtsQuP3XsgTxQKyCGFqrudCANPJKk,5
15
15
  zrb/builtin/llm/tool/web.py,sha256=N2HYuXbKPUpjVAq_UnQMbUrTIE8u0Ut3TeQadZ7_NJc,2217
16
16
  zrb/builtin/md5.py,sha256=0pNlrfZA0wlZlHvFHLgyqN0JZJWGKQIF5oXxO44_OJk,949
17
17
  zrb/builtin/project/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
- zrb/builtin/project/add/fastapp/fastapp_input.py,sha256=fYD6n8-PlrTyz1Kq5GYAt0PQsyUp2qsPKRJ68hINSXE,314
18
+ zrb/builtin/project/add/fastapp/fastapp_input.py,sha256=MKlWR_LxWhM_DcULCtLfL_IjTxpDnDBkn9KIqNmajFs,310
19
19
  zrb/builtin/project/add/fastapp/fastapp_task.py,sha256=mUMZjC413DhZSKqA6donPTxVbd_DnDFqSV_ZTqQnSHs,2697
20
20
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.coveragerc,sha256=MsTf0Vlt_pxV-j4mNh-TxSo7sTI_GaVS_oM4tksIykE,181
21
21
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.flake8,sha256=fgvHmuskgYiCvHZHaFtiyOWW0zasVrs0P-sFHOq3W5U,56
22
22
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.gitignore,sha256=D-ISOzaKlN_VzeZP5f8aznDSJX4p8PCtaK2JWM5yY1c,61
23
23
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/README.md,sha256=MAo7ZFbg7LLiAfQbXcippMgjJ2-VXMKtiTDEZ3I4AAg,221
24
24
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_task.py,sha256=NYp9_qG8BsAmx7et-zAqGLF3KXV1JsoeFs_6jckZtD4,2860
25
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_task.py,sha256=Q7Ami5JsyoJUms9yeQVTgEA642dzqRrAG8Mnzv1Xb7o,3566
26
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_util.py,sha256=GESC0cWFgRZXr6u2tDhO_WEP18GiQK-PEoNOyzlq3q4,10420
26
27
  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
28
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_task.py,sha256=W0ziCIhSwUbu8vBABEcTvLrTAegJmRbqui6TzG1xqlo,11183
29
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_util.py,sha256=6ltaoHBrEiSi7whOodcbqcgUaY93jV7wBeLw9F13umY,16120
30
+ 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
29
31
  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
30
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_factory.py,sha256=lnhhpc_AflWnCQbLkYORrshiqIA5wy4SdxDuUxmn7Ts,372
31
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_db_repository.py,sha256=GrMxMb98-XD7Rue1v14jBu6HRb8Gy5DywBSKnMhN0iY,770
@@ -37,13 +39,14 @@ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/templat
37
39
  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
40
  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
39
41
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/client_method.py,sha256=0Bwn1lamv3o6ti68gk35gPiKxbKUQRysNAnHOlVz9TY,1311
40
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/gateway_subroute.py,sha256=ypRoqIizpF0TPI03yyHm1x_O8if_2x9MxrM-CU9IttM,3850
42
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/gateway_subroute.py,sha256=OklfwqgpOBu7Je9C_INGEYU5VRq-gx_syDgjrdCu18s,4724
43
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/navigation_config_file.py,sha256=8dYj8GyvhTIr0lny_3aZec2BTHMBFTVRGLLH4OoWvCo,186
41
44
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/format_task.py,sha256=8YykCthDgjXT8MFvTrPSWYUXsfhafmoSMG9LH2ZiaD0,431
42
45
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/group.py,sha256=S0sKnnABSGy3YzaExH40xJjm4UsEX6AyDE1u94ewk6A,648
43
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/input.py,sha256=NBy_9xwvbFvKWt2bHRyzNQr4zUrP4lUGd6L7k_eA5do,1523
44
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_task.py,sha256=mGD3iHocO3TcmFgrBRHEoOgci3qXmwaSmEpVe7jGjvE,3690
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
46
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/input.py,sha256=_LagLs2R9Eao4xJ1d2i_Yj1ELu7uZGNJnK90ruvY0O8,1511
47
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_task.py,sha256=_1sJd91bViSfEbpxNgqeCE7gBHP7yH9i7uJbPu9OvtY,4058
48
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_util.py,sha256=NtQX3F9vVGJAPkzt6VffXGru8ULh4gYWeDxNk1Qepek,8293
49
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/gateway/subroute/my_module.py,sha256=_5EgmEeATL5ZSX5MSJixkDgRQKGNTPG6watEuzv3eQI,418
47
50
  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
48
51
  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
49
52
  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
@@ -57,6 +60,7 @@ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/templat
57
60
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/route.py,sha256=PbWya4KW4OyoJl-5OpZm1gJMLeWOBvyHLlez9r5baOk,960
58
61
  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
59
62
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/module_task_definition.py,sha256=KaI2CiMLdzZH-_C_ckHiQpX4NZFefBCWxEQBIeuSgJ8,1024
63
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/navigation_config_file.py,sha256=sebiaffLdmAGZrs5BaFhROD_GJNh1urpW9JkiugmnJ0,129
60
64
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task.py,sha256=SgAcqsmJ2bCHWywzFdZRxkl5D_wvKXJH1tcIeOhPjUw,5675
61
65
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task_util.py,sha256=n2CgAoTC4213sj5m1E1UHvoG3opIZoSuG94uxQPecrE,3077
62
66
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/util.py,sha256=cyesVckwI4y2IXuvBCI_PNBpXKX07Z-8K-T22SMZDeY,1937
@@ -71,10 +75,10 @@ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/logger_facto
71
75
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/parser_factory.py,sha256=0dsYhxDec4EBDngkLyyPztDOhNUEyDue8DjIPUd5XvM,238
72
76
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/schema.py,sha256=dbRryeP5u7ObGX3GjF9ZID00yXffOp-AxyXu8oVJP0I,82
73
77
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/app.py,sha256=AeLoeMwQBqCLVUw9DaeOfAabKQxa7bT82QPo-1naiA0,1546
74
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/parser.py,sha256=xGAXc3dIkstQwPtckDvN_i-PjizgpHaVY53mHpISLIo,4036
78
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/parser.py,sha256=tyoTfQv1723KZjU4xjbj1GIwrVc9YDp9KB8Rj6IjypY,4038
75
79
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/user_agent.py,sha256=eOFJ9gnz0iw7XE-1vc53bx-uPST6m5K3cpR_f61T544,1669
76
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/view.py,sha256=vrNAr90GMZnu37EMvi2BnTgWoAOpQwJxWCFkZAtFeFA,1161
77
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/config.py,sha256=2k3FsKJrUrR-rTkletVnof1cCJ0lzmnvK85jeCPxUwo,3110
80
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/view.py,sha256=bgAdkyz2sRWyBptyMBCcNPbjMSV2F6sALZvQcgaQYKY,1168
81
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/config.py,sha256=595LtFUWtCXvVuNKmI_sfvfC90glCFVo1S3sSSea6q8,3449
78
82
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/main.py,sha256=ouA4P7f7GDuB-0iPJsOjqh_DGlZaOBnMgBgkUy9Os5A,216
79
83
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
80
84
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/alembic.ini,sha256=mgQyBAIwdkZZJWLu_FQWPx1FkyaARCNp6-rLqSVvMbA,3723
@@ -109,17 +113,30 @@ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service
109
113
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service.py,sha256=JigJLQ4zYpNGdoPtSNs0Hf-QYTgCCYGuM58nclUEAfs,12652
110
114
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service_factory.py,sha256=TFqm7_wcU6zDiyV7DSCYc1Q47ppZaIDxlK_R9PmpDI4,1239
111
115
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/alembic.ini,sha256=mgQyBAIwdkZZJWLu_FQWPx1FkyaARCNp6-rLqSVvMbA,3723
116
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/config/navigation.py,sha256=veY3xU8kt1p_CU-zOYvgIRUP4HqOOW2kOLauqBgiG88,797
112
117
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/README,sha256=MVlc9TYmr57RbhXET6QxgyCcwWP7w-vLkEsirENqiIQ,38
113
118
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/env.py,sha256=xQ4UYy6aaHhE0NssPZ6QkeNFlC1KBd07EhDR0NNzj20,3349
114
119
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/script.py.mako,sha256=U9DYBoBRd_ooogMfRydCUGEjIDZ-aV8OsjBiBrdTvy4,680
115
120
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/versions/.gitkeep,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
116
121
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration_metadata.py,sha256=NbIb5ncy6x5RrFD2TZMDwxBK_wDTyJEIvieMRmNpf9M,55
117
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/route.py,sha256=5to7rhN3n-N2-7HqRQf9AE9r6OUJQTEyS-g5dPkjV7Q,2015
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
120
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/view.py,sha256=mlYSu1xfL_nztJHPbBRuUQuKBT0zCNgsg6bouw5PfG0,2117
121
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/error.html,sha256=K8jJFW99ORUrJqdybmWf191NK7tCFNoc5VmmNAcWqeo,133
122
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/route.py,sha256=QlyPrpmBXOi_oEBOMTnY_KYBQoqU2fFbC_T1HvoxMaE,3655
123
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/schema/navigation.py,sha256=uhZ_liiX6YzV-haGcAZRGi490XiiYLCcmRRVqQqdLs0,2711
124
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/subroute/auth.py,sha256=KXwia0eexjoxa7OK_VT7NuUL6snxxtOpMIgSjRRbBD0,17678
125
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/auth.py,sha256=zThjspTe-pu0r73vXwNb9Se4vCbX2HquTZKg2h9AMY0,2643
126
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/view.py,sha256=7C0KlvpUwlQ27p_zyFFxVZZNaQnZ9k2i3yit1cNZHoo,3192
127
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/permission.html,sha256=9cTHiTHpC9hfuMCtMYGqzXKpQIWMg_v7tD4E-jsziR8,11486
128
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/role.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
129
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/user.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
130
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/error.html,sha256=FISZNhjhfIuoBWI0GR-c5XQxLniy0euWOjKgbtnVlt8,239
122
131
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/homepage.html,sha256=Q8jEwRraYJmn0rJIT1Ct4Dz2NB4S-NWJ1ZrU46oZkkw,126
132
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/login.html,sha256=OanTVSQG5T03AX4eformFN69qeSMh5jiWERNth1EAMw,2301
133
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/logout.html,sha256=HQnUPE_I9l-aF8LqpKuHCp6zsjYplTfbLfKbxn4hdXo,1571
134
+ 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/crud/style.css,sha256=UzmYDiz4dlxKPPKXwTjybK1nrwkk-3DmFEmlpWnnqfo,206
136
+ 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/default/pico-style.css,sha256=7VEhpZWXz8pcKtTULorjQlWX1fMs7Bcbn1QBDJiJZfY,233
138
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/script.js,sha256=JhuxTn6Qs3AkHULEfnL8tG1UHU1YZTPY5gYRi5o1H9I,1357
139
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/style.css,sha256=tS7UIUO1AcRgaRJpN7OCTrKvQqDNa3NyAVd7SGtfvJE,1813
123
140
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/android-chrome-192x192.png,sha256=4NN-TGVL3y3MVbms7kCgD-Udp5XmQ6cwmWqRFYib0qw,12463
124
141
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/android-chrome-512x512.png,sha256=PE5DCXqmMtNvwDWfHxVoRIy36mrTmq4IDv-YPgz4mvg,34025
125
142
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/favicon-32x32.png,sha256=KHE2CBnJAxS81xzoPxdfYA17nJxvoOf6yM2UPaKIT7E,1402
@@ -143,8 +160,8 @@ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view
143
160
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.violet.min.css,sha256=z8fP6YMWH12oq-NPDVG2OXdza2K0K7k4RYWuxHCqzH8,82211
144
161
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.yellow.min.css,sha256=mOkvNiE272UAgO8cVewJjU9BYidLxDZ97IcYodW--Ik,82218
145
162
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.zinc.min.css,sha256=s8SdVQv4fX3W0LbfKDgUDczWcCyUfRbZhpyYtLdASC0,82212
146
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/template/default.html,sha256=kSQFOLj1urKRbMwVX5S2AHmHUxF1SVjw3NWbt32pYRg,1137
147
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/requirements.txt,sha256=NRd3QLqRXhNwd_YCEHRZ-yzXEQVsUn9D8l9MaxzykhA,194
163
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/template/default.html,sha256=Lg4vONCLOx8PSORFitg8JZa-4dp-pyUvKSVzCJEFsB8,4048
164
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/requirements.txt,sha256=VqHI89r0E8sU5vp3h-AXrZy30vGWVP2E8MYsvVxQ_Wg,194
148
165
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
149
166
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/permission.py,sha256=95L7B4g5T6a5mgoXGgK2Fb5h2ugRzb5QIbXyRRh9tmE,1385
150
167
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/role.py,sha256=UKXijAUY0ryXJFv74lCzH5ArYGbeuakX0cUbP7ToAQU,3167
@@ -157,25 +174,25 @@ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permissio
157
174
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_update_permission.py,sha256=AHTUIX7cdR5tKkbxs6JVrp5uoeiwIvqaBrhLFGOYoFg,2498
158
175
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/test_user_session.py,sha256=RITk3KohVSEzdvyoOefzrx2eabHEhAx3eS3opjZwU5k,7096
159
176
  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
177
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_homepage.py,sha256=fJGnHGXe893idQ94-0Yd50YfxQRQZq3bLTd2Rgq2d-A,498
161
178
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_not_found_error.py,sha256=SBqFRgGUldUtIz-uMf9a5DeWDPFeKbhvnvwiYr-jjns,502
162
179
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test.sh,sha256=QIwe6InrlEkmxdtj6NTO9JozeECYN0O4vx-x-qid6go,148
163
180
  zrb/builtin/project/add/fastapp/fastapp_util.py,sha256=UVzKfljUDLvlassnKy8pKH4hBP23ZUwEK5Ouh-fr87w,1463
164
181
  zrb/builtin/project/create/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
165
182
  zrb/builtin/project/create/project-template/README.md,sha256=BHeWF_txdTDzKewWdWfGhO3YOTiW8E3YwTMnd0T1LVA,39
166
183
  zrb/builtin/project/create/project-template/zrb_init.py,sha256=kY0x5MrkIVl3l1GtN2ROrYGNpsfN2dgRT84LCcSrGUs,44
167
- zrb/builtin/project/create/project_task.py,sha256=B6ao8sd26mtLAkxwqjqiHy47PuACslYQtwAGcutgq7I,1140
184
+ zrb/builtin/project/create/project_task.py,sha256=az-yd2FRDmGZ_7qxslmW11ryTeI3yttRmXtlFnZhF00,1132
168
185
  zrb/builtin/python.py,sha256=e-yyVWovwlxCBLyXGsd9Ek3IAL_X-Q_hpNNOPoRjOgk,349
169
- zrb/builtin/random.py,sha256=R2RfSwiGudWa4zNvv-p7iQ027QGRr3r0QfwnDqQtwkY,1805
186
+ zrb/builtin/random.py,sha256=p9kCvosSiSJyuGQrlrXuIQT8TRDGxXhfiUbsm3GFPd0,1793
170
187
  zrb/builtin/setup/asdf/asdf.py,sha256=n_dWoyYa7vZ9tBCy8hgxmSWZ-XHltC1R70mIVZQhnXY,2419
171
188
  zrb/builtin/setup/asdf/asdf_helper.py,sha256=6jARtyIAE1H82HKVQ84D25RrMAsAip_gD28X9ZlaTCk,1205
172
- zrb/builtin/setup/common_input.py,sha256=M8q9Unt7dCfBHTHqV3__Mxk9YC2Pl3DDtxat2BanZCQ,870
189
+ zrb/builtin/setup/common_input.py,sha256=zIVVsZsNlSoV2Fw8kyt7g5B8XAU8cWBsT865NPoddwo,848
173
190
  zrb/builtin/setup/latex/ubuntu.py,sha256=er9wJAT4CpmghIaiIPFb3FvgqAn1aqU5UgX7GHL3FjA,577
174
- zrb/builtin/setup/tmux/tmux.py,sha256=r7XdEx-AcHiF63uhOqgDuhSq0DR1IK52fHj3ZMtUrZg,1407
191
+ zrb/builtin/setup/tmux/tmux.py,sha256=YaiZKQODsBDip2ya5pA02c2-lfLDU8VKGbeHwFWI43s,1403
175
192
  zrb/builtin/setup/tmux/tmux_config.sh,sha256=wQCb4Q-mNkxIPOcvpN84X9RUWkGY16u3Vd-pOhVidgg,416
176
193
  zrb/builtin/setup/tmux/tmux_helper.py,sha256=M03l0wfL25TzGGp6lnVfX40ayT_x7N2lz-nz2chO7PU,396
177
194
  zrb/builtin/setup/ubuntu.py,sha256=oOSN7Eq7arEpY2i0vWHPR2owio6dqqOvceteYrgmbYw,1019
178
- zrb/builtin/setup/zsh/zsh.py,sha256=quz3OegZBNNBm_K8IH2DUt9G0Q6XZ6cKsDs_WzHGqjg,1824
195
+ zrb/builtin/setup/zsh/zsh.py,sha256=b9_UDSJpOT246RiL5BNr6N1jqNHzoUQircZ_u6dkU5g,1820
179
196
  zrb/builtin/setup/zsh/zsh_config.sh,sha256=SRkcXvVT3tdfS1UDT0-dSj2PKXPLohhyakY6tUEQPjc,4764
180
197
  zrb/builtin/setup/zsh/zsh_helper.py,sha256=1zF1FH0oEPVAVhMA20tsdk1H0RPMCkLusYX8twsTbGI,393
181
198
  zrb/builtin/shell/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -183,7 +200,7 @@ zrb/builtin/shell/autocomplete/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5
183
200
  zrb/builtin/shell/autocomplete/bash.py,sha256=-7YDVV7txgJH9mAYSYN0jmvUEeDIzWFvVNY-cY0myF8,1181
184
201
  zrb/builtin/shell/autocomplete/subcmd.py,sha256=WZI6cGWJcn80zSyxOHG7sCMO3Ucix3mZf4xm_xyB_Y0,606
185
202
  zrb/builtin/shell/autocomplete/zsh.py,sha256=9hlq0Wt3fhRz326mAQTypEd4_4lZdrbBx_3A-Ti3mvw,1022
186
- zrb/builtin/todo.py,sha256=8swb5i9KWqaLfKKcKSQhu5K1QtW3RAYR1vFqsBjw-GY,10840
203
+ zrb/builtin/todo.py,sha256=zlMJhnlnhKhJ2v9arrakEfbqVrMsAPW3vMwiBKEeoZk,10824
187
204
  zrb/callback/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
188
205
  zrb/callback/any_callback.py,sha256=Yhdv5UWHAZSVzj5K2JdxcVQx8x8VX8aZJEivj3NTfZc,247
189
206
  zrb/callback/callback.py,sha256=hKefB_Jd1XGjPSLQdMKDsGLHPzEGO2dqrIArLl_EmD0,848
@@ -211,14 +228,14 @@ zrb/group/any_group.py,sha256=1rNcsi5eu_86JAx_6Jy46SK4BTeppcb89MORynJd-4o,1115
211
228
  zrb/group/group.py,sha256=JFmWVEQ9PVy2WCf5pUG74iwL2xcGxXaAjT-NArAeloM,1861
212
229
  zrb/input/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
213
230
  zrb/input/any_input.py,sha256=tvls3uJBVPLW5Oawxof9qWCX-lH1h_RErxjYNu1bwtY,899
214
- zrb/input/base_input.py,sha256=uHOZeU4OyO05e-kMXDo5MLC76ZWJXzhdhB6akaBzhtU,3383
215
- zrb/input/bool_input.py,sha256=mqD1c7RT683Aui2IsdJUoNiSo7iU3iYrm53e2SjaOrQ,1493
216
- zrb/input/float_input.py,sha256=8HhVWZsyqw1WaN3CysIgvGXkHfVsuLChUEggHODxOTk,1125
217
- zrb/input/int_input.py,sha256=e5F049nwe_Iaiymuh41dZtBOY-DG1AhVP-8gF0IO0n4,1115
218
- zrb/input/option_input.py,sha256=8K0fn5joYeiAA8GevckVrGghbrIcD9GPShDfhAU67cw,2049
219
- zrb/input/password_input.py,sha256=6TW3J7K3ilcstv681PIXL_Mgd6pkNDTCMH8exlqDOiM,1421
231
+ zrb/input/base_input.py,sha256=J1lvo96YieaceFeReNoon2N4bOgRK7lBrDfRoINLu9g,3599
232
+ zrb/input/bool_input.py,sha256=bxX2-T8XTlz5zq4gkk3LMHX8S93gdvTUsZ0I6DH56VU,1762
233
+ zrb/input/float_input.py,sha256=Mfl8CygKMkRFv1l6jM28FqQ6SIIB2ZpbaYoM-JMNyXU,1398
234
+ zrb/input/int_input.py,sha256=w5ewSxstUYv5LBAzvX_E0jIueXXdmnY2ehoQMTtg-EA,1380
235
+ zrb/input/option_input.py,sha256=IrpF0XvFbH5G-IEAnoQ4QOvq7gn2wyT4jKwAdMKwV0s,2058
236
+ zrb/input/password_input.py,sha256=Tu8TZx95717YsHICZ0zBzTUPKPf-K9vGlvRyaOTrFEM,1388
220
237
  zrb/input/str_input.py,sha256=NevZHX9rf1g8eMatPyy-kUX3DglrVAQpzvVpKAzf7bA,81
221
- zrb/input/text_input.py,sha256=cVmuNBTFl7oulwG6VVWI-QTECLSdP_0xwIaCZpkkaM8,3143
238
+ zrb/input/text_input.py,sha256=wSNiYAx2xYPtl09Dfh_uHws9WG2dRqkS0Jnlm9HvD3s,3145
222
239
  zrb/runner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
223
240
  zrb/runner/cli.py,sha256=G_ILZCFzpV-kRE3dm1kq6BorB51TLJ34Qmhgy5SIMlU,6734
224
241
  zrb/runner/common_util.py,sha256=mjEBSmfdY2Sun2U5-8y8gGwF82OiRM8sgiYDOdW9NA4,1338
@@ -245,8 +262,8 @@ zrb/runner/web_route/node_page/node_page_route.py,sha256=LYi60eZ5ZGgykTIeSQk5Hn9
245
262
  zrb/runner/web_route/node_page/task/partial/input.html,sha256=X2jy0q7TLQGP853exZMed0lqPezL3gzn6mnhB5QKfkc,178
246
263
  zrb/runner/web_route/node_page/task/show_task_page.py,sha256=0HIFEuy5DLOKqff4Wib5WaMe5Om0B4C7BH63pPIA-OU,2639
247
264
  zrb/runner/web_route/node_page/task/view.html,sha256=T6kXNYKGhHsY5A74vQt_tj68WrULmPRaSuMqI1ygD1o,3605
248
- zrb/runner/web_route/refresh_token_api_route.py,sha256=JOuzhQUtRA62w3l27mq-jXgpaV7Rbj20jzxpQacssio,1478
249
- zrb/runner/web_route/static/refresh-token.template.js,sha256=v_nF7nU1AXp-KtsHNNzamhciEi7NCSTPEDT5hCxn29g,735
265
+ zrb/runner/web_route/refresh_token_api_route.py,sha256=QGulCGN2vhDXuf-U4bPSJjbTcz40ixP8937hSOiy_Mo,1478
266
+ zrb/runner/web_route/static/refresh-token.template.js,sha256=AWXhdxTMyuzBZoMftH7BjlU2CMIafwqWcbkZoiUEE50,1074
250
267
  zrb/runner/web_route/static/resources/common.css,sha256=u5rGLsPx2943z324iQ2X81krM3z-kc-8e1SkBdYAvKU,157
251
268
  zrb/runner/web_route/static/resources/favicon-32x32.png,sha256=yu9AIU4k_qD4YHpul6XwJgOxIbmu0thv9ymm2QOsrAk,1456
252
269
  zrb/runner/web_route/static/resources/login/event.js,sha256=1-NxaUwU-X7Tu2RAwVkzU7gngS0OdooH7Ple4_KDrh4,1135
@@ -256,7 +273,7 @@ zrb/runner/web_route/static/resources/session/common-util.js,sha256=t7_s5DXgMyZl
256
273
  zrb/runner/web_route/static/resources/session/current-session.js,sha256=kAYHoSVjtQ4XA5yfXocKFVjOmYihQoIHTW0pHx22sPg,7010
257
274
  zrb/runner/web_route/static/resources/session/event.js,sha256=X5OlSHefK0SDB9VkFCRyBKE_Pb7mqM319mW9jRGoDOk,4716
258
275
  zrb/runner/web_route/static/resources/session/past-session.js,sha256=RwGJYKSp75K8NZ-iZP58XppWgdzkiKFaiC5wgcMLxDo,5470
259
- zrb/runner/web_route/static/static_route.py,sha256=7x069VfACZLkLykY0vLL5t13jIQPgkeEJtkpbfNQfLg,1540
276
+ zrb/runner/web_route/static/static_route.py,sha256=BxFXIhKqkPtSBVkuf6Uho8yLph_EqDTLTVB0KG2-Pbo,1539
260
277
  zrb/runner/web_route/task_input_api_route.py,sha256=xkZ36vmHXMPj0ekp6ocUysO0QUgl1PLaSHt3YL_OfK8,1749
261
278
  zrb/runner/web_route/task_session_api_route.py,sha256=RJJ_GVH3RkGrVe906ZIMaucXI-eTPdn2blI9zgs2JR0,5945
262
279
  zrb/runner/web_schema/session.py,sha256=NwbuS2Sv-CXO52nU-EZv8OMlD4vgCQWNeLC_dT0FK7I,92
@@ -313,8 +330,7 @@ zrb/util/file.py,sha256=mgNobIKCr0eIQUlg6W2Yg1fvg943VyuOUF8WMFpJA5A,859
313
330
  zrb/util/git.py,sha256=TShnMxPAk20Tglp25d_XPVZX-q0mvKeqdprVMeXQ5f0,4787
314
331
  zrb/util/git_subtree.py,sha256=zyWl0aUEZJyUJKjfw1uglozB4R1kF9pWtfKjhu8DN44,2658
315
332
  zrb/util/group.py,sha256=Bg7HrSycoK110U5s_Tca6-uUQuZ5CMgb8wxZSrvDQ98,2790
316
- zrb/util/llm/tool.py,sha256=NkENrUlGxcqqU7jzHAH7DBXNcm_ndEo2dFnJ5nhvWmk,2991
317
- zrb/util/load.py,sha256=i8_83ApWJXlZlbFMNfEptrOzfXdvtaIhAErsd6tU9y8,1649
333
+ zrb/util/load.py,sha256=m0e5DVLV7_RON6AZdjkquPym6BBrvYBbDMrllV44Y_k,1993
318
334
  zrb/util/run.py,sha256=DGHUP9x1Q8V8UF3FbpmjLGuhVVCCLfjTH2teT8qXlNI,207
319
335
  zrb/util/string/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
320
336
  zrb/util/string/conversion.py,sha256=636sfF1a3_bpzXNw5bdSzbJzwakyAoo70KT3_ItgZEo,4333
@@ -323,7 +339,7 @@ zrb/util/string/name.py,sha256=8picJfUBXNpdh64GNaHv3om23QHhUZux7DguFLrXHp8,1163
323
339
  zrb/util/todo.py,sha256=1nDdwPc22oFoK_1ZTXyf3638Bg6sqE2yp_U4_-frHoc,16015
324
340
  zrb/xcom/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
325
341
  zrb/xcom/xcom.py,sha256=o79rxR9wphnShrcIushA0Qt71d_p3ZTxjNf7x9hJB78,1571
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,,
342
+ zrb-1.2.0.dist-info/METADATA,sha256=DlgVxKkUzjjMmqfdqv1h2jqlZGprsQGYraHstWCkEU4,4307
343
+ zrb-1.2.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
344
+ zrb-1.2.0.dist-info/entry_points.txt,sha256=-Pg3ElWPfnaSM-XvXqCxEAa-wfVI6BEgcs386s8C8v8,46
345
+ zrb-1.2.0.dist-info/RECORD,,
zrb/util/llm/tool.py DELETED
@@ -1,87 +0,0 @@
1
- import inspect
2
- from collections.abc import Callable
3
- from typing import Annotated, Any, Literal, get_type_hints
4
-
5
-
6
- def callable_to_tool_schema(callable_obj: Callable) -> dict[str, Any]:
7
- """
8
- Convert a callable into a tool schema dictionary by deriving the parameter schema.
9
-
10
- :param callable_obj: The callable object (e.g., a function).
11
- :return: A dictionary representing the tool schema.
12
- """
13
- if not callable(callable_obj):
14
- raise ValueError("Provided object is not callable")
15
- # Derive name and description
16
- name = callable_obj.__name__
17
- description = (callable_obj.__doc__ or "").strip()
18
- # Get function signature
19
- sig = inspect.signature(callable_obj)
20
- hints = get_type_hints(callable_obj)
21
- # Build parameter schema
22
- param_schema = {"type": "object", "properties": {}, "required": []}
23
- for param_name, param in sig.parameters.items():
24
- # Get the type hint or default to str
25
- param_type = hints.get(param_name, str)
26
-
27
- # Handle annotated types (e.g., Annotated[str, "description"])
28
- json_type, param_metadata = _process_type_annotation(param_type)
29
- param_schema["properties"][param_name] = param_metadata
30
-
31
- # Mark required parameters
32
- if param.default is inspect.Parameter.empty:
33
- param_schema["required"].append(param_name)
34
- return {
35
- "type": "function",
36
- "function": {
37
- "name": name,
38
- "description": description,
39
- "parameters": param_schema,
40
- },
41
- }
42
-
43
-
44
- def _process_type_annotation(py_type: Any) -> tuple[str, dict]:
45
- """
46
- Process type annotations and return the JSON Schema type and metadata.
47
-
48
- :param py_type: The type annotation.
49
- :return: A tuple of (JSON type, parameter metadata).
50
- """
51
- if hasattr(py_type, "__origin__") and py_type.__origin__ is Literal:
52
- # Handle Literal (enum)
53
- enum_values = list(py_type.__args__)
54
- return "string", {"type": "string", "enum": enum_values}
55
-
56
- if hasattr(py_type, "__origin__") and py_type.__origin__ is Annotated:
57
- # Handle Annotated types
58
- base_type = py_type.__args__[0]
59
- description = py_type.__args__[1]
60
- json_type = _python_type_to_json_type(base_type)
61
- return json_type, {"type": json_type, "description": description}
62
-
63
- # Fallback to basic type conversion
64
- json_type = _python_type_to_json_type(py_type)
65
- return json_type, {"type": json_type}
66
-
67
-
68
- def _python_type_to_json_type(py_type):
69
- """
70
- Map Python types to JSON Schema types.
71
- """
72
- if py_type is str:
73
- return "string"
74
- elif py_type is int:
75
- return "integer"
76
- elif py_type is float:
77
- return "number"
78
- elif py_type is bool:
79
- return "boolean"
80
- elif py_type is list:
81
- return "array"
82
- elif py_type is dict:
83
- return "object"
84
- elif py_type in {None, type(None)}:
85
- return "null"
86
- else:
87
- return "string" # Default to string for unsupported types