
    Ej{                    ,   d Z ddlmZ ddlm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ZddlZddlmZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddl m!Z! ddl m"Z"  ej#        d          Z$ G d dej%                  Z&dFdZ'e	j(        dk    rdZ)dZ*ndZ)dZ* G d  d!ej+        e$                   Z, G d" d#ej-                  Z.	 dGdHd'Z/ej0        dGdId)            Z1ej0        	 dGdJd-            Z2ej0        	 dGdJd.            Z3ej0        	 dGdKd1            Z4 G d2 d3          Z5dLdMd;Z6dNd>Z7ej8        d?k    rddl9Z9ej0        dOdA            Z:dPdCZ;dS ddl<Z<ddl=Z=ej0        dOdD            Z:dPdEZ;dS )Qz
This module contains implementations for the termui module. To keep the
import time of Click down, some infrequently used functionality is
placed in this module and only imported as needed.
    )annotationsN)gettext)StringIO)Path)TracebackType   )_default_text_stdout)CYGWIN)get_best_encoding)isatty)
strip_ansi)term_len)WIN)ClickException)echo)KeepOpenFileVc                      e Zd ZU ded<   dS )_BufferedTextPagerStreamz
t.BinaryIObufferN)__name__
__module____qualname____annotations__     L/wd/license_services/venv/lib/python3.11/site-packages/click/_termui_impl.pyr   r   %   s         r   r   streamt.BinaryIO | t.TextIOreturn%t.TypeGuard[_BufferedTextPagerStream]c                (    t          | dd           d uS )Nr   )getattr)r   s    r   _has_binary_bufferr$   )   s    
 68T**$66r   nt
z[?25lz[?25h
c                      e Zd Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dEdFd%ZdGd'ZdHd.ZdId0ZdJd2ZdKd3Ze	dLd5            Z
e	dLd6            Ze	dLd7            ZdMd8ZdMd9ZdMd:ZdMd;ZdMd<ZdKd=ZdNd?ZdOdPdBZdKdCZdIdDZdS )QProgressBarN# %(bar)s  FTr      iterablecabc.Iterable[V] | Nonelength
int | None	fill_charstr
empty_charbar_templateinfo_sephiddenboolshow_etashow_percentbool | Noneshow_positem_show_func)t.Callable[[V | None], str | None] | Nonelabel
str | Nonefilet.TextIO | Nonecolorupdate_min_stepsintwidthr    Nonec                   || _         || _        || _        || _        || _        || _        |	| _        |
| _        || _        |pd| _	        |t                      }|t                      }|| _        || _        || _        d| _        || _        |dk    | _        |ddlm}  ||d          }|dk    rd }|3|t)          d          t+          j        dt/          |                    }t1          |          | _        || _        d| _        g | _        |  |  t9          j                    x| _        | _        d| _        d| _         d | _!        d| _"        d | _#        tI          | j                  | _%        d | _&        d S )N r   )length_hintziterable or length is requiredzcabc.Iterable[V]F)'r3   r5   r6   r7   r8   r:   r;   r=   r>   r@   r	   r   rB   rD   rE   _completed_intervalsrG   	autowidthoperatorrK   	TypeErrortcastrangeiterr1   posavgtimestartlast_eta	eta_knownfinished	max_widthenteredcurrent_itemr   _is_atty
_last_line)selfr/   r1   r3   r5   r6   r7   r8   r:   r;   r=   r>   r@   rB   rD   rE   rG   rK   s                     r   __init__zProgressBar.__init__:   s   & #$(  ( ,+2
<'))D |zz	
 0$%!
