
L[c           @   s  d  d l  Z  d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d d l m Z m	 Z	 m
 Z
 d  d l m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z y& d  d l m Z e j Z e j Z Wn e k
 r d Z n Xd  d l m Z m Z e e  Z e j Z e j  Z  e j! Z! e j" Z" e j# Z# e e  d e j f  Z$ e e e  e e e   d e j% f  Z& e  d	  Z' e  d
  Z( e  d  Z) d Z* d Z+ d Z, d Z- d Z. d Z/ d Z0 d Z1 d Z2 d Z3 d e j4 f d     YZ5 e d k r!d Z6 n e7 d  Z6 d e  j8 f d     YZ9 d e9 f d     YZ: d e9 f d     YZ; d e< f d     YZ= d e< f d     YZ> e?   Z@ d   ZA d    ZB d!   ZC d"   ZD e
 rd#   ZE eE   ZF d$   ZG n  i eB d 6eC d 6eD d 6ZH d%   ZI d S(&   iNi   (   t   _NonClosingTextIOWrappert	   text_typet   PY2(   t   byreft   POINTERt   c_intt   c_chart   c_char_pt   c_void_pt	   py_objectt	   c_ssize_tt   c_ulongt   windllt   WINFUNCTYPE(   t	   pythonapi(   t   LPWSTRt   LPCWSTRt   GetCommandLineWt   CommandLineToArgvWiiii    i   i  i   s   i  t	   Py_bufferc           B   s   e  Z d  e f d e f d e f d e f d e f d e f d e f d e f d e f d	 e f d
 e f g Z e	 r e j
 d d e d f  n  RS(   t   buft   objt   lent   itemsizet   readonlyt   ndimt   formatt   shapet   stridest
   suboffsetst   internalit
   smalltablei   (   t   __name__t
   __module__R   R	   R
   R   R   t	   c_ssize_pt   _fields_R   t   insert(    (    (    s0   lib/python2.7/site-packages/click/_winconsole.pyR   @   s   										c         C   sp   t    } | r t n t } t t |   t |  |  z! t | j } | j | j	  SWd  t
 t |   Xd  S(   N(   R   t   PyBUF_WRITABLEt   PyBUF_SIMPLEt   PyObject_GetBufferR	   R   R   R   t   from_addressR   t   PyBuffer_Release(   R   t   writableR   t   flagst   buffer_type(    (    s0   lib/python2.7/site-packages/click/_winconsole.pyt
   get_bufferX   s    	t   _WindowsConsoleRawIOBasec           B   s   e  Z d    Z d   Z RS(   c         C   s   | |  _  d  S(   N(   t   handle(   t   selfR/   (    (    s0   lib/python2.7/site-packages/click/_winconsole.pyt   __init__e   s    c         C   s   t  j j |   t S(   N(   t   iot	   RawIOBaset   isattyt   True(   R0   (    (    s0   lib/python2.7/site-packages/click/_winconsole.pyR4   h   s    (   R    R!   R1   R4   (    (    (    s0   lib/python2.7/site-packages/click/_winconsole.pyR.   c   s   	t   _WindowsConsoleReaderc           B   s   e  Z d    Z d   Z RS(   c         C   s   t  S(   N(   R5   (   R0   (    (    s0   lib/python2.7/site-packages/click/_winconsole.pyt   readableo   s    c         C   s   t  |  } | s d S| d r/ t d   n  t | d t } | d } t   } t |  j | | t |  d   } t	   t
 k r t j d  n  | s t d t	     n  | d t k r d Sd | j S(   Ni    i   s>   cannot read odd number of bytes from UTF-16-LE encoded consoleR*   g?s   Windows error: %s(   R   t
   ValueErrorR-   R5   R   t   ReadConsoleWR/   R   t   Nonet   GetLastErrort   ERROR_OPERATION_ABORTEDt   timet   sleept   OSErrort   EOFt   value(   R0   t   bt   bytes_to_be_readt   buffert   code_units_to_be_readt   code_units_readt   rv(    (    s0   lib/python2.7/site-packages/click/_winconsole.pyt   readintor   s"    

	(   R    R!   R7   RH   (    (    (    s0   lib/python2.7/site-packages/click/_winconsole.pyR6   m   s   	t   _WindowsConsoleWriterc           B   s)   e  Z d    Z e d    Z d   Z RS(   c         C   s   t  S(   N(   R5   (   R0   (    (    s0   lib/python2.7/site-packages/click/_winconsole.pyR*      s    c         C   s(   |  t  k r d S|  t k r  d Sd |  S(   Nt   ERROR_SUCCESSt   ERROR_NOT_ENOUGH_MEMORYs   Windows error %s(   RJ   RK   (   t   errno(    (    s0   lib/python2.7/site-packages/click/_winconsole.pyt   _get_error_message   s
    c         C   s   t  |  } t |  } t | t  d } t   } t |  j | | t |  d   d | j	 } | d k r | d k r t
 |  j t      n  | S(   Ni   i    (   R   R-   t   mint   MAX_BYTES_WRITTENR   t   WriteConsoleWR/   R   R:   RA   R?   RM   R;   (   R0   RB   t   bytes_to_be_writtenR   t   code_units_to_be_writtent   code_units_writtent   bytes_written(    (    s0   lib/python2.7/site-packages/click/_winconsole.pyt   write   s    	(   R    R!   R*   t   staticmethodRM   RU   (    (    (    s0   lib/python2.7/site-packages/click/_winconsole.pyRI      s   	t   ConsoleStreamc           B   sM   e  Z d    Z e d    Z d   Z d   Z d   Z d   Z d   Z	 RS(   c         C   s   | |  _  | |  _ d  S(   N(   t   _text_streamRD   (   R0   t   text_streamt   byte_stream(    (    s0   lib/python2.7/site-packages/click/_winconsole.pyR1      s    	c         C   s
   |  j  j S(   N(   RD   t   name(   R0   (    (    s0   lib/python2.7/site-packages/click/_winconsole.pyR[      s    c         C   sQ   t  | t  r |  j j |  Sy |  j   Wn t k
 r@ n X|  j j |  S(   N(   t
   isinstanceR   RX   RU   t   flusht	   ExceptionRD   (   R0   t   x(    (    s0   lib/python2.7/site-packages/click/_winconsole.pyRU      s    c         C   s"   x | D] } |  j  |  q Wd  S(   N(   RU   (   R0   t   linest   line(    (    s0   lib/python2.7/site-packages/click/_winconsole.pyt
   writelines   s    c         C   s   t  |  j |  S(   N(   t   getattrRX   (   R0   R[   (    (    s0   lib/python2.7/site-packages/click/_winconsole.pyt   __getattr__   s    c         C   s   |  j  j   S(   N(   RD   R4   (   R0   (    (    s0   lib/python2.7/site-packages/click/_winconsole.pyR4      s    c         C   s   d |  j  |  j f S(   Ns#   <ConsoleStream name=%r encoding=%r>(   R[   t   encoding(   R0   (    (    s0   lib/python2.7/site-packages/click/_winconsole.pyt   __repr__   s    (
   R    R!   R1   t   propertyR[   RU   Rb   Rd   R4   Rf   (    (    (    s0   lib/python2.7/site-packages/click/_winconsole.pyRW      s   						t   WindowsChunkedWriterc           B   s)   e  Z d  Z d   Z d   Z d   Z RS(   s   
    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.
    c         C   s   | |  _  d  S(   N(   t   _WindowsChunkedWriter__wrapped(   R0   t   wrapped(    (    s0   lib/python2.7/site-packages/click/_winconsole.pyR1      s    c         C   s   t  |  j |  S(   N(   Rc   Ri   (   R0   R[   (    (    s0   lib/python2.7/site-packages/click/_winconsole.pyRd      s    c         C   sa   t  |  } d } xH | | k  r\ t | | t  } |  j j | | | | ! | | 7} q Wd  S(   Ni    (   R   RN   RO   Ri   RU   (   R0   t   textt   total_to_writet   writtent   to_write(    (    s0   lib/python2.7/site-packages/click/_winconsole.pyRU      s    (   R    R!   t   __doc__R1   Rd   RU   (    (    (    s0   lib/python2.7/site-packages/click/_winconsole.pyRh      s   		c         C   s[   t  rW t j   d  d k rW |  t k rW t t |  t t t |     t j |   n  d  S(   Ni   i   i   (   i   i   (   R   t   syst   getwindowsversiont   _wrapped_std_streamst   setattrRh   Rc   t   add(   R[   (    (    s0   lib/python2.7/site-packages/click/_winconsole.pyt   _wrap_std_stream   s    (c         C   s4   t  t j t t   d d d t } t | |   S(   Ns	   utf-16-let   strictt   line_buffering(   R    R2   t   BufferedReaderR6   t   STDIN_HANDLER5   RW   (   t   buffer_streamRY   (    (    s0   lib/python2.7/site-packages/click/_winconsole.pyt   _get_text_stdin   s    c         C   s4   t  t j t t   d d d t } t | |   S(   Ns	   utf-16-leRv   Rw   (   R    R2   t   BufferedWriterRI   t   STDOUT_HANDLER5   RW   (   Rz   RY   (    (    s0   lib/python2.7/site-packages/click/_winconsole.pyt   _get_text_stdout   s    c         C   s4   t  t j t t   d d d t } t | |   S(   Ns	   utf-16-leRv   Rw   (   R    R2   R|   RI   t   STDERR_HANDLER5   RW   (   Rz   RY   (    (    s0   lib/python2.7/site-packages/click/_winconsole.pyt   _get_text_stderr   s    c           C   s   t  j d j t j d   S(   Ns    i   (   t   zlibt   crc32t   joinRp   t   argv(    (    (    s0   lib/python2.7/site-packages/click/_winconsole.pyt   _hash_py_argv  s    c          C   s   t  d  }  t t   t |    } g  t d |  j  D] } | | ^ q7 } t t d  s | d } x` t |  d k r | d } | j	 d  s | d k r Pn  | d } | j	 d  ri Pqi qi Wn  | d S(   Ni    t   frozeni   t   -s   -cs   -m(   s   -cs   -m(
   R   R   R   R   t   rangeRA   t   hasattrRp   R   t
   startswith(   t   argct   argv_unicodet   iR   t   arg(    (    s0   lib/python2.7/site-packages/click/_winconsole.pyt   _get_windows_argv	  s    )


c         C   s   t  d  k	 r | d k r | d k r t |  d  r |  j   r t j |  j    } | d  k	 r t s t |  d d   }  |  d  k r d  Sn t	 j
 |  j   t j  | |   Sn  d  S(   Ns	   utf-16-leRv   R4   RD   (   s	   utf-16-leN(   Rv   N(   R-   R:   R   R4   t   _stream_factoriest   gett   filenoR   Rc   t   msvcrtt   setmodet   ost   O_BINARY(   t   fRe   t   errorst   func(    (    s0   lib/python2.7/site-packages/click/_winconsole.pyt   _get_windows_console_stream"  s    (J   R2   R   Rp   R   R=   t   ctypesR   t   _compatR    R   R   R   R   R   R   R   R   R	   R
   R   R   R   R   R'   R)   t   ImportErrorR:   t   ctypes.wintypesR   R   R"   t   kernel32t   GetStdHandleR9   RP   R;   R   t   shell32R   Ry   R}   R   R&   R%   RJ   RK   R<   t   STDIN_FILENOt   STDOUT_FILENOt   STDERR_FILENOR@   RO   t	   StructureR   R-   t   FalseR3   R.   R6   RI   t   objectRW   Rh   t   setRr   Ru   R{   R~   R   R   t   _initial_argv_hashR   R   R   (    (    (    s0   lib/python2.7/site-packages/click/_winconsole.pyt   <module>   s|   L	
							
$							
