U L[#@s4ddlZddlZddlZddlZddlZddlZddlZddlmZm Z m Z ddlm Z m Z m Z mZmZmZmZmZmZmZmZzddlmZejZejZWnek rdZYnXddlmZmZe eZejZejZej Z ej!Z!ej"Z"eedejfZ#ee eee e dej$fZ%ed Z&ed Z'ed Z(dZ)dZ*dZ+d Z,d Z-dZ.dZ/dZ0dZ1dZ2Gdddej3Z4edkr~dZ5n d/ddZ5Gdddej6Z7Gddde7Z8Gddde7Z9Gddde:Z;Gddde:Zd d!Z?d"d#Z@d$d%ZAd&d'ZBe rd(d)ZCeCZDd*d+ZEe@eAeBd,ZFd-d.ZGdS)0N)_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*3/usr/lib/python3/dist-packages/click/_winconsole.pyr@srFc CsTt}|rtnt}tt|t||zt|j}| |j WStt|XdSN) rPyBUF_WRITABLE PyBUF_SIMPLEPyObject_GetBufferr rPyBuffer_Releaser rZ 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,)getattrrWr6rYr*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`rcr;rer*r*r*r+rVs  rVc@s(eZdZdZddZddZddZdS) WindowsChunkedWriterz Wraps a stream (such as stdout), acting as a transparent proxy for all attribute access apart from method 'write()' which we wrap to write in limited chunks due to a Windows limitation on binary console streams. cCs ||_dSr,)_WindowsChunkedWriter__wrapped)r6wrappedr*r*r+r7szWindowsChunkedWriter.__init__cCs t|j|Sr,)rarhrbr*r*r+rcsz WindowsChunkedWriter.__getattr__cCsHt|}d}||krDt||t}|j||||||7}q dS)Nr)rrQrRrhrT)r6textZtotal_to_writeZwrittenZto_writer*r*r+rTs zWindowsChunkedWriter.writeN)r%r&r'__doc__r7rcrTr*r*r*r+rgsrgcCsDtr@tdddkr@|tkr@tt|ttt|t|dS)Nr)r)rsysZgetwindowsversion_wrapped_std_streamssetattrrgraadd)rYr*r*r+_wrap_std_streams rqcCs$ttttdddd}t||SN utf-16-lestrictT)line_buffering)rr9BufferedReaderr= STDIN_HANDLErVZ buffer_streamrXr*r*r+_get_text_stdins rycCs$ttttdddd}t||Srr)rr9BufferedWriterrL STDOUT_HANDLErVrxr*r*r+_get_text_stdouts r|cCs$ttttdddd}t||Srr)rr9rzrL STDERR_HANDLErVrxr*r*r+_get_text_stderrs r~cCstdtjddS)Nr)zlibZcrc32joinrmargvr*r*r*r+ _hash_py_argvsrcstd}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) rrrrrangerGhasattrrmr startswith)Zargcrargr*rr+_get_windows_argv s     r)rrrcCs|tdk rx|dkrx|dkrxt|drx|rxt|}|dk rxts^t|dd}|dkrpdSnt |t j ||SdS)N)rsN)rtNr;rI) r3rr;_stream_factoriesgetfilenorramsvcrtZsetmodeosZO_BINARY)frderrorsfuncr*r*r+_get_windows_console_stream"s" r)F)Hr9rrmrrCZctypesrZ_compatrrrrrrr r r r r rrrrr/r0 ImportErrorZctypes.wintypesrrr(Zkernel32Z GetStdHandler@rSrArZshell32rrwr{r}r.r-rMrNrBZ STDIN_FILENOZ STDOUT_FILENOZ STDERR_FILENOrFrRZ Structurerr3r:r4r=rLobjectrVrgsetrnrqryr|r~rZ_initial_argv_hashrrrr*r*r*r+ s4      $