zrb 1.0.0b5__py3-none-any.whl → 1.0.0b7__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 (28) hide show
  1. zrb/builtin/__init__.py +2 -0
  2. zrb/builtin/llm/tool/rag.py +6 -8
  3. zrb/builtin/project/add/fastapp/fastapp_task.py +3 -3
  4. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_task.py +80 -1
  5. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_task.py +3 -3
  6. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/my_module/service/my_entity/my_entity_service.py +11 -13
  7. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_task.py +3 -3
  8. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service.py +11 -13
  9. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service.py +20 -18
  10. zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service.py +24 -14
  11. zrb/builtin/setup/tmux/tmux.py +1 -1
  12. zrb/builtin/setup/zsh/zsh.py +55 -0
  13. zrb/builtin/setup/zsh/zsh_config.sh +133 -0
  14. zrb/builtin/setup/zsh/zsh_helper.py +13 -0
  15. zrb/config.py +4 -2
  16. zrb/context/any_context.py +2 -0
  17. zrb/context/context.py +7 -5
  18. zrb/runner/web_route/static/resources/session/current-session.js +19 -12
  19. zrb/task/cmd_task.py +11 -1
  20. zrb/task/llm_task.py +0 -2
  21. zrb/task/rsync_task.py +6 -4
  22. zrb/util/cmd/command.py +25 -3
  23. zrb/util/git.py +9 -9
  24. zrb/util/git_subtree.py +3 -3
  25. {zrb-1.0.0b5.dist-info → zrb-1.0.0b7.dist-info}/METADATA +2 -1
  26. {zrb-1.0.0b5.dist-info → zrb-1.0.0b7.dist-info}/RECORD +28 -25
  27. {zrb-1.0.0b5.dist-info → zrb-1.0.0b7.dist-info}/WHEEL +0 -0
  28. {zrb-1.0.0b5.dist-info → zrb-1.0.0b7.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,13 @@
1
+ from zrb.context.any_context import AnyContext
2
+
3
+
4
+ def get_install_zsh_cmd(ctx: AnyContext) -> str:
5
+ package_manager: str = ctx.input["package-manager"]
6
+ if package_manager == "pacman":
7
+ cmd = f"{package_manager} -S zsh"
8
+ else:
9
+ cmd = f"{package_manager} install zsh"
10
+ use_sudo: bool = ctx.input["use-sudo"]
11
+ if use_sudo:
12
+ return f"sudo {cmd}"
13
+ return cmd
zrb/config.py CHANGED
@@ -47,7 +47,6 @@ INIT_SCRIPTS = (
47
47
  )
48
48
  LOGGING_LEVEL = _get_log_level(os.getenv("ZRB_LOGGING_LEVEL", "WARNING"))
49
49
  LOAD_BUILTIN = to_boolean(os.getenv("ZRB_LOAD_BUILTIN", "1"))
50
- SHOW_TIME = to_boolean(os.getenv("ZRB_SHOW_TIME", "1"))
51
50
  WARN_UNRECOMMENDED_COMMAND = to_boolean(
52
51
  os.getenv("ZRB_WARN_UNRECOMMENDED_COMMAND", "1")
53
52
  )
@@ -95,7 +94,10 @@ LLM_HISTORY_FILE = os.getenv(
95
94
  )
96
95
  LLM_ALLOW_ACCESS_SHELL = to_boolean(os.getenv("ZRB_LLM_ACCESS_FILE", "1"))
97
96
  LLM_ALLOW_ACCESS_INTERNET = to_boolean(os.getenv("ZRB_LLM_ACCESS_INTERNET", "1"))
98
- RAG_EMBEDDING_MODEL = os.getenv("ZRB_RAG_EMBEDDING_MODEL", "ollama/nomic-embed-text")
97
+ # noqa See: https://qdrant.github.io/fastembed/examples/Supported_Models/#supported-text-embedding-models
98
+ RAG_EMBEDDING_MODEL = os.getenv(
99
+ "ZRB_RAG_EMBEDDING_MODEL", "nomic-ai/nomic-embed-text-v1.5-Q"
100
+ )
99
101
  RAG_CHUNK_SIZE = int(os.getenv("ZRB_RAG_CHUNK_SIZE", "1024"))
100
102
  RAG_OVERLAP = int(os.getenv("ZRB_RAG_OVERLAP", "128"))
101
103
  RAG_MAX_RESULT_COUNT = int(os.getenv("ZRB_RAG_MAX_RESULT_COUNT", "5"))
@@ -43,6 +43,7 @@ class AnyContext(AnySharedContext):
43
43
  end: str | None = "\n",
44
44
  file: TextIO | None = sys.stderr,
45
45
  flush: bool = True,
46
+ plain: bool = False,
46
47
  ):
47
48
  """Prints values to the specified output stream.
48
49
 
@@ -52,6 +53,7 @@ class AnyContext(AnySharedContext):
52
53
  end (str, optional): String appended after the last value. Defaults to a newline.
53
54
  file (TextIO, optional): The output stream to print to. Defaults to sys.stderr.
54
55
  flush (bool, optional): Whether to flush the output stream. Defaults to True.
56
+ plain (bool, optional): Whether to use plain text. Defaults to False.
55
57
  """
56
58
  pass
57
59
 
zrb/context/context.py CHANGED
@@ -3,7 +3,6 @@ import logging
3
3
  import sys
4
4
  from typing import Any, TextIO
5
5
 
6
- from zrb.config import SHOW_TIME
7
6
  from zrb.context.any_context import AnyContext
8
7
  from zrb.context.any_shared_context import AnySharedContext
9
8
  from zrb.dot_dict.dot_dict import DotDict
@@ -101,7 +100,13 @@ class Context(AnyContext):
101
100
  end: str | None = "\n",
