
    iX                       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 ej        rd d
lmZ ddlmZ  G d d          Zej        d#d            Z G d dej                  Z G d d          Z  G d dej!                  Z"d$dZ# G d d           Z$ G d! d"          Z%dS )%    )annotationsN)TracebackType   )_compat)
formatting)termui)utils)_find_binary_reader)ReadableBuffer)Commandc                  \    e Zd ZddZdd
ZddZdddZdddZdddZddZ	d dZ
d!dZdS )"EchoingStdininput
t.BinaryIOoutputreturnNonec                0    || _         || _        d| _        d S )NF)_input_output_paused)selfr   r   s      d/home/ubuntu/projects/home-renovation-app/backend/venv/lib/python3.11/site-packages/click/testing.py__init__zEchoingStdin.__init__   s        xstrt.Anyc                ,    t          | j        |          S N)getattrr   )r   r   s     r   __getattr__zEchoingStdin.__getattr__    s    t{A&&&r   rvbytesc                H    | j         s| j                            |           |S r    )r   r   write)r   r#   s     r   _echozEchoingStdin._echo#   s'    | 	#Lr"""	r   nintc                \    |                      | j                            |                    S r    )r'   r   readr   r)   s     r   r,   zEchoingStdin.read)   s$    zz$+**1--...r   c                \    |                      | j                            |                    S r    )r'   r   read1r-   s     r   r/   zEchoingStdin.read1,   s$    zz$+++A..///r   c                \    |                      | j                            |                    S r    )r'   r   readliner-   s     r   r1   zEchoingStdin.readline/   s$    zz$+..q11222r   list[bytes]c                N      fd j                                         D             S )Nc                :    g | ]}                     |          S  r'   .0r   r   s     r   
<listcomp>z*EchoingStdin.readlines.<locals>.<listcomp>3   s#    ???!

1???r   )r   	readlinesr   s   `r   r:   zEchoingStdin.readlines2   s+    ????t{'<'<'>'>????r   cabc.Iterator[bytes]c                D     t           fd j        D                       S )Nc              3  B   K   | ]}                     |          V  d S r    r6   r7   s     r   	<genexpr>z(EchoingStdin.__iter__.<locals>.<genexpr>6   s-      77aDJJqMM777777r   )iterr   r;   s   `r   __iter__zEchoingStdin.__iter__5   s(    77774;777777r   c                *    t          | j                  S r    )reprr   r;   s    r   __repr__zEchoingStdin.__repr__8   s    DK   r   N)r   r   r   r   r   r   )r   r   r   r   )r#   r$   r   r$   )r(   )r)   r*   r   r$   )r   r2   )r   r<   r   r   )__name__
__module____qualname__r   r"   r'   r,   r/   r1   r:   rA   rD   r5   r   r   r   r      s           
' ' ' '   / / / / /0 0 0 0 03 3 3 3 3@ @ @ @8 8 8 8! ! ! ! ! !r   r   streamEchoingStdin | Noner   cabc.Iterator[None]c              #  >   K   | d V  d S d| _         d V  d| _         d S )NTF)r   rI   s    r   _pause_echorN   <   s3      ~r   c                  <     e Zd ZdZd fdZd fdZd fdZ xZS )BytesIOCopyzdPatch ``io.BytesIO`` to let the written stream be copied to another.

    .. versionadded:: 8.2
    copy_to
io.BytesIOr   r   c                V    t                                                       || _        d S r    )superr   rQ   )r   rQ   	__class__s     r   r   zBytesIOCopy.__init__L   s$    r   c                z    t                                                       | j                                         d S r    )rT   flushrQ   r   rU   s    r   rW   zBytesIOCopy.flushP   s.    r   br   r*   c                z    | j                             |           t                                          |          S r    )rQ   r&   rT   )r   rY   rU   s     r   r&   zBytesIOCopy.writeT   s/    1ww}}Qr   )rQ   rR   r   r   r   r   )rY   r   r   r*   )rF   rG   rH   __doc__r   rW   r&   __classcell__rU   s   @r   rP   rP   F   s         
                             r   rP   c                      e Zd ZdZddZdS )StreamMixerzMixes `<stdout>` and `<stderr>` streams.

    The result is available in the ``output`` attribute.

    .. versionadded:: 8.2
    r   r   c                    t          j                    | _        t          | j                  | _        t          | j                  | _        d S )N)rQ   )ioBytesIOr   rP   stdoutstderrr;   s    r   r   zStreamMixer.__init__a   s;    "$*,,"-dk"B"B"B"-dk"B"B"Br   Nr[   )rF   rG   rH   r\   r   r5   r   r   r`   r`   Y   s8         C C C C C Cr   r`   c                  n     e Zd ZdZddd fdZddZd fdZedd            Zedd            Z	 xZ
