zrb 0.0.46__py3-none-any.whl → 0.0.47__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 (42) hide show
  1. zrb/action/runner.py +1 -1
  2. zrb/builtin/generator/_common.py +7 -8
  3. zrb/builtin/generator/docker_compose_task/template/src/kebab-task-name/docker-compose.yml +7 -1
  4. zrb/builtin/generator/docker_compose_task/template/src/kebab-task-name/image/Dockerfile +3 -1
  5. zrb/builtin/generator/docker_compose_task/template/src/kebab-task-name/image/main.py +0 -5
  6. zrb/builtin/generator/fastapp/add.py +3 -3
  7. zrb/builtin/generator/fastapp/template/_automate/snake_app_name/_common.py +11 -7
  8. zrb/builtin/generator/fastapp/template/_automate/snake_app_name/config/docker-compose.env +3 -0
  9. zrb/builtin/generator/fastapp/template/_automate/snake_app_name/container.py +4 -2
  10. zrb/builtin/generator/fastapp/template/_automate/snake_app_name/image.py +1 -1
  11. zrb/builtin/generator/fastapp/template/_automate/snake_app_name/local.py +1 -2
  12. zrb/builtin/generator/fastapp/template/src/kebab-app-name/docker-compose.yml +19 -6
  13. zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/template.env +1 -1
  14. zrb/builtin/generator/fastapp_module/add.py +259 -106
  15. zrb/builtin/generator/project_task/add.py +5 -6
  16. zrb/builtin/generator/project_task/task_factory.py +4 -6
  17. zrb/builtin/generator/simple_python_app/add.py +3 -3
  18. zrb/builtin/generator/simple_python_app/template/src/kebab-app-name/docker-compose.yml +7 -1
  19. zrb/builtin/generator/simple_python_app/template/src/kebab-app-name/src/Dockerfile +3 -1
  20. zrb/builtin/generator/simple_python_app/template/src/kebab-app-name/src/main.py +0 -5
  21. zrb/builtin/md5.py +3 -2
  22. zrb/builtin/project.py +2 -60
  23. zrb/helper/docker_compose/file.py +22 -0
  24. zrb/helper/env_map/__init__.py +0 -0
  25. zrb/helper/env_map/fetch.py +68 -0
  26. zrb/helper/file/copy_tree.py +6 -7
  27. zrb/helper/file/text.py +12 -4
  28. zrb/task/base_task.py +10 -10
  29. zrb/task/docker_compose_task.py +2 -2
  30. zrb/task/installer/factory.py +6 -5
  31. zrb/task/path_checker.py +2 -2
  32. zrb/task/resource_maker.py +1 -1
  33. zrb/task_env/env.py +4 -3
  34. {zrb-0.0.46.dist-info → zrb-0.0.47.dist-info}/METADATA +1 -1
  35. {zrb-0.0.46.dist-info → zrb-0.0.47.dist-info}/RECORD +41 -38
  36. zrb/helper/dockercompose/read.py +0 -9
  37. /zrb/builtin/generator/fastapp/template/src/kebab-app-name/{src/module_disabled.env → all-module-disabled.env} +0 -0
  38. /zrb/builtin/generator/fastapp/template/src/kebab-app-name/{src/module_enabled.env → all-module-enabled.env} +0 -0
  39. /zrb/helper/{dockercompose → docker_compose}/fetch_external_env.py +0 -0
  40. {zrb-0.0.46.dist-info → zrb-0.0.47.dist-info}/LICENSE +0 -0
  41. {zrb-0.0.46.dist-info → zrb-0.0.47.dist-info}/WHEEL +0 -0
  42. {zrb-0.0.46.dist-info → zrb-0.0.47.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,68 @@
1
+ from typing import List, Mapping
2
+ from ...task.base_task import Group, BaseTask
3
+ from ...task_env.env import Env
4
+ from ..string.jinja import is_probably_jinja
5
+
6
+
7
+ def fetch_env_map_from_group(
8
+ env_map: Mapping[str, str], group: Group
9
+ ) -> Mapping[str, str]:
10
+ for task in group.tasks:
11
+ env_map = fetch_env_map_from_task(env_map, task)
12
+ for sub_group in group.children:
13
+ sub_env_map: Mapping[str, str] = fetch_env_map_from_group(
14
+ env_map, sub_group
15
+ )
16
+ env_map = cascade_env_map(env_map, sub_env_map)
17
+ return env_map
18
+
19
+
20
+ def fetch_env_map_from_task(
21
+ env_map: Mapping[str, str], task: BaseTask
22
+ ):
23
+ task_env_map: Mapping[str, str] = {}
24
+ for env_file in task.env_files:
25
+ envs = env_file.get_envs()
26
+ task_env_map = add_envs_to_env_map(task_env_map, envs)
27
+ task_env_map = add_envs_to_env_map(task_env_map, task.envs)
28
+ env_map = cascade_env_map(env_map, task_env_map)
29
+ for upstream in task.upstreams:
30
+ task_env_map = fetch_env_map_from_task(env_map, upstream)
31
+ for checker in task.checkers:
32
+ task_env_map = fetch_env_map_from_task(env_map, checker)
33
+ return env_map
34
+
35
+
36
+ def add_envs_to_env_map(
37
+ env_map: Mapping[str, str], envs: List[Env]
38
+ ) -> Mapping[str, str]:
39
+ for env in envs:
40
+ if env.os_name == '':
41
+ continue
42
+ env_name = get_env_name(env)
43
+ env_default = get_env_default(env)
44
+ env_map[env_name] = env_default
45
+ return env_map
46
+
47
+
48
+ def cascade_env_map(
49
+ env_map: Mapping[str, str],
50
+ other_env_map: Mapping[str, str]
51
+ ) -> Mapping[str, str]:
52
+ for key, value in other_env_map.items():
53
+ if key in env_map:
54
+ continue
55
+ env_map[key] = value
56
+ return env_map
57
+
58
+
59
+ def get_env_name(env: Env) -> str:
60
+ if env.os_name is None:
61
+ return env.name
62
+ return env.os_name
63
+
64
+
65
+ def get_env_default(env: Env) -> str:
66
+ if is_probably_jinja(env.default):
67
+ return ''
68
+ return env.default
@@ -1,6 +1,7 @@
1
1
  from typing import Iterable, Mapping, Optional
2
- from ..string.parse_replacement import parse_replacement
3
2
  from typeguard import typechecked
3
+ from .text import read_text_file_async, write_text_file_async
4
+ from ..string.parse_replacement import parse_replacement
4
5
  from ..log import logger
5
6
 
6
7
  import os
@@ -9,7 +10,7 @@ import fnmatch
9
10
 
10
11
 
11
12
  @typechecked
12
- def copy_tree(
13
+ async def copy_tree(
13
14
  src: str,
14
15
  dst: str,
15
16
  replacements: Optional[Mapping[str, str]] = None,
@@ -29,15 +30,13 @@ def copy_tree(
29
30
  continue
30
31
  dst_name = os.path.join(dst, name)
31
32
  if os.path.isdir(src_name):
32
- copy_tree(src_name, dst_name, replacements, excludes)
33
+ await copy_tree(src_name, dst_name, replacements, excludes)
33
34
  continue
34
35
  new_dst_name = parse_replacement(dst_name, replacements)
35
36
  shutil.copy2(src_name, new_dst_name)
36
37
  try:
37
- with open(new_dst_name, 'r') as file:
38
- file_content = file.read()
38
+ file_content = await read_text_file_async(new_dst_name)
39
39
  new_file_content = parse_replacement(file_content, replacements)
40
- with open(new_dst_name, 'w') as file:
41
- file.write(new_file_content)
40
+ await write_text_file_async(new_dst_name, new_file_content)
42
41
  except Exception:
43
42
  logger.error(f'Cannot parse file: {new_dst_name}')
zrb/helper/file/text.py CHANGED
@@ -1,12 +1,20 @@
1
1
  import aiofiles
2
2
 
3
3
 
4
- async def read_text_file(filename: str) -> str:
5
- async with aiofiles.open(filename, mode='r') as file:
4
+ async def read_text_file_async(file_name: str) -> str:
5
+ async with aiofiles.open(file_name, mode='r') as file:
6
6
  content = await file.read()
7
7
  return content
8
8
 
9
9
 
10
- async def write_text_file(filename: str, content: str):
11
- async with aiofiles.open(filename, mode='w') as file:
10
+ async def write_text_file_async(file_name: str, content: str):
11
+ async with aiofiles.open(file_name, mode='w') as file:
12
12
  await file.write(content)
13
+
14
+
15
+ async def append_text_file_async(file_name: str, additional_content: str):
16
+ content = await read_text_file_async(file_name)
17
+ if content != '':
18
+ additional_content = '\n' + additional_content
19
+ new_content = content + additional_content
20
+ await write_text_file_async(file_name, new_content)
zrb/task/base_task.py CHANGED
@@ -182,10 +182,7 @@ class TaskModel(
182
182
  # init properties
183
183
  self.name = name
184
184
  self.group = group
185
- self.envs: List[Env] = [
186
- Env(name=key, os_name=key)
187
- for key in os.environ
188
- ] + list(envs)
185
+ self.envs = envs
189
186
  self.env_files = env_files
190
187
  self.icon = icon
191
188
  self.color = color
@@ -419,15 +416,13 @@ class TaskModel(
419
416
  )
420
417
  self.log_debug(f'Input map: {self._input_map}')
421
418
  # Construct envs based on self.env_files and self.envs
422
- self.log_info('Merging env_files and envs')
423
- envs: Iterable[Env] = []
419
+ self.log_info('Merging task env_files and task envs')
420
+ envs: List[Env] = []
424
421
  for env_file in self.env_files:
425
422
  envs += env_file.get_envs()
426
- envs += self.envs
423
+ envs += list(self.envs)
427
424
  envs.reverse()
428
- envs = ensure_uniqueness(
429
- envs, lambda x, y: x.name == y.name
430
- )
425
+ envs = ensure_uniqueness(envs, lambda x, y: x.name == y.name)
431
426
  envs.reverse()
432
427
  # Add envs to env_map
433
428
  self.log_info('Set env map')
@@ -438,6 +433,11 @@ class TaskModel(
438
433
  self._env_map[env_name] = self.render_any(
439
434
  task_env.get(env_prefix)
440
435
  )
436
+ self.log_info('Add os environment to env map')
437
+ for key in os.environ:
438
+ if key in self._env_map:
439
+ continue
440
+ self._env_map[key] = os.getenv(key, '')
441
441
  self.log_debug(f'Env map: {self._env_map}')
442
442
 
443
443
  def get_all_inputs(self) -> Iterable[BaseInput]:
@@ -6,8 +6,8 @@ from ..task_env.env import Env
6
6
  from ..task_env.env_file import EnvFile
7
7
  from ..task_input.base_input import BaseInput
8
8
  from ..helper.string.double_quote import double_quote
9
- from ..helper.dockercompose.read import read_file as read_compose_file
10
- from ..helper.dockercompose.fetch_external_env import fetch_external_env
9
+ from ..helper.docker_compose.file import read_compose_file
10
+ from ..helper.docker_compose.fetch_external_env import fetch_external_env
11
11
 
12
12
  import os
13
13
  import pathlib
@@ -4,6 +4,7 @@ from ..cmd_task import CmdTask
4
4
  from ..task import Task
5
5
  from ...task_input.base_input import BaseInput
6
6
  from ...task_input.str_input import StrInput
7
+ from ...helper.file.text import read_text_file_async, write_text_file_async
7
8
 
8
9
  import os
9
10
 
@@ -13,7 +14,7 @@ dir_path = os.path.dirname(__file__)
13
14
  def _get_append_config(
14
15
  source_path: str, destination_path: str
15
16
  ) -> Callable[..., Any]:
16
- def _append_config(*args: Any, **kwargs: Any):
17
+ async def _append_config(*args: Any, **kwargs: Any):
17
18
  task: Task = kwargs.get('_task')
18
19
  if not source_path or not os.path.exists(source_path):
19
20
  task.print_out('Nothing to configure')
@@ -24,10 +25,10 @@ def _get_append_config(
24
25
  )
25
26
  )
26
27
  task.print_out(f'Add configuration to {destination}')
27
- with open(source_path, 'r') as src:
28
- content = src.read()
29
- with open(destination, 'a') as dst:
30
- dst.write(content)
28
+ additional_content = await read_text_file_async(source_path)
29
+ content = await read_text_file_async(destination)
30
+ new_content = content + '\n' + additional_content
31
+ await write_text_file_async(destination, new_content)
31
32
  task.print_out('👌')
32
33
  return _append_config
33
34
 
zrb/task/path_checker.py CHANGED
@@ -72,10 +72,10 @@ class PathChecker(BaseTask):
72
72
  label = self._get_label(path)
73
73
  try:
74
74
  if os.path.exists(path):
75
- self.print_out(f'{label} (OK)')
75
+ self.print_out(f'{label} (Exist)')
76
76
  return True
77
77
  self._debug_and_print_error(
78
- f'{label} (Not OK)', should_print_error
78
+ f'{label} (Not Exist)', should_print_error
79
79
  )
80
80
  except Exception:
81
81
  self._debug_and_print_error(
@@ -97,7 +97,7 @@ class ResourceMaker(BaseTask):
97
97
  self.print_out_dark(f'Destination: {destination_path}')
98
98
  self.print_out_dark(f'Replacements: {replacements}')
99
99
  self.print_out_dark(f'Excludes: {excludes}')
100
- copy_tree(
100
+ await copy_tree(
101
101
  src=template_path,
102
102
  dst=destination_path,
103
103
  replacements=replacements,
zrb/task_env/env.py CHANGED
@@ -10,7 +10,8 @@ class Env():
10
10
  '''
11
11
 
12
12
  def __init__(
13
- self, name: str,
13
+ self,
14
+ name: str,
14
15
  os_name: Optional[str] = None,
15
16
  default: str = ''
16
17
  ):
@@ -38,9 +39,9 @@ class Env():
38
39
  if self.os_name == '':
39
40
  return self.default
40
41
  prefixed_name = self._get_prefixed_name(self.os_name, prefix)
41
- if prefixed_name in os.environ:
42
+ if prefixed_name in os.environ and os.environ[prefixed_name] != '':
42
43
  return os.environ[prefixed_name]
43
- if self.os_name in os.environ:
44
+ if self.os_name in os.environ and os.environ[self.os_name] != '':
44
45
  return os.environ[self.os_name]
45
46
  return self.default
46
47
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: zrb
3
- Version: 0.0.46
3
+ Version: 0.0.47
4
4
  Summary: Your faithful companion
5
5
  Author-email: Go Frendi Gunawan <gofrendiasgard@gmail.com>
6
6
  Requires-Python: >=3.8
@@ -5,15 +5,15 @@ zrb/config.toml,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
5
  zrb/runner.py,sha256=Sb01DwORh9mCWU3D6isNS6k3RxxU1qEhCIT9YgJHl_0,112
6
6
  zrb/action/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
7
  zrb/action/base_action.py,sha256=gW_E8yFgIfu76XmNMzQngC0LSApctCHrXNRObNkxZVI,279
8
- zrb/action/runner.py,sha256=8dQnLmFomtbtpHGVL4D1kQor1z5PLeePbmFSARR_LnU,3567
8
+ zrb/action/runner.py,sha256=M0aErKCBfn_Fs9tyyloTixlrLa5Xh1TTnaqWi0C-brk,3566
9
9
  zrb/builtin/__init__.py,sha256=dLGHynwpnJvTviwFmbh2fP8IXaKP8qCwLl0z_p5ERLU,1028
10
10
  zrb/builtin/_group.py,sha256=ITOOiL75lTiXjjMSlxYkp7FlZesc0OgJgDqQEqk2F5Q,1039
11
11
  zrb/builtin/base64.py,sha256=fqs2Nf2c3tqK5AWfWNEpySO5PHrp_7oGAOQecIQl7fc,952
12
12
  zrb/builtin/env.py,sha256=1mvJCuldysDy5capx8fnng6kVbmDyGw1aIuNW7Uykf4,1039
13
13
  zrb/builtin/eval.py,sha256=NovA5uJX7MTRTPAOTKPfYr7ZlAfWojppfmCP8iamrmg,570
14
- zrb/builtin/md5.py,sha256=9WSTDzPx28FDz1p0ZAiwU4xQGwK1Mru1eKukzxc6J0M,1143
14
+ zrb/builtin/md5.py,sha256=tqO8ps7dx8gq8WourIvCAdqfLkEOz02NBQParjnj46I,1191
15
15
  zrb/builtin/principle.py,sha256=-UNcZfFILjEyzWg5o4P5BUSCAfkzC7eMGsvL0tNJipE,1689
16
- zrb/builtin/project.py,sha256=YVbXYjP93KO26GU6qCxNXJ2rAMuhqHthw0nQ2Ep7kVs,2739
16
+ zrb/builtin/project.py,sha256=x-rEHiJOWoiVS6_8LoIb0voIFKb55-Yij0RmtqUtIYs,998
17
17
  zrb/builtin/ubuntu.py,sha256=K_JvmXF51XHjui8pRGP4mAjiuDTtIm3DmGkgNbvKMFA,1410
18
18
  zrb/builtin/update.py,sha256=BgjeHdw2RfTs3B2cvf6VfdnmIB6a_GDohOEk146Un8k,229
19
19
  zrb/builtin/version.py,sha256=BhNXhf5AmZBGUhu32upPH7N8nnzPzpOzM2rmpYTi4u4,295
@@ -49,33 +49,36 @@ zrb/builtin/devtool/tmux/setup.sh,sha256=mCbDNoe099aDoJD9EnjAv52QcbW3VenQAERnsYp
49
49
  zrb/builtin/devtool/zsh/config.sh,sha256=gAFefVd_hmPhcQf-pnYrCsXvfAEckX1-zPL5_Hnn5xM,4736
50
50
  zrb/builtin/devtool/zsh/setup.sh,sha256=h0KAlDcA0NjHM2IFHFCJ2JG5LgsnE8-1VQjAcGArUN0,420
51
51
  zrb/builtin/generator/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
52
- zrb/builtin/generator/_common.py,sha256=b2YuelkUwHadN8bjld1LQvGhVUVOw1T2s6YZgdSL3s8,7727
52
+ zrb/builtin/generator/_common.py,sha256=QfGnzcXZRATxAc3p4LABXqOKMxqCDHkBHziptWF0I5c,7801
53
53
  zrb/builtin/generator/cmd_task/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
54
54
  zrb/builtin/generator/cmd_task/add.py,sha256=CgnBJLdWKltVMvJ76LRawrnmCg3iu8rqsC1HjqHoies,1713
55
55
  zrb/builtin/generator/cmd_task/template/_automate/snake_task_name.py,sha256=eV30viCTMZrNm6u_IuoSqG5sNOefTo5yvgzcaSYnFlk,473
56
56
  zrb/builtin/generator/docker_compose_task/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
57
57
  zrb/builtin/generator/docker_compose_task/add.py,sha256=ksVindnmUhQUc0lBoNkDohKcbU7D29fQr4JFabkt5Z4,2588
58
58
  zrb/builtin/generator/docker_compose_task/template/_automate/snake_task_name.py,sha256=Evec-KTZPyQgxq8Av0hHoSKA0ITVhmx_WYaxZX_U7Ys,1441
59
- zrb/builtin/generator/docker_compose_task/template/src/kebab-task-name/docker-compose.yml,sha256=57GGqCT3PZJUw32zhWzU-POTk2a8dSxhtJvp9fkVSTA,309
60
- zrb/builtin/generator/docker_compose_task/template/src/kebab-task-name/image/Dockerfile,sha256=j2MLGViO-UkGUXRaZFwcrbjwMDOeEzZKh2QV4dBT-4g,100
61
- zrb/builtin/generator/docker_compose_task/template/src/kebab-task-name/image/main.py,sha256=63QI8lAo-p6VPiCKZ7ApR_RvllSvs68kwOBpuMxujx0,564
59
+ zrb/builtin/generator/docker_compose_task/template/src/kebab-task-name/docker-compose.yml,sha256=goqDsI2J7FhHb6AUM9ZJxCv-Z0FwLUF_sDkWTeK3uYw,492
60
+ zrb/builtin/generator/docker_compose_task/template/src/kebab-task-name/image/Dockerfile,sha256=FP1hy9jhwKmjmQHBZ-MsXwnYMKWIYUYj_jD1fn79L88,188
61
+ zrb/builtin/generator/docker_compose_task/template/src/kebab-task-name/image/main.py,sha256=UpJoBSo4zNKFSa8-0pdJwCymjJDxVZicdoENshogtjE,447
62
62
  zrb/builtin/generator/docker_compose_task/template/src/kebab-task-name/image/requirements.txt,sha256=HX56Al9bOoM8Mq1Yc44UE2cfT3XrTZGmHI6T3q7xn50,15
63
63
  zrb/builtin/generator/fastapp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
64
- zrb/builtin/generator/fastapp/add.py,sha256=bu1TxZK9xpSbMEpiPsUkn7w3Qa2IIx3UidEuUYHD1F8,4126
64
+ zrb/builtin/generator/fastapp/add.py,sha256=hoxOJZ5jBjjBVNDlAf6p8rjoEydicVLSxO43Z1B6orE,4166
65
65
  zrb/builtin/generator/fastapp/template/_automate/snake_app_name/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
66
- zrb/builtin/generator/fastapp/template/_automate/snake_app_name/_common.py,sha256=h7HRZcBPjnIEPlVxDQ6d0GMqGp_G3gFnZLZL5z4g3X0,8197
67
- zrb/builtin/generator/fastapp/template/_automate/snake_app_name/container.py,sha256=G8SczD1LMi2lnMgEnsS8V-v24Oselw6CpyNiuf_Isfc,3360
66
+ zrb/builtin/generator/fastapp/template/_automate/snake_app_name/_common.py,sha256=hg3-yByGjNHS11Gn4TB9wrhofcpkB6bD5sgUV5fPdmA,8396
67
+ zrb/builtin/generator/fastapp/template/_automate/snake_app_name/container.py,sha256=s5P6v_OOPfL37NR_39kCk_t277pB0pbDP7U1zVF4jKI,3422
68
68
  zrb/builtin/generator/fastapp/template/_automate/snake_app_name/deployment.py,sha256=qxY9n4aAhCFoDr6gl74OAcSQtr471b-1q9xf6tU1o8U,1766
69
69
  zrb/builtin/generator/fastapp/template/_automate/snake_app_name/frontend.py,sha256=oYrkee70GLf2agwI42yoXIuzbRPm-054JStr3FfWDhE,834
70
- zrb/builtin/generator/fastapp/template/_automate/snake_app_name/image.py,sha256=eeFD_jL_iV2o05zo3h4cHl7U8WPfVxHUievpDcuiY1Y,1390
71
- zrb/builtin/generator/fastapp/template/_automate/snake_app_name/local.py,sha256=vK2erzsN2HnBBsMkd2jLUfcACAhyGD5rFimboCLnUik,4716
70
+ zrb/builtin/generator/fastapp/template/_automate/snake_app_name/image.py,sha256=dEHZWQZI1KrHwU5DaTpvO08NU2yoVMTrpQgkGuAW4oA,1381
71
+ zrb/builtin/generator/fastapp/template/_automate/snake_app_name/local.py,sha256=e931e8GdO5q2zOUloh55Rxd5F3nMUCJzL0yyv-Xg5g8,4658
72
72
  zrb/builtin/generator/fastapp/template/_automate/snake_app_name/cmd/build-frontend.sh,sha256=fHsSUE7a6dve2WiWYi3VPpyWyQK5YMbzdeQlCP8VdM4,115
73
73
  zrb/builtin/generator/fastapp/template/_automate/snake_app_name/cmd/prepare-backend.sh,sha256=c91I2LEUJgl3klN_d_yRAFjqws7QP2WWFFJ5aGpPPEk,190
74
74
  zrb/builtin/generator/fastapp/template/_automate/snake_app_name/cmd/pulumi-destroy.sh,sha256=u94XbUokbd9gzW0b-UZ9aOyK8niK-Y3U_QDZHRI0CNw,148
75
75
  zrb/builtin/generator/fastapp/template/_automate/snake_app_name/cmd/pulumi-up.sh,sha256=hv36V-g8y2IqjUwqFkC6Vi27xfJbTEm0sn4iQxmAerc,143
76
76
  zrb/builtin/generator/fastapp/template/_automate/snake_app_name/cmd/start.sh,sha256=XGxRLciTOI9xIe9kfWfyoR8Q5p-UL0dxY190td_8gAQ,256
77
+ zrb/builtin/generator/fastapp/template/_automate/snake_app_name/config/docker-compose.env,sha256=V-IoTPQHlM-ijYGPtAMcA2VCD-3TO2N4WTp45wSi2OQ,79
77
78
  zrb/builtin/generator/fastapp/template/_automate/snake_app_name/config/modules.json,sha256=T1PNoYwrqgwDVLtfmj7L5e0Sq02OEbqHPC8RFhICuUU,2
78
- zrb/builtin/generator/fastapp/template/src/kebab-app-name/docker-compose.yml,sha256=RUzneO3cgFZWdpMZBu3dSrNyB9RFOVkeLBXuPtQiGu4,3159
79
+ zrb/builtin/generator/fastapp/template/src/kebab-app-name/all-module-disabled.env,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
80
+ zrb/builtin/generator/fastapp/template/src/kebab-app-name/all-module-enabled.env,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
81
+ zrb/builtin/generator/fastapp/template/src/kebab-app-name/docker-compose.yml,sha256=hZhmEUp9Eh90TM42rMEc-CypBGrN9YUdbAxc7l2LUHc,3567
79
82
  zrb/builtin/generator/fastapp/template/src/kebab-app-name/deployment/.gitignore,sha256=zF-r8EJ_RaTVRxFpy1mapsxVQV6UAnNcK9q57ynRfig,12
80
83
  zrb/builtin/generator/fastapp/template/src/kebab-app-name/deployment/Pulumi.yaml,sha256=1CV-idg-xnFf253l4KTd0PmEoJymLK6meRS6W-pbwnM,133
81
84
  zrb/builtin/generator/fastapp/template/src/kebab-app-name/deployment/__main__.py,sha256=q9UW0z3JIqWWA381daxA-MWTLdZSn-YpbuKSc5mL_FM,2870
@@ -88,10 +91,8 @@ zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/README.md,sha256=H
88
91
  zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
89
92
  zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/config.py,sha256=jAHlkPJaz_kTzVdCp0MibFFtRNTpOh_MeGVggsbAvG0,1695
90
93
  zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/main.py,sha256=B7ipLHYgMYsId6sZFd5ZP8BqN1fSNScy6Bzh_U3r4IY,141
91
- zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/module_disabled.env,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
92
- zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/module_enabled.env,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
93
94
  zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/requirements.txt,sha256=eb6WMS95-lPZ5gXz2roPYyVGEcvxpHgSOSrLUykQORM,120
94
- zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/template.env,sha256=Cw3iQh6dL-Ja1AQbB6EySpiRV92B4F4U7SKtkKJCk6g,510
95
+ zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/template.env,sha256=G4mYpyTIbiP7ZfIycoPxahpDbh6TYtu9AaXCrxDMZa0,514
95
96
  zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/component/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
96
97
  zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/component/app.py,sha256=GltNfKQJlV4B_SheVTYGqW83HRHfDGczWmcL_UI0ULA,1848
97
98
  zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/component/app_lifespan.py,sha256=V6DplWYbIlGqCUdwDB91spFuX5wBsTaH_KJngTmef0c,1173
@@ -146,7 +147,7 @@ zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/helper/__init__.py
146
147
  zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/helper/async_task.py,sha256=xoBJz_4XApjT7MZwRYPs2EF1IMEjaOJJX5WuGtAS8ug,499
147
148
  zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/helper/conversion.py,sha256=di80BqsFjkFgIY9v7Yxvr07kfEjQKGdW2Knvt0uWNqM,763
148
149
  zrb/builtin/generator/fastapp/template/src/kebab-app-name/src/module/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
149
- zrb/builtin/generator/fastapp_module/add.py,sha256=_PRmonaKWG1v72DIenT_f-GJmfYMLoY-BGNvX6I30kE,7903
150
+ zrb/builtin/generator/fastapp_module/add.py,sha256=Z__5YeB_LglZUQSW0sK1fozPMeTNKRHDp1kmTYRiosc,13230
150
151
  zrb/builtin/generator/fastapp_module/template/src/kebab-app-name/src/module/snake_module_name/__init__.py,sha256=AyAutp7oGozEoq-DzwnS6ctxS4-lfKmn9VJtTo9k8P8,1186
151
152
  zrb/builtin/generator/fastapp_module/template/src/kebab-app-name/src/module/snake_module_name/api.py,sha256=XH-BAE1hqc3j0DPK7ejWXYj8fwc0GM7B-2MScSMq62E,702
152
153
  zrb/builtin/generator/fastapp_module/template/src/kebab-app-name/src/module/snake_module_name/event.py,sha256=bUAG_yiKGawdez7cGal-4OBiUiFBSqbfgrNEXD19GfA,468
@@ -162,8 +163,8 @@ zrb/builtin/generator/project/template/zrb_init.py,sha256=47DEQpj8HBSa-_TImW-5JC
162
163
  zrb/builtin/generator/project/template/_automate/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
163
164
  zrb/builtin/generator/project/template/src/.gitkeep,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
164
165
  zrb/builtin/generator/project_task/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
165
- zrb/builtin/generator/project_task/add.py,sha256=v4tqEpFFn9mp9M25kotJJytOQASi8658ZIMm458Ls2c,949
166
- zrb/builtin/generator/project_task/task_factory.py,sha256=ZqPOQT9rI1BZ1QqK6kTtAhZVAyoSJxwI6Wt2-osRYCo,7009
166
+ zrb/builtin/generator/project_task/add.py,sha256=pfrB0RjANuMkUTlLFrFz8xKXoYl_w0pd60_FKzs2aFw,1018
167
+ zrb/builtin/generator/project_task/task_factory.py,sha256=KZ6ch_hDY65Tkx2_wgMWZkZ4dXFR4pF0gjUXksIKhrg,7063
167
168
  zrb/builtin/generator/project_task/task_factory_helper.py,sha256=Ted9wG3cRev5pjguwaun-agm-VEkBd-79jzqBa9jRT8,1565
168
169
  zrb/builtin/generator/project_task/template/_automate/_project/__init__.py,sha256=BtMKxpLBRc-UBvNZdtQfHYzkMJRXXjnup_NJuAmltG4,644
169
170
  zrb/builtin/generator/project_task/template/_automate/_project/build_project_images.py,sha256=EDRU1AKYtTU9iouUU1YMtePFF2DHPEYWfPSP8_OvUMs,322
@@ -178,7 +179,7 @@ zrb/builtin/generator/python_task/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeR
178
179
  zrb/builtin/generator/python_task/add.py,sha256=tqxf1391xZKhRroUFc_9e_F1KZI1h5pXhXpv4Fg1TA8,1719
179
180
  zrb/builtin/generator/python_task/template/_automate/snake_task_name.py,sha256=WcfOEmz_EhrywH7jikgGhqkQZNKP-KZGACVd406MCiU,742
180
181
  zrb/builtin/generator/simple_python_app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
181
- zrb/builtin/generator/simple_python_app/add.py,sha256=BmkZUJnNmt4L3aObLiwhGeK8QHyXletae_n2WT-4jao,3993
182
+ zrb/builtin/generator/simple_python_app/add.py,sha256=WRxLribaeeL--1-cDcxqPbVJnRH9y1gBf8rxiUnyIEk,4033
182
183
  zrb/builtin/generator/simple_python_app/template/_automate/snake_app_name/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
183
184
  zrb/builtin/generator/simple_python_app/template/_automate/snake_app_name/_common.py,sha256=UHt9KK3VqiJOg2DXSJByAezN93JRZCyJSox6YZxMdsA,2606
184
185
  zrb/builtin/generator/simple_python_app/template/_automate/snake_app_name/container.py,sha256=7Z3tFM-sgzNhmOdXAJYGKfLc--uW3-h0N4ePc-m3BM4,2209
@@ -188,7 +189,7 @@ zrb/builtin/generator/simple_python_app/template/_automate/snake_app_name/local.
188
189
  zrb/builtin/generator/simple_python_app/template/_automate/snake_app_name/cmd/pulumi-destroy.sh,sha256=u94XbUokbd9gzW0b-UZ9aOyK8niK-Y3U_QDZHRI0CNw,148
189
190
  zrb/builtin/generator/simple_python_app/template/_automate/snake_app_name/cmd/pulumi-up.sh,sha256=hv36V-g8y2IqjUwqFkC6Vi27xfJbTEm0sn4iQxmAerc,143
190
191
  zrb/builtin/generator/simple_python_app/template/_automate/snake_app_name/cmd/start.sh,sha256=jD7VGN73rpc20AB3TrsYqBII4_XehSWhnfPOZH6dMzM,305
191
- zrb/builtin/generator/simple_python_app/template/src/kebab-app-name/docker-compose.yml,sha256=117kEAWXwE-pdJhVRLQyKo3ULWK5EXL6p9w4eHgoTr4,297
192
+ zrb/builtin/generator/simple_python_app/template/src/kebab-app-name/docker-compose.yml,sha256=X9a5upK-vdFZ1VsPRYbOytK7pBXZH5I_auyQQ6vMCp8,480
192
193
  zrb/builtin/generator/simple_python_app/template/src/kebab-app-name/deployment/.gitignore,sha256=zF-r8EJ_RaTVRxFpy1mapsxVQV6UAnNcK9q57ynRfig,12
193
194
  zrb/builtin/generator/simple_python_app/template/src/kebab-app-name/deployment/Pulumi.yaml,sha256=1CV-idg-xnFf253l4KTd0PmEoJymLK6meRS6W-pbwnM,133
194
195
  zrb/builtin/generator/simple_python_app/template/src/kebab-app-name/deployment/__main__.py,sha256=q9UW0z3JIqWWA381daxA-MWTLdZSn-YpbuKSc5mL_FM,2870
@@ -196,8 +197,8 @@ zrb/builtin/generator/simple_python_app/template/src/kebab-app-name/deployment/r
196
197
  zrb/builtin/generator/simple_python_app/template/src/kebab-app-name/deployment/state/.gitkeep,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
197
198
  zrb/builtin/generator/simple_python_app/template/src/kebab-app-name/src/.dockerignore,sha256=Adno7oEVeo0HrAX3s4RzQvgRSxeu0VqDbrdK4g-okX4,21
198
199
  zrb/builtin/generator/simple_python_app/template/src/kebab-app-name/src/.gitignore,sha256=Q63GDlt-GxDtkQ84tg70v5wXqE7dYTKOrhBuaojUxeM,22
199
- zrb/builtin/generator/simple_python_app/template/src/kebab-app-name/src/Dockerfile,sha256=PoUOb9dujHBta7SRaMBF5kMHVmLgtKYOwOTuoBjns7o,99
200
- zrb/builtin/generator/simple_python_app/template/src/kebab-app-name/src/main.py,sha256=63QI8lAo-p6VPiCKZ7ApR_RvllSvs68kwOBpuMxujx0,564
200
+ zrb/builtin/generator/simple_python_app/template/src/kebab-app-name/src/Dockerfile,sha256=Yl5euBK6oKwoo3r4KhiLNMR8PwCkn7uziXOZe1zBewY,187
201
+ zrb/builtin/generator/simple_python_app/template/src/kebab-app-name/src/main.py,sha256=UpJoBSo4zNKFSa8-0pdJwCymjJDxVZicdoENshogtjE,447
201
202
  zrb/builtin/generator/simple_python_app/template/src/kebab-app-name/src/requirements.txt,sha256=HX56Al9bOoM8Mq1Yc44UE2cfT3XrTZGmHI6T3q7xn50,15
202
203
  zrb/builtin/generator/simple_python_app/template/src/kebab-app-name/src/template.env,sha256=xhEabjiF3vehNElqWXr-E_4Gi5kxDlUfrU2qoDiAuIU,81
203
204
  zrb/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -219,11 +220,13 @@ zrb/helper/codemod/add_function_call.py,sha256=Jt_1VpFW9B28dGXokUevdsbnGkBXOKZyo
219
220
  zrb/helper/codemod/add_import_module.py,sha256=ruqXHUs3_T3UCiZVewTuuY7UTF_DuyiKkURLzOnbst4,3277
220
221
  zrb/helper/codemod/add_upstream_to_task.py,sha256=hiZB3Xe4wjvKzEN4DUxcOnl4NST1a8atovkS2fOmX6w,3480
221
222
  zrb/helper/codemod/format_code.py,sha256=X6ZWzhhfIMmeFWO9um2aLF3lVBwtUvqseWnzUSU4Nl8,88
222
- zrb/helper/dockercompose/fetch_external_env.py,sha256=YJ6rZzg_oP5L0U0fbJWCZsMOyjteSHAIKi6QFSBU_Bg,1936
223
- zrb/helper/dockercompose/read.py,sha256=ilbIqXBqNNskmGDyKxh8FxVc24v06Wj2qfqV2Ys_IyM,190
223
+ zrb/helper/docker_compose/fetch_external_env.py,sha256=YJ6rZzg_oP5L0U0fbJWCZsMOyjteSHAIKi6QFSBU_Bg,1936
224
+ zrb/helper/docker_compose/file.py,sha256=_UFFZ7ExE46PvFX9q6qbP1dT-ntC7l9lfST3beb58p0,687
225
+ zrb/helper/env_map/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
226
+ zrb/helper/env_map/fetch.py,sha256=2ZBggukoc2QtX4p3-k9zzLbs9sBXHi-LkvOjW0n2n2U,1955
224
227
  zrb/helper/file/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
225
- zrb/helper/file/copy_tree.py,sha256=4gbtvzQ2ivXWeMZHVtzNL85fJTdxOn-Lc1UV2pJyOzM,1415
226
- zrb/helper/file/text.py,sha256=PWMZjPNzR1OMvauBFSH6Se3dspML1xG0RwpMcGuC8vs,329
228
+ zrb/helper/file/copy_tree.py,sha256=fYmAWupTVhgylPWiRtT0lJnfo02_qJMwyBMnWrMaEL0,1441
229
+ zrb/helper/file/text.py,sha256=4JhIj0I3XXZUITQ2NI5GjbqYUN3x55dY33BTDP6e0e4,654
227
230
  zrb/helper/keyval/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
228
231
  zrb/helper/list/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
229
232
  zrb/helper/list/ensure_uniqueness.py,sha256=EXHsGBZ3d9oQGzk2mft4PDSyyO1kVWCgnGhWmCZmZyM,622
@@ -236,23 +239,23 @@ zrb/helper/string/double_quote.py,sha256=uYIdgotgVvMWxffJhrgb1TQI5v1-QdA0UByE2xG
236
239
  zrb/helper/string/jinja.py,sha256=yXX79mYJ-s1wRqGJpms1xKTrZE6Ts_OE_YDLIazrBvI,261
237
240
  zrb/helper/string/parse_replacement.py,sha256=g4GHaZqncBIZyyZrcZJtylz6gySEU18A27S4XPTEDEI,222
238
241
  zrb/task/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
239
- zrb/task/base_task.py,sha256=wkP7g95l7sttDyqGC_FOIrnZPD5jfUl_bvbRcmpMqPw,27535
242
+ zrb/task/base_task.py,sha256=3gk28rwBVFyDpuWPCfK5OMK-C2FvFpnke90YnpvFhJI,27621
240
243
  zrb/task/cmd_task.py,sha256=DXQi-8wU0iZJopIYUIQjNyXBKUEwWQErY78MYnd-Qsw,8027
241
244
  zrb/task/decorator.py,sha256=Nez3CI63K-vBM0HbTU8dXjbJYVGSZZ27i_N5uO4rPK4,1569
242
- zrb/task/docker_compose_task.py,sha256=q4T6eO3UpPCLTZIW4jiZs5Ae_8VdigkBXvD-V_VQI5Y,4966
245
+ zrb/task/docker_compose_task.py,sha256=Lrfgamt8Tkokfjcq2nU63cU9uarSJyCyifCeI97KI9k,4955
243
246
  zrb/task/http_checker.py,sha256=qVeDtuntDNQWyQ3JWCOCOzfy15sD22CjvWM_mh_Rto4,4413
244
- zrb/task/path_checker.py,sha256=T6BHmB5nGGgWNoVE2taLm3siDviBjJm67z2JjMpvx54,2841
247
+ zrb/task/path_checker.py,sha256=snqnuCg6RFAdUg2kt7fLlqrvdnqL-aeVBsBAJzlr_FU,2847
245
248
  zrb/task/port_checker.py,sha256=OxUE0e-hIE7MYJ-PIBwSU_FA8iue__9xrBaPDEPHkJg,3362
246
- zrb/task/resource_maker.py,sha256=RtPbYPQ9c5oA-sNYbcoDFmxoOzi65UwWNe2gpvl8Slc,3986
249
+ zrb/task/resource_maker.py,sha256=YNo77pcdDQ07XxVBOytWiZB5xtpFm7cjBCWzOuRz6d0,3992
247
250
  zrb/task/task.py,sha256=WsyV6YtllFa4EIAE0t_k-8wrkUwgybAktOp-zYRVOF8,178
248
- zrb/task/installer/factory.py,sha256=eHm_4gFAjOIWMweoMKgi7Q54OEujBF_KowR41rbVHOA,3975
251
+ zrb/task/installer/factory.py,sha256=u8pIDZrUU2TUcS_4lb_jm93-vwK4D4I03yicCzlDuV4,4152
249
252
  zrb/task/installer/_default/backup-config.sh,sha256=HzonUEVWLiE_4YjXWjx7zw-n917sHMgV8Tq8v_KP3ng,285
250
253
  zrb/task/installer/_default/check.sh,sha256=2t15ELcPJWnWJmBHJTP6_BHGAPc5EkCgwN7iyYXb3tk,24
251
254
  zrb/task/installer/_default/download.sh,sha256=rInEP9h2T74WE1v7Yl12b99RMwCbBRzIpNuORPPJqus,34
252
255
  zrb/task/installer/_default/finalize.sh,sha256=AftPNSgSMin2K59vqfHQungkpgPsf60z1JnDZY2eQe8,35
253
256
  zrb/task/installer/_default/remove-config.sh,sha256=ccXzP3TYSxopfaHFx0eoz7871nnWq4CjHkOaUAlGfRI,228
254
257
  zrb/task/installer/_default/setup.sh,sha256=J9hEoG9ChHuREzpAw4FYsmgPH-Dp_7klNPRVtk9bUi4,25
255
- zrb/task_env/env.py,sha256=nF6DmiHE_gYqybbx9PiGsdbUPd--xfNsUZFijp5DtVE,1622
258
+ zrb/task_env/env.py,sha256=udgStTjCqa-ZABwn1__ZUhBXYJcOqHUi9vuFciwWcoY,1701
256
259
  zrb/task_env/env_file.py,sha256=eul7HsvqVAHWwU4x0oJJPwpUjQFb2XU9uFJbstt4oZQ,727
257
260
  zrb/task_input/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
258
261
  zrb/task_input/_constant.py,sha256=yvYY-Cc5eRAUQbe5aJcVVy846yyQYYg7v1hgiFyNikg,42
@@ -264,8 +267,8 @@ zrb/task_input/input.py,sha256=I4KrdJR3muxAWgd8zX6CErogHYcFM80Si0DmC5-YJGE,69
264
267
  zrb/task_input/int_input.py,sha256=YTxeRvHGe60hUto3vGtjA3GVLsR2zPtlIca20XO_94A,1568
265
268
  zrb/task_input/password_input.py,sha256=-ygMqy3JoHtZB5aA7uwlwgntFBJKBasfP3eX9iaOxKE,1521
266
269
  zrb/task_input/str_input.py,sha256=RUw5zTUDAo1kyl5kcUpXyk073xh09N04D41PmH76RVk,1568
267
- zrb-0.0.46.dist-info/entry_points.txt,sha256=xTgXc1kBKYhJHEujdaSPHUcJT3-hbyP1mLgwkv-5sSk,40
268
- zrb-0.0.46.dist-info/LICENSE,sha256=hVM_U_SOdNZ9mLpaAZ5qn3HRXQXucGX9rliGPEifzVs,1073
269
- zrb-0.0.46.dist-info/WHEEL,sha256=rSgq_JpHF9fHR1lx53qwg_1-2LypZE_qmcuXbVUq948,81
270
- zrb-0.0.46.dist-info/METADATA,sha256=qgKFdOmC2X4N_ccM1LTyFb8dpUNGOq3sB9Pa6GUQio4,12395
271
- zrb-0.0.46.dist-info/RECORD,,
270
+ zrb-0.0.47.dist-info/entry_points.txt,sha256=xTgXc1kBKYhJHEujdaSPHUcJT3-hbyP1mLgwkv-5sSk,40
271
+ zrb-0.0.47.dist-info/LICENSE,sha256=hVM_U_SOdNZ9mLpaAZ5qn3HRXQXucGX9rliGPEifzVs,1073
272
+ zrb-0.0.47.dist-info/WHEEL,sha256=rSgq_JpHF9fHR1lx53qwg_1-2LypZE_qmcuXbVUq948,81
273
+ zrb-0.0.47.dist-info/METADATA,sha256=venXW3Au1Ozz01IMWkCV5GtmgOPQGoDXszcFUJLpv7k,12395
274
+ zrb-0.0.47.dist-info/RECORD,,
@@ -1,9 +0,0 @@
1
- from typing import Any
2
- from ruamel.yaml import YAML
3
-
4
-
5
- def read_file(file_name: str) -> Any:
6
- yaml = YAML()
7
- with open(file_name, 'r') as f:
8
- data = yaml.load(f)
9
- return data
File without changes
File without changes