Ë
    Ö—Äjò  ã                  óÌ   — d dl mZ d dlmZmZ d dlmZmZmZm	Z	 d dl
mZ d dlZd dlmZmZmZ d dlmZ d dlmZ d d	lmZ d
dgZ G d„ de	d¬«      Ze G d„ d
ee   «      «       Zy)é    )Úannotations)Ú	dataclassÚfield)ÚAnyÚGenericÚTextIOÚ	TypedDict)ÚUnpackN)ÚBackendÚCappaCapableÚT)ÚHelpFormattable)ÚDepTypes)ÚStateÚCommandRunnerÚ
RunnerArgsc                  óv   — e Zd ZU dZded<   ded<   ded<   ded	<   d
ed<   ded<   ded<   ded<   ded<   ded<   y)r   zTAvailable kwargs for `parse` and `invoke` function, to match `CommandRunner` fields.ú	list[str]ÚargvúBackend | NoneÚbackendúcappa.Output | NoneÚoutputÚboolÚcolorústr | cappa.Arg[str] | NoneÚversionúbool | cappa.Arg[bool]ÚhelpÚ
completionúHelpFormattable | NoneÚhelp_formatterúTextIO | NoneÚinputúState[Any] | NoneÚstateN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__© ó    úRC:\Users\pivot\Documents\cueki\casual-preloader\Lib\site-packages\cappa/testing.pyr   r      s?   … Ù^à
ƒOØÓØÓØƒKØ(Ó(Ø
 Ó Ø&Ó&Ø*Ó*ØÓØÔr-   F)Útotalc                  óJ  — e Zd ZU dZdZded<   dZded<   dZded<   dZd	ed
<   dZ	ded<   dZ
ded<   dZded<   dZded<   dZded<   dZded<   dZded<    ed„ ¬«      Zded<   d#d„Z	 d$	 	 	 	 	 d%d„Z	 d$	 	 	 	 	 	 	 d&d„Z	 d$dd œ	 	 	 	 	 	 	 	 	 d'd!„Z	 d$dd œ	 	 	 	 	 	 	 	 	 d'd"„Zy)(r   a  Object to hold common parse/invoke invocation state, for testing.

    Accepts almost identical inputs to that of `parse`/`invoke`. The notable
    deviation is `argv`.

    Whereas the original functions accept argv as a single-argument list;
    `CommandRunner` accepts `base_args` at the class-constructor level, which
    is concatenated with the `CommandRunner.parse` or `CommandRunner.invoke`
    `*args`, to arrive a the total set of input args.

    Example:
        Some base CLI object

        >>> from dataclasses import dataclass
        >>>
        >>> import cappa
        >>>
        >>> @dataclass
        ... class Obj:
        ...     first: str
        ...     second: str = "2"

        Create an instance with no arguments means there is no default state

        >>> runner = CommandRunner()
        >>> runner.parse(Obj, "one")
        Obj(first='one', second='2')

        Or create a runner that always uses the same base CLI object, and default base command

        >>> runner = CommandRunner(Obj, base_args=["first"])

        Now each test, can customize the behavior to suit the test in question.

        >>> runner.parse(color=False)
        Obj(first='first', second='2')

        >>> runner.parse("two")
        Obj(first='first', second='two')
    NzCappaCapable[T] | NoneÚobjr   Údepsr   r   r   r   Tr   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   c                 ó   — g S ©Nr,   r,   r-   r.   Ú<lambda>zCommandRunner.<lambda>Z   s   € ¹r-   )Údefault_factoryr   Ú	base_argsc                ó:  — t        | j                  t        |«      z   |j                  d«      xs | j                  |j                  d«      xs | j
                  |j                  d«      xs | j                  |j                  d«      xs | j                  d|v r|d   n| j                  d|v r|d   n| j                  |j                  d«      xs | j                  |j                  d«      xs | j                  |j                  d	«      xs | j                  ¬
«
      S )Nr   r   r   r   r   r    r"   r$   r&   )