S )_NamedTextIOWrappera  A :class:`~io.TextIOWrapper` with custom ``name`` and ``mode``
    that does not close its underlying buffer.

    An optional ``original_fd`` preserves the file descriptor of the
    stream being replaced, so that C-level consumers that call
    :meth:`fileno` (``faulthandler``, ``subprocess``, ...) still work.
    Inspired by pytest's ``capsys``/``capfd`` split: see :doc:`/testing`
    for details.

    .. versionchanged:: 8.3.3
        Added ``original_fd`` parameter and :meth:`fileno` override.
    r(   )original_fdbufferr   namer   moderh   r*   kwargsr   r   r   c               f     t                      j        |fi | || _        || _        || _        d S r    )rT   r   _name_mode_original_fd)r   ri   rj   rk   rh   rl   rU   s         r   r   z_NamedTextIOWrapper.__init__u   s@     	**6***

'r   c                    dS )zThe buffer this object contains belongs to some other object,
        so prevent the default ``__del__`` implementation from closing
        that buffer.

        .. versionadded:: 8.3.2
        Nr5   r;   s    r   closez_NamedTextIOWrapper.close   s      r   c                h    | j         dk    r| j         S t                                                      S )ax  Return the file descriptor of the original stream, if one was
        provided at construction time.

        This allows C-level consumers (``faulthandler``, ``subprocess``,
        signal handlers, ...) to obtain a valid fd without crashing, even
        though the Python-level writes are redirected to an in-memory
        buffer.

        .. versionadded:: 8.3.3
        r   )rp   rT   filenorX   s    r   rt   z_NamedTextIOWrapper.fileno   s0     !!$$ww~~r   c                    | j         S r    )rn   r;   s    r   rj   z_NamedTextIOWrapper.name   
    zr   c                    | j         S r    )ro   r;   s    r   rk   z_NamedTextIOWrapper.mode   rv   r   )ri   r   rj   r   rk   r   rh   r*   rl   r   r   r   r[   )r   r*   rE   )rF   rG   rH   r\   r   rr   rt   propertyrj   rk   r]   r^   s   @r   rg   rg   g   s         & ( ( ( ( ( ( ( (                  X    X    r   rg   r    str | bytes | t.IO[t.Any] | Nonecharsetr   r   c                   t          | d          r5t          t          j        d|                     }||S t	          d          | d} n*t          | t                    r|                     |          } t          j	        |           S )Nr,   t.IO[t.Any]z.Could not find binary reader for input stream.r   )
hasattrr
   tcast	TypeError
isinstancer   encoderb   rc   )r   rz   r#   s      r   make_input_streamr      s     uf J u!=!=>>>IHIII}	E3		 &W%%:er   c                  n    e Zd ZdZ	 dddZedd            Zedd            Zedd            ZddZ	dS )ResultaC  Holds the captured result of an invoked CLI script.

    :param runner: The runner that created the result
    :param stdout_bytes: The standard output as bytes.
    :param stderr_bytes: The standard error as bytes.
    :param output_bytes: A mix of ``stdout_bytes`` and ``stderr_bytes``, as the
        user would see  it in its terminal.
    :param return_value: The value returned from the invoked command.
    :param exit_code: The exit code as integer.
    :param exception: The exception that happened if one did.
    :param exc_info: Exception information (exception type, exception instance,
        traceback type).

    .. versionchanged:: 8.2
        ``stderr_bytes`` no longer optional, ``output_bytes`` introduced and
        ``mix_stderr`` has been removed.

    .. versionadded:: 8.0
        Added ``return_value``.
    Nrunner	CliRunnerstdout_bytesr$   stderr_bytesoutput_bytesreturn_valuer   	exit_coder*   	exceptionBaseException | Noneexc_info?tuple[type[BaseException], BaseException, TracebackType] | Nonec	                v    || _         || _        || _        || _        || _        || _        || _        || _        d S r    r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   s	            r   r   zResult.__init__   sD     (((("" r   r   r   c                t    | j                             | j        j        d                              dd          S )a  The terminal output as unicode string, as the user would see it.

        .. versionchanged:: 8.2
            No longer a proxy for ``self.stdout``. Now has its own independent stream
            that is mixing `<stdout>` and `<stderr>`, in the order they were written.
        replace

)r   decoder   rz   r   r;   s    r   r   zResult.output   s9      ''(;YGGOOD
 
 	
r   c                t    | j                             | j        j        d                              dd          S )z&The standard output as unicode string.r   r   r   )r   r   r   rz   r   r;   s    r   rd   zResult.stdout   s9      ''(;YGGOOD
 
 	
r   c                t    | j                             | j        j        d                              dd          S )zThe standard error as unicode string.

        .. versionchanged:: 8.2
            No longer raise an exception, always returns the `<stderr>` string.
        r   r   r   )r   r   r   rz   r   r;   s    r   re   zResult.stderr   s9      ''(;YGGOOD
 
 	
r   c                r    | j         rt          | j                   nd}dt          |           j         d| dS )Nokay< >)r   rC   typerF   )r   exc_strs     r   rD   zResult.__repr__   s?    *..D$t~&&&f34::&333333r   r    )r   r   r   r$   r   r$   r   r$   r   r   r   r*   r   r   r   r   rE   )
rF   rG   rH   r\   r   rx   r   rd   re   rD   r5   r   r   r   r      s         > ! ! ! ! !* 	
 	
 	
 X	
 
 
 
 X
 
 
 
 X
