easyrip 4.11.2__py3-none-any.whl → 4.12.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",
@@ -7,7 +7,6 @@ from typing import Final, Self, final
7
7
 
8
8
  from prompt_toolkit.completion import (
9
9
  Completer,
10
- DeduplicateCompleter,
11
10
  FuzzyCompleter,
12
11
  FuzzyWordCompleter,
13
12
  NestedCompleter,
@@ -19,7 +18,7 @@ from prompt_toolkit.document import Document
19
18
 
20
19
  from . import global_val
21
20
  from .easyrip_config.config_key import Config_key
22
- from .ripper.param import PRESET_OPT_NAME, Audio_codec, Preset_name
21
+ from .ripper.param import Audio_codec, Muxer, Preset_name
23
22
 
24
23
 
25
24
  @final
@@ -354,7 +353,8 @@ class Opt_type(enum.Enum):
354
353
  param="<string>",
355
354
  description=(
356
355
  "Setting preset\n"
357
- "Preset name:\n" # .
356
+ "\n" # .
357
+ "Preset name:\n"
358
358
  f"{Preset_name.to_help_string(' ')}"
359
359
  ),
360
360
  childs=(Cmd_type_val(tuple(Preset_name._value2member_map_)),),
@@ -487,7 +487,8 @@ class Opt_type(enum.Enum):
487
487
  param="<string>",
488
488
  description=(
489
489
  "Setting audio encoder\n"
490
- "Audio encoder:\n" # .
490
+ "\n" # .
491
+ "Audio encoder:\n"
491
492
  f"{Audio_codec.to_help_string(' ')}"
492
493
  ),
493
494
  childs=(Cmd_type_val(tuple(Audio_codec._value2member_map_)),),
@@ -502,11 +503,11 @@ class Opt_type(enum.Enum):
502
503
  param="<string>",
503
504
  description=(
504
505
  "Setting muxer\n"
505
- " \n" # .
506
+ "\n" # .
506
507
  "Muxer:\n"
507
- " mp4\n"
508
- " mkv\n"
508
+ f"{Audio_codec.to_help_string(' ')}"
509
509
  ),
510
+ childs=(Cmd_type_val(tuple(Muxer._value2member_map_)),),
510
511
  )
