U Wn@sddlZddlZddlZddlZddlZddlZddlZddlmZm Z m Z ddlm Z m Z m Z mZmZmZmZmZmZmZmZzddlmZejZejZWnek rdZYnXddlmZmZe eZejZejZej Z ej!Z!ej"Z"eedejfZ#ee eee e dej$fZ%edZ&ed Z'ed Z(dZ)d Z*dZ+d Z,d Z-dZ.d Z/dZ0dZ1dZ2Gdddej3Z4edkr~dZ5n d+ddZ5Gdddej6Z7Gddde7Z8Gddde7Z9Gddde:Z;ddZe rd$d%Z?e?Z@d&d'ZAed(ZBd)d*ZCdS),N)_NonClosingTextIOWrapper text_typePY2) byrefPOINTERc_intc_charc_char_pc_void_p py_object c_ssize_tc_ulongwindll WINFUNCTYPE) pythonapi)LPWSTRLPCWSTRGetCommandLineWCommandLineToArgvWiiiiic @sjeZdZdefdefdefdefdefdefdefdefd efd efd efg Z e rfe d d edfdS) Py_bufferbufobjlenitemsizereadonlyndimformatshapestrides suboffsetsZinternalZ smalltablerN) __name__ __module__ __qualname__r r r rr c_ssize_pZ_fields_rinsertr*r*/_winconsole.pyr@srFc CsTt}|rtnt}tt|t||zt|j}| |j WStt|XdSN) rPyBUF_WRITABLE PyBUF_SIMPLEPyObject_GetBufferr rPyBuffer_ReleaserrZ from_addressr)rwritablerflagsZ buffer_typer*r*r+ get_bufferXs  r3c@seZdZddZddZdS)_WindowsConsoleRawIOBasecCs ||_dSr,)handle)selfr5r*r*r+__init__esz!_WindowsConsoleRawIOBase.__init__cCstj|dSNT)io RawIOBaseisattyr6r*r*r+r;hs z_WindowsConsoleRawIOBase.isattyN)r%r&r'r7r;r*r*r*r+r4csr4c@seZdZddZddZdS)_WindowsConsoleReadercCsdSr8r*r<r*r*r+readableosz_WindowsConsoleReader.readablecCst|}|sdS|dr tdt|dd}|d}t}t|j||t|d}ttkrdt d|svt dt|dt krdSd|j S)Nrrz>cannot read odd number of bytes from UTF-16-LE encoded consoleT)r1g?zWindows error: %s)r ValueErrorr3r ReadConsoleWr5r GetLastErrorERROR_OPERATION_ABORTEDtimesleepOSErrorEOFvalue)r6bZbytes_to_be_readbufferZcode_units_to_be_readZcode_units_readrvr*r*r+readintors&     z_WindowsConsoleReader.readintoN)r%r&r'r>rKr*r*r*r+r=msr=c@s(eZdZddZeddZddZdS)_WindowsConsoleWritercCsdSr8r*r<r*r*r+r1sz_WindowsConsoleWriter.writablecCs |tkr dS|tkrdSd|S)N ERROR_SUCCESSERROR_NOT_ENOUGH_MEMORYzWindows error %s)rMrN)errnor*r*r+_get_error_messages z(_WindowsConsoleWriter._get_error_messagecCsht|}t|}t|td}t}t|j||t|dd|j}|dkrd|dkrdt | t |S)Nrr) rr3minMAX_BYTES_WRITTENr WriteConsoleWr5rrGrErPrA)r6rHZbytes_to_be_writtenrZcode_units_to_be_writtenZcode_units_writtenZ bytes_writtenr*r*r+writes   z_WindowsConsoleWriter.writeN)r%r&r'r1 staticmethodrPrTr*r*r*r+rLs rLc@sHeZdZddZeddZddZddZd d Zd d Z d dZ dS) ConsoleStreamcCs||_||_dSr,) _text_streamrI)r6 text_streamZ byte_streamr*r*r+r7szConsoleStream.__init__cCs|jjSr,)rInamer<r*r*r+rYszConsoleStream.namecCsDt|tr|j|Sz |Wntk r6YnX|j|Sr,) isinstancerrWrTflush ExceptionrI)r6xr*r*r+rTs   zConsoleStream.writecCs|D]}||qdSr,)rT)r6linesliner*r*r+ writelinesszConsoleStream.writelinescCs t|j|Sr,)getattrrW)r6rYr*r*r+ __getattr__szConsoleStream.__getattr__cCs |jSr,)rIr;r<r*r*r+r;szConsoleStream.isattycCsd|j|jfS)Nz#)rYencodingr<r*r*r+__repr__szConsoleStream.__repr__N) r%r&r'r7propertyrYrTr`rbr;rdr*r*r*r+rVs  rVcCs$ttttdddd}t||SN utf-16-lestrictT)line_buffering)rr9BufferedReaderr= STDIN_HANDLErVZ buffer_streamrXr*r*r+_get_text_stdins rmcCstttdddd}t||Srf)rrL STDOUT_HANDLErVrlr*r*r+_get_text_stdoutsrocCstttdddd}t||Srf)rrL STDERR_HANDLErVrlr*r*r+_get_text_stderrsrqcCstdtjddS)Nr)zlibZcrc32joinsysargvr*r*r*r+ _hash_py_argvsrwcstd}ttt|fddtd|jD}ttds|dd}t|dkr|d}| dr|dkrpq|dd}| drHqqH|ddS)Nrcsg|] }|qSr*r*).0iZ argv_unicoder*r+ sz%_get_windows_argv..frozenr-)z-cz-m) rrrrrangerGhasattrrur startswith)Zargcrvargr*rzr+_get_windows_argvs     r)rrrcCsztdk rv|dkrv|dkrvt|drv|rvt|}|dk rvts\t|d}|dkrndSnt |t j ||SdS)N)rgN)rhNr;rI) r3rr;_stream_factoriesgetfilenorramsvcrtZsetmodeosZO_BINARY)frcerrorsfuncr*r*r+_get_windows_console_streams" r)F)Dr9rrursrCZctypesrZ click._compatrrrrrrrr r r r r rrrr/r0 ImportErrorZctypes.wintypesrrr(Zkernel32Z GetStdHandler@rSrArZshell32rrkrnrpr.r-rMrNrBZ STDIN_FILENOZ STDOUT_FILENOZ STDERR_FILENOrFrRZ Structurerr3r:r4r=rLobjectrVrmrorqrwZ_initial_argv_hashrrrr*r*r*r+ s4      $