
    g                       U d dl mZ d dlZd dlmZ d dlm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	lmZ erd d
lmZ e G d d             ZddZddZddZddZddZddZej8                  eej:                  eej<                  eej>                  eej@                  eejB                  eejD                  eejF                  eiZ$de%d<   ddZ&ddZ'ejP                  f	 	 	 	 	 	 	 d dZ)y)!    )annotationsN)suppress)	dataclass)TYPE_CHECKINGAnyCallable)	get_value)LogLevel)ExprName)logger)Modulec                  (    e Zd ZU dZded<   	 ded<   y)ExportedNamezDeprecated. An intermediate class to store names.

    The [`get__all__`][griffe.get__all__] function now returns instances of [`ExprName`][griffe.ExprName] instead.
    strnamer   parentN)__name__
__module____qualname____doc____annotations__     Q/var/www/openai/venv/lib/python3.12/site-packages/_griffe/agents/nodes/exports.pyr   r      s    
 INr   r   c                `    t        | j                  t        | j                  |      d         gS )Nr   )r   r   )r   attr_extractvaluenoder   s     r   _extract_attributer!   !   s&    $))HTZZ,H,KLMMr   c                d    t        | j                  |      }t        | j                  |      }||z   S N)r   leftright)r    r   r$   r%   s       r   _extract_binopr&   %   s,    DIIv&DTZZ(E%<r   c                    | j                   gS r#   )r   r   s     r   _extract_constantr(   +   s    JJ<r   c                0    t        | j                  |      gS r#   )r   idr   s     r   _extract_namer+   /   s    TWWf%&&r   c                b    g }| j                   D ]  }|j                  t        ||              |S r#   )eltsextendr   )r    r   sequenceelts       r   _extract_sequencer1   3   s-    Hyyf-. Or   c                .    t        | j                  |      S r#   )r   r   r   s     r   _extract_starredr3   :   s    DJJ''r   z9dict[type, Callable[[Any, Module], list[str | ExprName]]]	_node_mapc                2    t        t        |          | |      S r#   )r4   typer   s     r   r   r   J   s    T$Z v..r   c                J    | j                   g S t        | j                   |      S )zGet the values declared in `__all__`.

    Parameters:
        node: The assignment node.
        parent: The parent module.

    Returns:
        A set of names.
    )r   r   r   s     r   
get__all__r8   N   s$     zz	DJJ''r   c                   	 t        | |      S # t        $ r}dt        | j                         }t	        t              5  |d|j
                   d| j                   z  }ddd       n# 1 sw Y   nxY wt        |t              r	|d| z  }n|d| z  } t        t        |j                        |       g cY d}~S d}~ww xY w)a  Safely (no exception) extract values in `__all__`.

    Parameters:
        node: The `__all__` assignment node.
        parent: The parent used to resolve the names.
        log_level: Log level to use to log a message.

    Returns:
        A list of strings or resolvable names.
    z#Failed to extract `__all__` value: z at :Nz: unsupported node z: )r8   	Exceptionr	   r   r   relative_filepathlineno
isinstanceKeyErrorgetattrr   )r    r   	log_levelerrormessages        r   safe_get__all__rD   ]   s    $'' 	7	$**8M7NOi f667qFFG !  eX&,UG44GE7|#G(	(1		s2    	C 'B; A'	B;'A0	,A	B;5C ;C )r    zast.Attributer   r   returnlist[str | ExprName])r    z	ast.BinOpr   r   rE   rF   )r    zast.Constantr   r   rE   rF   )r    zast.Namer   r   rE   rF   )r    zast.List | ast.Set | ast.Tupler   r   rE   rF   )r    zast.Starredr   r   rE   rF   )r    zast.ASTr   r   rE   rF   )r    *ast.Assign | ast.AnnAssign | ast.AugAssignr   r   rE   rF   )r    rG   r   r   rA   r
   rE   rF   )*
__future__r   ast
contextlibr   dataclassesr   typingr   r   r   _griffe.agents.nodes.valuesr	   _griffe.enumerationsr
   _griffe.expressionsr   _griffe.loggerr   _griffe.modelsr   r   r!   r&   r(   r+   r1   r3   	AttributeBinOpConstantListNameSetStarredTupler4   r   r   r8   debugrD   r   r   r   <module>r[      s    # 
  ! / / 1 ) ( !% 	 	 	N'(
 MM%II~LL#HHHHmGGKK!II 	H	D 	/($ #..
4  	r   