
    lKjM              	          d dl Z d dlZd dlZd dlmZmZ d dlmZmZm	Z	m
Z
mZ d dlmZ ej                  dk\  rd dlmZ nd dlmZ d dlmZmZmZmZmZmZmZmZmZ erd dlmZ d d	lmZ d d
lm Z  de
d   fdZ! ejD                         Z# G d de      Z$ G d de      Z% G d de      Z&	 	 	 	 ddZ'de(fdZ)e G d d             Z*de+e*   de+e   de,e+e*   e+e   f   fdZ-y)    N)CallableIterable)TYPE_CHECKINGAnyLiteralOptionalUnion)field)      )Self)	UNSETSentinel
SortHelperfrozenhelp_formatter_converteris_iterableresolve_callablessort_key_converterto_tuple_converter)ArgumentCollection)HelpFormatter)	Parametervaluer   c                 8    |y |j                   rt        d      y )Nz,Group default_parameter cannot have a group.)group
ValueError)instance	attributer   s      _/Users/ahmed/devFolder/Ultron/claude-voice/.venv/lib/python3.12/site-packages/cyclopts/group.py%_group_default_parameter_must_be_noner!   &   s"    }{{GHH     c                       e Zd Zy)"DEFAULT_COMMANDS_GROUP_SORT_MARKERN__name__
__module____qualname__ r"   r    r$   r$   3       r"   r$   c                       e Zd Zy)#DEFAULT_ARGUMENTS_GROUP_SORT_MARKERNr%   r)   r"   r    r,   r,   7   r*   r"   r,   c                       e Zd Zy)$DEFAULT_PARAMETERS_GROUP_SORT_MARKERNr%   r)   r"   r    r.   r.   ;   r*   r"   r.   returnc                     t        |       S N)r   )r   s    r    _group_validator_converterr2   ?   s     e$$r"   valc                     | r| S t               S r1   )object)r3   s    r    _group_name_converterr6   E   s    3#68#r"   c                      e Zd ZU  edde      Zeed<   	 dZeed<    eddd	      Z	e
dz  ed
<    edded      Zeed<    eded      Zdedgef   z  eedgef      z  ed<    eded      Zed   ed<    eded      Zeded   df   ed<   edefd       Zed        Zed        Zed defd       Zed!defd       Z ed"defd       Z!e	 	 d#dddddddefd       Z"y)$Group name)defaultalias	converter_namehelpNshowT)r;   r<   kw_only_showsort_key)r;   r<   r=   rA   	_sort_key)r;   r=   rA   r   	validator)r;   rE   rA   r   default_parameter)r;   plainr   help_formatterr/   c                 T    t        | j                        t        u rdS | j                  S )Nr9   )typer>   r5   selfs    r    r:   z
Group.names   s!    $**%/r?TZZ?r"   c                 \    | j                   t        | j                        S | j                   S r1   )rB   boolr:   rK   s    r    r@   z
Group.showw   s"    "&**"4tDIID$**Dr"   c                 B    | j                   t        u rd S | j                   S r1   )rD   r   rK   s    r    rC   zGroup.sort_key{   s    ~~.tBDNNBr"   c                      | |t               S N)rC   )r,   clsr:   s     r    create_default_argumentszGroup.create_default_arguments   s    4"EFFr"   c                      | |t               S rQ   )r.   rR   s     r    create_default_parameterszGroup.create_default_parameters   s    4"FGGr"   c                      | |t               S rQ   )r$   rR   s     r    create_default_commandszGroup.create_default_commands   s    4"DEEr"   r@   rC   rE   rF   rH   c          	          t        t              }t        j                  |      rt        |      }|	t        |f}nt        |      rt        |      |f}n||f} | |||||||      S )ay  Create a group with a globally incrementing :attr:`~Group.sort_key`.

        Used to create a group that will be displayed **after** a previously instantiated :meth:`Group.create_ordered` group on the help-page.

        Parameters
        ----------
        name: str
            Group name used for the help-page and for group-referenced-by-string.
            This is a title, so the first character should be capitalized.
            If a name is not specified, it will not be shown on the help-page.
        help: str
            Additional documentation shown on the help-page.
            This will be displayed inside the group's panel, above the parameters/commands.
        show: bool | None
            Show this group on the help-page.
            Defaults to :obj:`None`, which will only show the group if a ``name`` is provided.
        sort_key: Any
            If provided, **prepended** to the globally incremented counter value (i.e. has priority during sorting).

        validator: None | Callable[[ArgumentCollection], Any] | Iterable[Callable[[ArgumentCollection], Any]]
            Group validator to collectively apply.
        default_parameter: cyclopts.Parameter | None
            Default parameter for elements within the group.
        help_formatter: cyclopts.help.protocols.HelpFormatter | None
            Custom help formatter for this group's help display.
        rY   )next_sort_key_counterinspectisgeneratorr   r   tuple)	rS   r:   r?   r@   rC   rE   rF   rH   counts	            r    create_orderedzGroup.create_ordered   sx    L &'x(H~Hu~H"h/H %(H/)
 	
r"   )	Arguments)
Parameters)Commands)r9   r9   )#r&   r'   r(   r
   r6   r>   str__annotations__r?   rB   rN   r   rD   r   r2   rE   r   r   r!   rF   r   r   rH   r	   r   propertyr:   r@   rC   classmethodr   rT   rV   rX   ra   r)   r"   r    r8   r8   I   s   r;PQE3Q D#N t64HE4$;H$	Is  qv,qIth 45s:;;hxQePfhkPkGl>mm  0570x,  QV 8$QNE$(: ;_LM  @c @ @ E E C C G4 G G HT H H F F F  6

 6
 
6
 6
r"   r8   groups
attributesc                    t        |       t        |      k(  sJ | s| |fS t        j                  t        | |d      D cg c]2  \  }}t        t	        |j
                  |      |j                  ||f      4 c}}      }t        |D cg c]  }|j                   c}ddi\  }}t        |      t        |      fS c c}}w c c}w )a  Sort groups for the help-page.

    Note, much logic is similar to here and ``HelpPanel.sort``, so any changes here should probably be reflected over there as well.

    Parameters
    ----------
    groups: list[Group]
        List of groups to sort by their ``sort_key``.
    attributes: list[Any]
        A list of equal length to ``groups``.
        Remains consistent with ``groups`` via argsort.
    F)strictrl   )	lenr   sortzipr   rD   r:   r   list)ri   rj   r   r   sorted_entriesx
out_groupsout_attributess           r    sort_groupsru      s     v;#j/)))z!!__ %(
5$I	
$I y (%@%**uV_N`a$I	
N "%&G1qww&G!VPU!VJ
T.111	

 'Hs    7B;
C)r   zZNone | Callable[[ArgumentCollection], Any] | Iterable[Callable[[ArgumentCollection], Any]]r/   z/tuple[Callable[[ArgumentCollection], Any], ...]).r]   	itertoolssyscollections.abcr   r   typingr   r   r   r   r	   attrsr
   version_infor   typing_extensionscyclopts.utilsr   r   r   r   r   r   r   r   r   cyclopts.argumentr   cyclopts.help.protocolsr   cyclopts.parameterr   r!   r`   r\   r$   r,   r.   r2   re   r6   r8   rp   r_   ru   r)   r"   r    <module>r      s     
 .  w&
 
 
 45,Ih{F[ I $IOO% 	 		( 		8 	%g%6%$s $ x
 x
 x
v2U 2c 2uT%[RVWZR[E[?\ 2r"   