Skip to content

Commit 7f6fc92

Browse files
Merge pull request #5 from danila-schelkov/4-quality-of-extracted-shapes
Quality of extracted shape regions
2 parents 863fa0d + 8ed47bd commit 7f6fc92

32 files changed

+621
-381
lines changed

main.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
try:
77
from loguru import logger
88
except ImportError:
9-
raise RuntimeError('Please, install loguru using pip')
9+
raise RuntimeError("Please, install loguru using pip")
1010

1111
from system import clear
1212
from system.lib import config, locale, refill_menu, menu
@@ -29,14 +29,16 @@ def main():
2929
start_time = time.time()
3030
with logger.catch():
3131
handler()
32-
logger.opt(colors=True).info(f'<green>{locale.done % (time.time() - start_time)}</green>')
32+
logger.opt(colors=True).info(
33+
f"<green>{locale.done % (time.time() - start_time)}</green>"
34+
)
3335
input(locale.to_continue)
3436
clear()
3537

3638

37-
if __name__ == '__main__':
39+
if __name__ == "__main__":
3840
try:
3941
main()
4042
except KeyboardInterrupt:
41-
logger.info('Exit.')
43+
logger.info("Exit.")
4244
pass

system/__init__.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,27 @@
33

44
from loguru import logger
55

6-
is_windows = platform.system() == 'Windows'
7-
null_output = f'{"nul" if is_windows else "/dev/null"} 2>&1'
6+
is_windows = platform.system() == "Windows"
7+
null_output = f"{'nul' if is_windows else '/dev/null'} 2>&1"
88

99

1010
def run(command: str, output_path: str = null_output):
11-
return os.system(f'{command} > {output_path}')
11+
return os.system(f"{command} > {output_path}")
1212

1313

1414
if is_windows:
1515
with logger.catch():
1616
try:
1717
import colorama
18+
1819
colorama.init()
1920
except Exception as e:
2021
logger.exception(e)
2122

2223
def clear():
23-
os.system('cls')
24+
os.system("cls")
25+
2426
else:
27+
2528
def clear():
26-
os.system('clear')
29+
os.system("clear")

system/bytestream.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33

44

55
class Reader(io.BytesIO):
6-
def __init__(self, buffer: bytes = b'', endian: Literal['little', 'big'] = 'little'):
6+
def __init__(
7+
self, buffer: bytes = b"", endian: Literal["little", "big"] = "little"
8+
):
79
super().__init__(buffer)
810

911
self.buffer = buffer
@@ -37,11 +39,11 @@ def read_string(self) -> str:
3739
length = self.read_uchar()
3840
if length != 255:
3941
return self.read(length).decode()
40-
return ''
42+
return ""
4143

4244

4345
class Writer(io.BytesIO):
44-
def __init__(self, endian: Literal['little', 'big'] = 'little'):
46+
def __init__(self, endian: Literal["little", "big"] = "little"):
4547
super().__init__()
4648
self.endian = endian
4749

system/lib/__init__.py

Lines changed: 88 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -14,20 +14,20 @@
1414

1515
logger.remove()
1616
logger.add(
17-
'./logs/info/{time:YYYY-MM-DD}.log',
18-
format='[{time:HH:mm:ss}] [{level}]: {message}',
17+
"./logs/info/{time:YYYY-MM-DD}.log",
18+
format="[{time:HH:mm:ss}] [{level}]: {message}",
1919
encoding="utf8",
20-
level='INFO'
20+
level="INFO",
2121
)
2222
logger.add(
23-
'./logs/errors/{time:YYYY-MM-DD}.log',
24-
format='[{time:HH:mm:ss}] [{level}]: {message}',
23+
"./logs/errors/{time:YYYY-MM-DD}.log",
24+
format="[{time:HH:mm:ss}] [{level}]: {message}",
2525
backtrace=True,
2626
diagnose=True,
2727
encoding="utf8",
28-
level='ERROR'
28+
level="ERROR",
2929
)
30-
logger.add(sys.stdout, format='<lvl>[{level}] {message}</lvl>', level='INFO')
30+
logger.add(sys.stdout, format="<lvl>[{level}] {message}</lvl>", level="INFO")
3131

