easyrip 4.11.3__py3-none-any.whl → 4.13.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.
easyrip/__init__.py CHANGED
@@ -7,13 +7,7 @@ from .easyrip_main import (
7
7
  init,
8
8
  run_command,
9
9
  )
10
- from .easyrip_mlang import (
11
- Global_lang_val,
12
- Lang_tag,
13
- Lang_tag_language,
14
- Lang_tag_region,
15
- Lang_tag_script,
16
- )
10
+ from .easyrip_mlang import Global_lang_val, Lang_tag
17
11
  from .ripper.media_info import Media_info
18
12
  from .ripper.ripper import Ripper
19
13
  from .ripper.sub_and_font import Ass, Font, load_fonts
@@ -23,9 +17,6 @@ __all__ = [
23
17
  "Font",
24
18
  "Global_lang_val",
25
19
  "Lang_tag",
26
- "Lang_tag_language",
27
- "Lang_tag_region",
28
- "Lang_tag_script",
29
20
  "Media_info",
30
21
  "Ripper",
31
22
  "check_env",
easyrip/__main__.py CHANGED
@@ -74,6 +74,7 @@ def run() -> NoReturn:
74
74
  in {
75
75
  *Cmd_type.cd.value.names,
76
76
  *Cmd_type.mediainfo.value.names,
77
+ *Cmd_type.assinfo.value.names,
77
78
  *Cmd_type.fontinfo.value.names,
78
79
  }
79
80
  else ()
@@ -98,6 +99,7 @@ def run() -> NoReturn:
98
99
  *Opt_type._i.value.names,
99
100
  *Opt_type._o_dir.value.names,
100
101
  *Opt_type._o.value.names,
102
+ *Opt_type._pipe.value.names,
101
103
  *Opt_type._sub.value.names,
102
104
  *Opt_type._only_mux_sub_path.value.names,
103
105
  *Opt_type._soft_sub.value.names,
@@ -141,7 +143,7 @@ def run() -> NoReturn:
141
143
 
142
144
  try:
143
145
  if not run_command(command):
144
- log.warning("Stop run command")
146
+ log.warning("Command run terminated")
145
147
  except KeyboardInterrupt:
146
148
  log.warning("Manually stop run command")
147
149
 
@@ -18,7 +18,7 @@ from prompt_toolkit.document import Document
18
18
 
19
19
  from . import global_val
20
20
  from .easyrip_config.config_key import Config_key
21
- from .ripper.param import PRESET_OPT_NAME, Audio_codec, Preset_name
21
+ from .ripper.param import Audio_codec, Muxer, Preset_name
22
22
 
23
23
 
24
24
  @final
@@ -268,7 +268,6 @@ class Cmd_type(enum.Enum):
268
268
  "Translate subtitle files\n"
269
269
  "e.g. 'translate zh-Hans zh-Hant' will translate all '*.zh-Hans.ass' files into zh-Hant"
270
270
  ),
271
- childs=(Cmd_type_val(("-overwrite",)),),
272
271
  )
273
272
  mediainfo = Cmd_type_val(
274
273
  ("mediainfo",),
@@ -279,6 +278,15 @@ class Cmd_type(enum.Enum):
279
278
  Cmd_type_val(("cfd",)),
280
279
  ),
281
280
  )
281
+ assinfo = Cmd_type_val(
282
+ ("assinfo",),
283
+ param="<<path> | 'fd' | 'cfd'> [-use-libass-spec <0|1>] [-show-chars-len <0|1>]",
284
+ description="Get the ass info by the Ass class",
285
+ childs=(
286
+ Cmd_type_val(("fd",)),
287
+ Cmd_type_val(("cfd",)),
288
+ ),
289
+ )
282
290
  fontinfo = Cmd_type_val(
283
291
  ("fontinfo",),
284
292
  param="<<path> | 'fd' | 'cfd'>",
@@ -353,7 +361,8 @@ class Opt_type(enum.Enum):
353
361
  param="<string>",
354
362
  description=(
355
363
  "Setting preset\n"
356
- "Preset name:\n" # .
364
+ "\n" # .
365
+ "Preset name:\n"
357
366
  f"{Preset_name.to_help_string(' ')}"
358
367
  ),
359
368
  childs=(Cmd_type_val(tuple(Preset_name._value2member_map_)),),
@@ -442,7 +451,7 @@ class Opt_type(enum.Enum):
442
451
  'e.g. "11\\{22}33" ->\n'
443
452
  ' "11\\33" (VSFilter)\n'
444
453
  ' "11{22}33" (libass)\n'
445
- "Default: 0"
454
+ "Default: 1"
446
455
  ),