511
512
  _r = _fps = Cmd_type_val(
512
513
  ("-r", "-fps"),
@@ -790,8 +791,10 @@ class OptCompleter(Completer):
790
791
  _preset_name = None
791
792
  if _preset in Preset_name._member_map_:
792
793
  _preset_name = Preset_name[_preset]
793
- if _preset_name is not None and _preset_name in PRESET_OPT_NAME:
794
- add_set: set[str] = {f"-{n}" for n in PRESET_OPT_NAME[_preset_name]}
794
+ if _preset_name is not None:
795
+ add_set: set[str] = {
796
+ f"-{n}" for n in _preset_name.get_param_name_set(set())
797
+ }
795
798
  add_comp_words |= add_set
796
799
  add_comp_meta_dict |= dict.fromkeys(add_set, f"{_preset} param")
797
800
 
@@ -860,13 +863,12 @@ class OptCompleter(Completer):
860
863
 
861
864
  yield from merge_completers(
862
865
  (
863
- DeduplicateCompleter(
864
- merge_completers(
865
- (
866
- _nested_dict_to_nc(new_nd),
867
- FuzzyCompleter(_nested_dict_to_nc(new_nd), WORD=True),
868
- )
869
- )
866
+ merge_completers(
867
+ (
868
+ _nested_dict_to_nc(new_nd),
869
+ FuzzyCompleter(_nested_dict_to_nc(new_nd), WORD=True),
870
+ ),
871
+ deduplicate=True,
870
872
  ),
871
873
  FuzzyCompleter(
872
874
  WordCompleter(
easyrip/easyrip_main.py CHANGED
@@ -30,14 +30,12 @@ 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
40
  from .ripper.sub_and_font import load_fonts
43
41
  from .utils import change_title, check_ver, read_text
@@ -419,40 +417,41 @@ def run_command(command: Iterable[str] | str) -> bool:
419
417
  log.send(_want_doc_cmd_type.value.to_doc(), is_format=False)
420
418
  elif cmd_list[2] in Ripper.Preset_name._value2member_map_:
421
419
  _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:
420
+ _param_default_dict = _preset.get_param_default_dict()
421
+ _param_name_set = _preset.get_param_name_set()
422
+ if not any((_param_default_dict, _param_name_set)):
453
423
  log.send(
454
424
  "The preset '{}' has no separate help", cmd_list[2]
455
425
  )
426
+ if _param_name_set:
427
+ log.send(
428
+ "Params that can be directly used:\n{}",
429
+ textwrap.indent(
430
+ "\n".join(f"-{n}" for n in _param_name_set),
431
+ prefix=" ",
432
+ ),
433
+ )
434
+ if _param_default_dict:
435
+ max_name_len = (
436
+ max(len(str(n)) for n in _param_default_dict) + 1
437
+ )
438
+ log.send(
439
+ "Default val:\n{}",
440
+ textwrap.indent(
441
+ "\n".join(
442
+ f"{f'-{n}':>{max_name_len}} {v}"
443
+ for n, v in _param_default_dict.items()
444
+ ),
445
+ prefix=" ",
446
+ ),
447
+ )
448
+ log.send(
449
+ " FFmpeg format:\n {}",
450
+ ":".join(
451
+ f"{n}={v}"
452
+ for n, v in _param_default_dict.items()
453
+ ),
454
+ )
456
455
  else:
457
456
  log.error("'{}' is not a member of preset", cmd_list[2])
458
457
 
@@ -1156,7 +1155,7 @@ def init(is_first_run: bool = False) -> None:
1156
1155
 
1157
1156
  if (
1158
1157
  lang_tag := Lang_tag.from_str(file.stem[5:])
1159
- ).language is not Lang_tag_language.Unknown:
1158
+ ).language is not Lang_tag.Language.Unknown:
1160
1159
  easyrip_mlang.all_supported_lang_map[lang_tag] = lang_map
1161
1160
 
1162
1161
  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] = {}
@@ -0,0 +1,145 @@
1
+ import enum
2
+ from dataclasses import dataclass
3
+ from typing import final
4
+
5
+
6
+ @final
7
+ @dataclass(slots=True, init=False, eq=False)
8
+ class Lang_tag_val:
9
+ en_name: str
10
+ _local_name: str | None
11
+
12
+ @property
13
+ def local_name(self) -> str:
14
+ return self.en_name if self._local_name is None else self._local_name
15
+
16
+ @local_name.setter
17
+ def local_name(self, val: str | None) -> None:
18
+ if val is not None and len(val) == 0:
19
+ raise ValueError("The length of the name cannot be 0")
20
+
21
+ self._local_name = val
22
+
23
+ def __init__(self, *, en_name: str, local_name: str | None = None) -> None:
24
+ if len(en_name) == 0:
25
+ raise ValueError("The length of the name cannot be 0")
26
+
27
+ self.en_name = en_name
28
+ self.local_name = local_name
29
+
30
+ def __str__(self) -> str:
31
+ return f"{self.__class__.__name__}(en_name={self.en_name}, local_name={self._local_name})"
32
+
33
+ def __eq__(self, other: object) -> bool:
34
+ if isinstance(other, Lang_tag_val):
35
+ return self.en_name == other.en_name
36
+ return False
37
+
38
+ def __hash__(self) -> int:
39
+ return hash(self.en_name)
40
+
41
+
42
+ class Lang_tag_language(enum.Enum):
43
+ Unknown = Lang_tag_val(en_name="Unknown")
44
+
45
+ # ISO 639-1
46
+ en = Lang_tag_val(en_name="English", local_name="English")
47
+ zh = Lang_tag_val(en_name="Chinese", local_name="中文")
48
+ fr = Lang_tag_val(en_name="French", local_name="Français")
49
+ de = Lang_tag_val(en_name="German", local_name="Deutsch")
50
+ es = Lang_tag_val(en_name="Spanish", local_name="Español")
51
+ it = Lang_tag_val(en_name="Italian", local_name="Italiano")
52
+ ja = Lang_tag_val(en_name="Japanese", local_name="日本語")
53
+ ko = Lang_tag_val(en_name="Korean", local_name="한국어")
54
+ ru = Lang_tag_val(en_name="Russian", local_name="Русский")
55
+ ar = Lang_tag_val(en_name="Arabic", local_name="العربية")
56
+
57
+ # ISO 639-2
58
+ eng = en
59
+ zho = chi = zh
60
+ fra = fre = fr
61
+ deu = ger = de
62
+ spa = es
63
+ ita = it
64
+ jpn = ja
65
+ kor = ko
66
+ rus = ru
67
+ ara = ar
68
+
69
+ # ISO 639-3
70
+ # 与 p2 重叠的放在 p2
71
+ cdo = Lang_tag_val(en_name="Min Dong Chinese", local_name="闽东语")
72
+ cjy = Lang_tag_val(en_name="Jinyu Chinese", local_name="晋语")
73
+ cmn = Lang_tag_val(en_name="Mandarin Chinese", local_name="普通话")
74
+ cnp = Lang_tag_val(en_name="Northern Ping Chinese", local_name="北平语")
75
+ wuu = Lang_tag_val(en_name="Wu Chinese", local_name="吴语")
76
+ yue = Lang_tag_val(en_name="Yue Chinese", local_name="粤语")
77
+ hak = Lang_tag_val(en_name="Hakka Chinese", local_name="客家话")
78
+ nan = Lang_tag_val(en_name="Min Nan Chinese", local_name="闽南语")
79
+ och = Lang_tag_val(en_name="Old Chinese", local_name="古汉语")
80
+
81
+ @classmethod
82
+ def _missing_(cls, value: object):
83
+ return cls.Unknown
84
+
85
+ @classmethod
86
+ def from_name(cls, name: str):
87
+ try:
88
+ return cls[name]
89
+ except KeyError:
90
+ return cls.Unknown
91
+
92
+
93
+ class Lang_tag_script(enum.Enum):
94
+ Unknown = Lang_tag_val(en_name="Unknown")
95
+
96
+ Hans = Lang_tag_val(en_name="Simplified Chinese", local_name="简体")
97
+ Hant = Lang_tag_val(en_name="Traditional Chinese", local_name="繁體")
98
+ Latn = Lang_tag_val(en_name="Latin", local_name="Latina")
99
+ Cyrl = Lang_tag_val(en_name="Cyrillic", local_name="Кириллица")
100
+ Arab = Lang_tag_val(en_name="Arabic", local_name="العربية")
101
+
102
+ @classmethod
103
+ def _missing_(cls, value: object):
104
+ return cls.Unknown
105
+
106
+ @classmethod
107
+ def from_name(cls, name: str):
108
+ try:
109
+ return cls[name]
110
+ except KeyError:
111
+ return cls.Unknown
112
+
113
+
114
+ class Lang_tag_region(enum.Enum):
115
+ Unknown = Lang_tag_val(en_name="Unknown")
116
+
117
+ US = Lang_tag_val(en_name="United States", local_name="United States")
118
+ GB = Lang_tag_val(en_name="United Kingdom", local_name="United Kingdom")
119
+ AU = Lang_tag_val(en_name="Australia", local_name="Australia")
120
+ CA = Lang_tag_val(en_name="Canada", local_name="Canada")
121
+ NZ = Lang_tag_val(en_name="New Zealand", local_name="New Zealand")
122
+ IE = Lang_tag_val(en_name="Ireland", local_name="Éire")
123
+ ZA = Lang_tag_val(en_name="South Africa", local_name="South Africa")
124
+ JM = Lang_tag_val(en_name="Jamaica", local_name="Jamaica")
125
+ TT = Lang_tag_val(en_name="Caribbean", local_name="Caribbean")
126
+ BZ = Lang_tag_val(en_name="Belize", local_name="Belize")
127
+ PH = Lang_tag_val(en_name="Philippines", local_name="Pilipinas")
128
+ IN = Lang_tag_val(en_name="India", local_name="भारत")
129
+ MY = Lang_tag_val(en_name="Malaysia", local_name="Malaysia")
130
+ SG = Lang_tag_val(en_name="Singapore", local_name="Singapura")
131
+ MO = Lang_tag_val(en_name="Macau SAR", local_name="澳門")
132
+ HK = Lang_tag_val(en_name="Hong Kong SAR", local_name="香港")
133
+ TW = Lang_tag_val(en_name="Taiwan", local_name="台灣")
134
+ CN = Lang_tag_val(en_name="China", local_name="中国大陆")
135
+
136
+ @classmethod
137
+ def _missing_(cls, value: object):
138
+ return cls.Unknown
139
+
140
+ @classmethod
141
+ def from_name(cls, name: str):
142
+ try:
143
+ return cls[name]
144
+ except KeyError:
145
+ return cls.Unknown