4 4 4 4 4 4r   r   c                      e Zd ZdZ	 	 	 	 d&d'dZd(dZ	 d)d*dZej        	 	 	 d+d,d            Z		 	 	 	 	 d-d.d!Z
ej        	 d)d/d%            ZdS )0r   a  The CLI runner provides functionality to invoke a Click command line
    script for unittesting purposes in a isolated environment.  This only
    works in single-threaded systems without any concurrency as it changes the
    global interpreter state.

    :param charset: the character set for the input and output data.
    :param env: a dictionary with environment variables for overriding.
    :param echo_stdin: if this is set to `True`, then reading from `<stdin>` writes
                       to `<stdout>`.  This is useful for showing examples in
                       some circumstances.  Note that regular prompts
                       will automatically echo the input.
    :param catch_exceptions: Whether to catch any exceptions other than
                             ``SystemExit`` when running :meth:`~CliRunner.invoke`.

    .. versionchanged:: 8.2
        Added the ``catch_exceptions`` parameter.

    .. versionchanged:: 8.2
        ``mix_stderr`` parameter has been removed.
    utf-8NFTrz   r   env$cabc.Mapping[str, str | None] | None
echo_stdinboolcatch_exceptionsr   r   c                B    || _         |pi | _        || _        || _        d S r    )rz   r   r   r   )r   rz   r   r   r   s        r   r   zCliRunner.__init__  s+     25)$ 0r   clir   c                    |j         pdS )zGiven a command object it will return the default program name
        for it.  The default is the `name` attribute or ``"root"`` if not
        set.
        root)rj   )r   r   s     r   get_default_prog_namezCliRunner.get_default_prog_name'  s    
 x!6!r   	overridescabc.Mapping[str, str | None]c                \    t          | j                  }|r|                    |           |S )z8Returns the environment overrides for invoking a script.)dictr   update)r   r   r#   s      r   make_envzCliRunner.make_env.  s0     $(^^ 	!IIi   	r   r   ry   color8cabc.Iterator[tuple[io.BytesIO, io.BytesIO, io.BytesIO]]c              #    K   t          || j                  }d}t          j        }t          j        }t          j        }t          j        }	dt          _        |                     |          }t                      }
d)d} ||          } ||          }| j
        r4t          j        t          j        t          ||
j                            x}}t          || j        dd	
          xt          _        | j
        rd_        t          |
