zrb 0.15.1__py3-none-any.whl → 0.16.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.
zrb/__init__.py CHANGED
@@ -32,6 +32,7 @@ from zrb.task.resource_maker import (
32
32
  get_default_resource_skip_parsing,
33
33
  )
34
34
  from zrb.task.rsync_task import RsyncTask
35
+ from zrb.task.server import Controller, Server
35
36
  from zrb.task.task import Task
36
37
  from zrb.task.time_watcher import TimeWatcher
37
38
  from zrb.task.wiki_task import create_wiki_tasks
@@ -74,6 +75,8 @@ assert HTTPChecker
74
75
  assert PortChecker
75
76
  assert PathChecker
76
77
  assert PathWatcher
78
+ assert Controller
79
+ assert Server
77
80
  assert TimeWatcher
78
81
  assert ResourceMaker
79
82
  assert FlowTask
@@ -3,6 +3,7 @@ theme = "gruvbox_transparent"
3
3
  [editor]
4
4
  line-number = "relative"
5
5
  mouse = true
6
+ bufferline = "always"
6
7
 
7
8
  [editor.cursor-shape]
8
9
  insert = "bar"
@@ -16,4 +17,4 @@ enable = true
16
17
  hidden = false
17
18
  git-ignore = false
18
19
  git-global = false
19
- git-exclude = false
20
+ git-exclude = false
@@ -16,7 +16,7 @@ get_process_pid_by_name = CmdTask(
16
16
  prompt="Process name to be checked",
17
17
  )
18
18
  ],
19
- cmd="pgrep {{ input.name }}",
19
+ cmd='pgrep "{{ input.name }}" || exit 0',
20
20
  checking_interval=3,
21
21
  )
22
22
  runner.register(get_process_pid_by_name)
zrb/builtin/schedule.py CHANGED
@@ -1,10 +1,10 @@
1
1
  from zrb.builtin._helper.reccuring_action import create_recurring_action
2
2
  from zrb.runner import runner
3
- from zrb.task.recurring_task import RecurringTask
3
+ from zrb.task.server import Controller, Server
4
4
  from zrb.task.time_watcher import TimeWatcher
5
5
  from zrb.task_input.str_input import StrInput
6
6
 
