
    k7i                         S SK JrJrJr  S SKJr  \(       a  S SKJr   " S S\5      rS\	\
\\	\   4      S\\-  S\4S	 jrS
SS\	\
\\	\   4      4S jrSSS\	\
S\	\   4      4S jrg)    )TYPE_CHECKINGAny
NamedTuple)Group)Appc                   8    \ rS rSr% Sr\\S4   \S'   S\S'   Srg)	RegisteredCommand	   zAn App with the names it was registered under.

Attributes
----------
names : tuple[str, ...]
    All names (including aliases) this command is registered under.
app : "App"
    The command's App instance.
.namesr   app N)	__name__
__module____qualname____firstlineno____doc__tuplestr__annotations____static_attributes__r       S/home/james-whalen/.local/lib/python3.13/site-packages/cyclopts/group_extractors.pyr	   r	   	   s     c?	Jr   r	   group_mappinggroupelementc                    [        U[        5      (       a  [        U5      nO[        U[        5      (       a  O[        eU  H6  nUS   R                  UR                  :X  d  M"  US   R                  U5          g    U R                  X/45        g )Nr      )
isinstancer   r   	TypeErrornameappend)r   r   r   mappings       r   _create_or_appendr#      sw     %e	E5	!	! 1:??ejj(AJg& !
 	eY/0r   r   r   returnc                    [        U R                  [        5      (       a   eU R                  =(       d    [        R                  " 5       n0 n0 nU  H>  nX   n[        U5      nUR                  U/ 5      R                  U5        Xc;  d  M:  XSU'   M@     U/ 4/nUR                  5        H  n[        UR                  [        5      (       d   eUR                   Hw  n[        U[        5      (       d  M  U HD  n	U	S   UL a    M*  U	S   R                  UR                  :X  d  M-  [        SUR                   S35      e   UR                  U/ 45        My     M     UR                  5        H  u  pe[        X&   5      n
[        X5      nUR                  (       aB  [        UR                  [        5      (       d   eUR                   H  n[        XxU5        M     Mp  [        XpR                  =(       d    [        R                  " 5       U5        M     U Vs/ s H  oS   (       d  M  UPM     nnUR!                  S S9  U$ s  snf )a=  Extract Group/App association from all commands of ``app``.

Returns
-------
list
    List of items where each item is a tuple containing:

    * :class:`.Group` - The group

    * ``list[RegisteredCommand]`` - List of RegisteredCommand tuples containing
      the registered names and app instance for each command.
r   zCommand Group "z" already exists.r   c                      U S   R                   $ )Nr   )r    )xs    r   <lambda>!groups_from_app.<locals>.<lambda>h   s    QqTYYr   )key)r   group_commandsr   r   create_default_commandsid
setdefaultr!   valuesr   r   r    
ValueErroritemsr	   r#   sort)r   r+   	app_namesunique_appsr    subappapp_idr   r   r"   r   registered_commandr'   s                r   groups_from_appr8   -   s    #,,c2222''J5+H+H+JN ')I"$KFVR(//5$"(  
BM
 $$&&,,....\\E%'',GqzU* EJJ6(?5::,FW)XYY	  - "((%5 " ' &++-i'(.u=<<fllE2222!-8JK & m-?-?-b5C`C`Cbdvw . !.611QM6 ./ 7s   H;!H;	input_appc                 .   / n/ n[        U 5       HB  u  p4U H7  nUR                  n UR                  U5      nX   S   R                  U5        M9     MD     U$ ! [         a2    [	        U5      nUR                  U/ 45        UR                  U5         N[f = f)Nr   )r8   r   indexr0   lenr!   )r9   out	seen_appsr   registered_commandsr7   r   r;   s           r   inverse_groups_from_appr@   m   s    
CI&5i&@""5$((C&!,
 JqM  ' #6 'A J  &C

C9%  %&s   A9BBN)typingr   r   r   cyclopts.groupr   cyclopts.corer   r	   listr   r   r#   r8   r@   r   r   r   <module>rE      s    1 1  !
 1eT#Y./01;1 1*= =4eT:K5L.L(M#N =@u eE4;<N6O1P r   