@@ -173,6 +173,7 @@ def __getattr__(self, name):
173173class LanguageTool :
174174
175175 """Main class used for checking text against different rules."""
176+ _REMOTE = False
176177 _HOST = socket .gethostbyname ('localhost' )
177178 _MIN_PORT = 8081
178179 _MAX_PORT = 8083
@@ -184,8 +185,13 @@ class LanguageTool:
184185 _instances = WeakValueDictionary ()
185186 _PORT_RE = re .compile (r"(?:https?://.*:|port\s+)(\d+)" , re .I )
186187
187- def __init__ (self , language = None , motherTongue = None ):
188- if not self ._server_is_alive ():
188+ def __init__ (self , language = None , motherTongue = None , remote_server = None ):
189+ if remote_server is not None :
190+ self ._REMOTE = True
191+ self ._HOST = remote_server ["host" ]
192+ self ._port = remote_server ["port" ]
193+ self ._url = 'http://{}:{}/v2/check' .format (self ._HOST , self ._port )
194+ elif not self ._server_is_alive ():
189195 self ._start_server_on_free_port ()
190196 if language is None :
191197 try :
@@ -290,7 +296,7 @@ def _get_languages(cls) -> set:
290296 @classmethod
291297 def _get_attrib (cls ):
292298 """Get matches element attributes."""
293- if not cls ._server_is_alive ():
299+ if not cls ._server_is_alive () and cls . _REMOTE is False :
294300 cls ._start_server_on_free_port ()
295301 params = {'language' : FAILSAFE_LANGUAGE , 'text' : '' }
296302 data = urllib .parse .urlencode (params ).encode ()
@@ -304,8 +310,9 @@ def _get_root(cls, url, data=None, num_tries=2):
304310 with urlopen (url , data , cls ._TIMEOUT ) as f :
305311 return ElementTree .parse (f ).getroot ()
306312 except (IOError , http .client .HTTPException ) as e :
307- cls ._terminate_server ()
308- cls ._start_server ()
313+ if cls ._REMOTE is False :
314+ cls ._terminate_server ()
315+ cls ._start_server ()
309316 if n + 1 >= num_tries :
310317 raise Error ('{}: {}' .format (cls ._url , e ))
311318
0 commit comments