$z>,,,,,, [2..F||~ @AAAv0%--@@H&*8nn	 "%)Y[[0
T]$#%)"&*ty))&*r   ProgressBar[V]c                <    d| _         |                                  | S )NT)r]   render_progressra   s    r   	__enter__zProgressBar.__enter__   s     r   exc_typetype[BaseException] | None	exc_valueBaseException | NonetbTracebackType | Nonec                .    |                                   d S N)render_finish)ra   rh   rj   rl   s       r   __exit__zProgressBar.__exit__   s     	r   cabc.Iterator[V]c                ~    | j         st          d          |                                  |                                 S )N.You need to use progress bars in a with block.)r]   RuntimeErrorre   	generatorrf   s    r   __iter__zProgressBar.__iter__   s>    | 	QOPPP~~r   r   c                :    t          t          |                     S ro   )nextrT   rf   s    r   __next__zProgressBar.__next__   s     DJJr   c                    | j         s| j        sd S | j                            t                     | j                                         d S ro   )r8   r_   rB   write	AFTER_BARflushrf   s    r   rp   zProgressBar.render_finish   sF    ; 	dm 	F		"""	r   floatc                p    | j         rdS t          | j        t          | j        pd          pdz  d          S )N      ?r   )r[   minrU   r   r1   rf   s    r   pctzProgressBar.pct   s<    = 	348uT[%5A66;!<cBBBr   c                    | j         sdS t          | j                   t          t          | j                             z  S Ng        )rV   sumr   lenrf   s    r   time_per_iterationzProgressBar.time_per_iteration   s4    x 	348}}uS]]3333r   c                P    | j         | j        s| j        | j         | j        z
  z  S dS r   )r1   r[   r   rU   rf   s    r   etazProgressBar.eta   s-    ;"4="*dkDH.DEEsr   c                    | j         rlt          | j                  }|dz  }|dz  }|dz  }|dz  }|dz  }|dz  }|dk    r'd                    |t	          d          |||          S |dd|dd|dS d	S )
N<      r   z#{d}{day_label} {h:02}:{m:02}:{s:02}d)r   	day_labelhms02:rJ   )rZ   rF   r   format_)ra   rQ   secondsminuteshourss        r   
format_etazProgressBar.format_eta   s    > 	?DHA"fG"HA"fG"HAFE"HA1uu<CCff D     >>>W>>>'>>>>rr   c                V    t          | j                  }| j        |d| j         z  }|S )N/)r4   rU   r1   )ra   rU   s     r   
format_poszProgressBar.format_pos   s1    $(mm;"$t{$$$C
r   c                H    t          | j        dz            dddd          S )Nd   z 4%r   )rF   r   rf   s    r   
format_pctzProgressBar.format_pct   s+    dhn%%++++ABB//r   c                   | j         <t          | j        | j        z            }| j        |z  }|| j        | j        |z
  z  z  }n| j        r| j        | j        z  }nt          | j        | j        pdz            }| j        dk    rD| j        |t          t          j
        | j        | j        z            dz  dz   | j        z            <   d                    |          }|S )Nr   r   g       @g      ?rJ   )r1   rF   r   rG   r3   r5   r[   listr   mathcosrU   join)ra   