3232

3333
locale.load(config.language)
@@ -36,6 +36,7 @@
3636
try:
3737
# noinspection PyUnresolvedReferences
3838
import requests
39+
3940
del requests
4041

4142
if config.auto_update and time.time() - config.last_update > 60 * 60 * 24 * 7:
@@ -46,8 +47,8 @@
4647
if config.has_update:
4748
logger.opt(colors=True).info(f'<green>{locale.update_done % ""}</green>')
4849
if Console.question(locale.done_qu):
49-
latest_tag = get_tags('vorono4ka', 'xcoder')[0]
50-
latest_tag_name = latest_tag['name'][1:]
50+
latest_tag = get_tags("vorono4ka", "xcoder")[0]
51+
latest_tag_name = latest_tag["name"][1:]
5152

5253
config.has_update = False
5354
config.version = latest_tag_name
@@ -66,13 +67,15 @@ def refill_menu():
6667

6768
try:
6869
import sc_compression
70+
6971
del sc_compression
7072

7173
from system.lib.features.csv.compress import compress_csv
7274
from system.lib.features.csv.decompress import decompress_csv
7375

7476
try:
7577
import PIL
78+
7679
del PIL
7780

7881
from system.lib.features.sc.decode import sc_decode
@@ -81,87 +84,94 @@ def refill_menu():
8184
from system.lib.features.sc.assembly_encode import sc1_encode
8285

8386
sc_category = Menu.Category(0, locale.sc_label)
84-
sc_category.add(Menu.Item(
85-
locale.decode_sc,
86-
locale.decode_sc_description,
87-
sc_decode
88-
))
89-
sc_category.add(Menu.Item(
90-
locale.encode_sc,
91-
locale.encode_sc_description,
92-
sc_encode
93-
))
94-
sc_category.add(Menu.Item(
95-
locale.decode_by_parts,
96-
locale.decode_by_parts_description,
97-
decode_and_cut
98-
))
99-
sc_category.add(Menu.Item(
100-
locale.encode_by_parts,
101-
locale.encode_by_parts_description,
102-
sc1_encode
103-
))
104-
sc_category.add(Menu.Item(
105-
locale.overwrite_by_parts,
106-
locale.overwrite_by_parts_description,
107-
lambda: sc1_encode(True)
108-
))
87+
sc_category.add(
88+
Menu.Item(locale.decode_sc, locale.decode_sc_description, sc_decode)
89+
)
90+
sc_category.add(
91+
Menu.Item(locale.encode_sc, locale.encode_sc_description, sc_encode)
92+
)
93+
sc_category.add(
94+
Menu.Item(
95+
locale.decode_by_parts,
96+
locale.decode_by_parts_description,
97+
decode_and_cut,
98+
)
99+
)
100+
sc_category.add(
101+
Menu.Item(
102+
locale.encode_by_parts,
103+
locale.encode_by_parts_description,
104+
sc1_encode,
105+
)
106+
)
107+
sc_category.add(
108+
Menu.Item(
109+
locale.overwrite_by_parts,
110+
locale.overwrite_by_parts_description,
111+
lambda: sc1_encode(True),
112+
)
113+
)
109114
menu.add_category(sc_category)
110115
except ImportError:
111-
logger.warning(locale.install_to_unlock % 'PILLOW')
116+
logger.warning(locale.install_to_unlock % "PILLOW")
112117

113118
csv_category = Menu.Category(1, locale.csv_label)
114-
csv_category.add(Menu.Item(
115-
locale.decompress_csv,
116-
locale.decompress_csv_description,
117-
decompress_csv
118-
))
119-
csv_category.add(Menu.Item(
120-
locale.compress_csv,
121-
locale.compress_csv_description,
122-
compress_csv
123-
))
119+
csv_category.add(
120+
Menu.Item(
121+
locale.decompress_csv, locale.decompress_csv_description, decompress_csv
122+
)
123+
)
124+
csv_category.add(
125+
Menu.Item(
126+
locale.compress_csv, locale.compress_csv_description, compress_csv
127+
)
128+
)
124129
menu.add_category(csv_category)
125130
except ImportError:
126-
logger.warning(locale.install_to_unlock % 'sc-compression')
131+
logger.warning(locale.install_to_unlock % "sc-compression")
127132

