byzh-core 0.0.2.14__py3-none-any.whl → 0.0.3.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
byzh_core/B_os.py CHANGED
@@ -1,9 +1,13 @@
1
1
  import shutil
2
2
  import os
3
3
  from pathlib import Path
4
- from typing import Literal
5
4
 
6
- def get_parent_dir(path: Literal['__file__']) -> Path:
5
+ from .Butils import b_validate_params
6
+
7
+ @b_validate_params({
8
+ "path": __file__
9
+ })
10
+ def get_parent_dir(path) -> Path:
7
11
  '''
8
12
  获取 该py文件 所在的文件夹
9
13
  :param path: __file__
@@ -52,6 +56,14 @@ def makedirs(path):
52
56
  if is_file(path):
53
57
  os.makedirs(path.parent, exist_ok=True)
54
58
 
59
+ def makefile(path):
60
+ path = Path(path)
61
+
62
+ parent_dir = path.parent
63
+ makedirs(parent_dir)
64
+
65
+ path.touch() # 创建文件
66
+
55
67
  def rm(path):
56
68
  if os.path.isdir(path):
57
69
  shutil.rmtree(path)
@@ -86,6 +98,59 @@ def get_filepaths_in_dir(root_dir_path, exclude_name=[], exclude_suffix=['.pyc']
86
98
  file_paths.append(file_path)
87
99
  return file_paths
88
100
 
101
+ @b_validate_params({
102
+ "black_dirnames": {"examples": ["__pycache__", ".git"]},
103
+ "black_filenames": {"examples": ["__init__.py", "test.py"]},
104
+ "black_stems": {"examples": ["test", "example"]},
105
+ "black_exts": {"examples": [".pyc"]}
106
+ })
107
+ def walk(
108
+ root: str,
109
+ black_dirnames: list[str] = None,
110
+ black_filenames: list[str] = None,
111
+ black_stems: list[str] = None,
112
+ black_exts: list[str] = None,
113
+ ):
114
+ """
115
+ 遍历目录, 类似os.walk, 但可以指定黑名单
116
+ :param root:
117
+ :param black_dirnames:
118
+ :param black_stems: 文件名
119
+ :param black_stems: 文件名, 不包括后缀
120
+ :param black_exts: 文件名的后缀(含.)
121
+ :return: root, dirs, files
122
+ """
123
+
124
+ def get_lst(lst):
125
+ return [] if lst is None else lst
126
+ black_dirnames = get_lst(black_dirnames)
127
+ black_filenames = get_lst(black_filenames)
128
+ black_stems = get_lst(black_stems)
129
+ black_exts = get_lst(black_exts)
130
+
131
+ dirs = []
132
+ files = []
133
+ for entry in os.listdir(root):
134
+ path = os.path.join(root, entry)
135
+ # 是文件夹
136
+ if os.path.isdir(path):
137
+ dirs.append(entry)
138
+ # 是文件
139
+ elif os.path.isfile(path):
140
+ files.append(entry)
141
+ else:
142
+ continue
143
+ dirs = [d for d in dirs if d not in black_dirnames]
144
+ files = [f for f in files if f not in black_filenames]
145
+ files = [f for f in files if os.path.splitext(f)[0] not in black_stems]
146
+ files = [f for f in files if os.path.splitext(f)[1] not in black_exts]
147
+
148
+ yield root, dirs, files
149
+
150
+ for dirname in dirs:
151
+ new_path = os.path.join(root, dirname)
152
+ yield from walk(new_path, black_dirnames, black_filenames, black_stems, black_exts)
153
+
89
154
  if __name__ == '__main__':
90
155
  # print(get_dirpaths_in_dir(r'E:\byzh_workingplace\byzh-rc-to-pypi'))
91
156
  a = get_filepaths_in_dir(r'E:\byzh_workingplace\byzh-rc-to-pypi')
@@ -1,16 +1,29 @@
1
1
  import os
2
2
  import zipfile
3
+ import time
3
4
  from pathlib import Path
4
5
 
6
+ from .. import B_os
5
7
  from ..Btqdm import B_Tqdm
8
+ from ..Butils import b_validate_params
6
9
 
10
+ @b_validate_params({
11
+ "black_dirnames": {"examples": ["__pycache__", ".git", ".idea"]},
12
+ "black_filenames": {"examples": [".gitignore", "README.md"]},
13
+ "black_stems": {"examples": ["README"]},
14
+ "black_exts": {"examples": [".csv", ".npy", ".pt", ".pth"]},
15
+ "white_filepath": {"examples": ["./.gitignore", "./README.md"]},
16
+ "white_dirpath": {"examples": [r"E:\byzh_workingplace\...\文件夹1"]},
17
+ })
7
18
  def b_archive_zip(
8
19
  source_path,
9
20
  output_path:str|Path=None,
10
- exclude_dirs:list[str]=None,
11
- exclude_files:list[str]=None,
12
- exclude_exts:list[str]=None,
13
- while_list:list[str]=None,
21
+ black_dirnames:list[str]=None,
22
+ black_filenames:list[str]=None,
23
+ black_stems:list[str]=None,
24
+ black_exts:list[str]=None,
25
+ white_filepath:list[str]=None,
26
+ white_dirpath:list[str]=None,
14
27
  contain_empty_folder:bool=True,
15
28
  ):
16
29
  '''
