1- from __future__ import annotations
1+ """Main module of deepl CLI."""
22
33import argparse
44import sys
1414
1515
1616class DeepLCLIFormatter (
17- argparse .ArgumentDefaultsHelpFormatter , argparse .RawDescriptionHelpFormatter ,
17+ argparse .ArgumentDefaultsHelpFormatter ,
18+ argparse .RawDescriptionHelpFormatter ,
1819):
19- pass
20+ """Custom help formatter for argparse."""
2021
2122
2223def check_file (v : str ) -> str :
24+ """Check if the file is a text file.
25+
26+ Args:
27+ v (str): file path
28+ Returns:
29+ str: file path
30+ Raises:
31+ argparse.ArgumentTypeError: if the file is not a text file
32+ """
33+
2334 def is_binary_string (b : bytes ) -> bool :
2435 chars = bytearray ({7 , 8 , 9 , 10 , 12 , 13 , 27 } | set (range (0x20 , 0x100 )) - {0x7F })
2536 return bool (b .translate (None , chars ))
@@ -37,6 +48,15 @@ def is_binary_string(b: bytes) -> bool:
3748
3849
3950def check_natural (v : str ) -> int :
51+ """Check if the value is a natural number.
52+
53+ Args:
54+ v (str): value to check
55+ Returns:
56+ int: value
57+ Raises:
58+ argparse.ArgumentTypeError: if the value is not a natural number
59+ """
4060 n = int (v )
4161 if n < 0 :
4262 msg = f"{ v } must not be negative."
@@ -46,26 +66,50 @@ def check_natural(v: str) -> int:
4666
4767
4868def check_input_lang (lang : str ) -> str :
69+ """Check if the input language is valid.
70+
71+ Args:
72+ lang (str): input language
73+ Returns:
74+ str: input language
75+ Raises:
76+ argparse.ArgumentTypeError: if the input language is not valid
77+ """
4978 if lang not in DeepLCLI .fr_langs :
5079 raise argparse .ArgumentTypeError (
51- f"{ lang !r} is not valid language. Valid language:\n "
52- + repr (DeepLCLI .fr_langs ),
80+ f"{ lang !r} is not valid language. Valid language:\n " + repr (DeepLCLI .fr_langs ),
5381 )
5482
5583 return lang
5684
5785
5886def check_output_lang (lang : str ) -> str :
87+ """Check if the output language is valid.
88+
89+ Args:
90+ lang (str): output language
91+ Returns:
92+ str: output language
93+ Raises:
94+ argparse.ArgumentTypeError: if the output language is not valid
95+ """
5996 if lang not in DeepLCLI .to_langs :
6097 raise argparse .ArgumentTypeError (
61- f"{ lang !r} is not valid language. Valid language:\n "
62- + repr (DeepLCLI .to_langs ),
98+ f"{ lang !r} is not valid language. Valid language:\n " + repr (DeepLCLI .to_langs ),
6399 )
64100 return lang
65101
66102
67103def parse_args (test : str | None = None ) -> argparse .Namespace :
68- """Parse arguments."""
104+ """Parse arguments.
105+
106+ Args:
107+ test (str | None): test string
108+ Returns:
109+ argparse.Namespace: parsed arguments
110+ Raises:
111+ argparse.ArgumentTypeError: if the arguments are not valid
112+ """
69113 parser = argparse .ArgumentParser (
70114 prog = "deepl" ,
71115 formatter_class = (
@@ -98,10 +142,18 @@ def parse_args(test: str | None = None) -> argparse.Namespace:
98142 help = "read source text from stdin" ,
99143 )
100144 parser .add_argument (
101- "-F" , "--fr" , type = check_input_lang , help = "input language" , required = True ,
145+ "-F" ,
146+ "--fr" ,
147+ type = check_input_lang ,
148+ help = "input language" ,
149+ required = True ,
102150 )
103151 parser .add_argument (
104- "-T" , "--to" , type = check_output_lang , help = "output language" , required = True ,
152+ "-T" ,
153+ "--to" ,
154+ type = check_output_lang ,
155+ help = "output language" ,
156+ required = True ,
105157 )
106158 parser .add_argument (
107159 "-t" ,
@@ -118,7 +170,10 @@ def parse_args(test: str | None = None) -> argparse.Namespace:
118170 help = "make output verbose" ,
119171 )
120172 parser .add_argument (
121- "-V" , "--version" , action = "version" , version = f"%(prog)s { __version__ } " ,
173+ "-V" ,
174+ "--version" ,
175+ action = "version" ,
176+ version = f"%(prog)s { __version__ } " ,
122177 )
123178
124179 if test is None :
@@ -127,6 +182,11 @@ def parse_args(test: str | None = None) -> argparse.Namespace:
127182
128183
129184def main (test : str | None = None ) -> None :
185+ """Main function.
186+
187+ Args:
188+ test (str | None): test string
189+ """
130190 args = parse_args (test )
131191 t = DeepLCLI (args .fr , args .to , timeout = args .timeout )
132192 script = ""
0 commit comments