r   r   r   r   r   r   r    r"   r$   r&   )r   r7   ÚlistÚgetr   r   r   r   r   r    r"   r$   r&   )ÚselfÚargsÚkwargss      r.   Úcoalesce_kwargszCommandRunner.coalesce_kwargs\   sâ   € ÜØ—‘¤$ t£*Ñ,Ø—J‘J˜yÓ)Ò9¨T¯\©\Ø—:‘:˜hÓ'Ò6¨4¯;©;Ø—*‘*˜WÓ%Ò3¨¯©Ø—J‘J˜yÓ)Ò9¨T¯\©\Ø#)¨VÑ#3�˜’¸¿¹à˜vÑ%ð ˜lÒ+à—‘Ø!Ÿ:™:Ð&6Ó7ÒN¸4×;NÑ;NØ—*‘*˜WÓ%Ò3¨¯©Ø—*‘*˜WÓ%Ò3¨¯©ô
ð 	
r-   c                ó’   — t        |t        «      r | j                  sJ ‚| j                  |g|¢­fS |xs | j                  }|sJ ‚||fS r4   )Ú
isinstanceÚstrr1   )r;   r1   r<   s      r.   Úcollect_argszCommandRunner.collect_argsl   sL   € ô �cœ3ÔØ—8’8ˆO�8Ø—8‘8˜c˜\ D™\Ð)Ð)àŠo�T—X‘XˆÙˆ
ˆsØ�DˆyÐr-   c                ó~   —  | j                   |g|¢­Ž \  }} | j                  |i |¤Ž}t        j                  |fi |¤ŽS r4   )rB   r>   ÚcappaÚparse)r;   r1   r<   r=   Úfinal_kwargss        r.   rE   zCommandRunner.parsew   sJ   € ð &�D×%Ñ% cÐ1¨DÒ1‰	ˆˆTØ+�t×+Ñ+¨TÐ<°VÑ<ˆÜ�{‰{˜3Ñ/ ,Ñ/Ð/r-   )r2   c               ó¦   —  | j                   |g|¢­Ž \  }} | j                  |i |¤Ž}|xs | j                  }t        j                  |fi |¤d|i¤ŽS ©Nr2   )rB   r>   r2   rD   Úinvoke©r;   r1   r2   r<   r=   rF   s         r.   rI   zCommandRunner.invoke�   s]   € ð &�D×%Ñ% cÐ1¨DÒ1‰	ˆˆTØ+�t×+Ñ+¨TÐ<°VÑ<ˆØÒ �t—y‘yˆÜ�|‰|˜CÑ; <Ñ;°dÒ;Ð;r-   c             �  óÂ   K  —  | j                   |g|¢­Ž \  }} | j                  |i |¤Ž}|xs | j                  }t        j                  |fi |¤d|i¤Žƒ d {  –—† S 7 Œ­wrH   )rB   r>   r2   rD   Úinvoke_asyncrJ   s         r.   rL   zCommandRunner.invoke_async�   si   è ø€ ð &�D×%Ñ% cÐ1¨DÒ1‰	ˆˆTØ+�t×+Ñ+¨TÐ<°VÑ<ˆØÒ �t—y‘yˆÜ×'Ñ'¨ÑG¨|ÑGÀ$ÒG×GÐGÐGús   ‚AAÁAÁA)r<   rA   r=   úUnpack[RunnerArgs]Úreturnr   r4   )r1   úCappaCapable[T] | str | Noner<   rA   rN   z'tuple[CappaCapable[T], tuple[str, ...]])r1   rO   r<   rA   r=   rM   rN   r   )
r1   rO   r<   rA   r2   r   r=   rM   rN   r   )r'   r(   r)   r*   r1   r+   r2   r   r   r   r   r   r    r"   r$   r&   r   r7   r>   rB   rE   rI   rL   r,   r-   r.   r   r   #   st  … ñ'ðR #'€CÐ	Ó&Ø€Dˆ(ÓØ"€Gˆ^Ó"Ø"&€FÐÓ&Ø€Eˆ4ÓØ+/€GÐ(Ó/Ø#'€DÐ
 Ó'Ø)-€JÐ&Ó-Ø-1€NÐ*Ó1Ø€Eˆ=ÓØ#€EÐÓ#á ±Ô<€IˆyÓ<ó
ð" 37ð	Ø/ð	Ø?Bð	à	0ó	ð -1ð0à)ð0ð ð0ð %ð	0ð
 
ó0ð -1ð
<ð ñ	
<à)ð
<ð ð
<ð ð	
<ð
 %ð
<ð 
ó
<ð -1ð
Hð ñ	
Hà)ð
Hð ð
Hð ð	
Hð
 %ð
Hð 
ô
Hr-   )Ú
__future__r   Údataclassesr   r   Útypingr   r   r   r	   Útyping_extensionsr
   rD   Ú
cappa.baser   r   r   Ú
cappa.helpr   Úcappa.invoke.typesr   Úcappa.stater   Ú__all__r   r   r,   r-   r.   Ú<module>rY      sh   ðÝ "ç (ß 2Ó 2å $ã ß /Ñ /Ý &Ý 'Ý ð Øð€ô� %õ ð ôsH�G˜A‘Jó sHó ñsHr-   