@@ -20,61 +33,126 @@ def b_archive_zip(
20
33
 
21
34
  :param source_path:
22
35
  :param output_path: 如果不传入, 则默认为source_path同名同路径的zip文件
23
- :param exclude_dirs: 黑名单-文件夹名 >>> ['__pycache__', '.git', '.idea']
24
- :param exclude_files: 黑名单-文件全名 >>> ['.gitignore', 'README.md']
25
- :param exclude_exts: 黑名单-文件后缀(包括.) >>> ['.csv', '.npy', '.pt', '.pth']
26
- :param while_list: 白名单-文件全名 >>> ['.gitignore', 'README.md']
36
+ :param black_dirnames: 黑名单-文件夹名
37
+ :param black_filenames: 黑名单-文件全名
38
+ :param black_stems: 黑名单-文件名(不含后缀)
39
+ :param black_exts: 黑名单-文件后缀(包括.)
40
+ :param white_filepath: 白名单-文件全名
41
+ :param white_dirpath: 白名单-文件夹路径
27
42
  :param contain_empty_folder: 是否包含空文件夹
28
43
  :return:
29
44
  '''
30
45
  output_path = source_path + '.zip' if output_path is None else output_path
46
+ if os.path.exists(output_path):
47
+ print(f"检测到{output_path}已存在, 将在3秒后删除...")
48
+ time.sleep(3)
49
+ B_os.rm(output_path)
50
+ print(f"{output_path}已删除")
31
51
  def get_lst(lst):
32
52
  return [] if lst is None else lst
33
- exclude_dirs = get_lst(exclude_dirs)
34
- exclude_files = get_lst(exclude_files)
35
- exclude_exts = get_lst(exclude_exts)
36
- while_list = get_lst(while_list)
53
+ black_dirnames = get_lst(black_dirnames)
54
+ black_filenames = get_lst(black_filenames)
55
+ black_stems = get_lst(black_stems)
56
+ black_exts = get_lst(black_exts)
57
+ white_filepath = get_lst(white_filepath)
58
+ white_dirpath = get_lst(white_dirpath)
37
59
 
38
-
39
- my_tqdm = B_Tqdm(prefix='Archive')
60
+ my_tqdm = B_Tqdm(prefix='[b_archive_zip]')
40
61
 
41
62
  with zipfile.ZipFile(output_path, 'w', zipfile.ZIP_DEFLATED) as zipf:
42
- # 压缩文件:
63
+ # 如果传入的是文件:
43
64
  if os.path.isfile(source_path):
44
65
  arcname = os.path.basename(source_path)
45
66
  zipf.write(source_path, arcname)
46
67
  my_tqdm.update(1)
47
68
  return
48
69
 
49
- # 压缩文件夹:
70
+ # 如果传入的是文件夹:
50
71
  if os.path.isdir(source_path):
51
- for root, dirs, files in os.walk(source_path):
52
- # 排除指定文件夹dirs
53
- dirs[:] = [d for d in dirs if d in while_list or d not in exclude_dirs]
54
- # 排除指定文件files
55
- files = [f for f in files if f in while_list or f not in exclude_files]
56
- # 排除指定后缀文件files
57
- files = [f for f in files if f in while_list or not any(f.endswith(ext) for ext in exclude_exts)]
72
+ for root, dirs, files in B_os.walk(source_path,
73
+ black_dirnames=black_dirnames,
74
+ black_filenames=black_filenames,
75
+ black_stems=black_stems,
76
+ black_exts=black_exts):
58
77
 
59
78
  # 压缩文件:
60
79
  for file in files:
61
80
  file_path = os.path.join(root, file)
62
81
  arcname = os.path.relpath(file_path, source_path) # 相对于source_path的相对路径
63
82
  zipf.write(file_path, arcname)
64
-
65
83
  my_tqdm.update(1)
84
+ # 压缩文件夹:
85
+ for i, dir in enumerate(dirs):
86
+ if len(os.listdir(os.path.join(root, dir))) == 0:
87
+ if not contain_empty_folder:
88
+ dirs.pop(i)
89
+ continue
90
+ dir_path = os.path.join(root, dir)
91
+ arcname = os.path.relpath(dir_path, source_path) # 相对于source_path的相对路径
92
+ zipf.write(dir_path, arcname)
93
+ my_tqdm.update(1)
94
+
95
+ # 白名单-文件:
96
+ for filepath in white_filepath:
97
+ arcname = os.path.relpath(filepath, source_path)
98
+ zipf.write(filepath, arcname)
99
+ my_tqdm.update(1)
66
100
 
67
- # 若是空文件夹,则压缩文件夹:
68
- if contain_empty_folder and (len(dirs) == 0 and len(files) == 0):
69
- arcname = os.path.relpath(root, source_path)
70
- folder_path = root
71
- zipf.write(folder_path, arcname)
101
+ # 白名单-文件夹:
102
+ for dirpath in white_dirpath:
103
+ for root, dirs, files in B_os.walk(dirpath):
104
+ # 压缩文件:
105
+ for file in files:
106
+ file_path = os.path.join(root, file)
107
+ arcname = os.path.relpath(file_path, source_path) # 相对于source_path的相对路径
108
+ zipf.write(file_path, arcname)
109
+ my_tqdm.update(1)
110
+ # 压缩文件夹:
111
+ for i, dir in enumerate(dirs):
112
+ if len(os.listdir(os.path.join(root, dir))) == 0:
113
+ if not contain_empty_folder:
114
+ dirs.pop(i)
115
+ continue
116
+ dir_path = os.path.join(root, dir)
117
+ arcname = os.path.relpath(dir_path, source_path) # 相对于source_path的相对路径
118
+ zipf.write(dir_path, arcname)
72
119
  my_tqdm.update(1)
73
120
 
74
121
  if __name__ == '__main__':
122
+ # 不包含空文件夹:`文件夹111`
123
+ B_os.makedirs('根文件夹/文件夹1/文件夹11/文件夹111')
124
+ contain_empty_folder = False
125
+
126
+ # 不包含`文件夹12`
127
+ B_os.makefile('根文件夹/文件夹1/文件夹12/file1.txt')
128
+ B_os.makefile('根文件夹/文件夹1/文件夹12/文件夹123/file2.txt')
129
+ B_os.makefile('根文件夹/文件夹1/文件夹12/文件夹1234/文件夹12345/file3.txt')
130
+ black_dirnames = ['文件夹12']
131
+
132
+ # 不包含`file4.txt`, 且因此`文件夹21`变为空文件夹, 因此不包含
133
+ B_os.makefile('根文件夹/文件夹2/文件夹21/file4.txt')
134
+ black_filenames = ['file4.txt']
135
+
136
+ # 不包含`awa.txt`, `awa.html`
137
+ B_os.makefile('根文件夹/文件夹3/awa.txt')
138
+ B_os.makefile('根文件夹/文件夹3/文件夹31/awa.html')
139
+ black_stems = ['awa']
140
+
141
+ # 不包含`file5.csv`
142
+ B_os.makefile('根文件夹/文件夹4/file5.csv')
143
+ black_exts = ['.csv']
144
+
145
+ white_filepath = ['根文件夹/文件夹1/文件夹12/文件夹1234/文件夹12345/file3.txt']
146
+ white_dirpath = ['根文件夹/文件夹1/文件夹12/文件夹123']
147
+
75
148
  b_archive_zip(
76
- source_path=r'E:\byzh_workingplace\byzh-rc-to-pypi\mnist',
77
- output_path=r'E:\byzh_workingplace\byzh-rc-to-pypi\awaqwq.zip',
78
- exclude_dirs=['__pycache__', 'com'],
79
- exclude_exts=['.ppt']
149
+ source_path=r'根文件夹',
150
+ output_path=r'awaqwq.zip',
151
+ black_dirnames=black_dirnames,
152
+ black_filenames=black_filenames,
153
+ black_stems=black_stems,
154
+ black_exts=black_exts,
155
+ white_filepath=white_filepath,
156
+ white_dirpath=white_dirpath,
157
+ contain_empty_folder=contain_empty_folder,
80
158
  )
@@ -1,5 +1,4 @@
1
1
  import copy
2
- import math
3
2
  import os
4
3
  from pathlib import Path
5
4
  from typing import List, Tuple, Union
@@ -1,7 +1,9 @@
1
1
  from .text_style import B_Color, B_Appearance, B_Background
2
2
  from .timer import B_Timer
3
+ from .decorator import b_validate_params
3
4
 
4
5
  __all__ = [
5
6
  'B_Color', 'B_Appearance', 'B_Background',
6
- 'B_Timer'
7
+ 'B_Timer',
8
+ 'b_validate_params'
7
9
  ]
@@ -0,0 +1,15 @@
1
+ def b_validate_params(specs): # specs是@validate_params()传入的内容
2
+ '''
3
+ >>> @b_validate_params({
4
+ >>> "my_str": {"literal": "happy" or "sad"},
5
+ >>> "my_int": {"example": 114514}
6
+ >>> })
7
+ >>> def awa(my_str, my_int):
8
+ >>> return "qwq"
9
+ '''
10
+ def decorator(func): # func是调用修饰器的函数本身
11
+ def wrapper(*args, **kwargs): # *args, **kwargs是函数本身收到的参数
12
+ ...
13
+ return func(*args, **kwargs) # 在此处真正调用函数本身
14
+ return wrapper
15
+ return decorator
byzh_core/Butils/timer.py CHANGED
@@ -1,6 +1,10 @@
1
1
  import time
2
2
  class B_Timer:
3
3
  def __init__(self):
4
+ '''
5
+ >>> with B_Timer():
6
+ >>> ...
7
+ '''
4
8
  self.start_time = 0
5
9
  self.end_time = 0
6
10
 
@@ -107,4 +107,7 @@ class B_Writer:
107
107
  os.makedirs(dir, exist_ok=True)
108
108
 
109
109
  def __exit__(self):
110
- self.closeFile()
110
+ self.closeFile()
111
+
112
+ if __name__ == '__main__':
113
+ B_Writer()
byzh_core/__init__.py CHANGED
@@ -2,4 +2,4 @@
2
2
  # class 以"B_"开头
3
3
  # function 以"b_"开头
4
4
 
5
- __version__ = '0.0.2.14'
5
+ __version__ = '0.0.3.0'
byzh_core/__main__.py ADDED
@@ -0,0 +1,9 @@
1
+ import argparse
2
+
3
+ def b_zip():
4
+ parser = argparse.ArgumentParser()
5
+ parser.add_argument("dir_path")
6
+ args = parser.parse_args()
7
+
8
+ from .Barchive import b_archive_zip
9
+ b_archive_zip(args.dir_path)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: byzh_core
3
- Version: 0.0.2.14
3
+ Version: 0.0.3.0
4
4
  Summary: byzh_core是byzh系列的核心库,包含了一些常用的工具函数和类。
5
5
  Author: byzh_rc
6
6
  License: MIT
@@ -0,0 +1,29 @@
1
+ byzh_core/B_os.py,sha256=f8XuZZOMnP0Fszg6oPLlo9kxX1ytJBK8cEoHqzVkMVA,4313
2
+ byzh_core/__init__.py,sha256=7C6DIxqXyGDta34Hbsf4gdcM9QWGSeROrONoT2IHeCU,110
3
+ byzh_core/__main__.py,sha256=o7-Mn6j1g-VGWhE13goDOMmxKSlXvtrkYVkwt4DrCjo,217
4
+ byzh_core/Barchive/__init__.py,sha256=wUdz646VS0Uhq9lwMkd3YQHCvQhLDqgADoDjFGMqIn0,65
5
+ byzh_core/Barchive/archive.py,sha256=CYuWUScgDEmo1dHwdAZOfW0gSlXlrCTwX3FB_DdMW7I,6598
6
+ byzh_core/Btable/__init__.py,sha256=NlQBjp_mvObEUm4y6wXbGipkNM2N3uNIUidaJkTwFsw,62
7
+ byzh_core/Btable/auto_table.py,sha256=avMeRWydw9L8s3fU0-BSl8a2dCyreIUzW--csm5eR0g,14734
8
+ byzh_core/Bterminal/__init__.py,sha256=B6p6mHVhi5LAHKlvqfrv20E6XNqUsfU2xD753V6-Zf4,83
9
+ byzh_core/Bterminal/cmd.py,sha256=0I-d7VPHv9eYJoSrAZOnEK-R-hyjWVY0hRRn3Zoq1fg,3839
10
+ byzh_core/Btqdm/__init__.py,sha256=G8pvJYizvdTUI3Xw-yELXY7BbjTghCXJLdqUuDoRNZA,141
11
+ byzh_core/Btqdm/my_tqdm.py,sha256=61FeXKrkteKpCvXM5qU2hoMROqFkZW-bs5Rz86KMQSo,3202
12
+ byzh_core/Butils/__init__.py,sha256=_0aAm72oynvpFf-v9EAMSqhWBHbTt4Tn85jtv3Yf0z8,236
13
+ byzh_core/Butils/decorator.py,sha256=HaB8F80wsqQuS30jlI8C2d3SmEa0mBNfJEr5-pwGZj0,584
14
+ byzh_core/Butils/text_style.py,sha256=34u2-Rsur63iNQ0m7tHxpFWqnQZWybSxBx7vnhOhqDo,3346
15
+ byzh_core/Butils/timer.py,sha256=OLxbWWRauYjp1KwavACjoyrqrCciUiIG2ae7qgtZrVA,511
16
+ byzh_core/Bwriter/__init__.py,sha256=QcHzKs0305Pr78ZvZgcC_4miSYZh8jJQDt5TD0GIeEg,82
17
+ byzh_core/Bwriter/writer.py,sha256=ss9EWo-l7czBUlY7Fu0buvQgO5fRspYKtC2X6eaRa0c,3213
18
+ byzh_core/obsolete/__init__.py,sha256=wpfHMPD4awPRDJVYlaiGtkkpjq2srWB7d7LrWhoX5R0,161
19
+ byzh_core/obsolete/auto_table.py,sha256=nC9eHj_IIGVkS2lmN_1gtOyglLCaGlwdoHzPvNNQDEw,13952
20
+ byzh_core/obsolete/row_table.py,sha256=rIX0-Yvb3RnO0RJBkA4m18gux1zYSnEKTy6uQGcWilc,5999
21
+ byzh_core/obsolete/xy_table.py,sha256=-KHK8EUlkJj3Rh0sp_KHI0QFt29AlMASMmR8q8ykUBM,6784
22
+ byzh_core/obsolete/Bconfig/__init__.py,sha256=7lAp7wNetW0AyJcike7ekdY_8wrQQtFjBsi6684t_lU,54
23
+ byzh_core/obsolete/Bconfig/config.py,sha256=_gUNHfW46mTRecYsz_DQn0LENEPifcF3IMHFVE1prgg,10953
24
+ byzh_core-0.0.3.0.dist-info/LICENSE,sha256=-nRwf0Xga4AX5bsWBXXflpDpgX_U23X06oAMcdf0dSY,1089
25
+ byzh_core-0.0.3.0.dist-info/METADATA,sha256=9yFT3-xX-aLQ9YTpIFLIn6vf5Hqw0Ga5jMXSfU1-JPs,371
26
+ byzh_core-0.0.3.0.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
27
+ byzh_core-0.0.3.0.dist-info/entry_points.txt,sha256=swk5zKUZn93OW4lUCK8etsh8yPfFsNUZt4LviEEYpvU,50
28
+ byzh_core-0.0.3.0.dist-info/top_level.txt,sha256=Xv-pzvl6kPdIbi5UehQcUdGhLtb8-4WhS5dRK1LINwM,10
29
+ byzh_core-0.0.3.0.dist-info/RECORD,,
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ byzh = byzh_core.__main__:b_zip
@@ -1,26 +0,0 @@
1
- byzh_core/B_os.py,sha256=-6KjK2NzEeF8GiQno0BmbVDei9DDxOaXdaKGqFeL_eY,2372
2
- byzh_core/__init__.py,sha256=wvMVJNqpQJ3SUDdlKmDrKGhsaRa4jE6lea3GayPTu2A,111
3
- byzh_core/Barchive/__init__.py,sha256=wUdz646VS0Uhq9lwMkd3YQHCvQhLDqgADoDjFGMqIn0,65
4
- byzh_core/Barchive/archive.py,sha256=sG9m1Hr-d2zxYVmzTVRNXX2U2T5baMYECZVqjt0k8pU,3157
5
- byzh_core/Btable/__init__.py,sha256=NlQBjp_mvObEUm4y6wXbGipkNM2N3uNIUidaJkTwFsw,62
6
- byzh_core/Btable/auto_table.py,sha256=nc8RvF86laDnITAzX8sVj3l5tbIGflrsstIbSbGDaAI,14747
7
- byzh_core/Bterminal/__init__.py,sha256=B6p6mHVhi5LAHKlvqfrv20E6XNqUsfU2xD753V6-Zf4,83
8
- byzh_core/Bterminal/cmd.py,sha256=0I-d7VPHv9eYJoSrAZOnEK-R-hyjWVY0hRRn3Zoq1fg,3839
9
- byzh_core/Btqdm/__init__.py,sha256=G8pvJYizvdTUI3Xw-yELXY7BbjTghCXJLdqUuDoRNZA,141
10
- byzh_core/Btqdm/my_tqdm.py,sha256=61FeXKrkteKpCvXM5qU2hoMROqFkZW-bs5Rz86KMQSo,3202
11
- byzh_core/Butils/__init__.py,sha256=ZtdKTJ8rcJ9zogD4t5pdmWSF1l-TiDaot_C1bvzHQaE,168
12
- byzh_core/Butils/text_style.py,sha256=34u2-Rsur63iNQ0m7tHxpFWqnQZWybSxBx7vnhOhqDo,3346
13
- byzh_core/Butils/timer.py,sha256=QrIQ37LALSfx3wUuILLd953-iLDpq_SyqMqrwN6njBs,435
14
- byzh_core/Bwriter/__init__.py,sha256=QcHzKs0305Pr78ZvZgcC_4miSYZh8jJQDt5TD0GIeEg,82
15
- byzh_core/Bwriter/writer.py,sha256=P3TDFKhc_o2LgDumsrgtfhHkAczJ1JO1yYrd2NjdlrY,3167
16
- byzh_core/obsolete/__init__.py,sha256=wpfHMPD4awPRDJVYlaiGtkkpjq2srWB7d7LrWhoX5R0,161
17
- byzh_core/obsolete/auto_table.py,sha256=nC9eHj_IIGVkS2lmN_1gtOyglLCaGlwdoHzPvNNQDEw,13952
18
- byzh_core/obsolete/row_table.py,sha256=rIX0-Yvb3RnO0RJBkA4m18gux1zYSnEKTy6uQGcWilc,5999
19
- byzh_core/obsolete/xy_table.py,sha256=-KHK8EUlkJj3Rh0sp_KHI0QFt29AlMASMmR8q8ykUBM,6784
20
- byzh_core/obsolete/Bconfig/__init__.py,sha256=7lAp7wNetW0AyJcike7ekdY_8wrQQtFjBsi6684t_lU,54
21
- byzh_core/obsolete/Bconfig/config.py,sha256=_gUNHfW46mTRecYsz_DQn0LENEPifcF3IMHFVE1prgg,10953
22
- byzh_core-0.0.2.14.dist-info/LICENSE,sha256=-nRwf0Xga4AX5bsWBXXflpDpgX_U23X06oAMcdf0dSY,1089
23
- byzh_core-0.0.2.14.dist-info/METADATA,sha256=DbsOAJVoaiSdeAJGZcDoaCChTYqGq5Ekb2r-S80rtwY,372
24
- byzh_core-0.0.2.14.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
25
- byzh_core-0.0.2.14.dist-info/top_level.txt,sha256=Xv-pzvl6kPdIbi5UehQcUdGhLtb8-4WhS5dRK1LINwM,10
26
- byzh_core-0.0.2.14.dist-info/RECORD,,