7
- schedule = RecurringTask(
7
+ schedule = Server(
8
8
  name="schedule",
9
9
  icon="📅",
10
10
  color="yellow",
@@ -17,15 +17,21 @@ schedule = RecurringTask(
17
17
  description="Schedule cron pattern to show the message",
18
18
  ),
19
19
  ],
20
- triggers=[
21
- TimeWatcher(
22
- name="watch-time", color="cyan", icon="⏰", schedule="{{input.schedule}}"
20
+ controllers=[
21
+ Controller(
22
+ name="periodic",
23
+ trigger=TimeWatcher(
24
+ name="watch-time",
25
+ color="cyan",
26
+ icon="⏰",
27
+ schedule="{{input.schedule}}",
28
+ ),
29
+ action=create_recurring_action(
30
+ notif_title="Schedule",
31
+ trigger_caption="Schedule",
32
+ trigger_xcom_key="watch-time.scheduled-time",
33
+ ),
23
34
  )
24
35
  ],
25
- task=create_recurring_action(
26
- notif_title="Schedule",
27
- trigger_caption="Schedule",
28
- trigger_xcom_key="watch-time.scheduled-time",
29
- ),
30
36
  )
31
37
  runner.register(schedule)
@@ -1,10 +1,10 @@
1
1
  from zrb.builtin._helper.reccuring_action import create_recurring_action
2
2
  from zrb.runner import runner
3
3
  from zrb.task.path_watcher import PathWatcher
4
- from zrb.task.recurring_task import RecurringTask
4
+ from zrb.task.server import Controller, Server
5
5
  from zrb.task_input.str_input import StrInput
6
6
 
7
- watch_changes = RecurringTask(
7
+ watch_changes = Server(
8
8
  name="watch-changes",
9
9
  icon="🕵️",
10
10
  color="yellow",
@@ -23,19 +23,22 @@ watch_changes = RecurringTask(
23
23
  description="Ignored file pattern",
24
24
  ),
25
25
  ],
26
- triggers=[
27
- PathWatcher(
28
- name="watch-path",
29
- color="cyan",
30
- icon="👀",
31
- path="{{input.pattern}}",
32
- ignored_path="{{input.ignored_pattern}}",
26
+ controllers=[
27
+ Controller(
28
+ name="watch",
29
+ trigger=PathWatcher(
30
+ name="watch-path",
31
+ color="cyan",
32
+ icon="👀",
33
+ path="{{input.pattern}}",
34
+ ignored_path="{{input.ignored_pattern}}",
35
+ ),
36
+ action=create_recurring_action(
37
+ notif_title="Watch",
38
+ trigger_caption="File changes",
39
+ trigger_xcom_key="watch-path.file",
40
+ ),
33
41
  )
34
42
  ],
35
- task=create_recurring_action(
36
- notif_title="Watch",
37
- trigger_caption="File changes",
38
- trigger_xcom_key="watch-path.file",
39
- ),
40
43
  )
41
44
  runner.register(watch_changes)
@@ -140,7 +140,7 @@ class BaseTask(FinishTracker, AttemptTracker, Renderer, BaseTaskModel, AnyTask):
140
140
  xcom_dir = self.__get_xcom_dir()
141
141
  xcom_file = os.path.join(xcom_dir, key)
142
142
  with open(xcom_file, "w") as f:
143
- f.write(value)
143
+ f.write(f"{value}")
144
144
 
145
145
  def get_xcom(self, key: str) -> str:
146
146
  self.__ensure_xcom_dir_exists()
@@ -115,6 +115,7 @@ class RecurringTask(BaseTask):
115
115
  self._triggers: List[AnyTask] = [trigger.copy() for trigger in triggers]
116
116
  self._run_configs: List[RunConfig] = []
117
117
  self._single_execution = single_execution
118
+ self.print_err("Deprecated, please use Server instead")
118
119
 
119
120
  async def _set_keyval(self, kwargs: Mapping[str, Any], env_prefix: str):
120
121
  await super()._set_keyval(kwargs=kwargs, env_prefix=env_prefix)
zrb/task/server.py ADDED
@@ -0,0 +1,192 @@
1
+ import asyncio
2
+
3
+ from zrb.helper.accessories.color import colored
4
+ from zrb.helper.accessories.name import get_random_name
5
+ from zrb.helper.log import logger
6
+ from zrb.helper.typecheck import typechecked
7
+ from zrb.helper.typing import Any, Callable, Iterable, List, Mapping, Optional, Union
8
+ from zrb.helper.util import to_kebab_case
9
+ from zrb.task.any_task import AnyTask
10
+ from zrb.task.any_task_event_handler import (
11
+ OnFailed,
12
+ OnReady,
13
+ OnRetry,
14
+ OnSkipped,
15
+ OnStarted,
16
+ OnTriggered,
17
+ OnWaiting,
18
+ )
19
+ from zrb.task.base_task.base_task import BaseTask
20
+ from zrb.task.flow_task import FlowTask
21
+ from zrb.task_env.env import Env
22
+ from zrb.task_env.env_file import EnvFile
23
+ from zrb.task_group.group import Group
24
+ from zrb.task_input.any_input import AnyInput
25
+
26
+ logger.debug(colored("Loading zrb.task.server", attrs=["dark"]))
27
+
28
+
29
+ @typechecked
30
+ class Controller:
31
+ def __init__(
32
+ self,
33
+ trigger: Union[AnyTask, List[AnyTask]],
34
+ action: Union[AnyTask, List[AnyTask]],
35
+ name: Optional[str] = None,
36
+ ):
37
+ self._name = get_random_name() if name is None else name
38
+ self._triggers = [trigger] if isinstance(trigger, AnyTask) else trigger
39
+ self._actions = [action] if isinstance(action, AnyTask) else action
40
+ self._args: List[Any] = []
41
+ self._kwargs: Mapping[str, Any] = {}
42
+ self._inputs: List[AnyInput] = []
43
+ self._envs: List[Env] = []
44
+ self._env_files: List[EnvFile] = []
45
+
46
+ def set_args(self, args: List[Any]):
47
+ self._args = args
48
+
49
+ def set_kwargs(self, kwargs: Mapping[str, Any]):
50
+ self._kwargs = kwargs
51
+
52
+ def set_inputs(self, inputs: List[AnyInput]):
53
+ self._inputs = inputs
54
+
55
+ def set_envs(self, envs: List[Env]):
56
+ self._envs = envs
57
+
58
+ def set_env_files(self, env_files: List[EnvFile]):
59
+ self._env_files = env_files
60
+
61
+ def get_sub_env_files(self) -> Iterable[EnvFile]:
62
+ env_files = []
63
+ for trigger in self._triggers:
64
+ env_files += trigger.copy()._get_env_files()
65
+ for action in self._actions:
66
+ env_files += action.copy()._get_env_files()
67
+ return env_files
68
+
69
+ def get_sub_envs(self) -> Iterable[Env]:
70
+ envs = []
71
+ for trigger in self._triggers:
72
+ envs += trigger.copy()._get_envs()
73
+ for action in self._actions:
74
+ envs += action.copy()._get_envs()
75
+ return envs
76
+
77
+ def get_sub_inputs(self) -> Iterable[AnyInput]:
78
+ inputs = []
79
+ for trigger in self._triggers:
80
+ inputs += trigger.copy()._get_combined_inputs()
81
+ for action in self._actions:
82
+ inputs += action.copy()._get_combined_inputs()
83
+ return inputs
84
+
85
+ def to_function(self) -> Callable[..., Any]:
86
+ task = self._get_task()
87
+
88
+ async def fn() -> Any:
89
+ task_fn = task.to_function(is_async=True)
90
+ return await task_fn(*self._args, **self._kwargs)
91
+
92
+ return fn
93
+
94
+ def _get_task(self) -> AnyTask:
95
+ kebab_name = to_kebab_case(self._name)
96
+ actions = self._actions
97
+ actions.insert(0, self._get_reschedule_task())
98
+ task: AnyTask = FlowTask(
99
+ name=f"{kebab_name}-flow",
100
+ inputs=self._inputs,
101
+ envs=self._envs,
102
+ env_files=self._env_files,
103
+ steps=[self._triggers, actions],
104
+ )
105
+ return task
106
+
107
+ def _get_reschedule_task(self) -> AnyTask:
108
+ kebab_name = to_kebab_case(self._name)
109
+
110
+ async def on_ready(task: AnyTask):
111
+ task = self._get_task()
112
+ fn = task.to_function(is_async=True)
113
+ await fn()
114
+
115
+ return BaseTask(
116
+ name=f"{kebab_name}-reschedule",
117
+ on_ready=on_ready,
118
+ )
119
+
120
+
121
+ @typechecked
122
+ class Server(BaseTask):
123
+
124
+ def __init__(
125
+ self,
126
+ name: str,
127
+ controllers: List[Controller],
128
+ group: Optional[Group] = None,
129
+ inputs: Iterable[AnyInput] = [],
130
+ envs: Iterable[Env] = [],
131
+ env_files: Iterable[EnvFile] = [],
132
+ icon: Optional[str] = None,
133
+ color: Optional[str] = None,
134
+ description: str = "",
135
+ upstreams: Iterable[AnyTask] = [],
136
+ fallbacks: Iterable[AnyTask] = [],
137
+ on_triggered: Optional[OnTriggered] = None,
138
+ on_waiting: Optional[OnWaiting] = None,
139
+ on_skipped: Optional[OnSkipped] = None,
140
+ on_started: Optional[OnStarted] = None,
141
+ on_ready: Optional[OnReady] = None,
142
+ on_retry: Optional[OnRetry] = None,
143
+ on_failed: Optional[OnFailed] = None,
144
+ checkers: Iterable[AnyTask] = [],
145
+ checking_interval: float = 0,
146
+ retry: int = 0,
147
+ retry_interval: float = 1,
148
+ should_execute: Union[bool, str, Callable[..., bool]] = True,
149
+ return_upstream_result: bool = False,
150
+ ):
151
+ inputs, envs, env_files = list(inputs), list(envs), list(env_files)
152
+ for controller in controllers:
153
+ inputs += controller.get_sub_inputs()
154
+ envs += controller.get_sub_envs()
155
+ env_files += controller.get_sub_env_files()
156
+ BaseTask.__init__(
157
+ self,
158
+ name=name,
159
+ group=group,
160
+ inputs=inputs,
161
+ envs=envs,
162
+ env_files=env_files,
163
+ icon=icon,
164
+ color=color,
165
+ description=description,
166
+ upstreams=upstreams,
167
+ fallbacks=fallbacks,
168
+ on_triggered=on_triggered,
169
+ on_waiting=on_waiting,
170
+ on_skipped=on_skipped,
171
+ on_started=on_started,
172
+ on_ready=on_ready,
173
+ on_retry=on_retry,
174
+ on_failed=on_failed,
175
+ checkers=checkers,
176
+ checking_interval=checking_interval,
177
+ retry=retry,
178
+ retry_interval=retry_interval,
179
+ should_execute=should_execute,
180
+ return_upstream_result=return_upstream_result,
181
+ )
182
+ self._controllers = controllers
183
+
184
+ async def run(self, *args: Any, **kwargs: Any):
185
+ for controller in self._controllers:
186
+ controller.set_envs(self._get_envs())
187
+ controller.set_env_files(self._get_env_files())
188
+ controller.set_inputs(self._get_inputs())
189
+ controller.set_args(args)
190
+ controller.set_kwargs(kwargs)
191
+ functions = [controller.to_function() for controller in self._controllers]
192
+ await asyncio.gather(*[fn() for fn in functions])
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: zrb
3
- Version: 0.15.1
3
+ Version: 0.16.0
4
4
  Summary: A Framework to Enhance Your Workflow
5
5
  Home-page: https://github.com/state-alchemists/zrb
6
6
  License: AGPL-3.0-or-later
@@ -1,4 +1,4 @@
1
- zrb/__init__.py,sha256=QNtBHrQnz4dEnnFtgrUBUUl9Ph7cUVFt6zJe3PpN0d0,2683
1
+ zrb/__init__.py,sha256=x6qsXjDRBqBjW6EP1HXy3GlaJfeJxOJrmi7iTTjBINw,2762
2
2
  zrb/__main__.py,sha256=-_k0XOahDF-06n41Uly-oUMkZ8XDSxO-WUUImWz6GiA,171
3
3
  zrb/action/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  zrb/action/runner.py,sha256=Z_Rh60DA0U_HqO4t_NzWTmXvHVfdgaL5RQJfTnEZiFQ,4951
@@ -30,7 +30,7 @@ zrb/builtin/devtool/install/gvm/resource/config.sh,sha256=M_r6XjtoYZjx8rJaT3FIwV
30
30
  zrb/builtin/devtool/install/helix/helix.py,sha256=W0Xm_eq0wIHcoq0CzG9WrQIH9tPByT-AZ-zi4Z72-U0,2098
31
31
  zrb/builtin/devtool/install/helix/install-language-server.sh,sha256=ZkV_ARwhTnLjjbAhJe8Pvp1hyRYVn176DYwg7ObkQ1w,1040
32
32
  zrb/builtin/devtool/install/helix/install.sh,sha256=Dsg65aEnpU8YnlvHwiKoxRpj8Jo8j3mejB4bTi2eeKo,1375
33
- zrb/builtin/devtool/install/helix/resource/config.toml,sha256=zEeA-oiVbCGs6dQNZAbeFfMJ3giClOkuhgJ6Pcel2ww,282
33
+ zrb/builtin/devtool/install/helix/resource/config.toml,sha256=35IwzDzXGfSnUH3O3nyd2IzDVOWyKqj6Kb3QuympXCE,305
34
34
  zrb/builtin/devtool/install/helix/resource/themes/gruvbox_transparent.toml,sha256=Kz6AhxXKVHrP5mpFI99uPFyfUOvB_0x2fapj0tUkIaA,56
35
35
  zrb/builtin/devtool/install/helm/helm.py,sha256=Y2Iklrcw4-OQYNIjeuKmuIzpdAqGGcl82ZSHMFWck_E,762
36
36
  zrb/builtin/devtool/install/helm/install.sh,sha256=fqjaTsO25B2MV7134sriSY5hQ2A1VRsaLc3WmD5jKu4,228
@@ -90,7 +90,7 @@ zrb/builtin/process/__init__.py,sha256=dWM1zIehY65rkJvEAFvX6HGJHL8kb1gkzaSz0Woay
90
90
  zrb/builtin/process/_group.py,sha256=KY7iQ_pvqe5iVsRFeLWs-O-xuSyqlTXVj47_TCnu7zQ,118
91
91
  zrb/builtin/process/pid/__init__.py,sha256=Rcb3bYgR_oVNOlaggYjcRipHRehrumZuQyadrguXdR0,293
92
92
  zrb/builtin/process/pid/_group.py,sha256=SUe7G8tmfg_Q-X3nHOqCUMjDXlTE_hb9gAKVie2wQ2A,195
93
- zrb/builtin/process/pid/get_by_name.py,sha256=fjJw0n353lhhyR1wnPHLXV13M9aNQmIAeQ_jUmBMVsA,625
93
+ zrb/builtin/process/pid/get_by_name.py,sha256=cW4c9l4JUGa9w5VHUFWi_3tUyx55t7-6i12Gm_hCkhQ,637
94
94
  zrb/builtin/process/pid/get_by_port.py,sha256=_yz0jBAV7qIo-eU33peDgVhtzYhMAxAHOc6xQtDwXyc,640
95
95
  zrb/builtin/project/__init__.py,sha256=i1YF08_6UjNznYeL0iGTbU8o5yz7iw41RYd8UgeB8U4,887
96
96
  zrb/builtin/project/_group.py,sha256=RPWt2YOLIqF7ZznzkSeFm9dozz1oCKmpCWCA1jjgsl4,112
@@ -1280,7 +1280,7 @@ zrb/builtin/project/create/template/src/.gitkeep,sha256=47DEQpj8HBSa-_TImW-5JCeu
1280
1280
  zrb/builtin/project/create/template/template.env,sha256=Y_11yIi7fA5aIOHxrcexFXNxz1UqXaEiIgqUHBazy0w,102
1281
1281
  zrb/builtin/project/create/template/zrb_init.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1282
1282
  zrb/builtin/say.py,sha256=KHuzgwitmWQy5g7N11qqs9iV-66vvAl0Uyke9hdc-Eg,3859
1283
- zrb/builtin/schedule.py,sha256=-yOfTAx4lORR7_4PCBpOwn8m-imN7oHs4-RTUL2DC-Y,990
1283
+ zrb/builtin/schedule.py,sha256=DtAhHhG56LuneLo9xENPkaP91tOD3Hb1pwBSmkr2eLo,1154
1284
1284
  zrb/builtin/ubuntu/__init__.py,sha256=79JyTzx6pyhtEa7hrsUTNaAQ7xlrgDX1KU74OG8mhic,486
1285
1285
  zrb/builtin/ubuntu/_group.py,sha256=6VhCi-wZRuwvmELlvqvVSOfYLnibP8SQIT2GpaDPtOA,115
1286
1286
  zrb/builtin/ubuntu/install/__init__.py,sha256=AoGq7pPn8FWoRXrEwiaX1ZBBQTzFpqIjpwIx4aajpa8,472
@@ -1292,7 +1292,7 @@ zrb/builtin/ubuntu/install/toys.py,sha256=VlWb8_aHW1kRK6vpjpAveNByc1FlsMPLFXl1X9
1292
1292
  zrb/builtin/ubuntu/update.py,sha256=m3UREE6DhwlbdkQpuug2sfEM6fBLZn0ZGClt_EOsZ_I,372
1293
1293
  zrb/builtin/update.py,sha256=89i_fPUlL27IXczLI7Lr7k4STMpnxyw2je8daCKUTQo,225
1294
1294
  zrb/builtin/version.py,sha256=vjbmSeOSEjT0SgdeQHGslwFCQMukwVZkOOkusZGZNcU,394
1295
- zrb/builtin/watch_changes.py,sha256=5oe1zPRamo5ZsWQKvgVWCXiBv4encS4kN7mubgvacjk,1192
1295
+ zrb/builtin/watch_changes.py,sha256=ifDs6sXAMaOmCas0j8RRb5_u8v9_V2zMVzyYH3Dz364,1320
1296
1296
  zrb/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1297
1297
  zrb/config/config.py,sha256=6uDxOLmHHstLCosj2miBVxlO9dMTIoXYedqaff8EVBU,1567
1298
1298
  zrb/helper/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -1359,7 +1359,7 @@ zrb/task/any_task.py,sha256=WHsEUfWjRvvDqF0fxHh4_q2LmdJcnfVC9y0HFleiBZ0,39393
1359
1359
  zrb/task/any_task_event_handler.py,sha256=AjTC6lIcprutRusNBGl83EifQe4TbZzxdlVIR4ndWN4,524
1360
1360
  zrb/task/base_remote_cmd_task.py,sha256=tZi3jODMXfTkDAmWiFR2YdA-b4-TDTP1uLtO0ulmM34,10101
1361
1361
  zrb/task/base_task/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1362
- zrb/task/base_task/base_task.py,sha256=UNaMB9fBz3NqBKDr59ayAUPnUr6cNOhXUdePJcZjcko,20207
1362
+ zrb/task/base_task/base_task.py,sha256=i7WEsvTImjzYDxYUb1VifAunkJfiYQx2I4e3NKOOqY8,20212
1363
1363
  zrb/task/base_task/component/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1364
1364
  zrb/task/base_task/component/base_task_model.py,sha256=YlEuvYSzlrK83Kds07bu2drKSw3rKyl7qIR1qwIPNZk,10376
1365
1365
  zrb/task/base_task/component/common_task_model.py,sha256=JoAAf8EvuPx31fCK_TBxX_TBeHZrZyFDjLeK8ts0w3A,12285
@@ -1377,10 +1377,11 @@ zrb/task/parallel.py,sha256=-coMuiFlS29GpBgW6plPVaCLesgzzD0bYib29OvhXFg,1193
1377
1377
  zrb/task/path_checker.py,sha256=65GpplGing3QeBPDtc1A_-PWXXiNItCXqabMLcgzm6s,4384
1378
1378
  zrb/task/path_watcher.py,sha256=UR-XMEB-Kly76T4QgGZSTeLxCk_sIiNi__Pm8FfO-yA,6499
1379
1379
  zrb/task/port_checker.py,sha256=uvOJPQqcZ_YQ1TTOxTfgfSc-7rAnSCWTYTgnY-eG4HY,4303
1380
- zrb/task/recurring_task.py,sha256=q9vzZP3iFpHWEnQ2nJAdoAu15ZQothilZQ-ID16bUV8,7366
1380
+ zrb/task/recurring_task.py,sha256=FNxV7n4h9AzUCU8oKXwAS_A9j1newS-esWjmMsC33vE,7430
1381
1381
  zrb/task/remote_cmd_task.py,sha256=rmLB5uCcbbfZBy8-nAZI8mgnNd-J2d4SBemLEDwSlV4,3951
1382
1382
  zrb/task/resource_maker.py,sha256=vY55cBCJMYQzkVKygkb6aNTJT6kfSjPunJqHKGA2N2Y,7355
1383
1383
  zrb/task/rsync_task.py,sha256=bgCeZQTG-4isvjZGGs_05oOEkkwGc930NTyuUYUm_cg,4187
1384
+ zrb/task/server.py,sha256=w99_9cCEitf6k2sZfLTAc9CgEOsBlcK6yO1SjU3FdWQ,6398
1384
1385
  zrb/task/task.py,sha256=dHv4cmnd0QFPT9PwrfmHpxTaXj86mm8xf7_jAj_engI,329
1385
1386
  zrb/task/time_watcher.py,sha256=c5IPxUs4b5BsgGqyvjRVpeqXFJCHgCV-ke6uIvZ-_7A,4139
1386
1387
  zrb/task/wiki_task.py,sha256=Mcugk_6Pd7pzubi2ZP4eegJs8e9niYKh-9mCrNHXE_g,4330
@@ -1400,8 +1401,8 @@ zrb/task_input/int_input.py,sha256=d2fXcm5fCo09472eMAm6PdzLQD82ZBV9ARq5CjKepAo,4
1400
1401
  zrb/task_input/password_input.py,sha256=g_g8ZWAzDaHx4h2EHY3UCGvTigC6esAUBzXU0T9nDUk,4192
1401
1402
  zrb/task_input/str_input.py,sha256=BNflOhrJvST9bWK0rGdCi7C7y-QDvHj9ISQMRmujIWU,4200
1402
1403
  zrb/task_input/task_input.py,sha256=x1sGHsoSYAYMdQBrCLmcvZa_ZmGggMPj3goAQzewUKI,2181
1403
- zrb-0.15.1.dist-info/LICENSE,sha256=WfnGCl8G60EYOPAEkuc8C9m9pdXWDe08NsKj3TBbxsM,728
1404
- zrb-0.15.1.dist-info/METADATA,sha256=izpcqCCdrTuJBe7HKKxyMVeKZX9X2rc58JohKVaV228,16460
1405
- zrb-0.15.1.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
1406
- zrb-0.15.1.dist-info/entry_points.txt,sha256=xTgXc1kBKYhJHEujdaSPHUcJT3-hbyP1mLgwkv-5sSk,40
1407
- zrb-0.15.1.dist-info/RECORD,,
1404
+ zrb-0.16.0.dist-info/LICENSE,sha256=WfnGCl8G60EYOPAEkuc8C9m9pdXWDe08NsKj3TBbxsM,728
1405
+ zrb-0.16.0.dist-info/METADATA,sha256=jDQM9ixJuvZpigI0o7T6LhNsL15-71CxyWhgAdbyfCQ,16460
1406
+ zrb-0.16.0.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
1407
+ zrb-0.16.0.dist-info/entry_points.txt,sha256=xTgXc1kBKYhJHEujdaSPHUcJT3-hbyP1mLgwkv-5sSk,40
1408
+ zrb-0.16.0.dist-info/RECORD,,
File without changes
File without changes