102
101
  file: TextIO | None = sys.stderr,
103
102
  flush: bool = True,
103
+ plain: bool = False,
104
104
  ):
105
+ message = sep.join([f"{value}" for value in values])
106
+ if plain:
107
+ self.append_to_shared_log(remove_style(message))
108
+ print(message, sep=sep, end=end, file=file, flush=flush)
109
+ return
105
110
  color = self._color
106
111
  icon = self._icon
107
112
  max_name_length = max(len(name) + len(icon) for name in self.session.task_names)
@@ -112,11 +117,8 @@ class Context(AnyContext):
112
117
  else:
113
118
  attempt_status = f"{self._attempt}/{self._max_attempt}".ljust(5)
114
119
  now = datetime.datetime.now()
115
- formatted_time = (
116
- now.strftime("%y%m%d %H:%M:%S.%f")[:19] + " " if SHOW_TIME else ""
117
- )
120
+ formatted_time = now.strftime("%y%m%d %H:%M:%S.%f")[:19] + " "
118
121
  prefix = f"{formatted_time}{attempt_status} {padded_styled_task_name} ⬤ "
119
- message = sep.join([f"{value}" for value in values])
120
122
  self.append_to_shared_log(remove_style(f"{prefix} {message}"))
121
123
  stylized_prefix = stylize(prefix, color=color)
122
124
  print(f"{stylized_prefix} {message}", sep=sep, end=end, file=file, flush=flush)
@@ -65,14 +65,18 @@ const CURRENT_SESSION = {
65
65
  showCurrentSession(allTaskStatus, finished) {
66
66
  const taskNames = Object.keys(allTaskStatus);
67
67
  const now = Date.now();
68
+ const barHeight = 30;
69
+ const gap = 40;
68
70
 
69
71
  // Set up canvas context
70
72
  const canvas = document.getElementById("history-canvas");
71
- canvas.height = taskNames.length * 50 + 10;
73
+ canvas.height = taskNames.length * (barHeight + gap) + 10;
72
74
  const ctx = canvas.getContext("2d");
73
75
  ctx.clearRect(0, 0, canvas.width, canvas.height);
74
76
  ctx.fillStyle = "#EEE";
75
77
  ctx.fillRect(0, 0, canvas.width, canvas.height);
78
+ ctx.textBaseline = "top";
79
+ ctx.imageSmoothingEnabled = true;
76
80
 
77
81
  // Calculate start and end times
78
82
  let minDateTime = null;
@@ -102,8 +106,6 @@ const CURRENT_SESSION = {
102
106
  }
103
107
  // Canvas settings
104
108
  const chartWidth = canvas.width;
105
- const barHeight = 20;
106
- const gap = 10;
107
109
  const timeScale = (chartWidth - 200) / (maxDateTime - minDateTime);
108
110
 
109
111
  // Draw labels and bars
@@ -118,13 +120,13 @@ const CURRENT_SESSION = {
118
120
  const endDateTime = this.getTaskEndDateTime(allTaskStatus[taskName], now);
119
121
  const startX = 100 + (startDateTime - minDateTime) * timeScale;
120
122
  const barWidth = (endDateTime - startDateTime) * timeScale;
121
- const startY = index * (barHeight + gap + 20) + 5;
123
+ const startY = index * (barHeight + gap) + 5;
122
124
 
123
125
  // Draw task label
124
126
  ctx.fillStyle = "#000";
125
- ctx.font = "12px Arial";
127
+ ctx.font = "10px Arial";
126
128
  ctx.textAlign = "right";
127
- ctx.fillText(taskName, 90, startY + barHeight / 1.5);
129
+ ctx.fillText(taskName, 90, startY + barHeight - 0.5 * barHeight);
128
130
 
129
131
  // Draw task bar
130
132
  ctx.fillStyle = UTIL.getFinalColor(finalStatus);
@@ -145,14 +147,19 @@ const CURRENT_SESSION = {
145
147
  }
146
148
  }
147
149
  // Draw start and end time below the bar
148
- for (let statusStartX in labels) {
150
+ let sortedStartX = Object.keys(labels).sort((a, b) => a - b);
151
+ let offsetY = 0;
152
+ for (let statusStartX of sortedStartX) {
149
153
  const {dateTime, caption} = labels[statusStartX];
150
- const [dateStr, timeStr] = dateTime.toISOString().split("T");
154
+ const timeStr = dateTime.toISOString().split("T")[1].split(".")[0];
151
155
  ctx.font = "10px Arial";
152
- ctx.fillText(caption, statusStartX, startY + 10);
153
- ctx.font = "8px Arial";
154
- ctx.fillText(dateStr, statusStartX, startY + barHeight + 10);
155
- ctx.fillText(timeStr, statusStartX, startY + barHeight + 20);
156
+ ctx.fillText(caption, statusStartX, startY + offsetY);
157
+ ctx.font = "10px Arial";
158
+ ctx.fillText(timeStr, statusStartX, startY + barHeight + offsetY);
159
+ offsetY += 10
160
+ if (offsetY >= barHeight) {
161
+ offsetY = 0;
162
+ }
156
163
  }
157
164
  });
158
165
  },
zrb/task/cmd_task.py CHANGED
@@ -1,4 +1,5 @@
1
1
  import os
2
+ from functools import partial
2
3
 
3
4
  from zrb.attr.type import BoolAttr, IntAttr, StrAttr
4
5
  from zrb.cmd.cmd_result import CmdResult
@@ -12,6 +13,7 @@ from zrb.task.base_task import BaseTask
12
13
  from zrb.util.attr import get_int_attr, get_str_attr
13
14
  from zrb.util.cmd.command import check_unrecommended_commands, run_command
14
15
  from zrb.util.cmd.remote import get_remote_cmd_script
