o
    §iþ  ã                   @   s²   d dl mZmZmZ d dlmZ erd dlmZ G dd„ deƒZde	e
ee	e f  deeB defd	d
„Zddde	e
ee	e f  fdd„Zddde	e
de	e f  fdd„ZdS )é    )ÚTYPE_CHECKINGÚAnyÚ
NamedTuple)ÚGroup)ÚAppc                   @   s*   e Zd ZU dZeedf ed< ded< dS )ÚRegisteredCommandzêAn 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   ÚappN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚtupleÚstrÚ__annotations__© r   r   ú_/var/www/html/karishye-ai-python/venv/lib/python3.10/site-packages/cyclopts/group_extractors.pyr   	   s   
 
r   Úgroup_mappingÚgroupÚelementc                 C   sf   t |tƒr
t|ƒ}nt |tƒrnt‚| D ]}|d j|jkr(|d  |¡  d S q|  ||gf¡ d S )Nr   é   )Ú
isinstancer   r   Ú	TypeErrorÚnameÚappend)r   r   r   Úmappingr   r   r   Ú_create_or_append   s   


þr   r	   r   Úreturnc                 C   sz  t | jtƒrJ ‚| jpt ¡ }i }i }| D ]}| | }t|ƒ}| |g ¡ |¡ ||vr0|||< q|g fg}| ¡ D ]:}t |j	t
ƒsDJ ‚|j	D ],}t |tƒrs|D ]}	|	d |u rZ n|	d j|jkrktd|j› dƒ‚qP| |g f¡ qGq:| ¡ D ]2\}}t
|| ƒ}
t|
|ƒ}|j	r t |j	t
ƒs“J ‚|j	D ]}t|||ƒ q–qyt|| jp¨t ¡ |ƒ qydd„ |D ƒ}|jdd„ d |S )	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.c                 S   s   g | ]}|d  r|‘qS )r   r   )Ú.0Úxr   r   r   Ú
<listcomp>e   s    z#groups_from_app.<locals>.<listcomp>c                 S   s
   | d j S )Nr   )r   )r   r   r   r   Ú<lambda>h   s   
 z!groups_from_app.<locals>.<lambda>)Ú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   r   r   Úgroups_from_app-   sL   €ÿ

ÿ€ø

ÿr0   Ú	input_appc              
   C   s‚   g }g }t | ƒD ]6\}}|D ]/}|j}z| |¡}W n ty3   t|ƒ}| |g f¡ | |¡ Y nw || d  |¡ qq|S )Nr   )r0   r	   Úindexr(   Úlenr   )r1   ÚoutÚ	seen_appsr   Úregistered_commandsr/   r	   r2   r   r   r   Úinverse_groups_from_appm   s   ýø	r7   N)Útypingr   r   r   Úcyclopts.groupr   Úcyclopts.corer   r   Úlistr   r   r   r0   r7   r   r   r   r   Ú<module>   s    ÿþ
ý"&@