bar_lengthbarcharss       r   
format_barzProgressBar.format_bar   s    ;"TX
233J.:-C4?dj:&=>>CC] 	!.4:-CCDJO!<==E&!++ N $(T-D"DEEKcQ*%  ''%..C
r   c                j   | j         }g }| j        
|| j         }| j        r'|                    |                                            |r'|                    |                                            | j        r5| j        r.| j        s'|                    | 	                                           | j
        1| 
                    | j                  }||                    |           | j        | j        |                                 | j                            |          dz                                  S )N)r@   r   info)r;   r1   r=   appendr   r   r:   rZ   r[   r   r>   r^   r6   r@   r   r7   r   rstrip)ra   r;   	info_bits	item_infos       r   format_progress_linez ProgressBar.format_progress_line   s3   (	;"|';#},L= 	0T__../// 	0T__..///= 	0T^ 	0DM 	0T__..///*++D,=>>I$  +++ ((**955  &((	r   c                   | j         rd S | j        s?| j        | j        k    r-| j        | _        t	          | j        | j        | j                   d S g }| j        rdd l}| j	        }d| _	        t          |                                           }t          d|                                j        |z
            }||k     rE| j        >|                    t"                     |                    d| j        z             || _        || _	        | j	        }| j        | j        }|                    t"                     |                                 }t          |          }| j        | j        |k     r|| _        |                    |           |                    d||z
  z             d                    |          }|| j        k    r?|| _        t	          || j        | j        d           | j                                         d S d S )N)rB   rD   r   r+   rJ   F)rB   rD   nl)r8   r_   r`   r@   r   rB   rD   rN   shutilrG   r   r   maxget_terminal_sizecolumnsr\   r   
BEFORE_BARr   r~   )	ra   bufr   	old_widthclutter_length	new_widthclear_widthlineline_lens	            r   re   zProgressBar.render_progress   s   ; 	F} 	$*,,"&*TZditzBBBBF> 	#MMM
IDJ%d&?&?&A&ABBNAv7799ANRSSI9$$)C

:&&&

3/000!*"DJj>%.K

:((**D>>>!T^h%>%>%DN

4

3+01222wws|| 4?"""DODITZEBBBBIOO #"r   n_stepsc                   | xj         |z  c_         | j        | j         | j        k    rd| _        t          j                    | j        z
  dk     rd S t          j                    | _        | j         r$t          j                    | j        z
  | j         z  }nt          j                    | j        z
  }| j        dd          |gz   | _        | j        d u| _        d S )NTr   i)rU   r1   r[   rW   rY   rX   rV   rZ   )ra   r   steps      r   	make_stepzProgressBar.make_step.  s    G;"tx4;'>'> DMIKK$-'3..F	
 8 	,IKK$*,8DD9;;+D8BCC=D6)D0r   r^   V | Nonec                    ||| _         | xj        |z  c_        | j        | j        k    r7|                     | j                   |                                  d| _        dS dS )a  Update the progress bar by advancing a specified number of
        steps, and optionally set the ``current_item`` for this new
        position.

        :param n_steps: Number of steps to advance.
        :param current_item: Optional item to set as ``current_item``
            for the updated position.

        .. versionchanged:: 8.0
            Added the ``current_item`` optional parameter.

        .. versionchanged:: 8.0
            Only render when the number of steps meets the
            ``update_min_steps`` threshold.
        Nr   )r^   rM   rE   r   re   )ra   r   r^   s      r   updatezProgressBar.updateD  st      # ,D!!W,!!$(===NN44555  """()D%%% >=r   c                0    d| _         d | _        d| _        d S )NFT)rZ   r^   r[   rf   s    r   finishzProgressBar.finish^  s     r   c              #  D  K   | j         st          d          | j        s| j        E d{V  dS | j        D ]A}|| _        | j        dk    r|                                  |V  |                     d           B|                                  |                                  dS )zReturn a generator which yields the items added to the bar
        during construction, and updates the progress bar *after* the
        yielded block returns.
        rt   Nr   r   )	r]   ru   r_   rT   r^   rM   re   r   r   )ra   rvs     r   rv   zProgressBar.generatorc  s       | 	QOPPP} 	#y         i 
 
$&!
 ,11((***AKKMMM  """""r   )Nr*   r+   r,   r-   FTNFNNNNr   r.   )"r/   r0   r1   r2   r3   r4   r5   r4   r6   r4   r7   r4   r8   r9   r:   r9   r;   r<   r=   r9   r>   r?   r@   rA   rB   rC   rD   r<   rE   rF   rG   rF   r    rH   )r    rc   )rh   ri   rj   rk   rl   rm   r    rH   )r    rr   )r    r   )r    rH   )r    r   r    r4   )r   rF   r    rH   ro   )r   rF   r^   r   r    rH   )r   r   r   rb   rg   rq   rw   rz   rp   propertyr   r   r   r   r   r   r   r   re   r   r   r   rv   r   r   r   r)   r)   9   s        "%$(DH  $! !#E+ E+ E+ E+ E+N   
                     C C C XC
 4 4 4 X4
    X
   *   0 0 0 0   &   6, , , ,\1 1 1 1,* * * * *4   
# # # # # #r   r)   c                  ,     e Zd Zd fdZd fdZ xZS )MaybeStripAnsir   t.IO[bytes]rD   r9   kwargst.Anyc               J     t                      j        |fi | || _        d S ro   )superrb   rD   )ra   r   rD   r   	__class__s       r   rb   zMaybeStripAnsi.__init__  s-    **6***


r   textr4   r    rF   c                r    | j         st          |          }t                                          |          S ro   )rD   r   r   r|   )ra   r   r   s     r   r|   zMaybeStripAnsi.write  s0    z 	$d##Dww}}T"""r   )r   r   rD   r9   r   r   )r   r4   r    rF   )r   r   r   rb   r|   __classcell__)r   s   @r   r   r     s[             # # # # # # # # # #r   r   rD   r<   9t.ContextManager[tuple[t.BinaryIO | t.TextIO, str, bool]]c                V   t                      }|t                      }t          t          j                  rt          |          st          ||           S t          j        t          j	        
                    dd                    }|r't          rt          ||           S t          ||           S t          j	        
                    d          dv rt          ||           S t          st          j                            d          rt          dg|           S t          dg|           S )	z2Decide what method to use for paging through text.NPAGERrJ   TERM)dumbemacsos2moreless)r	   r   r   sysstdin
_nullpagershlexsplitosenvirongetr   _tempfilepager
_pipepagerplatform
startswith)rD   stdoutpager_cmd_partss      r   _pager_contextmanagerr     s    "##F ~#) )F6NN )&%((( k"*..""="=>>O 2 	:!/5999/5111	z~~f!222&%(((
 /cl%%e,, /vh...vh&&&r   !t.Generator[t.TextIO, None, None]c              #  &  K   t          |           5 \  }}} d}t          |          rt          |j        | |          }|}	 t	          j        t          j        |          V  	 |                                 ||                                 ni# ||                                 w w xY w# 	 |                                 ||                                 w w # ||                                 w w xY wxY wddd           dS # 1 swxY w Y   dS )zContext manager.

    Yields a writable file-like object which can be used as an output pager.

    .. versionadded:: 8.4.0

    :param color: controls if the pager supports ANSI colors or not.  The
                  default is autodetection.
    )rD   N)rD   encoding)	r   r$   r   r   rQ   rR   TextIOr~   detach)rD   r   r   wrappers       r   get_pager_filer     sz      
U	+	+	+ %/H% *.f%% 	$V]%(SSSGF	% &6*****
% &NN$$$ &NN$$$$ '
% &NN$$$$ '7&NN$$$$ '/% % % % % % % % % % % % % % % % % %sS   /D!B,%B9DB))D,C6.CC6C3	3C66DD
D
	cmd_parts	list[str]3t.Iterator[tuple[t.BinaryIO | t.TextIO, str, bool]]c              #  H  K   | sJt                      pt                      }t          ||          5 }|V  ddd           n# 1 swxY w Y   dS ddl}| d         }| dd         }|                    |          }|sJt                      pt                      }t          ||          5 }|V  ddd           n# 1 swxY w Y   dS t          |                                          }|j        }	ddl}
t          t          j                  }|Q|	dk    rKt          j                            dd           d                    |           }|sd|d<   d	}n
d
|v sd|v rd	}|d}|
                    t          |          g|z   d|
j        |dd	          }t#          j        t"          j        |j                  }t+          |          }	 |||fV  n3# t,          $ r Y n't.          $ r}|                                 |d}~ww xY w	 |                                 n# t,          $ r Y nw xY w	 	 |                                 dS # t6          $ r Y nw xY w(# 	 |                                 n# t,          $ r Y nw xY w	 	 |                                 n# t6          $ r Y nw xY w'w xY w)a  Page through text by feeding it to another program.

    Invokes the pager via :class:`subprocess.Popen` with an ``argv`` list
    produced by :func:`shlex.split`. The command is resolved to an absolute
    path with :func:`shutil.which` as recommended by the
    :mod:`subprocess` docs for Windows compatibility.

    Invoking a pager through this might support colors: if piping to
    ``less`` and the user hasn't decided on colors, ``LESS=-R`` is set
    automatically.
    Nr   r   r   LESSrJ   r+   -RTrRFreplace)shellr   enverrorsr   )r	   r   r   r   whichr   absolutename
subprocessdictr   r   r   r   Popenr4   PIPErQ   rR   BinaryIOr   r   BrokenPipeError	Exception	terminateclosewaitKeyboardInterrupt)r   rD   r   r   r   cmd
cmd_paramscmd_filepathcmd_pathcmd_namer  r  
less_flagscr   r   es                    r   r   r     s         &''58::&& 	"HHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	MMM
A,C122J<<$$L  &''58::&& 	"HHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 L!!**,,H}H rz

C }V++
vr22JCHHZ4H4HJJ
 	CKEEJ#"3"3E}	X*$o 	 	 	A F1:qw''E ''H#Xu$$$$$      
 	
	KKMMMM  	 	 	D		  %   		KKMMMM  	 	 	D		  %   	 	 	 	 	s   AA	A(B99B= B=G I 
G?I 	G?$G::G??I H 
H%$H%*I   
IIJ!I('J!(
I52J!4I55J!:JJ!
JJ!JJ!c              #    K   | sJt                      pt                      }t          ||          5 }|V  ddd           n# 1 swxY w Y   dS ddl}ddl}| d         }|                    |          }|sJt                      pt                      }t          ||          5 }|V  ddd           n# 1 swxY w Y   dS t          |                                          }ddl}	t          t          j                  }
|d}|	                    dd          }	 t          j        t          j        |          |
|fV  |                                 |                                 |                    t'          |          |j        g           t+          j        |j                   dS # t+          j        |j                   w xY w)a   Page through text by invoking a program on a temporary file.

    Used as the primary pager strategy on Windows (where piping to
    ``more`` adds spurious ``\r\n``), and as a fallback on other
    platforms. The command is resolved to an absolute path with
    :func:`shutil.which`.
    Nr   Fwb)modedelete)r	   r   r   r   r  r  r   r  tempfiler   r   r   NamedTemporaryFilerQ   rR   r
  r~   r  callr4   r  r   unlink)r   rD   r   r   r   r  r  r  r  r  r   fs               r   r   r   C  s9        &''58::&& 	"HHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	MMM
A,C<<$$L  &''58::&& 	"HHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 L!!**,,HOOO ,,H} 	##e#<<AfQZ##Xu4444								X/000
	!&	!&s0   AA	A"B33B7:B7A5F* *Gt.TextIO&t.Iterator[tuple[t.TextIO, str, bool]]c              #  X   K   t          |           }|d}t          |           ||fV  dS )a  Simply print unformatted text. This is the ultimate fallback. Don't close the
    output stream in this case, since it's coming from elsewhere rather than our
    internal helpers.

    The stream is wrapped in :class:`~click.utils.KeepOpenFile` so that, as a
    borrowed stream, it is not closed by a ``with`` block. The wrapper that
    :func:`get_pager_file` builds around it is detached rather than closed.
    NF)r   r   )r   rD   r   s      r   r   r   |  s@       !((H}
v

%
//////r   c                  |    e Zd Z	 	 	 	 dddZddZddZej        dd            Zej        d d            Zd!dZdS )"EditorNT.txteditorrA   r  cabc.Mapping[str, str] | Nonerequire_saver9   	extensionr4   r    rH   c                >    || _         || _        || _        || _        d S ro   )r(  r  r*  r+  )ra   r(  r  r*  r+  s        r   rb   zEditor.__init__  s%     ("r   c                    | j         | j         S dD ]'}t          j                            |          }|r|c S (t          rdS ddlm} dD ]} ||          |c S dS )N)VISUALEDITORnotepadr   )r  )zsensible-editorvimnanovi)r(  r   r   r   r   r   r  )ra   keyr   r  r(  s        r   
get_editorzEditor.get_editor  s    ;";% 	 	C$$B 			 	9      6 	 	FuV}}( )tr   	filenamescabc.Iterable[str]c                H   ddl }ddl}|                                 }d}| j        r8t          j                                        }|                    | j                   	 |                     |j	        |          t          |          z   |          }|                                }|dk    r0t          t          d                              |                    dS # t          $ r7}t          t          d                              ||                    |d}~ww xY w)z Open files in the user's editor.r   N)argsr  z{editor}: Editing failed)r(  z{editor}: Editing failed: {e})r(  r  )r   r  r5  r  r   r   copyr   r  r   r   r  r   r   r   OSError)	ra   r6  r   r  r(  r   r  	exit_coder  s	            r   
edit_fileszEditor.edit_files  s;   "")-8 	%joo''GNN48$$$	    U[((4	??: !  A IA~~$011888GG   ~  	 	 	 1229919MM 	s   A?C   
D!*2DD!r   bytes | bytearraybytes | Nonec                    d S ro   r   ra   r   s     r   editzEditor.edit  s    =@Sr   c                    d S ro   r   rA  s     r   rB  zEditor.edit  s    47Cr   str | bytes | bytearray | Nonestr | bytes | Nonec                   dd l }|d}nt          |t          t          f          r|}nb|r|                    d          s|dz  }t
          r*|                    dd                              d          }n|                    d          }|                    d| j	                  \  }}	 t          j        |d	          5 }|                    |           d d d            n# 1 swxY w Y   t          j        |t          j                            |          t          j                            |          d
z
  f           t          j                            |          }|                     |f           | j        r:t          j                            |          |k    r	 t          j        |           d S t)          |d          5 }|                                }d d d            n# 1 swxY w Y   t          |t          t          f          r|t          j        |           S |                    d                              dd          t          j        |           S # t          j        |           w xY w)Nr   r   r'   z
z	utf-8-sigzutf-8zeditor-)prefixsuffixr     rb)r  
isinstancebytes	bytearrayendswithr   r   encodemkstempr+  r   fdopenr|   utimepathgetatimegetmtimer=  r*  r   openreaddecode)	ra   r   r  datafdr  r!  	timestampr   s	            r   rB  zEditor.edit  s   <&)DDui011 		,DD DMM$//  ,||D&1188EE{{7++##9T^#LLD	2t$$                HTBG,,T22BG4D4DT4J4JQ4NOPPP ((..IOOTG$$$  RW%5%5d%;%;y%H%H IdOOOOO dD!! QVVXX               $	 233  IdOOOO 99[))11&$??IdOOOOBIdOOOOsa   +I"  C"I" "C&&I" )C&*B6I" 7I" G(I" (G,,I" /G,0 I" %(I" "I8)NNTr'  )
r(  rA   r  r)  r*  r9   r+  r4   r    rH   r   )r6  r7  r    rH   )r   r>  r    r?  )r   rA   r    rA   )r   rD  r    rE  )	r   r   r   rb   r5  r=  rQ   overloadrB  r   r   r   r&  r&    s         "-1!
# 
# 
# 
# 
#   "   < Z@@@ Z@ Z777 Z7- - - - - -r   r&  Furlr4   r  r9   locaterF   c                   dd l }dd}t          j        dk    rdg}|r|                    d           |r|                    d	           |                     ||                      t	          d
d          }	 |                    ||                                          |                                 S # |                                 w xY wt          rb|r7 ||           } dd| g}	 |	                    |          S # t          $ r Y dS w xY w	 t          j        |            n# t          $ r Y dS w xY wdS t          r|r- ||           } dt          j                            |           g}n/dg}|r|                    d           |                    |            	 |	                    |          S # t          $ r Y dS w xY w	 |r+t          j                             ||                     pd} n ||           } |                    d| g          }|r|                                S dS # t          $ r9 |                     d          r |s|sdd l}|                    |            Y dS Y dS w xY w)Nr   r]  r4   r    c                b    ddl m} |                     d          r || dd                    } | S )Nr   )unquotezfile://   )urllib.parsera  r   )r]  ra  s     r   _unquote_filezopen_url.<locals>._unquote_file  sD    ((((((>>)$$ 	#'#abb'""C
r   darwinrV  z-Wr   z	/dev/nullw)stderrexplorerz/select,   cygstartz-w.zxdg-open)zhttp://zhttps://r   )r]  r4   r    r4   )r  r   r   r   rV  r  r  r  r   r  r;  r   	startfiler
   rS  dirnamer   
webbrowser)	r]  r  r^  r  rd  r9  nullr  rn  s	            r   open_urlrp    s       |xx 	KK 	KKMM#&&'''K%%	##D#66;;==JJLLLLDJJLLLL	  	-$$C
C0D!t,,,   ssS!!!!   ss1	  	-$$C 4 45DD<D "D!!!KK	??4((( 	 	 	33	 	%'//--"4"455<CC-$$Cj#.// 	6688Oq   >>122 	6 	$ 	OOC   11qqsU   9(B6 6C)C> >
DDD% %
D32D3F3 3
G GA$H, ,<I/.I/chrH   c                    | dk    rt                      | dk    rt          st                      | dk    rt          rt                      d S d S )N)r  r   EOFError)rq  s    r   _translate_ch_to_excrw  J  sP    	V||!!!	V||C|jj	V|||jj |||r   win32cabc.Iterator[int]c               #     K   dV  d S )NrL   r   r   r   r   raw_terminalr{  X  s      r   r   c                8   | r7t          j        t           j        g t          f         t          j                  }n6t          j        t           j        g t          f         t          j                  } |            }|dv r| |            z  }t          |           |S )N)    à)rQ   rR   Callabler4   msvcrtgetwchegetwchrw  )r   funcr   s      r   getcharr  \  s    >  	>6!*RW-v~>>DD6!*RW-v}==DTVV!!! $$&&LBR   	r   c               #    K   t          t          j                  s$t          d          } |                                 }n t          j                                        }d } 	 t          j        |          }	 t          j        |           |V  t          j	        |t
          j
        |           t          j                                         | |                                  d S d S # t          j	        |t
          j
        |           t          j                                         | |                                  w w xY w# t
          j        $ r Y d S w xY w)Nz/dev/tty)r   r   r   rV  filenotermios	tcgetattrttysetraw	tcsetattr	TCSADRAINr   r~   r  error)r!  rZ  old_settingss      r   r{  r{    s6     
 ci   	Z  ABB!!##BA	",R00L
2!"g&7FFF
  """=GGIIIII != !"g&7FFF
  """=GGIIII !} 	 	 	DD	s,   !E  6C& AE  &AD==E   EEc                h   t                      5 }t          j        |d                              t	          t
          j                  d          }| r8t          t
          j                  rt
          j        	                    |           t          |           |cd d d            S # 1 swxY w Y   d S )N    r   )r{  r   rW  rX  r   r   r   r   r   r|   rw  )r   rZ  rq  s      r   r  r    s    ^^ 	rR''(9#)(D(DiPPB %sz** %
  $$$ $$$	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   BB''B+.B+)r   r   r    r!   ro   )rD   r<   r    r   )rD   r<   r    r   )r   r   rD   r<   r    r   )r   r"  rD   r<   r    r#  )FF)r]  r4   r  r9   r^  r9   r    rF   )rq  r4   r    rH   )r    ry  )r   r9   r    r4   )>__doc__
__future__r   collections.abcabccabc
contextlibior   r   r   r   rW   typingrQ   r   r   r   pathlibr   typesr   _compatr	   r
   r   r   r   r   r   
exceptionsr   utilsr   r   TypeVarr   Protocolr   r$   r  r   r}   Genericr)   TextIOWrapperr   r   contextmanagerr   r   r   r   r&  rp  rw  r   r  r{  r  r  r  r   r   r   <module>r     s;    # " " " " "           				  				  



                                    ) ) ) ) ) )       & & & & & &                         & & & & & &            AIcNN    qz   7 7 7 7 7d??JIIJII# I# I# I# I#!)A, I# I# I#X
# # # # #R% # # # ' ' ' ' '> "% "% "% "% "%J /3j j j j jZ /35 5 5 5 5p +/0 0 0 0 0&q q q q q q q qhC C C C CL    <7MMM   , , , , , ,^ NNNJJJ   4     r   