16
+ from zrb.xcom.xcom import Xcom
15
17
 
16
18
 
17
19
  class CmdTask(BaseTask):
@@ -42,6 +44,7 @@ class CmdTask(BaseTask):
42
44
  render_cmd: bool = True,
43
45
  cwd: str | None = None,
44
46
  render_cwd: bool = True,
47
+ plain_print: bool = False,
45
48
  warn_unrecommended_command: bool | None = None,
46
49
  max_output_line: int = 1000,
47
50
  max_error_line: int = 1000,
@@ -99,6 +102,7 @@ class CmdTask(BaseTask):
99
102
  self._render_cwd = render_cwd
100
103
  self._max_output_line = max_output_line
101
104
  self._max_error_line = max_error_line
105
+ self._should_plain_print = plain_print
102
106
  self._should_warn_unrecommended_command = warn_unrecommended_command
103
107
 
104
108
  async def _exec_action(self, ctx: AnyContext) -> CmdResult:
@@ -122,11 +126,17 @@ class CmdTask(BaseTask):
122
126
  if self._get_should_warn_unrecommended_commands():
123
127
  self._check_unrecommended_commands(ctx, shell, cmd_script)
124
128
  ctx.log_info("Running script")
129
+ log_method = (
130
+ partial(ctx.print, plain=True) if self._should_plain_print else ctx.print
131
+ )
132
+ xcom_pid_key = f"{self.name}-pid"
133
+ ctx.xcom[xcom_pid_key] = Xcom([])
125
134
  cmd_result, return_code = await run_command(
126
135
  cmd=[shell, shell_flag, cmd_script],
127
136
  cwd=cwd,
128
137
  env_map=env_map,
129
- log_method=ctx.print,
138
+ print_method=log_method,
139
+ register_pid_method=lambda pid: ctx.xcom.get(xcom_pid_key).push(pid),
130
140
  max_output_line=self._max_output_line,
131
141
  max_error_line=self._max_error_line,
132
142
  )
zrb/task/llm_task.py CHANGED
@@ -154,8 +154,6 @@ class LLMTask(BaseTask):
154
154
  tool if isinstance(tool, Tool) else Tool(tool, takes_ctx=False)
155
155
  for tool in tools_or_callables
156
156
  ]