j        | j        dd|          t          _        t          |
j        | j        ddd|          t          _        t#          |          d*d+fd            }t#          |          d*d+fd            }t#          |          d,d            }|	 d-d.fd}t$          j        }t$          j        }t$          j        }t,          j        }t0          j        }t2          j        j        |t$          _        |t$          _        |t$          _        |t,          _        |t0          _        	 	 	 d/d0fd(}|t2          j        _        i }	 |                                D ]W\  }}t:          j                            |          ||<   |	 t:          j        |= 8# t@          $ r Y Dw xY w|t:          j        |<   X|
j        |
j        |
j!        fV  |                                D ]5\  }}|	 t:          j        |= # t@          $ r Y "w xY w|t:          j        |<   6|t          _        |t          _        |t          _        |t$          _        |t$          _        |t$          _        |t,          _        |t0          _        |	t          _        t2          j        _        dS # |                                D ]5\  }}|	 t:          j        |= # t@          $ r Y "w xY w|t:          j        |<   6|t          _        |t          _        |t          _        |t$          _        |t$          _        |t$          _        |t,          _        |t0          _        |	t          _        t2          j        _        w xY w)1a\  A context manager that sets up the isolation for invoking of a
        command line tool.  This sets up `<stdin>` with the given input data
        and `os.environ` with the overrides from the given dictionary.
        This also rebinds some internals in Click to be mocked (like the
        prompt functionality).

        This is automatically done in the :meth:`invoke` method.

        :param input: the input stream to put into `sys.stdin`.
        :param env: the environment overrides as dictionary.
        :param color: whether the output should contain color codes. The
                      application can still override this explicitly.

        .. versionadded:: 8.2
            An additional output stream is returned, which is a mix of
            `<stdout>` and `<stderr>` streams.

        .. versionchanged:: 8.2
            Always returns the `<stderr>` stream.

        .. versionchanged:: 8.0
            `<stderr>` is opened with ``errors="backslashreplace"``
            instead of the default ``"strict"``.

        .. versionchanged:: 4.0
            Added the ``color`` parameter.
        NP   rI   r|   r   r*   c                f    	 |                                  S # t          t          j        f$ r Y dS w xY w)Nr(   )rt   AttributeErrorrb   UnsupportedOperationrM   s    r   _safe_filenoz)CliRunner.isolation.<locals>._safe_filenok  s?    }}&"B$;<   rrs    00z<stdin>r)encodingrj   rk   r   z<stdout>w)r   rj   rk   rh   z<stderr>backslashreplace)r   rj   rk   errorsrh   prompt
str | Noner   c                T   t           j                            | pd           	 t                                        d          }n!# t
          $ r}t                      |d }~ww xY wt           j                            | d           t           j                                         |S )N r   r   )sysrd   r&   nextrstripStopIterationEOFErrorrW   )r   vale
text_inputs      r   visible_inputz*CliRunner.isolation.<locals>.visible_input  s    JV\r***(:&&--f55  ( ( (jja'(JZZZ(((JJs   "A 
A%A  A%c                   t           j                            | pd d           t           j                                         	 t	                                        d          S # t          $ r}t                      |d }~ww xY w)Nr   r   r   )r   rd   r&   rW   r   r   r   r   )r   r   r   s     r   hidden_inputz)CliRunner.isolation.<locals>.hidden_input  s    J"000111J(J''..v666  ( ( (jja'(s   !A' '
B1B  Bechor   c                    t           j                            d          }| rt           j                            |           t           j                                         |S )Nr   )r   stdinr,   rd   r&   rW   )r   chars     r   _getcharz%CliRunner.isolation.<locals>._getchar  sL    9>>!$$D '
  &&&JKr   t.IO[t.Any] | Noner   bool | Nonec                    | S | S r    r5   )rI   r   default_colors     r   should_strip_ansiz.CliRunner.isolation.<locals>.should_strip_ansi  s     }(((9r   tabr   pdb.Pdbcompletekeyr   t.IO[str] | Nonerd   rl   r   r   c                Z    |t           j        }|t           j        } | f|||d| dS )ab  Default ``pdb.Pdb`` to real terminal streams during
            ``CliRunner`` isolation.

            Without this patch, ``pdb.Pdb.__init__`` inherits from
            ``cmd.Cmd`` which falls back to ``sys.stdin``/``sys.stdout``
            when no explicit streams are provided. During isolation
            those are ``BytesIO``-backed wrappers, so the debugger
            reads from an empty buffer and writes to captured output,
            making interactive debugging impossible.

            By defaulting to ``sys.__stdin__``/``sys.__stdout__`` (the
            original terminal streams Python preserves regardless of
            redirection), debuggers can interact with the user while
            ``click.echo`` output is still captured normally.

            This covers ``pdb.set_trace()``, ``breakpoint()``,
            ``pdb.post_mortem()``, and debuggers that subclass
            ``pdb.Pdb`` (ipdb, pdbpp). Explicit ``stdin``/``stdout``
            arguments are honored and not overridden. Debuggers that
            do not subclass ``pdb.Pdb`` (pudb, debugpy) are not
            covered.
            N)r   r   rd   )r   	__stdin__
