← back to Atmos Game

assets/gen/.venv/lib/python3.12/site-packages/click/__pycache__/_termui_impl.cpython-312.pyc

221 lines

�

c�bj�{���dZddlmZddlmZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
ZddlmZddlmZddlmZddlmZdd	lmZdd
lmZddlmZddlmZdd
lmZddlmZddlmZddlmZddl m!Z!ddl m"Z"ejFd�Z$Gd�dejJ�Z&				d.d�Z'e	jPdk(rdZ)dZ*ndZ)dZ*Gd�dejVe$�Z,Gd�dejZ�Z.	d/			d0d �Z/ej`d/d1d!��Z1ej`	d/					d2d"��Z2ej`	d/					d2d#��Z3ej`	d/					d3d$��Z4Gd%�d&�Z5d4d5d'�Z6d6d(�Z7ejpd)k(rddl9Z9ej`d7d*��Z:d8d+�Z;yddl<Z<ddl=Z=ej`d7d,��Z:d8d-�Z;y)9z�
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��eZdZUded<y)�_BufferedTextPagerStreamz
t.BinaryIO�bufferN)�__name__�
__module__�__qualname__�__annotations__���i/Users/macstudio3/Projects/atmos-game/assets/gen/.venv/lib/python3.12/site-packages/click/_termui_impl.pyrr%s���rrc� �t|dd�duS)Nr)�getattr)�streams r�_has_binary_bufferr!)s��
�6�8�T�*�$�6�6r�nt�
�
z
[?25lz[?25h
c�6�eZdZ															d																																	dd�Zdd�Z								dd�Zdd�Zdd�Zdd�Ze	dd��Z
e	dd	��Ze	dd
��Zdd�Z
dd�Zdd
�Zdd�Zdd�Zdd�Zdd�Zdd d�Zdd�Zdd�Zy)!�ProgressBarNc���||_||_||_||_||_||_|	|_|
|_||_|xsd|_	|
�t�}
|
�
t�}
|
|_||_
||_d|_||_|dk(|_|�ddlm}||d�}|dk(rd}|�,|�t)d��t+j,dt/|��}t1|�|_||_d|_g|_||t9j8�x|_|_d|_d|_ d|_!d|_"d|_#tI|j�|_%d|_&y)N�r)�length_hint�����ziterable or length is requiredzcabc.Iterable[V]F)'�	fill_char�
empty_char�bar_template�info_sep�hidden�show_eta�show_percent�show_pos�item_show_func�labelr	r�file�color�update_min_steps�_completed_intervals�width�	autowidth�operatorr)�	TypeError�t�cast�range�iter�length�pos�avg�time�start�last_eta�	eta_known�finished�	max_width�entered�current_itemr�_is_atty�
_last_line)�self�iterablerAr+r,r-r.r/r0r1r2r3r4r5r6r7r9r)s                  r�__init__zProgressBar.__init__:s]��&#���$���(��� ��
���� ��
�(��� ��
�,����+�2��
��<�'�)�D��|��z����	���
� 0���$%��!���
�$��z����>�,� ��2�.�F���|������~�� @�A�A��v�v�0�%��-�@�H�&*�8�n��	������� "�����%)�Y�Y�[�0��
�T�]�$���#��
�%)���"���&*����t�y�y�)��
�&*��rc�4�d|_|j�|S)NT)rJ�render_progress�rNs r�	__enter__zProgressBar.__enter__�s����������rc�$�|j�y�N)�
render_finish)rN�exc_type�	exc_value�tbs    r�__exit__zProgressBar.__exit__�s��	
���rc�p�|jstd��|j�|j�S)N�.You need to use progress bars in a with block.)rJ�RuntimeErrorrR�	generatorrSs r�__iter__zProgressBar.__iter__�s.���|�|��O�P�P������~�~��rc�*�tt|��SrV)�nextr@rSs r�__next__zProgressBar.__next__�s���D��J��rc��|js|jsy|jjt�|jj�yrV)r/rLr5�write�	AFTER_BAR�flushrSs rrWzProgressBar.render_finish�s0���;�;�d�m�m���	�	���	�"��	�	���rc��|jryt|jt|jxsd�xsdzd�S)N��?r)rH�minrB�floatrArSs r�pctzProgressBar.pct�s5���=�=���4�8�8�u�T�[�[�%5�A�6�;�!�<�c�B�Brc��|jsyt|j�tt|j��zS�Ng)rC�sumrk�lenrSs r�time_per_iterationzProgressBar.time_per_iteration�s,���x�x���4�8�8�}�u�S����]�3�3�3rc��|j�2|js&|j|j|jz
zSyrn)rArHrqrBrSs r�etazProgressBar.eta�s3���;�;�"�4�=�=��*�*�d�k�k�D�H�H�.D�E�E�rc���|jrdt|j�}|dz}|dz}|dz}|dz}|dz}|dz}|dkDrdj|t	d�|||��S|d�d|d�d|d��Sy	)
N�<�rz#{d}{day_label} {h:02}:{m:02}:{s:02}�d)rw�	day_label�h�m�s�02�:r()rG�intrs�format�_)rNr=�seconds�minutes�hourss     r�
format_etazProgressBar.format_eta�s����>�>��D�H�H�
�A��"�f�G�
�"�H�A��"�f�G�
�"�H�A���F�E�
�"�H�A��1�u�<�C�C����f����D��� ���1�W�R�L��'�"��>�>�rc�l�t|j�}|j�|d|j��z
}|S)N�/)�strrBrA)rNrBs  r�
format_poszProgressBar.format_pos�s3���$�(�(�m���;�;�"��Q�t�{�{�m�$�$�C��
rc�@�t|jdz�d�d�ddS)N�dz 4�%r)r~rlrSs r�
format_pctzProgressBar.format_pct�s&���d�h�h��n�%�b�)��+�A�B�/�/rc�F�|j�Rt|j|jz�}|j|z}||j
|j|z
zz
}|S|jr|j|jz}|St|j
|jxsdz�}|jdk7rU|j|ttj|j|jz�dzdz|jz�<dj|�}|S)Nrrg@g�?r()
rAr~rlr9r+r,rH�listrq�math�cosrB�join)rN�
bar_length�bar�charss    r�
format_barzProgressBar.format_bar�s���;�;�"��T�X�X��
�
�2�3�J��.�.�:�-�C��4�?�?�d�j�j�:�&=�>�>�C��
��]�]��.�.�4�:�:�-�C��
�����D�J�J�O�!�<�=�E��&�&�!�+��N�N������$�(�(�T�-D�-D�"D�E��K�c�Q��*�*�%����'�'�%�.�C��
rc��|j}g}|j�|�
|j}|jr|j|j	��|r|j|j��|jr7|jr+|js|j|j��|j�.|j|j�}|�|j|�|j|j|j�|jj!|�d�zj#�S)N)r4r��info)r1rAr2�appendr�r�r0rGrHr�r3rKr-r4r�r.r��rstrip)rNr1�	info_bits�	item_infos    r�format_progress_linez ProgressBar.format_progress_line�s���(�(���	��;�;�"�|�';�#�}�}�,�L��=�=����T�_�_�.�/�����T�_�_�.�/��=�=�T�^�^�D�M�M����T�_�_�.�/����*��+�+�D�,=�,=�>�I��$�� � ��+�
���������(��
�
�*�*�9�5��
��&�(�	rc�X�|jry|jsW|j|jk7r=|j|_t	|j|j
|j��yg}|jr�ddl}|j}d|_	t|j��}td|j�j|z
�}||krF|j�:|j!t"�|j!d|jz�||_||_	|j}|j�|j}|j!t"�|j�}t|�}|j�|j|kr||_|j!|�|j!d||z
z�dj%|�}||jk7rE||_t	||j
|jd��|j
j'�yy)N)r5r6r� r(F)r5r6�nl)r/rLrMr4rr5r6r:�shutilr9rr��max�get_terminal_size�columnsrIr��
BEFORE_BARr�rg)	rN�bufr��	old_width�clutter_length�	new_width�clear_width�line�line_lens	         rrRzProgressBar.render_progresss����;�;���}�}����$�*�*�,�"&�*�*����T�Z�Z�d�i�i�t�z�z�B�����>�>���
�
�I��D�J�%�d�&?�&?�&A�B�N��A�v�7�7�9�A�A�N�R�S�I��9�$����)C��
�
�:�&��
�
�3����/�0�!*���"�D�J��j�j���>�>�%��.�.�K��
�
�:���(�(�*���D�>���>�>�!�T�^�^�h�%>�%�D�N��
�
�4���
�
�3�+��0�1�2��w�w�s�|���4�?�?�"�"�D�O���D�I�I�T�Z�Z�E�B��I�I�O�O��#rc��|xj|z
c_|j� |j|jk\rd|_tj�|jz
dkrytj�|_|jr/tj�|j
z
|jz}n!tj�|j
z
}|jdd|gz|_|jdu|_y)NTrii����)rBrArHrDrFrErCrG)rN�n_steps�steps   r�	make_stepzProgressBar.make_step.s������G����;�;�"�t�x�x�4�;�;�'>� �D�M��I�I�K�$�-�-�'�3�.���	�	���
�
�8�8��I�I�K�$�*�*�,����8�D��9�9�;����+�D��8�8�B�C�=�D�6�)������D�0��rc���|�||_|xj|z
c_|j|jk\r3|j|j�|j	�d|_yy)aUpdate 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)rKr8r7r�rR)rNr�rKs   r�updatezProgressBar.updateDsb�� �#� ,�D���!�!�W�,�!��$�$��(=�(=�=��N�N�4�4�4�5�� � �"�()�D�%�>rc�.�d|_d|_d|_y)NFT)rGrKrHrSs r�finishzProgressBar.finish^s����� �����
rc#�XK�|jstd��|js|jEd{���y|jD]=}||_|j
dk(r|j
�|��|jd��?|j�|j
�y7�r�w)z�Return a generator which yields the items added to the bar
        during construction, and updates the progress bar *after* the
        yielded block returns.
        r]Nrr)	rJr^rLr@rKr8rRr�r�)rN�rvs  rr_zProgressBar.generatorcs������|�|��O�P�P��}�}��y�y� � ��i�i��$&��!�
