Ë
    Ö—Äjm)  ã                  ó*  — U d dl mZ d dlZd dlmZ d dlmZmZmZm	Z	m
Z
mZmZ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mZ  ed«      Z ed	¬
«       G d„ d«      «       Ze G d„ de
«      «       Z ed	¬
«       G d„ de«      «       Z G d„ dej:                  j<                  e«      Z G d„ dej:                  j>                  e«      Z ed	¬
«       G d„ de«      «       Z  ed	¬
«       G d„ de«      «       Z!e G d„ d«      «       Z"ej:                  j<                  Z#ej:                  j>                  Z$ej:                  j<                  ej:                  j>                  ee!fZ%eeeej:                  j<                  ej:                  j>                  f   Z&de'd<   y)é    )ÚannotationsN)Ú	dataclass)ÚAnyÚCallableÚClassVarÚHashableÚProtocolÚTextIOÚUnionÚruntime_checkable)ÚSelfÚ	TypeAliasÚTypeVar)ÚState)ÚEmptyÚ	EmptyTypeÚTT)Úfrozenc                  ó¬   — e Zd ZU dZdZded<   eZded<   edœdd„Ze	dd	„«       Z
e	dd
„«       Zddd„Zdd„Z	 d	 	 	 	 	 dd„Zedd„«       Zedd„«       Zy)ÚDefaultaµ  Represents the sequence of fallback methods of default value retrieval for an `Arg`.

    **All** argument defaults (including static values) are coerced into `Default` instance.

    When evaluated for an argument, the provided sequence of default retrieval methods
    are evaluated in order, returning the value of the first option to return a non-None value.
    The `Default.default` value is returned if none of the provided methods return a value.

    Examples:
    - `Arg(default=4) == Arg(default=Default(default=4))`
    - `Arg(default=Env("FOO")) == Arg(default=Default(Env("FOO")))`
    - `Arg(default=Env("FOO") | Env("BAR")) == Arg(default=Default(Env("FOO"), Env("BAR")))`
    © ztuple[DefaultType, ...]ÚsequencezEmptyType | AnyÚdefault©r   c               ó`   — t         j                  | d|«       t         j                  | d|«       y )Nr   r   ©ÚobjectÚ__setattr__)Úselfr   r   s      úRC:\Users\pivot\Documents\cueki\casual-preloader\Lib\site-packages\cappa/default.pyÚ__init__zDefault.__init__,   s&   € Ü×Ñ˜4 ¨XÔ6Ü×Ñ˜4 ¨GÕ4ó    c                ó2   —  | «       j                  |d¬«      S )a¸  Produce a `Default` instance where the provided value is an explicit default.

        A default produced this way will resolve to a `Value` which gets appended to the
        fallback sequence rather than being overwriting the Default-level static fallback.

        Essentially `Default(..., Value(4), default=5)` will **always** evaluate to `4` if
        upstream fallbacks do not provide a value, and `5` will never be used. In practice
        this is utilized when `Arg(default=4)` is provided.

        This is distinct but similar to `Default() | 4 | 5` (which uses `fallback_to`), which
        would resolve to `Default((), default=5)`, the 4 being overwritten and never used.
        T)Úexplicit©Úfallback_to)Úclsr   s     r    Ú
from_valuezDefault.from_value0   s   € ñ ‹u× Ñ  °4Ð Ó8Ð8r"   c                ó\   — |D ]!  }|t         usŒt        j                  |«      c S   | «       S )zÊReturn a `Default` instance from a sequence of potential defaults.

        This is used to compose different levels of default sources (Arg.default versus
        normalization time defaults).
        )r   r   r(   )r'   Údefaultsr   s      r    Úfallback_fromzDefault.fallback_from@   s0   € ó  ˆGØœeÒ#Ü×)Ñ)¨'Ó2Ò2ð  ñ ‹uˆr"   c                ó>  — t        | «      }t        ||«      r+ |g | j                  ¢|j                  ¢­d|j                  iŽS t        |t        «      r›| j                  }| j                  t
        u rt        |t        «      r|j                  }t        |t        «      rt        j                  |«      }t        |t        «      rt        j                  |«      } |g | j                  ¢|‘­d|iŽS |r |g | j                  ¢t        |«      ‘­Ž S  || j                  d|iŽS )a�  Produce a new Default from the current default and a supplied alternative.

        Examples:
            >>> Default(Env("FOO")).fallback_to(5)
            Default(sequence=(Env(env_vars=('FOO',), ...),), default=5)

            >>> Default(Env("FOO")).fallback_to(5, explicit=True)
            Default(sequence=(Env(env_vars=('FOO',), ...), Value(value=5)), default=<_EmptyEnum.EMPTY: 0>)
        r   )ÚtypeÚ
isinstancer   r   Údefault_typesr   ÚEnvÚ
PromptTypeÚPromptÚfrom_promptÚConfirmTypeÚConfirmÚfrom_confirmÚValue)r   Úotherr$   r'   r   s        r    r&   zDefault.fallback_toM   sî   € ô �4‹jˆÜ�e˜SÔ!ÙÐN˜Ÿ™ÐN¨¯©ÒNÀÇÁÑNÐNä�eœ]Ô+Ø—l‘lˆGØ�|‰|œuÑ$¬°E¼3Ô)?ØŸ-™-�ä˜%¤Ô,Ü×*Ñ*¨5Ó1�ä˜%¤Ô-Ü×,Ñ,¨UÓ3�áÐ>˜Ÿ™Ð> uÒ>°gÑ>Ð>áÙÐ4˜Ÿ™Ð4¤u¨U£|Ò4Ð4á�D—M‘MÐ1¨5Ñ1Ð1r"   c                ó$   — | j                  |«      S )z Compose two potential defaults, returning a new one.

        For example, `Default() | Prompt('...') | Env('FOO') | 5`. See `fallback_to` for details.
        r%   ©r   r8   s     r    Ú__or__zDefault.__or__m   s   € ð
 ×Ñ Ó&Ð&r"   Nc                ó  — | j                   D ][  }t        |t        «      r
 ||¬«      }n't        |t        t        f«      r
 ||¬«      }n |«       }|t
        usŒM|j                  |fc S  | j                  t
        u ryd| j                  fS )zMEvaluate the default retrieval sequence, returning the first non-Empty value.)Ústate)Úinput)TNT)r   r.   Ú	ValueFromr2   r5   r   Ú	is_parsedr   )r   r=   r>   r   Úvalues        r    Ú__call__zDefault.__call__t   s   € ð —}”}ˆGÜ˜'¤9Ô-Ù eÔ,‘Ü˜G¤f¬gÐ%6Ô7Ù eÔ,‘á›	�àœEÒ!Ø×(Ñ(¨%Ð/Ò/ð %ð �<‰<œ5Ñ Øà�T—\‘\Ð!Ð!r"   c                óD   — | j                    xr | j                  t        u S )z@Whether the default instance **has** a default or if it's Empty.)r   r   r   ©r   s    r    Ú	has_valuezDefault.has_valueˆ   s   € ð —=‘=Ð Ò: T§\¡\´UÐ%:Ð:r"   c                óP   — t        d„ | j                  D «       | j                  «      S )Nc              3  óV   K  — | ]!  }t        |t        «      sŒ|j                  –— Œ# y ­w©N)r.   r7   rA   )Ú.0Úds     r    Ú	<genexpr>z)Default.fallback_value.<locals>.<genexpr>�   s   è ø€ ÐD™m˜¬z¸!¼UÕ/CˆQ�W�W™mùs   ‚)˜))Únextr   r   rD   s    r    Úfallback_valuezDefault.fallback_value�   s!   € äÙD˜dŸmšmÓDÀdÇlÁló
ð 	
r"   )r   ÚDefaultTypesr   r   )r   r   Úreturnr   )r*   z Default | EmptyType | Any | NonerO   r   )F)r8   zDefaultTypes | Anyr$   ÚboolrO   r   )r8   r   rO   r   )NN)r=   úState[Any] | Noner>   úTextIO | NonerO   ztuple[bool, Any])rO   rP   )rO   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ú__annotations__r   r   r!   Úclassmethodr(   r+   r&   r;   rB   ÚpropertyrE   rM   r   r"   r    r   r      s¥   … ñð )+€HÐ%Ó*Ø$€Gˆ_Ó$à?Dõ 5ð ò9ó ð9ð ò
ó ð
ô2ó@'ð GKð"Ø&ð"Ø6Cð"à	ó"ð( ò;ó ð;ð ò
ó ñ
r"   r   c                  ó,   — e Zd ZU dZded<   dd„Zdd„Zy)	ÚDefaultTypeFúClassVar[bool]r@   c                 ó   — y rH   r   )r   Ú_Ú__s      r    rB   zDefaultType.__call__˜   s   € °3r"   c                ó   — t        | «      |z  S rH   )r   r:   s     r    r;   zDefaultType.__or__š   s   € Ü�t‹}˜uÑ$Ð$r"   N)r^   r   r_   r   rO   r   )r8   rN   rO   r   )rS   rT   rU   r@   rW   rB   r;   r   r"   r    r[   r[   ”   s   … à %€Iˆ~Ó%ã6ô%r"   r[   c                  óJ   — e Zd ZU dZded<   eZded<   edœ	 	 	 	 	 d
d„Zdd„Zy	)r0   a{  Lazily evaluates environment variables in the order given.

    Argument value interpolation will handle and `Arg`'s default being an `Env`
    instance, by evaluating the `Env`, in the event the parser-level value
    fell back to the default.

    Examples:
        >>> from cappa import Arg, Env
        >>> arg = Arg(default=Env("HOST", "HOSTNAME", default="localhost"))
    ztuple[str, ...]Úenv_varsústr | EmptyType | Noner   r   c               óh   — t         j                  | d|g|¢­«       t         j                  | d|«       y )Nrb   r   r   )r   Úenv_varr   rb   s       r    r!   zEnv.__init__®   s0   € ô 	×Ñ˜4 ¨gÐ-A¸Ñ-AÔBÜ×Ñ˜4 ¨GÕ4r"   c                ó–   — | j                   D ]  }t        j                  |«      }|€Œ|c S  | j                  €t        S | j                  S rH   )rb   ÚosÚgetenvr   r   )r   re   rA   s      r    rB   zEnv.__call__´   sD   € Ø—}”}ˆGÜ—I‘I˜gÓ&ˆEØÑ Ø’ð %ð
 �<‰<ÐÜˆLØ�|‰|Ðr"   N)re   Ústrrb   ri   r   rc   )rO   rc   )	rS   rT   rU   rV   rW   r   r   r!   rB   r   r"   r    r0   r0   ž   sC   … ñ	ð ÓØ&+€GÐ#Ó+ð OTñ5Øð5Ø'*ð5Ø5Kó5ôr"   r0   c                  ó8   ‡ — e Zd ZdZedd„«       Zddˆ fd„Zˆ xZS )r2   z®Prompt the user for a value, returning the response.

    Examples:
        >>> from cappa import Arg, Prompt
        >>> arg = Arg(default=Prompt("Ask user for value"))
    c                ó²   — t        || «      r|S  | |j                  |j                  |j                  |j                  |j
                  |j                  ¬«      S ©N)ÚconsoleÚpromptÚpasswordÚchoicesÚshow_defaultÚshow_choices©r.   rm   rn   ro   rp   rq   rr   )r'   rn   s     r    r3   zPrompt.from_promptÇ   sL   € ä�f˜cÔ"ØˆMÙØ—N‘NØ—=‘=Ø—_‘_Ø—N‘NØ×,Ñ,Ø×,Ñ,ô
ð 	
r"   c                ó.   •— t         ‰| �  t        |¬«      S ©N)r   Ústream©ÚsuperrB   r   ©r   r>   Ú	__class__s     €r    rB   zPrompt.__call__Ô   ó   ø€ Ü‰wÑ¬°eÐÓ<Ð<r"   )rn   zPrompt | PromptTyperO   r   rH   ©r>   rR   )rS   rT   rU   rV   rX   r3   rB   Ú__classcell__©rz   s   @r    r2   r2   ¿   ó&   ø„ ñð ò

ó ð

÷=ò =r"   r2   c                  ó8   ‡ — e Zd ZdZedd„«       Zddˆ fd„Zˆ xZS )r5   z¸Prompt the user for a confirmation, returning `True`/`False`.

    Examples:
        >>> from cappa import Arg, Confirm
        >>> arg = Arg(default=Confirm("Confirm with user"))
    c                ó²   — t        || «      r|S  | |j                  |j                  |j                  |j                  |j
                  |j                  ¬«      S rl   rs   )r'   Úconfirms     r    r6   zConfirm.from_confirmà   sN   € ä�g˜sÔ#ØˆNÙØ—O‘OØ—>‘>Ø×%Ñ%Ø—O‘OØ ×-Ñ-Ø ×-Ñ-ô
ð 	
r"   c                ó.   •— t         ‰| �  t        |¬«      S ru   rw   ry   s     €r    rB   zConfirm.__call__í   r{   r"   )r‚   zConfirm | ConfirmTyperO   r   rH   r|   )rS   rT   rU   rV   rX   r6   rB   r}   r~   s   @r    r5   r5   Ø   r   r"   r5   c                  ó0   — e Zd ZU ded<   dZded<   dd	d„Zy)
r7   r   rA   Tr\   r@   Nc                ó   — | j                   S rH   )rA   )r   r=   s     r    rB   zValue.__call__÷   s   € Ø�z‰zÐr"   rH   ©r=   rQ   )rS   rT   rU   rW   r@   rB   r   r"   r    r7   r7   ñ   s   … àƒJà $€Iˆ~Ó$õr"   r7   c                  óF   — e Zd ZU dZded<   ded<   dZded<   dd	„Zddd„Zy
)r?   aÔ  Retrieve the default value by calling the provided function.

    Optionally, `*args` and `**kwargs` to the supplied function can be
    provided ahead of time, to be supplied in the event the function is called.

    Examples:
        >>> from cappa import Arg, ValueFrom
        >>> def from_file(name):
        ...     with open(name) as f:
        ...         return f.read()
        >>>
        >>> arg = Arg(default=ValueFrom(from_file, name="config.json"))
    úCallable[..., Any]Úcallablezdict[str, Any]ÚkwargsTr\   r@   c                ó`   — t         j                  | d|«       t         j                  | d|«       y )Nr‰   rŠ   r   )r   r‰   rŠ   s      r    r!   zValueFrom.__init__  s&   € Ü×Ñ˜4 ¨XÔ6Ü×Ñ˜4 ¨6Õ2r"   Nc                ó¼   — ddl m} | j                  }|r7t        |i} || j                  |d¬«      }i |j                  ¥| j                  ¥} | j                  di |¤ŽS )Nr   )Úfulfill_depsT)Úallow_emptyr   )Úcappa.invoke.baser�   rŠ   r   r‰   )r   r=   r�   rŠ   ÚdepsÚresolveds         r    rB   zValueFrom.__call__  sW   € Ý2à—‘ˆÙÜ).°¨ˆDÙ# D§M¡M°4ÀTÔJˆHØ7˜Ÿ™Ð7¨4¯;©;Ð7ˆFàˆt�}‰}Ñ&˜vÑ&Ð&r"   )r‰   rˆ   rŠ   r   rH   r†   )rS   rT   rU   rV   rW   r@   r!   rB   r   r"   r    r?   r?   û   s)   … ñð !Ó ØÓà $€Iˆ~Ó$ó3õ	'r"   r?   c                  óX   — e Zd ZU dZded<   dZded<   edd„«       Zedd„«       Zddd	„Z	y
)ÚDefaultFormatterz	{default}ri   ÚformatTzbool | NoneÚshowc                ó   —  | d¬«      S )NF©r•   r   )r'   s    r    ÚdisabledzDefaultFormatter.disabled%  s   € á˜ŒÐr"   c                ót   — t        || «      r|S t        |t        «      r	 | |¬«      S  | t        |«      ¬«      S )N)r”   r—   )r.   ri   rP   )r'   rA   s     r    Úfrom_unknownzDefaultFormatter.from_unknown)  s5   € ä�e˜SÔ!ØˆLä�eœSÔ!Ù˜eÔ$Ð$áœ˜U›Ô$Ð$r"   c                óº   — | j                   du ry|j                  }|d t        fv rd}| j                  j                  |¬«      }|dk(  r|S |j                  |¬«      S )NFÚ r   )r•   rM   r   r”   )r   r   Údefault_formatÚdefault_raw_valueÚdefault_formatted_values        r    Úformat_defaultzDefaultFormatter.format_default3  sk   € Ø�9‰9˜ÑØà#×2Ñ2ÐØ ¤u Ñ-Ø "Ðà"&§+¡+×"4Ñ"4Ð=NÐ"4Ó"OÐà" bÒ(Ø*Ð*à×$Ñ$Ð-DÐ$ÓEÐEr"   N)rO   r   )rA   zstr | bool | SelfrO   r   )rœ   )r   r   r�   ri   rO   ri   )
rS   rT   rU   r”   rW   r•   rX   r˜   rš   r    r   r"   r    r“   r“      sB   … à€FˆCÓØ€Dˆ+Óàòó ðð ò%ó ð%õFr"   r“   r   rN   )(Ú
__future__r   rg   Údataclassesr   Útypingr   r   r   r   r	   r
   r   r   Úrich.promptÚrichÚtyping_extensionsr   r   r   Úcappa.stater   Úcappa.type_viewr   r   r   r   r[   r0   rn   r2   r5   r7   r?   r“   r1   r4   r/   rN   rW   r   r"   r    Ú<module>r©      s–  ðÞ "ã 	Ý !÷	÷ 	ó 	ó ß 6Ñ 6å ß ,áˆCƒL€ñ �$Ô÷w
ð w
ó ðw
ðt ô%�(ó %ó ð%ñ �$Ôôˆ+ó ó ðô@=ˆT�[‰[×Ñ ô =ô2=ˆd�k‰k×!Ñ! ;ô =ñ2 �$ÔôˆKó ó ðñ �$Ôô!'�ó !'ó ð!'ðH ÷Fð Fó ðFðD �[‰[×Ñ€
Ø�k‰k×!Ñ!€Ø—‘×#Ñ# T§[¡[×%8Ñ%8¸#¸yÐI€ØØˆ[˜$Ÿ+™+×,Ñ,¨d¯k©k×.AÑ.AÐAñ€ˆiô r"   