157
- for tool in tools:
158
- print("tool", tool)
159
157
  return Agent(
160
158
  self._get_model(ctx),
161
159
  system_prompt=self._get_system_prompt(ctx),
zrb/task/rsync_task.py CHANGED
@@ -22,7 +22,7 @@ class RsyncTask(CmdTask):
22
22
  shell: StrAttr | None = None,
23
23
  auto_render_shell: bool = True,
24
24
  remote_host: StrAttr | None = None,
25
- auto_render_remote_host: bool = True,
25
+ render_remote_host: bool = True,
26
26
  remote_port: IntAttr | None = None,
27
27
  render_remote_port: bool = True,
28
28
  remote_user: StrAttr | None = None,
@@ -40,7 +40,8 @@ class RsyncTask(CmdTask):
40
40
  local_destination_path: StrAttr | None = None,
41
41
  render_local_destination_path: bool = True,
42
42
  cwd: str | None = None,
43
- auto_render_cwd: bool = True,
43
+ render_cwd: bool = True,
44
+ plain_print: bool = False,
44
45
  max_output_line: int = 1000,
45
46
  max_error_line: int = 1000,
46
47
  execute_condition: bool | str | Callable[[AnyContext], bool] = True,
@@ -62,7 +63,7 @@ class RsyncTask(CmdTask):
62
63
  shell=shell,
63
64
  render_shell=auto_render_shell,
64
65
  remote_host=remote_host,
65
- render_remote_host=auto_render_remote_host,
66
+ render_remote_host=render_remote_host,
66
67
  remote_port=remote_port,
67
68
  auto_render_remote_port=render_remote_port,
68
69
  remote_user=remote_user,
@@ -72,7 +73,8 @@ class RsyncTask(CmdTask):
72
73
  remote_ssh_key=remote_ssh_key,
73
74
  render_remote_ssh_key=render_remote_ssh_key,
74
75
  cwd=cwd,
75
- render_cwd=auto_render_cwd,
76
+ render_cwd=render_cwd,
77
+ plain_print=plain_print,
76
78
  max_output_line=max_output_line,
77
79
  max_error_line=max_error_line,
78
80
  execute_condition=execute_condition,
zrb/util/cmd/command.py CHANGED
@@ -1,11 +1,27 @@
1
1
  import asyncio
2
2
  import os
3
3
  import re
4
+ import signal
4
5
  import sys
5
6
  from collections.abc import Callable
6
7
 
7
8
  from zrb.cmd.cmd_result import CmdResult
8
9
 
10
+ _RUNNING_PROCESSES = []
11
+
12
+
13
+ def _cleanup_processes():
14
+ """Terminate all running subprocesses on exit."""
15
+ for process in _RUNNING_PROCESSES:
16
+ if process.returncode is None:
17
+ process.terminate()
18
+ process.kill()
19
+
20
+
21
+ # Register a single cleanup function once
22
+ signal.signal(signal.SIGINT, lambda sig, frame: _cleanup_processes())
23
+ signal.signal(signal.SIGTERM, lambda sig, frame: _cleanup_processes())
24
+
9
25
 
10
26
  def check_unrecommended_commands(cmd_script: str) -> dict[str, str]:
11
27
  banned_commands = {
@@ -43,7 +59,8 @@ async def run_command(
43
59
  cmd: list[str],
44
60
  cwd: str | None = None,
45
61
  env_map: dict[str, str] | None = None,
46
- log_method: Callable[..., None] = print,
62
+ print_method: Callable[..., None] | None = None,
63
+ register_pid_method: Callable[[int], None] | None = None,
47
64
  max_output_line: int = 1000,
48
65
  max_error_line: int = 1000,
49
66
  ) -> tuple[CmdResult, int]:
@@ -62,6 +79,7 @@ async def run_command(
62
79
  log_method(line)
63
80
  return "\n".join(lines)
64
81
 
82
+ actual_print_method = print_method if print_method is not None else print
65
83
  cmd_process = None
66
84
  try:
67
85
  if cwd is None:
@@ -77,11 +95,13 @@ async def run_command(
77
95
  env=env_map,
78
96
  bufsize=0,
79
97
  )
98
+ if register_pid_method is not None:
99
+ register_pid_method(cmd_process.pid)
80
100
  stdout_task = asyncio.create_task(
81
- __read_stream(cmd_process.stdout, log_method, max_output_line)
101
+ __read_stream(cmd_process.stdout, actual_print_method, max_output_line)
82
102
  )
83
103
  stderr_task = asyncio.create_task(
84
- __read_stream(cmd_process.stderr, log_method, max_error_line)
104
+ __read_stream(cmd_process.stderr, actual_print_method, max_error_line)
85
105
  )
86
106
  # Wait for process to complete and gather stdout/stderr
87
107
  return_code = await cmd_process.wait()
@@ -89,5 +109,7 @@ async def run_command(
89
109
  stderr = await stderr_task
90
110
  return CmdResult(stdout, stderr), return_code
91
111
  finally:
112
+ if cmd_process in _RUNNING_PROCESSES:
113
+ _RUNNING_PROCESSES.remove(cmd_process)
92
114
  if cmd_process is not None and cmd_process.returncode is None:
93
115
  cmd_process.terminate()
zrb/util/git.py CHANGED
@@ -22,7 +22,7 @@ async def get_diff(
22
22
  cmd_result, exit_code = await run_command(
23
23
  cmd=["git", "diff", source_commit, current_commit],
24
24
  cwd=repo_dir,
25
- log_method=log_method,
25
+ print_method=log_method,
26
26
  )
27
27
  if exit_code != 0:
28
28
  raise Exception(f"Non zero exit code: {exit_code}")
@@ -57,7 +57,7 @@ async def get_diff(
57
57
  async def get_repo_dir(log_method: Callable[..., Any] = print) -> str:
58
58
  cmd_result, exit_code = await run_command(
59
59
  cmd=["git", "rev-parse", "--show-toplevel"],
60
- log_method=log_method,
60
+ print_method=log_method,
61
61
  )
62
62
  if exit_code != 0:
63
63
  raise Exception(f"Non zero exit code: {exit_code}")
@@ -70,7 +70,7 @@ async def get_current_branch(
70
70
  cmd_result, exit_code = await run_command(
71
71
  cmd=["git", "rev-parse", "--abbrev-ref", "HEAD"],
72
72
  cwd=repo_dir,
73
- log_method=log_method,
73
+ print_method=log_method,
74
74
  )
75
75
  if exit_code != 0:
76
76
  raise Exception(f"Non zero exit code: {exit_code}")
@@ -83,7 +83,7 @@ async def get_branches(
83
83
  cmd_result, exit_code = await run_command(
84
84
  cmd=["git", "rev-parse", "--abbrev-ref", "HEAD"],
85
85
  cwd=repo_dir,
86
- log_method=log_method,
86
+ print_method=log_method,
87
87
  )
88
88
  if exit_code != 0:
89
89
  raise Exception(f"Non zero exit code: {exit_code}")
@@ -98,7 +98,7 @@ async def delete_branch(
98
98
  cmd_result, exit_code = await run_command(
99
99
  cmd=["git", "branch", "-D", branch_name],
100
100
  cwd=repo_dir,
101
- log_method=log_method,
101
+ print_method=log_method,
102
102
  )
103
103
  if exit_code != 0:
104
104
  raise Exception(f"Non zero exit code: {exit_code}")
@@ -109,7 +109,7 @@ async def add(repo_dir: str, log_method: Callable[..., Any] = print):
109
109
  _, exit_code = await run_command(
110
110
  cmd=["git", "add", ".", "-A"],
111
111
  cwd=repo_dir,
112
- log_method=log_method,
112
+ print_method=log_method,
113
113
  )
114
114
  if exit_code != 0:
115
115
  raise Exception(f"Non zero exit code: {exit_code}")
@@ -121,7 +121,7 @@ async def commit(
121
121
  cmd_result, exit_code = await run_command(
122
122
  cmd=["git", "commit", "-m", message],
123
123
  cwd=repo_dir,
124
- log_method=log_method,
124
+ print_method=log_method,
125
125
  )
126
126
  if exit_code != 0:
127
127
  ignored_error_message = "nothing to commit, working tree clean"
@@ -138,7 +138,7 @@ async def pull(
138
138
  _, exit_code = await run_command(
139
139
  cmd=["git", "pull", remote, branch],
140
140
  cwd=repo_dir,
141
- log_method=log_method,
141
+ print_method=log_method,
142
142
  )
143
143
  if exit_code != 0:
144
144
  raise Exception(f"Non zero exit code: {exit_code}")
@@ -150,7 +150,7 @@ async def push(
150
150
  _, exit_code = await run_command(
151
151
  cmd=["git", "push", "-u", remote, branch],
152
152
  cwd=repo_dir,
153
- log_method=log_method,
153
+ print_method=log_method,
154
154
  )
155
155
  if exit_code != 0:
156
156
  raise Exception(f"Non zero exit code: {exit_code}")
zrb/util/git_subtree.py CHANGED
@@ -54,7 +54,7 @@ async def add_subtree(
54
54
  branch,
55
55
  ],
56
56
  cwd=repo_dir,
57
- log_method=log_method,
57
+ print_method=log_method,
58
58
  )
59
59
  if exit_code != 0:
60
60
  raise Exception(f"Non zero exit code: {exit_code}")
@@ -82,7 +82,7 @@ async def pull_subtree(
82
82
  branch,
83
83
  ],
84
84
  cwd=repo_dir,
85
- log_method=log_method,
85
+ print_method=log_method,
86
86
  )
87
87
  if exit_code != 0:
88
88
  raise Exception(f"Non zero exit code: {exit_code}")
@@ -106,7 +106,7 @@ async def push_subtree(
106
106
  branch,
107
107
  ],
108
108
  cwd=repo_dir,
109
- log_method=log_method,
109
+ print_method=log_method,
110
110
  )
111
111
  if exit_code != 0:
112
112
  raise Exception(f"Non zero exit code: {exit_code}")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: zrb
3
- Version: 1.0.0b5
3
+ Version: 1.0.0b7
4
4
  Summary: Your Automation Powerhouse
5
5
  Home-page: https://github.com/state-alchemists/zrb
6
6
  License: AGPL-3.0-or-later
@@ -19,6 +19,7 @@ Requires-Dist: beautifulsoup4 (>=4.12.3,<5.0.0)
19
19
  Requires-Dist: black (>=24.10.0,<24.11.0)
20
20
  Requires-Dist: chromadb (>=0.5.20,<0.6.0) ; extra == "rag"
21
21
  Requires-Dist: fastapi[standard] (>=0.115.6,<0.116.0)
22
+ Requires-Dist: fastembed (>=0.5.1,<0.6.0)
22
23
  Requires-Dist: isort (>=5.13.2,<5.14.0)
23
24
  Requires-Dist: libcst (>=1.5.0,<2.0.0)
24
25
  Requires-Dist: pdfplumber (>=0.11.4,<0.12.0) ; extra == "rag"
@@ -2,7 +2,7 @@ zrb/__init__.py,sha256=JYLyBeSv-FP2iVKgsXJH8Ae-Cmjp5nmmIiwqayhCOEE,2964
2
2
  zrb/__main__.py,sha256=TnWp9Z3uuNb_6uf5FT1fcwh6BLZwGCAJB4R9NxnFLNs,748
3
3
  zrb/attr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  zrb/attr/type.py,sha256=4TV5gPYMMrKh5V-yB6iRYKCbsXAH_AvGXMsjxKLHcUs,568
5
- zrb/builtin/__init__.py,sha256=m8Cw6v8v5ANEoIlQXaeMKAHqg_J1LyhzovANRd9UbD8,1861
5
+ zrb/builtin/__init__.py,sha256=oXG4Zm_rIp3G81Y7hiSe38jeS2sGZAnADoP_yxxhYEc,1926
6
6
  zrb/builtin/base64.py,sha256=1YnSwASp7OEAvQcsnHZGpJEvYoI1Z2zTIJ1bCDHfcPQ,921
7
7
  zrb/builtin/git.py,sha256=xHzg0srhp1uOSXWvwA--Fo8idkt0G9010iJ8uIndzg4,5463
8
8
  zrb/builtin/git_subtree.py,sha256=GwI8befmvXEoX1xyZ4jkeG8nsyCkuRG1lzPiGss3yqw,3493
@@ -11,21 +11,21 @@ zrb/builtin/llm/llm_chat.py,sha256=vUUchYKJuHr-N_HarpKRFsV0EdQDAFZzAfbK4C0vx88,4
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
14
- zrb/builtin/llm/tool/rag.py,sha256=jJRLERW6824JeEzEQ_OqLMaaa3mjuNqsRcRWoL1wVx0,5192
14
+ zrb/builtin/llm/tool/rag.py,sha256=PawaLZL-ThctxtBtsQuP3XsgTxQKyCGFqrudCANPJKk,5162
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
18
  zrb/builtin/project/add/fastapp/fastapp_input.py,sha256=fYD6n8-PlrTyz1Kq5GYAt0PQsyUp2qsPKRJ68hINSXE,314
19
- zrb/builtin/project/add/fastapp/fastapp_task.py,sha256=XuyQVuaaNRPQftisSpWMFmKFXpEi4HngKW62aRgz3KQ,2644
19
+ zrb/builtin/project/add/fastapp/fastapp_task.py,sha256=m48ENwROECcAVzmianijcI2Ct4t9BhPyPjfxTbS3Zy0,2635
20
20
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.flake8,sha256=fgvHmuskgYiCvHZHaFtiyOWW0zasVrs0P-sFHOq3W5U,56
21
21
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.gitignore,sha256=1BMFpr_M5OyTs-weCZZlVlf85sWikzdbvmKu86YD7G0,28
22
22
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/README.md,sha256=MAo7ZFbg7LLiAfQbXcippMgjJ2-VXMKtiTDEZ3I4AAg,221
23
23
  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=0sPR_pe_oYUevWu0FvMvxTu6lwefsw4YH01vkCBBZsg,391
24
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_task.py,sha256=x7igeeJl8M0vKw9v0VG6zIFk7qAZD2NIH3_uG-VJimY,2868
25
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=483e-dMm6URApCm62d-PD6Z-3NONBRT9X6uRsrNLFDo,6265
26
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_task.py,sha256=l7RAPWZZBHY3Uv6TmbPDuEvF0IwJ_lx3vHz6Cq4tgus,6256
27
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=04H7NWh-xQ6yIBNmoVSNboaE5DGQrDfVX9SMiLJwQus,3996
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
29
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_factory.py,sha256=lnhhpc_AflWnCQbLkYORrshiqIA5wy4SdxDuUxmn7Ts,372
30
30
  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
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_repository.py,sha256=QJmQmeXvkuhpnAFWkATJk7zvr-GY1RSyb5U9bSslFn4,1644
@@ -36,7 +36,7 @@ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/templat
36
36
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/format_task.py,sha256=8YykCthDgjXT8MFvTrPSWYUXsfhafmoSMG9LH2ZiaD0,431
37
37
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/group.py,sha256=S0sKnnABSGy3YzaExH40xJjm4UsEX6AyDE1u94ewk6A,648
38
38
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/input.py,sha256=PYbPwO5odaQDzRIgKkLmLEKOOYs9gQw3q7L-Fakw90Q,1349
39
- zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_task.py,sha256=Ow_l3hDtR8WZLy4cC8NUi9Cdu6zqpfsap81ux_QtD2g,3699
39
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_task.py,sha256=mGD3iHocO3TcmFgrBRHEoOgci3qXmwaSmEpVe7jGjvE,3690
40
40
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_util.py,sha256=2totrFEzt0sEA4U0HHMy5GAsNM-X6uLv9eq8rsrA9XU,7145
41
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
42
42
  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
@@ -85,7 +85,7 @@ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migrati
85
85
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/route.py,sha256=oLKVOCRvupnGmguEO10b7ZE5pXbhTBV8OSZmp_nOkfc,1255
86
86
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
87
87
  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=Mn9i-h74F30V3MmYkBWXaO2BXuVJYEBYSsfP7xle6Ok,4137
88
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service.py,sha256=ro3LOvHNh9VnZwoeOg4T2n1mvXWoiAmOsk15vxvH_2o,4032
89
89
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service_factory.py,sha256=PhAhpLtk9Qz96DsHTMTeHeWilv_L7SVOU-Wfpmg741Y,380
90
90
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_db_repository.py,sha256=dldy05Jx6hJzWJz6YHIXUVUX7LrPrZLSpQQjZ8C_fTQ,728
91
91
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_repository.py,sha256=qpzSQg_opkq0U2bGjShxS8cGX26zncqNPoZsqqHnRfk,1699
@@ -94,13 +94,13 @@ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service
94
94
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_db_repository.py,sha256=CLjMEGE4sJyT4VpURYfqO6nh_lRWmYupfE86pbVDMBE,3152
95
95
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository.py,sha256=LWPNu6kURF3xU2n8mVn4Kfq12rFsZq2vxnh-mgT9SDY,1791
96
96
  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=rOUP9gSYt39a8-jeeyv9uEzh1bheTxu54fRBDJoKTIk,4977
97
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service.py,sha256=gCoWt-N10Sg_sSnSx5AS4m_eDboFlKc8beys28hUkWE,5057
98
98
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service_factory.py,sha256=TqQfx0jXGZmBDR1UYPyys8-I6tDKhqr1yjWpp-ezkDA,305
99
99
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
100
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
101
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository.py,sha256=_mP1VN0TW0TFvzHN6k7uBZt5GST5ueK4G5T6EwXiEsI,2563
102
102
  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=FL-_fz3smPZUKbWYELFfPCjrVv4Xpqi8V4baZJ3zAas,4515
103
+ zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service.py,sha256=KgfHIBHvEVY5V7CNm0Y8BnNQ6sd5UJB_wFq6WMnrBvg,4901
104
104
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service_factory.py,sha256=vyJv-gK4Myo1GH3ZwJm4b2lws35gW04VFW5K8Nw-iCw,305
105
105
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/alembic.ini,sha256=mgQyBAIwdkZZJWLu_FQWPx1FkyaARCNp6-rLqSVvMbA,3723
106
106
  zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/README,sha256=MVlc9TYmr57RbhXET6QxgyCcwWP7w-vLkEsirENqiIQ,38
@@ -155,10 +155,13 @@ zrb/builtin/setup/asdf/asdf.py,sha256=n_dWoyYa7vZ9tBCy8hgxmSWZ-XHltC1R70mIVZQhnX
155
155
  zrb/builtin/setup/asdf/asdf_helper.py,sha256=6jARtyIAE1H82HKVQ84D25RrMAsAip_gD28X9ZlaTCk,1205
156
156
  zrb/builtin/setup/common_input.py,sha256=M8q9Unt7dCfBHTHqV3__Mxk9YC2Pl3DDtxat2BanZCQ,870
157
157
  zrb/builtin/setup/latex/ubuntu.py,sha256=er9wJAT4CpmghIaiIPFb3FvgqAn1aqU5UgX7GHL3FjA,577
158
- zrb/builtin/setup/tmux/tmux.py,sha256=4CswI40w3W6vsNckO7oEYnI7ySAeGhA80FsYzoq6HWQ,1410
158
+ zrb/builtin/setup/tmux/tmux.py,sha256=r7XdEx-AcHiF63uhOqgDuhSq0DR1IK52fHj3ZMtUrZg,1407
159
159
  zrb/builtin/setup/tmux/tmux_config.sh,sha256=wQCb4Q-mNkxIPOcvpN84X9RUWkGY16u3Vd-pOhVidgg,416
160
160
  zrb/builtin/setup/tmux/tmux_helper.py,sha256=M03l0wfL25TzGGp6lnVfX40ayT_x7N2lz-nz2chO7PU,396
161
161
  zrb/builtin/setup/ubuntu.py,sha256=oOSN7Eq7arEpY2i0vWHPR2owio6dqqOvceteYrgmbYw,1019
162
+ zrb/builtin/setup/zsh/zsh.py,sha256=quz3OegZBNNBm_K8IH2DUt9G0Q6XZ6cKsDs_WzHGqjg,1824
163
+ zrb/builtin/setup/zsh/zsh_config.sh,sha256=SRkcXvVT3tdfS1UDT0-dSj2PKXPLohhyakY6tUEQPjc,4764
164
+ zrb/builtin/setup/zsh/zsh_helper.py,sha256=1zF1FH0oEPVAVhMA20tsdk1H0RPMCkLusYX8twsTbGI,393
162
165
  zrb/builtin/shell/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
163
166
  zrb/builtin/shell/autocomplete/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
164
167
  zrb/builtin/shell/autocomplete/bash.py,sha256=-7YDVV7txgJH9mAYSYN0jmvUEeDIzWFvVNY-cY0myF8,1181
@@ -171,14 +174,14 @@ zrb/callback/callback.py,sha256=hKefB_Jd1XGjPSLQdMKDsGLHPzEGO2dqrIArLl_EmD0,848
171
174
  zrb/cmd/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
172
175
  zrb/cmd/cmd_result.py,sha256=L8bQJzWCpcYexIxHBNsXj2pT3BtLmWex0iJSMkvimOA,597
173
176
  zrb/cmd/cmd_val.py,sha256=7Doowyg6BK3ISSGBLt-PmlhzaEkBjWWm51cED6fAUOQ,1014
174
- zrb/config.py,sha256=vBBhSZ5xQV5S_20PQS54ShFgV-ko3Zbzxw23wDDJnbQ,4556
177
+ zrb/config.py,sha256=Kb-GOsUS4poSCds4Wqg9LkscpS7BHXSy3dQmqvsFm2Q,4621
175
178
  zrb/content_transformer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
176
179
  zrb/content_transformer/any_content_transformer.py,sha256=v8ZUbcix1GGeDQwB6OKX_1TjpY__ksxWVeqibwa_iZA,850
177
180
  zrb/content_transformer/content_transformer.py,sha256=YU6Xr3G_IaCWKQGsf9z9YlCclbiwcJ7ytQv3wKpPIiI,2125
178
181
  zrb/context/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
179
- zrb/context/any_context.py,sha256=itd_lCyaPbZvcB_8XDEbvde9yQ7YPRHlOQCxE4hniB4,6251
182
+ zrb/context/any_context.py,sha256=2hgVKbbDwmwrEl1h1L1FaTUjuUYaDd_b7YRGkaorW6Q,6362
180
183
  zrb/context/any_shared_context.py,sha256=p1i9af_CUDz5Mf1h1kBZMAa2AEhf17I3O5IgAcjRLoY,1768
181
- zrb/context/context.py,sha256=RWjluPpNBAZ_qjfza5fP-ScnEsZk2pD5rroYWQSfjAE,6201
184
+ zrb/context/context.py,sha256=qVMqt2tkLEFSI81mLYb_OSD615KH5jP685aUmHEm3XQ,6319
182
185
  zrb/context/shared_context.py,sha256=47Tnnor1ttpwpe_N07rMNM1jgIYPY9abMe1Q5igkMtE,2735
183
186
  zrb/dot_dict/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
184
187
  zrb/dot_dict/dot_dict.py,sha256=ubw_x8I7AOJ59xxtFVJ00VGmq_IYdZP3mUhNlO4nEK0,556
@@ -234,7 +237,7 @@ zrb/runner/web_route/static/resources/login/event.js,sha256=1-NxaUwU-X7Tu2RAwVkz
234
237
  zrb/runner/web_route/static/resources/logout/event.js,sha256=MfZxrTa2yL49Lbh7cCZDdqsIcf9e1q3W8-WjmZXV5pA,692
235
238
  zrb/runner/web_route/static/resources/pico.min.css,sha256=_Esfkjs_U_igYn-tXBUaK3AEKb7d4l9DlmaOiw9bXfI,82214
236
239
  zrb/runner/web_route/static/resources/session/common-util.js,sha256=t7_s5DXgMyZlT8L8LYZTkzOT6vWVeZvmCKjt-bflQY0,2117
237
- zrb/runner/web_route/static/resources/session/current-session.js,sha256=GlRBLwItCwITqVR_hUQFr6W1myD9WRl8R_TTbrzCovw,6739
240
+ zrb/runner/web_route/static/resources/session/current-session.js,sha256=kAYHoSVjtQ4XA5yfXocKFVjOmYihQoIHTW0pHx22sPg,7010
238
241
  zrb/runner/web_route/static/resources/session/event.js,sha256=X5OlSHefK0SDB9VkFCRyBKE_Pb7mqM319mW9jRGoDOk,4716
239
242
  zrb/runner/web_route/static/resources/session/past-session.js,sha256=RwGJYKSp75K8NZ-iZP58XppWgdzkiKFaiC5wgcMLxDo,5470
240
243
  zrb/runner/web_route/static/static_route.py,sha256=7x069VfACZLkLykY0vLL5t13jIQPgkeEJtkpbfNQfLg,1540
@@ -260,11 +263,11 @@ zrb/task/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
260
263
  zrb/task/any_task.py,sha256=9rCdKe-Sayr34Han9AsbhRxFpkbk6Rteg1DOyETulwQ,4917
261
264
  zrb/task/base_task.py,sha256=ImA0ReyB6neVUfY4nKLnL0h2EMGIJ9wvvNvIAN92-RE,21194
262
265
  zrb/task/base_trigger.py,sha256=jC722rDvodaBLeNaFghkTyv1u0QXrK6BLZUUqcmBJ7Q,4581
263
- zrb/task/cmd_task.py,sha256=JpClYoEmJTqKSxhuCErXd2kHLS3Hk2zXeYnl7entNeU,10378
266
+ zrb/task/cmd_task.py,sha256=lg9Dkb0wwjo-F1F6gsH-RqNdndfQAwLkd7SOW5DdpGc,10809
264
267
  zrb/task/http_check.py,sha256=Gf5rOB2Se2EdizuN9rp65HpGmfZkGc-clIAlHmPVehs,2565
265
- zrb/task/llm_task.py,sha256=hU1waf3NFc41YxdIe0k9z1eKrcPDaBUo4imuEq737TU,7782
268
+ zrb/task/llm_task.py,sha256=ptXC3x9Dwn7-4JrGQyEtzOXZ4dNQATDgCeowkvwAu9U,7723
266
269
  zrb/task/make_task.py,sha256=PD3b_aYazthS8LHeJsLAhwKDEgdurQZpymJDKeN60u0,2265
267
- zrb/task/rsync_task.py,sha256=pVVslZ46qgcpU_EKhyTQEQie8kUOMuTsVQdbQG2L-yk,6318
270
+ zrb/task/rsync_task.py,sha256=GSL9144bmp6F0EckT6m-2a1xG25AzrrWYzH4k3SVUKM,6370
268
271
  zrb/task/scaffolder.py,sha256=rME18w1HJUHXgi9eTYXx_T2G4JdqDYzBoNOkdOOo5-o,6806
269
272
  zrb/task/scheduler.py,sha256=aSDF_WtDbmwrYXaVo3BesCG8w21UNV8XLtn-5x9GWzY,3137
270
273
  zrb/task/task.py,sha256=KCrCaWYOQQvv1RJsYtHDeo9RBFmlXQ28oKyEFU4Q7pA,73
@@ -277,7 +280,7 @@ zrb/util/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
277
280
  zrb/util/cli/style.py,sha256=wxdtE18d4Q3GV7aojinD-XN9iWvazfvLs9MTJPlCNQU,3805
278
281
  zrb/util/cli/subcommand.py,sha256=gYr-CzVeKFQhY43s_FDstPwn8r-ypUz1Q2Rv_l2r-ck,1027
279
282
  zrb/util/cmd/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
280
- zrb/util/cmd/command.py,sha256=hllMoHh2gUSNip3kgEJwKz1JxFC--bCoFyyT1quJgnE,3455
283
+ zrb/util/cmd/command.py,sha256=g6MNfBFSfeabwbevCeXn2puVsOxo8N3pi8k_Olv2zxQ,4254
281
284
  zrb/util/cmd/remote.py,sha256=VklVORobTmE7FqdtYsVLq9xkSYTR2W5r2Zou0-soidw,710
282
285
  zrb/util/codemod/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
283
286
  zrb/util/codemod/append_code_to_class.py,sha256=5PiGzFqB-q8XQnGnDqWBn4OA4ydSmQWpKQzSr3l6wws,1361
@@ -290,8 +293,8 @@ zrb/util/codemod/prepend_parent_to_class.py,sha256=xOcDHv1cXXV_VqLHVifr6jvDoWk_i
290
293
  zrb/util/codemod/prepend_property_to_class.py,sha256=9L11WaYIUF53Kn_ZMT51ylhm7xTxttNjPp83Mnm9iUQ,2079
291
294
  zrb/util/cron.py,sha256=9fTGatUMYCRgmDFGg-z6_XerT4U5Vq72nD05NnEVUm4,2852
292
295
  zrb/util/file.py,sha256=cBPkIonfcWytoqtG3ScJd6FFK7HVYeCIuLmfAFO1HIQ,791
293
- zrb/util/git.py,sha256=o_kLF1fySv5uQdLlhY-ztc-z0zLOdcDf0IpuPAl2ciA,4733
294
- zrb/util/git_subtree.py,sha256=US8oCHUOKgt14Ie6SaEelwTs__jLGLPsDQZvI-1P4KY,2640
296
+ zrb/util/git.py,sha256=qTc6rHJd_HyJktiOC_kZGKc75qLx_6X899TG0DrXC04,4751
297
+ zrb/util/git_subtree.py,sha256=8oLaMBy2giMQcZnLZ31Tu0W5xicSEKrm5xiHfd1worA,2646
295
298
  zrb/util/group.py,sha256=Bg7HrSycoK110U5s_Tca6-uUQuZ5CMgb8wxZSrvDQ98,2790
296
299
  zrb/util/llm/tool.py,sha256=NkENrUlGxcqqU7jzHAH7DBXNcm_ndEo2dFnJ5nhvWmk,2991
297
300
  zrb/util/load.py,sha256=i8_83ApWJXlZlbFMNfEptrOzfXdvtaIhAErsd6tU9y8,1649
@@ -303,7 +306,7 @@ zrb/util/string/name.py,sha256=8picJfUBXNpdh64GNaHv3om23QHhUZux7DguFLrXHp8,1163
303
306
  zrb/util/todo.py,sha256=1nDdwPc22oFoK_1ZTXyf3638Bg6sqE2yp_U4_-frHoc,16015
304
307
  zrb/xcom/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
305
308
  zrb/xcom/xcom.py,sha256=o79rxR9wphnShrcIushA0Qt71d_p3ZTxjNf7x9hJB78,1571
306
- zrb-1.0.0b5.dist-info/METADATA,sha256=BhCdzcbWjo2XbxLbBVo7JtQpGUAnQS1CnKyRgTkN-cM,4228
307
- zrb-1.0.0b5.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
308
- zrb-1.0.0b5.dist-info/entry_points.txt,sha256=-Pg3ElWPfnaSM-XvXqCxEAa-wfVI6BEgcs386s8C8v8,46
309
- zrb-1.0.0b5.dist-info/RECORD,,
309
+ zrb-1.0.0b7.dist-info/METADATA,sha256=nw9wiAEB0ViBOiqQGH0SQXPz-3YulrupirW9Rw3EZFY,4270
310
+ zrb-1.0.0b7.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
311
+ zrb-1.0.0b7.dist-info/entry_points.txt,sha256=-Pg3ElWPfnaSM-XvXqCxEAa-wfVI6BEgcs386s8C8v8,46
312
+ zrb-1.0.0b7.dist-info/RECORD,,
File without changes