__stdout__)r   r   r   rd   rl   old_pdb_inits        r   _patched_pdb_initz.CliRunner.isolation.<locals>._patched_pdb_init  sW    : }~L"-U6 MS    r   )rI   r|   r   r*   r    )r   r   r   r   )r   r   r   r   )NN)rI   r   r   r   r   r   )r   NN)r   r   r   r   r   r   rd   r   rl   r   r   r   )"r   rz   r   r   rd   re   r   FORCED_WIDTHr   r`   r   r~   r   BinaryIOr   rg   _CHUNK_SIZErN   r   visible_prompt_funchidden_prompt_funcr   r	   r   r   pdbPdbr   itemsosenvironget	Exceptionr   )r   r   r   r   bytes_input
echo_input	old_stdin
old_stdout
old_stderrold_forced_widthstream_mixerr   old_stdout_fdold_stderr_fdr   r   r   r   old_visible_prompt_funcold_hidden_prompt_funcold__getchar_funcold_should_strip_ansiold__compat_should_strip_ansir   old_envkeyvaluer   r   r   s                              @@@r   	isolationzCliRunner.isolation7  s     D (t|<<
I	Z
Z
%2"$
mmC  "}}	 	 	 	 %Z00$Z00? 	'(v
Ll6IJJ( ( K* "5$,YS"
 "
 "
 	
	J ? 	' &'J"(\%
 
 

 )\%%
 
 

 
Z	 	 	 	 	 	 	 	 
!	 	 
Z	 	 	( 	( 	( 	( 	( 	( 
!	 	( 
Z	 	 	 	 	 
!	 	  EI	 	 	 	 	 	 	 #)"<!'!:"O % 7(/(A%w'%2"$0!""3$5!  %&*'+	#	 #	 #	 #	 #	 #	 #	J -	,!iikk , ,
U!z~~c22=JsOO$    ',BJsOO&(;\=PQQQQ%mmoo , ,
U=JsOO$    ',BJsOO#CJ#CJ!CI)@F&(>F%/FO&;E#(EG%&6J#+CG# &mmoo , ,
U=JsOO$    ',BJsOO#CJ#CJ!CI)@F&(>F%/FO&;E#(EG%&6J#+CG++++sg   =N! J"!N! "
J/,N! .J//)N! 4L
LL!Q*>OQ*
O	Q*O	BQ*argsstr | cabc.Sequence[str] | Noner   extrar   r   c           
        d}|| j         }|                     |||          5 }	d}
d}d}t          |t                    rt	          j        |          }	 |                    d          }n%# t          $ r |                     |          }Y nw xY w	  |j	        d|pd|d|}
n# t          $ r}t          j                    }t          j        d|j                  }|d}|dk    r|}t          |t                     sMt          j                            t          |                     t          j                            d           d	}|}Y d}~n4d}~wt&          $ r$}|s |}d	}t          j                    }Y d}~nd}~ww xY wt          j                                         t          j                                         |	d                                         }|	d	                                         }|	d
                                         }n# t          j                                         t          j                                         |	d                                         }|	d	                                         }|	d
                                         }w xY w	 ddd           n# 1 swxY w Y   t/          | ||||
|||          S )a{  Invokes a command in an isolated environment.  The arguments are
        forwarded directly to the command line script, the `extra` keyword
        arguments are passed to the :meth:`~clickpkg.Command.main` function of
        the command.

        This returns a :class:`Result` object.

        :param cli: the command to invoke
        :param args: the arguments to invoke. It may be given as an iterable
                     or a string. When given as string it will be interpreted
                     as a Unix shell command. More details at
                     :func:`shlex.split`.
        :param input: the input data for `sys.stdin`.
        :param env: the environment overrides.
        :param catch_exceptions: Whether to catch any other exceptions than
                                 ``SystemExit``. If :data:`None`, the value
                                 from :class:`CliRunner` is used.
        :param extra: the keyword arguments to pass to :meth:`main`.
        :param color: whether the output should contain color codes. The
                      application can still override this explicitly.

        .. versionadded:: 8.2
            The result object has the ``output_bytes`` attribute with
            the mix of ``stdout_bytes`` and ``stderr_bytes``, as the user would
            see it in its terminal.

        .. versionchanged:: 8.2
            The result object always returns the ``stderr_bytes`` stream.

        .. versionchanged:: 8.0
            The result object has the ``return_value`` attribute with
            the value returned from the invoked command.

        .. versionchanged:: 4.0
            Added the ``color`` parameter.

        .. versionchanged:: 3.0
            Added the ``catch_exceptions`` parameter.

        .. versionchanged:: 3.0
            The result object has the ``exc_info`` attribute with the
            traceback if available.
        N)r   r   r   r   	prog_namer5   )r   r  zint | t.Any | Noner   r      r   )r   r   r   r   shlexsplitpopKeyErrorr   main
SystemExitr   r   r~   r   coder*   rd   r&   r   rW   re   getvaluer   )r   r   r   r   r   r   r   r  r   
outstreamsr   r   r   r  r   e_coderd   re   r   s                      r   invokezCliRunner.invoke  s+   j ##4^^%S^>> +	2*L.2II$$$ ){4((<!IIk22		 < < < 66s;;			<2'sxVTZR9VVPUVV # # #<>> 4af==>FQ;; !I!&#.. J$$S[[111J$$T***F"						 * * *' 		<>>* 
  """
  """#A//11#A//11#A//11	 
  """
  """#A//11#A//11#A//111111W+	2 +	2 +	2 +	2 +	2 +	2 +	2 +	2 +	2 +	2 +	2 +	2 +	2 +	2 +	2Z %	
 	
 	
 		
s   0J+A+*J++B
J+BJ+B$#H$
F.BEHFE<7H<FHBJ+BJJ++J/2J/temp_dirstr | os.PathLike[str] | Nonecabc.Iterator[str]c              #    K   t          j                    }t          j        |          }t          j        |           	 |V  t          j        |           |-ddl}	 |                    |           dS # t          $ r Y dS w xY wdS # t          j        |           |+ddl}	 |                    |           w # t          $ r Y w w xY ww xY w)a  A context manager that creates a temporary directory and
        changes the current working directory to it. This isolates tests
        that affect the contents of the CWD to prevent them from
        interfering with each other.

        :param temp_dir: Create the temporary directory under this
            directory. If given, the created directory is not removed
            when exiting.

        .. versionchanged:: 8.0
            Added the ``temp_dir`` parameter.
        )dirNr   )r   getcwdtempfilemkdtempchdirshutilrmtreeOSError)r   r  cwddtr  s        r   isolated_filesystemzCliRunner.isolated_filesystem~  s       ikk(+++
	HHHHSMMMMM"%%%%%   DD   HSMMMMM"%%%%   D  sB    B	 A6 6
BB	C%B;:C;
CCCC)r   NFT)
rz   r   r   r   r   r   r   r   r   r   )r   r   r   r   r    )r   r   r   r   )NNF)r   ry   r   r   r   r   r   r   )NNNNF)r   r   r   r  r   ry   r   r   r   r   r   r   r  r   r   r   )r  r  r   r  )rF   rG   rH   r\   r   r   r   
contextlibcontextmanagerr   r  r  r5   r   r   r   r     s        . 48 !%
1 
1 
1 
1 
1" " " " AE      3748	S, S, S, S, S,p 152648(,o
 o
 o
 o
 o
b 8<      r   r   )rI   rJ   r   rK   )r   ry   rz   r   r   r   )&
__future__r   collections.abcabccabcr   rb   r   r   r  r   r  typingr~   typesr   r   r   r   r   r	   r
   TYPE_CHECKING	_typeshedr   corer   r   r!  rN   rc   rP   r`   TextIOWrapperrg   r   r   r   r5   r   r   <module>r,     si   " " " " " "           				 				 



  



                                    ( ( ( ( ( (? ((((((! ! ! ! ! ! ! !D             "*      &C C C C C C C C9 9 9 9 9"* 9 9 9x   (K4 K4 K4 K4 K4 K4 K4 K4\X X X X X X X X X Xr   