128133
other = Menu.Category(10, locale.other_features_label)
129134
try:
130135
import requests
136+
131137
del requests
132138

133-
other.add(Menu.Item(
134-
locale.check_update,
135-
locale.version % config.version,
136-
check_update
137-
))
139+
other.add(
140+
Menu.Item(
141+
locale.check_update, locale.version % config.version, check_update
142+
)
143+
)
138144
except ImportError:
139-
logger.warning(locale.install_to_unlock % 'requests')
140-
141-
other.add(Menu.Item(
142-
locale.check_for_outdated,
143-
None,
144-
check_for_outdated
145-
))
146-
other.add(Menu.Item(
147-
locale.reinit,
148-
locale.reinit_description,
149-
lambda: (initialize(), refill_menu())
150-
))
151-
other.add(Menu.Item(
152-
locale.change_language,
153-
locale.change_lang_description % config.language,
154-
lambda: (config.change_language(locale.change()), refill_menu())
155-
))
156-
other.add(Menu.Item(
157-
locale.clear_directories,
158-
locale.clean_dirs_description,
159-
lambda: clear_directories() if Console.question(locale.clear_qu) else -1
160-
))
161-
other.add(Menu.Item(
162-
locale.toggle_update_auto_checking,
163-
locale.enabled if config.auto_update else locale.disabled,
164-
lambda: (config.toggle_auto_update(), refill_menu())
165-
))
145+
logger.warning(locale.install_to_unlock % "requests")
146+
147+
other.add(Menu.Item(locale.check_for_outdated, None, check_for_outdated))
148+
other.add(
149+
Menu.Item(
150+
locale.reinit,
151+
locale.reinit_description,
152+
lambda: (initialize(), refill_menu()),
153+
)
154+
)
155+
other.add(
156+
Menu.Item(
157+
locale.change_language,
158+
locale.change_lang_description % config.language,
159+
lambda: (config.change_language(locale.change()), refill_menu()),
160+
)
161+
)
162+
other.add(
163+
Menu.Item(
164+
locale.clear_directories,
165+
locale.clean_dirs_description,
166+
lambda: clear_directories() if Console.question(locale.clear_qu) else -1,
167+
)
168+
)
169+
other.add(
170+
Menu.Item(
171+
locale.toggle_update_auto_checking,
172+
locale.enabled if config.auto_update else locale.disabled,
173+
lambda: (config.toggle_auto_update(), refill_menu()),
174+
)
175+
)
166176
other.add(Menu.Item(locale.exit, None, lambda: (clear(), exit())))
167177
menu.add_category(other)

system/lib/config.py

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,19 @@
33

44

55
class Config:
6-
DEFAULT_LANGUAGE = 'en-EU'
6+
DEFAULT_LANGUAGE = "en-EU"
77

8-
config_path = './system/config.json'
8+
config_path = "./system/config.json"
99
inited: bool
1010

1111
def __init__(self):
1212
self.config_items = (
13-
'initialized',
14-
'version',
15-
'language',
16-
'has_update',
17-
'last_update',
18-
'auto_update',
13+
"initialized",
14+
"version",
15+
"language",
16+
"has_update",
17+
"last_update",
18+
"auto_update",
1919
)
2020

2121
self.initialized: bool = False
@@ -41,10 +41,10 @@ def load(self):
4141
setattr(self, key, value)
4242

4343
def dump(self):
44-
json.dump({
45-
item: getattr(self, item)
46-
for item in self.config_items
47-
}, open(self.config_path, 'w'))
44+
json.dump(
45+
{item: getattr(self, item) for item in self.config_items},
46+
open(self.config_path, "w"),
47+
)
4848

4949

5050
config = Config()

0 commit comments

Comments
 (0)