�,�,��1��(�(�*������A�� �
�K�K�M�� � �"�
!�s�3B*�B(�A3B*)N�#r�z%(bar)sz  FTNFNNNNr�)"rOzcabc.Iterable[V] | NonerAz
int | Noner+r�r,r�r-r�r.r�r/�boolr0r�r1�bool | Noner2r�r3z)t.Callable[[V | None], str | None] | Noner4�
str | Noner5zt.TextIO | Noner6r�r7r~r9r~�return�None)r�zProgressBar[V])rXztype[BaseException] | NonerYzBaseException | NonerZzTracebackType | Noner�r�)r�zcabc.Iterator[V])r�r)r�r�)r�rk�r�r�)r�r~r�r�rV)r�r~rKzV | Noner�r�)rrrrPrTr[r`rcrW�propertyrlrqrsr�r�r�r�r�rRr�r�r�r_rrrr&r&9s���"���%����$(��DH� � $�!� !��#E+�)�E+��E+��	E+�
�E+��
E+��E+��E+��E+�"�E+��E+�B�E+��E+��E+��E+� �!E+�"�#E+�$
�%E+�N�
�,��(��
!�	�

�� � ���C��C�
�4��4�
����
�*�0��&�6,�\1�,*�4�
#rr&c�,��eZdZd�fd�Zd�fd�Z�xZS)�MaybeStripAnsic�4��t�|�|fi|��||_yrV)�superrPr6)rNr r6�kwargs�	__class__s    �rrPzMaybeStripAnsi.__init__�s���
����*�6�*���
rc�P��|jst|�}t�|�
|�SrV)r6r
r�re)rN�textr�s  �rrezMaybeStripAnsi.write�s#����z�z��d�#�D��w�}�T�"�"r)r zt.IO[bytes]r6r�r�zt.Any)r�r�r�r~)rrrrPre�
__classcell__)r�s@rr�r��s����#�#rr�c��t�}|�
t�}ttj�rt|�st||�St
jtjjdd��}|rtrt||�St||�Stjjd�dvrt||�Ststjjd�r
tdg|�Stdg|�S)z2Decide what method to use for paging through text.�PAGERr(�TERM)�dumb�emacs�os2�more�less)r	rr�sys�stdin�
_nullpager�shlex�split�os�environ�getr�_tempfilepager�
_pipepager�platform�
startswith)r6�stdout�pager_cmd_partss   r�_pager_contextmanagerr��s���"�
#�F��~�����#�)�)��F�6�N��&�%�(�(��k�k�"�*�*�.�.��"�"=�>�O���!�/�5�9�9��/�5�1�1�	�z�z�~�~�f��!2�2��&�%�(�(�
�c�l�l�%�%�e�,��v�h��.�.��v�h��&�&rc#��K�t|��5\}}}d}t|�rt|j||��}|}	t	j
tj|���	|j�|�|j�	ddd�y#|�|j�wwxYw#	|j�|�|j�ww#|�|j�wwxYwxYw#1swYyxYw�w)z�Context 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.
    )r6N)r6�encoding)	r�r!r�rr=r>�TextIOrg�detach)r6r r��wrappers    r�get_pager_filer��s�����
�U�	+�/H���%�*.���f�%�$�V�]�]�%�(�S�G��F�	%��&�&����6�*�*�

%������&��N�N�$�1
,�	+��.�&��N�N�$�'��

%������&��N�N�$�'��7�&��N�N�$�'��/
,�	+�s]�
C4�,C(�&B'�#B�3C(�	C4�B$�$C(�'C%�)C
�9C%�
C"	�"C%�%C(�(C1�-C4c#�K�|s0t�xs
t�}t||�5}|��ddd�yddl}|d}|dd}|j	|�}|s0t�xs
t�}t||�5}|��ddd�yt|�j
�}|j}	ddl}
ttj�}|�L|	dk(rGtjjdd��dj|���}|sd|d<d	}n
d
|vsd|vrd	}|�d}|
jt|�g|zd|
j |d
d	��}
t#j$t"j&|
j(�}t+|�}	|||f��	|j3�		|
j5�y#1swYyxYw#1swYyxYw#t,$rY�Gt.$r}|
j1�|�d}~wwxYw#t,$rY�cwxYw#t6$rYnwxYw�v#	|j3�n#t,$rYnwxYw		|
j5�w#t6$rYnwxYw�"xYw�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.
    Nrrr��LESSr(r��-RT�r�RF�replace)�shellr��env�errorsr�)r	rr�r��whichr�absolute�name�
subprocess�dictr�r�r�r��Popenr��PIPEr=r>�BinaryIOr�r�BrokenPipeError�	Exception�	terminate�close�wait�KeyboardInterrupt)�	cmd_partsr6r�r�r��cmd�
cmd_params�cmd_filepath�cmd_path�cmd_namer�r��
less_flags�cr�r��es                 rr�r��sn���� �&�'�5�8�:��
���
&�"��H�'���
�A�,�C��1�2��J��<�<��$�L��&�'�5�8�:��
���
&�"��H�'��
�L�!�*�*�,�H��}�}�H���r�z�z�
�C�
�}��V�+��
�
���v�r�2�3�C�H�H�Z�4H�3I�J�
���C��K��E�
�J�
�#��"3��E��}������	�X���*�$���o�o���
�
	�	�A�
�F�F�1�:�:�q�w�w�'�E� ��'�H�#��X�u�$�$�	��K�K�M��
������o'���'���L�
����
	
���
����
���	��	��%�
��
����	��K�K�M���	��	���
�������%�
��
���s��%I�F-�AI�8F9�=DI�G�
G2�I�H�,I�-F6�2I�9G�>I�	G/�H�G/�G*�*G/�/H�2	G>�;I�=G>�>I�	H
�
I�H
�
I�I�H$�#I�$	H0�-I�/H0�0I�5I�I�	I�I�I�I�Ic#�@K�|s0t�xs
t�}t||�5}|��ddd�yddl}ddl}|d}|j|�}|s0t�xs
t�}t||�5}|��ddd�yt
|�j�}ddl}	ttj�}
|�d}|	jdd��}	tjtj|�|
|f��|j!�|j#�|j%t'|�|j(g�t+j,|j(�y#1swYyxYw#1swYyxYw#t+j,|j(�wxYw�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`.
    NrF�wb)�mode�delete)r	rr�r�r�r�rr��tempfilerr�r��NamedTemporaryFiler=r>r�rgr��callr�r�r��unlink)r�r6r�r�r�r�r�r�rr	r��fs            rr�r�CsG�����&�'�5�8�:��
���
&�"��H�'����
�A�,�C��<�<��$�L��&�'�5�8�:��
���
&�"��H�'��
�L�!�*�*�,�H�� ����,�H��}���	�#�#��e�#�<�A���f�f�Q�Z�Z��#�X�u�4�4�	���	�	���	�����X�����/�0�
�	�	�!�&�&��M'���'���,	�	�	�!�&�&��sN�%F�E"�AF�7E.�<AF�A/E:� F�"E+�'F�.E7�3F�:!F�Fc#�JK�t|�}|�d}t|�||f��y�w)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)rr)r r6r�s   rr�r�|s.����!��(�H��}���
�v�
��%�
/�/�s�!#c��eZdZ				d									d	d�Zd
d�Zdd�Zejdd��Zejd
d��Zdd�Zy)�EditorNc�<�||_||_||_||_yrV)�editorr��require_save�	extension)rNrr�rrs     rrPzEditor.__init__�s!��������(���"��rc���|j�|jSdD]'}tjj|�}|s�%|cStryddlm}dD]}||���|cSy)N)�VISUAL�EDITOR�notepadr)r�)zsensible-editor�vim�nano�vi)rr�r�r�rr�r�)rN�keyr�r�rs     r�
get_editorzEditor.get_editor�sc���;�;�"��;�;��%�C�������$�B���	�&��� �6�F��V�}�(��
�7�rc��ddl}ddl}|j�}d}|jr9tj
j
�}|j|j�	|j|j|�t|�z|��}|j�}|dk7r$ttd�j|����y#t$r+}ttd�j||���|�d}~wwxYw)z Open files in the user's editor.rN)�argsr�z{editor}: Editing failed)rz{editor}: Editing failed: {e})rr)r�r�rr�r�r��copyr�r�r�r�r�rr�r�OSError)	rN�	filenamesr�r�rr�r�	exit_coders	         r�
edit_fileszEditor.edit_files�s��������"��)-���8�8��j�j�o�o�'�G��N�N�4�8�8�$�	�� � � �U�[�[��(�4�	�?�:��!��A�����I��A�~�$��0�1�8�8��8�G������	� ��1�2�9�9��1�9�M���
��	�s�!A(C
�
	C>�&C9�9C>c��yrVr�rNr�s  r�editzEditor.edit�s��=@rc��yrVrr&s  rr'zEditor.edit�s��47rc��ddl}|�d}njt|ttf�r|}nQ|r|j	d�s|dz
}t
r"|j
dd�jd�}n|jd�}|jd|j��\}}	tj|d	�5}|j|�ddd�tj|tjj|�tjj!|�d
z
f�tjj!|�}|j#|f�|j$r9tjj!|�|k(r	tj&|�yt)|d�5}|j+�}ddd�t|ttf�rtj&|�Sj-d�j
dd�tj&|�S#1swY��]xYw#1swY�yxYw#tj&|�wxYw)Nrrr$z
z	utf-8-sigzutf-8zeditor-)�prefix�suffixr��rb)r	�
isinstance�bytes�	bytearray�endswithrr��encode�mkstemprr��fdopenre�utime�path�getatime�getmtimer$rr�open�read�decode)	rNr�r	�data�fdr�r
�	timestampr�s	         rr'zEditor.edit�s�����<�&)�D�
��u�i�0�
1��D��D�M�M�$�/�������|�|�D�&�1�8�8��E���{�{�7�+���#�#�9�T�^�^�#�L���D�	����2�t�$������
�%�
�H�H�T�B�G�G�,�,�T�2�B�G�G�4D�4D�T�4J�Q�4N�O�P����(�(��.�I��O�O�T�G�$�� � �R�W�W�%5�%5�d�%;�y�%H��
�I�I�d�O��d�D�!�Q��V�V�X��"��$��	� 2�3��
�I�I�d�O��9�9�[�)�1�1�&�$�?��I�I�d�O�3%�$��""�!��
�I�I�d�O�sI�H1�+H�=B<H1�H1�H%�-H1�" H1�H"�H1�%H.�*H1�1I)NNTz.txt)
rr�r�zcabc.Mapping[str, str] | Nonerr�rr�r�r�r�)r"zcabc.Iterable[str]r�r�)r�zbytes | bytearrayr�zbytes | None)r�r�r�r�)r�zstr | bytes | bytearray | Noner�zstr | bytes | None)	rrrrPrr$r=�overloadr'rrrrr�s|��"�-1�!��
#��
#�+�
#��	
#�
�
#�
�
#��"�<�Z�Z�@��@��Z�Z�7��7�-rrc�6�ddl}dd�}tjdk(r~dg}|r|jd�|r|jd�|j||��t	dd�}	|j||�	�j
�|j�Str8|r||�}d
d|g}	|j|�S	tj|�ytre|r*||�}d
tjj|�g}n'd
g}|r|jd�|j|�	|j|�S	|r*tjj||��xsd}n||�}|jd|g�}|r|j
�Sy#|j�wxYw#t$rYywxYw#t$rYywxYw#t$rYywxYw#t$r/|j!d�r|s|sddl}|j	|�YyYywxYw)Nrc�J�ddlm}|jd�r||dd�}|S)Nr)�unquotezfile://�)�urllib.parserBr�)�urlrBs  r�
_unquote_filezopen_url.<locals>._unquote_files&��(��>�>�)�$��#�a�b�'�"�C��
r�darwinr9z-Wr�z	/dev/null�w)�stderr�explorerz/select,��cygstartz-w�.zxdg-open)zhttp://zhttps://r)rEr�r�r�)r�r�r�r�r9r�r�r�rrr!r��	startfiler
r6�dirnamer��
webbrowser)	rEr��locater�rFr�nullrrPs	         r�open_urlrSs������|�|�x���x����K�K�����K�K������M�#�&�'��K��%��	��#�#�D��#�6�;�;�=��J�J�L�	����$�C��
�C�0�D�
�!���t�,�,�
����S�!��	����$�C�������� 4�5�D��<�D�����D�!��K�K���	��?�?�4�(�(�
���'�'�/�/�-��"4�5�<��C���$�C����j�#�.�/����6�6�8�O���M
�J�J�L���
��
��
�
��
���	��	�����>�>�1�2�6�$���O�O�C� ���
�sU�) F�0F3�G�2G�AG �F0�3	F?�>F?�	G�
G�	G�G� 3H�Hc�x�|dk(r
t��|dk(rts
t��|dk(rtr
t��yy)N���)r�r�EOFError)�chs r�_translate_ch_to_excrZJs;��	�V�|��!�!�	�V�|�C��j��	�V�|���j���|r�win32c#�K�d��y�w)Nr*rrrr�raw_terminalr]Xs������s�c�8�|r<tjtjgtftj
�}n;tjtjgtftj�}|�}|dvr
||�z
}t|�|S)N)��à)r=r>�Callabler��msvcrt�getwche�getwchrZ)r�funcr�s   r�getcharrf\ss��>��6�6�!�*�*�R��W�-�v�~�~�>�D��6�6�!�*�*�R��W�-�v�}�}�=�D�
�V��
�!�!�
�$�&�L�B��R� ��	rc#�K�ttj�std�}|j	�}n tjj	�}d}	tj|�}	tj|�|��tj|t
j|�tjj�|�|j�yy#tj|t
j|�tjj�|�|j�wwxYw#t
j$rYywxYw�w)Nz/dev/tty)rr�r�r9�fileno�termios�	tcgetattr�tty�setraw�	tcsetattr�	TCSADRAINr�rgr��error)r
r=�old_settingss   rr]r]�s�����
�c�i�i� ��Z� �A�����B����!�!�#�B��A�
	�"�,�,�R�0�L�
��
�
�2�����!�!�"�g�&7�&7��F��
�
� � �"��=��G�G�I�!���!�!�"�g�&7�&7��F��
�
� � �"��=��G�G�I�!���}�}�	��	�sD�AE�D:�/C�AD:�E�AD7�7D:�:E�
E�E�Ec�J�t�5}tj|d�jt	t
j�d�}|r8tt
j�rt
jj|�t|�|cddd�S#1swYyxYw)N� r�)r]r�r:r;rr�r�rr�rerZ)rr=rYs   rrfrf�sd��
�^�r�����R��'�'�(9�#�)�)�(D�i�P�B���s�z�z�*��
�
� � ��$� ��$���^�^�s�BB�B")r zt.BinaryIO | t.TextIOr�z%t.TypeGuard[_BufferedTextPagerStream]rV)r6r�r�z9t.ContextManager[tuple[t.BinaryIO | t.TextIO, str, bool]])r6r�r�z!t.Generator[t.TextIO, None, None])r�z	list[str]r6r�r�z3t.Iterator[tuple[t.BinaryIO | t.TextIO, str, bool]])r zt.TextIOr6r�r�z&t.Iterator[tuple[t.TextIO, str, bool]])FF)rEr�r�r�rQr�r�r~)rYr�r�r�)r�zcabc.Iterator[int])rr�r�r�)>�__doc__�
__future__r�collections.abc�abc�cabc�
contextlib�ior�r�r�r�rD�typingr=rr�r�pathlibr�typesr�_compatr	r
rrr
rr�
exceptionsr�utilsrr�TypeVarr�Protocolrr!r�r�rf�Genericr&�
TextIOWrapperr�r��contextmanagerr�r�r�r�rrSrZr�rbr]rfrirkrrr�<module>r�s���#���	��	��
��� ����)��&�����&���
�A�I�I�c�N���q�z�z��7�!�7�*�7��7�7�d�?��J��I��J��I�I#�!�)�)�A�,�I#�X
#�R�%�%�#��'��'�>�'�>���"%��"%�J���/3�j��j�!,�j�8�j��j�Z���/3�5��5�!,�5�8�5��5�p���+/�0��0�(�0�+�0��0�&q�q�hC�L��<�<�7���������,�^��������4r