44import locale
55import re
66import sys
7+ from importlib .metadata import version
8+ import toml
79
810from .server import LanguageTool
911from .utils import LanguageToolError
1012
11- import pkg_resources
12- __version__ = pkg_resources .require ("language_tool_python" )[0 ].version
13+ try :
14+ __version__ = version ("language_tool_python" )
15+ except PackageNotFoundError :
16+ with open ("pyproject.toml" , "rb" ) as f :
17+ __version__ = toml .loads (f .read ().decode ('utf-8' ))["project" ]["version" ]
1318
1419
1520def parse_args ():
@@ -33,6 +38,8 @@ def parse_args():
3338 parser .add_argument ('--enabled-only' , action = 'store_true' ,
3439 help = 'disable all rules except those specified in '
3540 '--enable' )
41+ parser .add_argument ('-p' , '--picky' , action = 'store_true' ,
42+ help = 'If set, additional rules will be activated.' )
3643 parser .add_argument (
3744 '--version' , action = 'version' ,
3845 version = '%(prog)s {}' .format (__version__ ),
@@ -77,14 +84,6 @@ def get_text(filename, encoding, ignore):
7784 return text
7885
7986
80- def print_unicode (text ):
81- """Print in a portable manner."""
82- if sys .version_info [0 ] < 3 :
83- text = text .encode ('utf-8' )
84-
85- print (text )
86-
87-
8887def main ():
8988 args = parse_args ()
9089
@@ -109,44 +108,30 @@ def main():
109108 if args .remote_port is not None :
110109 remote_server += ':{}' .format (args .remote_port )
111110 lang_tool = LanguageTool (
111+ language = args .language ,
112112 motherTongue = args .mother_tongue ,
113113 remote_server = remote_server ,
114114 )
115- guess_language = None
116115
117116 try :
118117 text = get_text (filename , encoding , ignore = args .ignore_lines )
119118 except UnicodeError as exception :
120119 print ('{}: {}' .format (filename , exception ), file = sys .stderr )
121120 continue
122121
123- if args .language :
124- if args .language .lower () == 'auto' :
125- try :
126- from guess_language import guess_language
127- except ImportError :
128- print ('guess_language is unavailable.' , file = sys .stderr )
129- return 1
130- else :
131- language = guess_language (text )
132- print ('Detected language: {}' .format (language ),
133- file = sys .stderr )
134- if not language :
135- return 1
136- lang_tool .language = language
137- else :
138- lang_tool .language = args .language
139-
140122 if not args .spell_check :
141123 lang_tool .disable_spellchecking ()
142124
143125 lang_tool .disabled_rules .update (args .disable )
144126 lang_tool .enabled_rules .update (args .enable )
145127 lang_tool .enabled_rules_only = args .enabled_only
146128
129+ if args .picky :
130+ lang_tool .picky = True
131+
147132 try :
148133 if args .apply :
149- print_unicode (lang_tool .correct (text ))
134+ print (lang_tool .correct (text ))
150135 else :
151136 for match in lang_tool .check (text ):
152137 rule_id = match .ruleId
@@ -162,7 +147,7 @@ def main():
162147 if replacement_text and not message .endswith (('.' , '?' )):
163148 message += '; suggestions: ' + replacement_text
164149
165- print_unicode ('{}: {}: {}' .format (
150+ print ('{}: {}: {}' .format (
166151 filename ,
167152 rule_id ,
168153 message ))
0 commit comments