
    8@d"                        d dl Z d dlZd dlZd dlZd dlZ	 d dlZn# e$ r d dlZY nw xY wddlm	Z	m
Z
mZmZ ddlmZ d                     ej                    j                  Zd Zd Zd Zdd	Zed
k    r e             dS dS )    N   )PythonLSPServerstart_io_lang_serverstart_tcp_lang_serverstart_ws_lang_server)__version__z8%(asctime)s {0} - %(levelname)s - %(name)s - %(message)sc                 
   d| _         |                     ddd           |                     ddd           |                     dd	d
           |                     dt          dd           |                     ddd           |                                 }|                    dd           |                    dd           |                     ddddd           |                     dddd t          z   !           d S )"NzPython Language Serverz--tcp
store_truezUse TCP server instead of stdio)actionhelpz--wsz'Use Web Sockets server instead of stdioz--hostz	127.0.0.1zBind to this address)defaultr   z--porti'  zBind to this port)typer   r   z--check-parent-processzCheck whether parent process is still alive using os.kill(ppid, 0) and auto shut down language server process when parent process is not alive.Note that this may not work on a Windows machine.z--log-configz5Path to a JSON file containing Python logging config.)r   z
--log-filezeRedirect logs to the given file instead of writing to stderr.Has no effect if used with --log-config.z-vz	--verbosecountr   z;Increase verbosity of log output, overrides log config file)r   r   r   z-Vz	--versionversionz
%(prog)s v)r   r   )descriptionadd_argumentintadd_mutually_exclusive_groupr   )parser	log_groups     .lib/python3.11/site-packages/pylsp/__main__.pyadd_argumentsr      s   1F
.     |6     +#     sD       <     3355ID     3     k'1J    
 k)\K5O          c                     t          j                    } t          |            |                                 }t	          |j        |j        |j                   |j        r(t          |j
        |j        |j        t                     d S |j        r"t          |j        |j        t                     d S t!                      \  }}t#          |||j        t                     d S )N)argparseArgumentParserr   
parse_args_configure_loggerverbose
log_configlog_filetcpr   hostportcheck_parent_processr   wsr   _binary_stdior   )r   argsstdinstdouts       r   mainr+   F   s    $&&F&DdlDOT]CCCx 	.diD4M-	/ 	/ 	/ 	/ 	/	 .TY(A,	. 	. 	. 	. 	. &vUFD,E,	. 	. 	. 	. 	.r   c                  N    t           j        j        t           j        j        }} | |fS )zConstruct binary stdio streams (not text mode).

    This seems to be different for Window/Unix Python2/3, so going by:
        https://stackoverflow.com/questions/2850893/reading-binary-data-from-stdin
    )sysr)   bufferr*   )r)   r*   s     r   r'   r'   X   s!     I$cj&76E&=r   c                 p   t           j        }|r\t          |dd          5 }t           j                            t          j        |                     d d d            n# 1 swxY w Y   n~t          j        t                    }|r&t           j	        
                    |dddd d          }nt          j                    }|                    |           |                    |           | dk    rt           j        }n%| d	k    rt           j        }n| d
k    rt           j        }|                    |           d S )Nrzutf-8)encodingai   
   r   )modemaxBytesbackupCountr1   delayr      )loggingrootopenconfig
dictConfigjsonload	Formatter
LOG_FORMAThandlersRotatingFileHandlerStreamHandlersetFormatter
addHandlerWARNINGINFODEBUGsetLevel)r   r    r!   root_loggerf	formatterlog_handlerlevels           r   r   r   b   sd   ,K ,*cG444 	4N%%dill333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 %j11	 	2!*>>s\Q ?  KK
 "/11K  +++{+++!||	A	As   2AA#&A#__main__)r   NN)r   r9   logging.configr-   timeujsonr>   	Exception
python_lspr   r   r   r   _versionr   format	localtimetm_zonerA   r   r+   r'   r   __name__ r   r   <module>r\      sX         



    KKKKKF F F F F F F F F F F F ! ! ! ! ! !GNNDN 
, , ,^. . .$         8 zDFFFFF s    	''