447
456
  childs=(Cmd_type_val(("0", "1")),),
448
457
  )
@@ -486,7 +495,8 @@ class Opt_type(enum.Enum):
486
495
  param="<string>",
487
496
  description=(
488
497
  "Setting audio encoder\n"
489
- "Audio encoder:\n" # .
498
+ "\n" # .
499
+ "Audio encoder:\n"
490
500
  f"{Audio_codec.to_help_string(' ')}"
491
501
  ),
492
502
  childs=(Cmd_type_val(tuple(Audio_codec._value2member_map_)),),
@@ -501,11 +511,11 @@ class Opt_type(enum.Enum):
501
511
  param="<string>",
502
512
  description=(
503
513
  "Setting muxer\n"
504
- " \n" # .
514
+ "\n" # .
505
515
  "Muxer:\n"
506
- " mp4\n"
507
- " mkv\n"
516
+ f"{Audio_codec.to_help_string(' ')}"
508
517
  ),
518
+ childs=(Cmd_type_val(tuple(Muxer._value2member_map_)),),
509
519
  )
510
520
  _r = _fps = Cmd_type_val(
511
521
  ("-r", "-fps"),
@@ -789,8 +799,10 @@ class OptCompleter(Completer):
789
799
  _preset_name = None
790
800
  if _preset in Preset_name._member_map_:
791
801
  _preset_name = Preset_name[_preset]
792
- if _preset_name is not None and _preset_name in PRESET_OPT_NAME:
793
- add_set: set[str] = {f"-{n}" for n in PRESET_OPT_NAME[_preset_name]}
802
+ if _preset_name is not None:
803
+ add_set: set[str] = {
804
+ f"-{n}" for n in _preset_name.get_param_name_set(set())
805
+ }
794
806
  add_comp_words |= add_set
795
807
  add_comp_meta_dict |= dict.fromkeys(add_set, f"{_preset} param")
796
808
 
@@ -859,7 +871,13 @@ class OptCompleter(Completer):
859
871
 
860
872
  yield from merge_completers(
861
873
  (
862
- _nested_dict_to_nc(new_nd),
874
+ merge_completers(
875
+ (
876
+ _nested_dict_to_nc(new_nd),
877
+ FuzzyCompleter(_nested_dict_to_nc(new_nd), WORD=True),
878
+ ),
879
+ deduplicate=True,
880
+ ),
863
881
  FuzzyCompleter(
864
882
  WordCompleter(
865
883
  words=tuple(opt_tree_pos_list[-1]),
easyrip/easyrip_main.py CHANGED
@@ -30,16 +30,14 @@ from .easyrip_log import log
30
30
  from .easyrip_mlang import (
31
31
  Global_lang_val,
32
32
  Lang_tag,
33
- Lang_tag_language,
34
33
  get_system_language,
35
34
  gettext,
36
35
  translate_subtitles,
37
36
  )
38
37
  from .easyrip_prompt import easyrip_prompt
39
38
  from .ripper.media_info import Media_info
40
- from .ripper.param import DEFAULT_PRESET_PARAMS, PRESET_OPT_NAME
41
39
  from .ripper.ripper import Ripper
42
- from .ripper.sub_and_font import load_fonts
40
+ from .ripper.sub_and_font import Ass, load_fonts
43
41
  from .utils import change_title, check_ver, read_text
44
42
 
45
43
  __all__ = ["init", "run_command"]
@@ -307,6 +305,10 @@ def run_ripper_list(
307
305
  except Exception as e:
308
306
  log.error(e, deep=True)
309
307
  log.warning("Stop run Ripper")
308
+ except KeyboardInterrupt:
309
+ log.warning("Manually stop run and clear Ripper list")
310
+ Ripper.ripper_list.clear()
311
+ raise
310
312
 
311
313
  with ThreadPoolExecutor() as executor:
312
314
  for ripper in Ripper.ripper_list:
@@ -324,6 +326,10 @@ def run_ripper_list(
324
326
  except Exception as e:
325
327
  log.error(e, deep=True)
326
328
  log.warning("Stop run Ripper")
329
+ except KeyboardInterrupt:
330
+ log.warning("Manually stop run and clear Ripper list")
331
+ Ripper.ripper_list.clear()
332
+ raise
327
333
  sleep(0.5)
328
334
 
329
335
  if log.warning_num > warning_num:
@@ -419,40 +425,41 @@ def run_command(command: Iterable[str] | str) -> bool:
419
425
  log.send(_want_doc_cmd_type.value.to_doc(), is_format=False)
420
426
  elif cmd_list[2] in Ripper.Preset_name._value2member_map_:
421
427
  _preset = Ripper.Preset_name(cmd_list[2])
422
- if (
423
- _preset in DEFAULT_PRESET_PARAMS
424
- or _preset in PRESET_OPT_NAME
425
- ):
426
- if _preset in PRESET_OPT_NAME:
427
- log.send(
428
- "Params that can be directly used:\n{}",
429
- textwrap.indent(
430
- "\n".join(
431
- f"-{n}"
432
- for n in PRESET_OPT_NAME[_preset]
433
- ),
434
- prefix=" ",
435
- ),
436
- )
437
- if _preset in DEFAULT_PRESET_PARAMS:
438
- _default_params = DEFAULT_PRESET_PARAMS[_preset]
439
- max_name_len = (
440
- max(len(str(n)) for n in _default_params) + 1
441
- )
442
- log.send(
443
- "Default val:\n{}",
444
- textwrap.indent(
445
- "\n".join(
446
- f"{f'-{n}':>{max_name_len}} {v}"
447
- for n, v in _default_params.items()
448
- ),
449
- prefix=" ",
450
- ),
451
- )
452
- else:
428
+ _param_default_dict = _preset.get_param_default_dict()
429
+ _param_name_set = _preset.get_param_name_set()
430
+ if not any((_param_default_dict, _param_name_set)):
453
431
  log.send(
454
432
  "The preset '{}' has no separate help", cmd_list[2]
455
433
  )
434
+ if _param_name_set:
435
+ log.send(
436
+ "Params that can be directly used:\n{}",
437
+ textwrap.indent(
438
+ "\n".join(f"-{n}" for n in _param_name_set),
439
+ prefix=" ",
440
+ ),
441
+ )
442
+ if _param_default_dict:
443
+ max_name_len = (
444
+ max(len(str(n)) for n in _param_default_dict) + 1
445
+ )
446
+ log.send(
447
+ "Default val:\n{}",
448
+ textwrap.indent(
449
+ "\n".join(
450
+ f"{f'-{n}':>{max_name_len}} {v}"
451
+ for n, v in _param_default_dict.items()
452
+ ),
453
+ prefix=" ",
454
+ ),
455
+ )
456
+ log.send(
457
+ " FFmpeg format:\n {}",
458
+ ":".join(
459
+ f"{n}={v}"
460
+ for n, v in _param_default_dict.items()
461
+ ),
462
+ )
456
463
  else:
457
464
  log.error("'{}' is not a member of preset", cmd_list[2])
458
465
 
@@ -495,8 +502,8 @@ def run_command(command: Iterable[str] | str) -> bool:
495
502
  case Cmd_type.exit:
496
503
  sys.exit(0)
497
504
 
498
- case Cmd_type.cd | Cmd_type.mediainfo | Cmd_type.fontinfo:
499
- _path_tuple: tuple[str, ...] | None = None
505
+ case Cmd_type.cd | Cmd_type.mediainfo | Cmd_type.assinfo | Cmd_type.fontinfo:
506
+ _path_tuple: Iterable[str] | None = None
500
507
 
501
508
  match cmd_list[1]:
502
509
  case "fd" | "cfd" as fd_param:
@@ -528,6 +535,46 @@ def run_command(command: Iterable[str] | str) -> bool:
528
535
  case Cmd_type.mediainfo:
529
536
  for _path in _path_tuple:
530
537
  log.send(f"{_path}: {Media_info.from_path(_path)}")
538
+ case Cmd_type.assinfo:
539
+ USE_LIBASS_SPEC_OPT_NAME = "-use-libass-spec"
540
+ use_libass_spec: bool = True
541
+ SHOW_CHARS_LEN_OPT_NAME = "-show-chars-len"
542
+ show_chars_len: bool = False
543
+ is_use_opt: bool = False
544
+ for i, s in tuple(enumerate(cmd_list))[2:]:
545
+ if s == USE_LIBASS_SPEC_OPT_NAME:
546
+ use_libass_spec = cmd_list[i + 1] != "0"
547
+ is_use_opt = True
548
+ if s == SHOW_CHARS_LEN_OPT_NAME:
549
+ show_chars_len = cmd_list[i + 1] != "0"
550
+ is_use_opt = True
551
+ if is_use_opt:
552
+ _path_tuple = cmd_list[1:2]
553
+ log.send(
554
+ " ".join(
555
+ (
556
+ f"{USE_LIBASS_SPEC_OPT_NAME} {1 if use_libass_spec else 0}",
557
+ f"{SHOW_CHARS_LEN_OPT_NAME} {1 if show_chars_len else 0}",
558
+ )
559
+ )
560
+ )
561
+ for _path in _path_tuple:
562
+ try:
563
+ ass = Ass(_path)
564
+ except Exception as e:
565
+ log.error(e)
566
+ return False
567
+
568
+ log.send(_path)
569
+ for font_sign, ss in ass.get_font_info(
570
+ use_libass_spec=use_libass_spec,
571
+ ).items():
572
+ show_chars_len_log_str = ""
573
+ if show_chars_len:
574
+ show_chars_len_log_str = f": {len(ss)}"
575
+ log.send(
576
+ f" ( {font_sign[0]} / {font_sign[1].name} ){show_chars_len_log_str}"
577
+ )
531
578
  case Cmd_type.fontinfo:
532
579
  for _font in itertools.chain.from_iterable(
533
580
  load_fonts(_path) for _path in _path_tuple
@@ -1156,7 +1203,7 @@ def init(is_first_run: bool = False) -> None:
1156
1203
 
1157
1204
  if (
1158
1205
  lang_tag := Lang_tag.from_str(file.stem[5:])
1159
- ).language is not Lang_tag_language.Unknown:
1206
+ ).language is not Lang_tag.Language.Unknown:
1160
1207
  easyrip_mlang.all_supported_lang_map[lang_tag] = lang_map
1161
1208
 
1162
1209
  log.debug("Loading \"{}\" as '{}' language successfully", file, lang_tag)
@@ -1,22 +1,13 @@
1
1
  import locale
2
2
 
3
3
  from . import lang_en, lang_zh_Hans_CN
4
- from .global_lang_val import (
5
- Global_lang_val,
6
- Lang_tag,
7
- Lang_tag_language,
8
- Lang_tag_region,
9
- Lang_tag_script,
10
- Lang_tag_val,
11
- )
4
+ from .global_lang_val import Global_lang_val, Lang_tag
5
+ from .lang_tag_val import Lang_tag_val
12
6
  from .translator import translate_subtitles
13
7
 
14
8
  __all__ = [
15
9
  "Global_lang_val",
16
10
  "Lang_tag",
17
- "Lang_tag_language",
18
- "Lang_tag_region",
19
- "Lang_tag_script",
20
11
  "Lang_tag_val",
21
12
  "Mlang_exception",
22
13
  "get_system_language",
@@ -4,154 +4,16 @@ from dataclasses import dataclass
4
4
  from typing import Self, final
5
5
 
6
6
 
7
- @final
8
- @dataclass(slots=True, init=False, eq=False)
9
- class Lang_tag_val:
10
- en_name: str
11
- _local_name: str | None
12
-
13
- @property
14
- def local_name(self) -> str:
15
- return self.en_name if self._local_name is None else self._local_name
16
-
17
- @local_name.setter
18
- def local_name(self, val: str | None) -> None:
19
- if val is not None and len(val) == 0:
20
- raise ValueError("The length of the name cannot be 0")
21
-
22
- self._local_name = val
23
-
24
- def __init__(self, *, en_name: str, local_name: str | None = None) -> None:
25
- if len(en_name) == 0:
26
- raise ValueError("The length of the name cannot be 0")
27
-
28
- self.en_name = en_name
29
- self.local_name = local_name
30
-
31
- def __str__(self) -> str:
32
- return f"{self.__class__.__name__}(en_name={self.en_name}, local_name={self._local_name})"
33
-
34
- def __eq__(self, other: object) -> bool:
35
- if isinstance(other, Lang_tag_val):
36
- return self.en_name == other.en_name
37
- return False
38
-
39
- def __hash__(self) -> int:
40
- return hash(self.en_name)
41
-
42
-
43
- class Lang_tag_language(enum.Enum):
44
- Unknown = Lang_tag_val(en_name="Unknown")
45
-
46
- # ISO 639-1
47
- en = Lang_tag_val(en_name="English", local_name="English")
48
- zh = Lang_tag_val(en_name="Chinese", local_name="中文")
49
- fr = Lang_tag_val(en_name="French", local_name="Français")
50
- de = Lang_tag_val(en_name="German", local_name="Deutsch")
51
- es = Lang_tag_val(en_name="Spanish", local_name="Español")
52
- it = Lang_tag_val(en_name="Italian", local_name="Italiano")
53
- ja = Lang_tag_val(en_name="Japanese", local_name="日本語")
54
- ko = Lang_tag_val(en_name="Korean", local_name="한국어")
55
- ru = Lang_tag_val(en_name="Russian", local_name="Русский")
56
- ar = Lang_tag_val(en_name="Arabic", local_name="العربية")
57
-
58
- # ISO 639-2
59
- eng = en
60
- zho = chi = zh
61
- fra = fre = fr
62
- deu = ger = de
63
- spa = es
64
- ita = it
65
- jpn = ja
66
- kor = ko
67
- rus = ru
68
- ara = ar
69
-
70
- # ISO 639-3
71
- # 与 p2 重叠的放在 p2
72
- cdo = Lang_tag_val(en_name="Min Dong Chinese", local_name="闽东语")
73
- cjy = Lang_tag_val(en_name="Jinyu Chinese", local_name="晋语")
74
- cmn = Lang_tag_val(en_name="Mandarin Chinese", local_name="普通话")
75
- cnp = Lang_tag_val(en_name="Northern Ping Chinese", local_name="北平语")
76
- wuu = Lang_tag_val(en_name="Wu Chinese", local_name="吴语")
77
- yue = Lang_tag_val(en_name="Yue Chinese", local_name="粤语")
78
- hak = Lang_tag_val(en_name="Hakka Chinese", local_name="客家话")
79
- nan = Lang_tag_val(en_name="Min Nan Chinese", local_name="闽南语")
80
- och = Lang_tag_val(en_name="Old Chinese", local_name="古汉语")
81
-
82
- @classmethod
83
- def _missing_(cls, value: object):
84
- return cls.Unknown
85
-
86
- @classmethod
87
- def from_name(cls, name: str):
88
- try:
89
- return cls[name]
90
- except KeyError:
91
- return cls.Unknown
92
-
93
-
94
- class Lang_tag_script(enum.Enum):
95
- Unknown = Lang_tag_val(en_name="Unknown")
96
-
97
- Hans = Lang_tag_val(en_name="Simplified Chinese", local_name="简体")
98
- Hant = Lang_tag_val(en_name="Traditional Chinese", local_name="繁體")
99
- Latn = Lang_tag_val(en_name="Latin", local_name="Latina")
100
- Cyrl = Lang_tag_val(en_name="Cyrillic", local_name="Кириллица")
101
- Arab = Lang_tag_val(en_name="Arabic", local_name="العربية")
102
-
103
- @classmethod
104
- def _missing_(cls, value: object):
105
- return cls.Unknown
106
-
107
- @classmethod
108
- def from_name(cls, name: str):
109
- try:
110
- return cls[name]
111
- except KeyError:
112
- return cls.Unknown
113
-
114
-
115
- class Lang_tag_region(enum.Enum):
116
- Unknown = Lang_tag_val(en_name="Unknown")
117
-
118
- US = Lang_tag_val(en_name="United States", local_name="United States")
119
- GB = Lang_tag_val(en_name="United Kingdom", local_name="United Kingdom")
120
- AU = Lang_tag_val(en_name="Australia", local_name="Australia")
121
- CA = Lang_tag_val(en_name="Canada", local_name="Canada")
122
- NZ = Lang_tag_val(en_name="New Zealand", local_name="New Zealand")
123
- IE = Lang_tag_val(en_name="Ireland", local_name="Éire")
124
- ZA = Lang_tag_val(en_name="South Africa", local_name="South Africa")
125
- JM = Lang_tag_val(en_name="Jamaica", local_name="Jamaica")
126
- TT = Lang_tag_val(en_name="Caribbean", local_name="Caribbean")
127
- BZ = Lang_tag_val(en_name="Belize", local_name="Belize")
128
- PH = Lang_tag_val(en_name="Philippines", local_name="Pilipinas")
129
- IN = Lang_tag_val(en_name="India", local_name="भारत")
130
- MY = Lang_tag_val(en_name="Malaysia", local_name="Malaysia")
131
- SG = Lang_tag_val(en_name="Singapore", local_name="Singapura")
132
- MO = Lang_tag_val(en_name="Macau SAR", local_name="澳門")
133
- HK = Lang_tag_val(en_name="Hong Kong SAR", local_name="香港")
134
- TW = Lang_tag_val(en_name="Taiwan", local_name="台灣")
135
- CN = Lang_tag_val(en_name="China", local_name="中国大陆")
136
-
137
- @classmethod
138
- def _missing_(cls, value: object):
139
- return cls.Unknown
140
-
141
- @classmethod
142
- def from_name(cls, name: str):
143
- try:
144
- return cls[name]
145
- except KeyError:
146
- return cls.Unknown
147
-
148
-
149
7
  @final
150
8
  @dataclass(slots=True, kw_only=True)
151
9
  class Lang_tag:
152
- language: Lang_tag_language = Lang_tag_language.Unknown
153
- script: Lang_tag_script = Lang_tag_script.Unknown
154
- region: Lang_tag_region = Lang_tag_region.Unknown
10
+ from .lang_tag_val import Lang_tag_language as Language
11
+ from .lang_tag_val import Lang_tag_region as Region
12
+ from .lang_tag_val import Lang_tag_script as Script
13
+
14
+ language: Language = Language.Unknown
15
+ script: Script = Script.Unknown
16
+ region: Region = Region.Unknown
155
17
 
156
18
  class Match_priority(enum.Enum):
157
19
  script = enum.auto()
@@ -193,7 +55,7 @@ class Lang_tag:
193
55
 
194
56
  if priority_same_tuple := (
195
57
  same_script_tuple + same_region_tuple
196
- if priority is Lang_tag.Match_priority.script
58
+ if priority is self.__class__.Match_priority.script
197
59
  else same_region_tuple + same_script_tuple
198
60
  ):
199
61
  return priority_same_tuple[0]
@@ -214,19 +76,19 @@ class Lang_tag:
214
76
 
215
77
  str_tag_list = str_tag.split("-")
216
78
 
217
- language = Lang_tag_language.from_name(str_tag_list[0])
218
- script: Lang_tag_script = Lang_tag_script.Unknown
219
- region: Lang_tag_region = Lang_tag_region.Unknown
79
+ language: Lang_tag.Language = cls.Language.from_name(str_tag_list[0])
80
+ script: Lang_tag.Script = cls.Script.Unknown
81
+ region: Lang_tag.Region = cls.Region.Unknown
220
82
 
221
83
  for i, s in enumerate(str_tag_list[1:]):
222
- if s in Lang_tag_script._member_map_:
84
+ if s in cls.Script._member_map_:
223
85
  if i != 0:
224
86
  raise ValueError(
225
87
  gettext("The input language tag string format is illegal")
226
88
  )
227
- script = Lang_tag_script[s]
228
- elif s in Lang_tag_region._member_map_:
229
- region = Lang_tag_region[s]
89
+ script = cls.Script[s]
90
+ elif s in cls.Region._member_map_:
91
+ region = cls.Region[s]
230
92
 
231
93
  return cls(
232
94
  language=language,
@@ -236,13 +98,13 @@ class Lang_tag:
236
98
 
237
99
  def __str__(self) -> str:
238
100
  """返回语言标签字符串"""
239
- if self.language == Lang_tag_language.Unknown:
101
+ if self.language == self.__class__.Language.Unknown:
240
102
  raise Exception("The Language is Unknown")
241
103
 
242
104
  res_str: str = self.language.name
243
- if self.script != Lang_tag_script.Unknown:
105
+ if self.script != self.__class__.Script.Unknown:
244
106
  res_str += f"-{self.script.name}"
245
- if self.region != Lang_tag_region.Unknown:
107
+ if self.region != self.__class__.Region.Unknown:
246
108
  res_str += f"-{self.region.name}"
247
109
 
248
110
  return res_str
@@ -266,18 +128,18 @@ class Global_lang_val:
266
128
 
267
129
  res_str_list: list[str] = [
268
130
  _local_name
269
- if (_org_name := tag_list[0]) in Lang_tag_language._member_map_
270
- and (_local_name := Lang_tag_language[_org_name].value.local_name)
131
+ if (_org_name := tag_list[0]) in Lang_tag.Language._member_map_
132
+ and (_local_name := Lang_tag.Language[_org_name].value.local_name)
271
133
  else _org_name
272
134
  ]
273
135
 
274
136
  if tag_list_len >= 2:
275
137
  _org_name = tag_list[1]
276
138
 
277
- if _org_name in Lang_tag_script.__members__:
278
- _local_name = Lang_tag_script[_org_name].value.local_name
279
- elif _org_name in Lang_tag_region._member_map_:
280
- _local_name = Lang_tag_region[_org_name].value.local_name
139
+ if _org_name in Lang_tag.Script.__members__:
140
+ _local_name = Lang_tag.Script[_org_name].value.local_name
141
+ elif _org_name in Lang_tag.Region._member_map_:
142
+ _local_name = Lang_tag.Region[_org_name].value.local_name
281
143
  else:
282
144
  _local_name = _org_name
283
145
 
@@ -286,8 +148,8 @@ class Global_lang_val:
286
148
  if tag_list_len >= 3:
287
149
  _org_name = tag_list[2]
288
150
 
289
- if _org_name in Lang_tag_region._member_map_:
290
- _local_name = Lang_tag_region[_org_name].value.local_name
151
+ if _org_name in Lang_tag.Region._member_map_:
152
+ _local_name = Lang_tag.Region[_org_name].value.local_name
291
153
  else:
292
154
  _local_name = _org_name
293
155
 
@@ -1,5 +1,5 @@
1
- from .global_lang_val import Lang_tag, Lang_tag_language
1
+ from .global_lang_val import Lang_tag
2
2
 
3
- LANG_TAG = Lang_tag(language=Lang_tag_language.en)
3
+ LANG_TAG = Lang_tag(language=Lang_tag.Language.en)
4
4
 
5
5
  LANG_MAP: dict[str, str] = {}