
    is                       S SK Jr  S SKrS SKrS SKJr  S SKJrJr  S SK	J
r
Jr  S SKJrJrJr  S SKJr  S SKJr  S S	KJr  S S
KJr  S SKJrJr  S SKJrJr  S SKJrJ r J!r!  S SK"J#r#J$r$J%r%J&r&J'r'J(r(J)r)  S SK*J+r+J,r,  S SK-J.r.J/r/J0r0J1r1J2r2J3r3J4r4J5r5J6r6J7r7J8r8J9r9  \(       a  S SK:J;r;  S SK<J=r=J>r>  S SKJ?r?  SSSS.r@ S1S1SS1SS1S1S1S.rA SS1rB SSSSSSS.                   S"S jjrC " S  S!5      rDg)#    )annotationsN)suppress)TYPE_CHECKINGFinal)get_instance_names	get_names)ast_childrenast_kindast_next)get_docstring)safe_get__all__)relative_to_absolute)get_parameters)LinesCollectionModulesCollection)KindTypeParameterKind)AliasResolutionErrorCyclicAliasErrorLastNodeError)ExprExprNamesafe_get_annotationsafe_get_base_classsafe_get_class_keywordsafe_get_conditionsafe_get_expression)
Extensionsload_extensions)Alias	AttributeClass	Decorator	DocstringFunctionModule	Parameter
Parameters	TypeAliasTypeParameterTypeParameters)Path)DocstringOptionsDocstringStyle)Parserpropertystaticmethodclassmethod)r0   r1   r2   abstractmethodcached	dataclass)zabc.abstractmethodzfunctools.cachezfunctools.cached_propertyzcached_property.cached_propertyzfunctools.lru_cachezdataclasses.dataclassztyping.overloadztyping_extensions.overload)
extensionsparentdocstring_parserdocstring_optionslines_collectionmodules_collectionc               b    [        U UUU=(       d
    [        5       UUUUUS9	R                  5       $ )a:  Parse and visit a module file.

We provide this function for static analysis. It uses a [`NodeVisitor`][ast.NodeVisitor]-like class,
the [`Visitor`][griffe.Visitor], to compile and parse code (using [`compile`][])
then visit the resulting AST (Abstract Syntax Tree).

Important:
    This function is generally not used directly.
    In most cases, users can rely on the [`GriffeLoader`][griffe.GriffeLoader]
    and its accompanying [`load`][griffe.load] shortcut and their respective options
    to load modules using static analysis.

Parameters:
    module_name: The module name (as when importing [from] it).
    filepath: The module file path.
    code: The module contents.
    extensions: The extensions to use when visiting the AST.
    parent: The optional parent of this module.
    docstring_parser: The docstring parser to use. By default, no parsing is done.
    docstring_options: Docstring parsing options.
    lines_collection: A collection of source code lines.
    modules_collection: A collection of modules.

Returns:
    The module, with its members populated.
)r8   r9   r:   r;   )Visitorr   
get_module)	module_namefilepathcoder6   r7   r8   r9   r:   r;   s	            Y/home/james-whalen/.local/lib/python3.13/site-packages/griffe/_internal/agents/visitor.pyvisitrC   P   s>    L 'o')+)-
 jl
    c                  L  ^  \ rS rSr% Sr     S!                   S"U 4S jjjrSS.S#S jjr\R                  S:  aX  \	R                  \R                  \	R                  \R                  \	R                  \R                   0rS	\S
'   SS.     S$S jjrOSS.     S%S jjrS&S jrS'S jrS'S jrS(S jrS)S jrS*S jrS+S jrS,S-S jjrS.S jrS/S jr\R                  S:  a  S0S jrS1S jrS2S jr  S,     S3S jjr!S4S jr"S5S jr#S6S jr$S7S jr%S r&U =r'$ )8r=      zgThis class is used to instantiate a visitor.

Visitors iterate on AST nodes to extract data from them.
Nc
                  > [         T
U ]  5         Xl         X l         X0l         X@l         XPl         SU l         X`l         U=(       d    0 U l	         U=(       d
    [        5       U l         U	=(       d
    [        5       U l         SU l        g)a  Initialize the visitor.

Parameters:
    module_name: The module name.
    filepath: The module filepath.
    code: The module source code.
    extensions: The extensions to use when visiting.
    parent: An optional parent for the final module object.
    docstring_parser: The docstring parser to use.
    docstring_options: Docstring parsing options.
    lines_collection: A collection of source code lines.
    modules_collection: A collection of modules.
NF)super__init__r?   r@   rA   r6   r7   currentr8   r9   r   r:   r   r;   type_guarded)selfr?   r@   rA   r6   r7   r8   r9   r:   r;   	__class__s             rB   rI   Visitor.__init__   s    2 	 +&"	%&0:%+='+/@P*3D3J,1A1V_EV05G5^K\K^&"'>rD   Fstrictc               d    [        XS9u  p4nUc  g [        UUUU R                  U R                  S9$ )NrO   )lineno	endlinenoparserparser_options)r   r$   r8   r9   )rL   noderP   valuerR   rS   s         rB   _get_docstringVisitor._get_docstring   sA    #0#E y=((11
 	
rD   )      z4Final[dict[type[ast.type_param], TypeParameterKind]]_type_parameter_kind_mapscopec                  UR                    Vs/ s Hk  n[        UR                  U R                  [	        U5         [        [        USS 5      U R                  US9[        [        USS 5      U R                  US9S9PMm     sn$ s  snf )Nboundr7   memberdefault_value)kindr`   default)type_paramsr*   namer\   typer   getattrrJ   )rL   rV   r^   
type_params       rB   _get_type_parametersVisitor._get_type_parameters   s    " #'"2"2 #3J OO66tJ7GH-gj'4.PY]YeYenst/
OTB#||$		 #3  s   A2Bc                   / $ N )rL   rV   r^   s      rB   rk   rl      s	     IrD   c                    [        U R                  S[        U R                  5      [        R
                  SS9nU R                  U5        U R                  R                  $ )zBuild and return the object representing the module attached to this visitor.

This method triggers a complete visit of the module nodes.

Returns:
    A module instance.
exec   )modefilenameflagsoptimize)	compilerA   strr@   astPyCF_ONLY_ASTrC   rJ   module)rL   top_nodes     rB   r>   Visitor.get_module   sG     4996C<NVYVgVgrst

8||"""rD   c                V    [        U S[        U5       3U R                  5      " U5        g)zQExtend the base visit with extensions.

Parameters:
    node: The node to visit.
visit_N)ri   r
   generic_visitrL   rV   s     rB   rC   Visitor.visit  s'     	x~./1C1CDTJrD   c                J    [        U5       H  nU R                  U5        M     g)zYExtend the base generic visit with extensions.

Parameters:
    node: The node to visit.
N)r	   rC   )rL   rV   childs      rB   r   Visitor.generic_visit  s     "$'EJJu (rD   c           
        U R                   R                  SXS9  U R                   R                  SXS9  [        U R                  U R                  U R
                  U R                  U5      U R                  U R                  SS9=U l	        nU R                   R                  SXU S9  U R                   R                  SXU S	9  U R                  U5        U R                   R                  S
XU S9  U R                   R                  SXU S	9  g)z?Visit a module node.

Parameters:
    node: The node to visit.
on_noderV   agenton_module_nodestatic)rg   r@   r7   	docstringr:   r;   analysison_instancerV   objr   on_module_instance)rV   modr   
on_memberson_module_membersN)r6   callr&   r?   r@   r7   rX   r:   r;   rJ   r   )rL   rV   r{   s      rB   visit_moduleVisitor.visit_module  s     	YT>-DE &!!]];;))$/!22#66!
 	
v 	]N1PTU4 \M0ttTrD   c                  ^  T R                   R                  SUT S9  T R                   R                  SUT S9  / nUR                  (       a?  UR                  S   R                  nUR	                  U 4S jUR                   5       5        OUR                  nUR
                   Vs/ s H"  n[        UT R                  UR                  S9PM$     nnUR                   Vs0 s H:  ofR                  c  M  UR                  [        UR                  T R                  S9_M<     nn[        UR                  UUR                  T R                  U5      U[!        T R#                  XR                  S	96 UUT R$                  (       + S
S9
nU=R&                  T R)                  U5      -  sl        T R                  R+                  UR                  U5        UT l        T R                   R                  SXT S9  T R                   R                  SXT S9  T R-                  U5        T R                   R                  SXT S9  T R                   R                  SXT S9  T R                  R.                  T l        gs  snf s  snf )zIVisit a class definition node.

Parameters:
    node: The node to visit.
r   r   on_class_noder   c           	   3     >#    U  H7  n[        [        UTR                  S S9UR                  UR                  S9v   M9     g7f)Fr7   parse_stringsrR   rS   N)r#   r   rJ   rR   
end_lineno).0decorator_noderL   s     rB   	<genexpr>)Visitor.visit_classdef.<locals>.<genexpr>9  sD       ':N 't||[`a)00,77
 ':s   ?Ara   Nr7   r]   r   )
rg   rR   rS   r   
decoratorstype_parametersbaseskeywordsruntimer   r   r   on_class_instance)rV   clsr   r   on_class_members)r6   r   decorator_listrR   extendr   r   rJ   rg   r   argr   rW   r"   r   rX   r+   rk   rK   labelsdecorators_to_labels
set_memberr   r7   )	rL   rV   r   rR   baser   kwr   class_s	   `        rB   visit_classdefVisitor.visit_classdef,  s,    	YT>_4tD ')
((+22F  '+&9&9  [[F _c^h^hi^hVZ$T$,,tyyQ^hiTXTaTa
TabekekIBFF*288DLLIITa 	 
 oo))$/!*D,E,EdR[R[,E,\])))
 	22:>>		62]N0ttT4 \M/ddS||**5 j
s   $)I+I01-I0c                    [        5       nU HK  nUR                  nU[        ;   a  UR                  [        U   5        M3  U[        ;   d  M?  U[        U   -  nMM     U$ )zBuild and return a set of labels based on decorators.

Parameters:
    decorators: The decorators to check.

Returns:
    A set of labels.
)setcallable_pathbuiltin_decoratorsaddstdlib_decorators)rL   r   r   	decoratorr   s        rB   r   Visitor.decorators_to_labelsa  s[     #I%33M 22

-m<="33+M:: $ rD   c                6   U H  n UR                   R                  SS5      u  pEUS;   =(       aI    XBR                  :H  =(       a4    U R                  R                  UR                  5      R                  S5      nU(       d  M  Us  $    g! [         a     M  f = f)a  Check decorators to return the base property in case of setters and deleters.

Parameters:
    decorators: The decorators to check.

Returns:
    base_property: The property for which the setter/deleted is set.
    property_function: Either `"setter"` or `"deleter"`.
.rr   >   setterdeleterr0   N)r   rsplit
ValueErrorpathrJ   
get_memberrg   
has_labels)rL   r   functionr   r   prop_functionproperty_setter_or_deleters          rB   get_base_propertyVisitor.get_base_propertys  s     $I&/&=&=&D&DS!&L# !66 RMM)RLL++HMM:EEjQ '
 *)$$ $   s   B


BBc                
   U R                   R                  SXS9  U R                   R                  SXS9  U=(       d
    [        5       n/ nSnUR                  (       a  UR                  S   R                  nUR                   Ha  n[        X`R                  SS9nUc  M  [        UUR                  UR                  S9nUR                  U5        XHR                  [        ;   -  nMc     OUR                  nX R                  U5      -  nS	U;   a  [        UR                  S[        UR                   U R                  UR                  S
9UR                  UR                  U R#                  U5      U R$                  (       + SS9n	U	=R&                  U-  sl        U R                  R)                  UR                  U	5        U R                   R                  SXU S9  U R                   R                  SXU S9  g[+        [-        UR.                  5       V
VVVs/ s HW  u  pp[1        U
U[        XR                  UR                  S
9[3        U[4        5      (       a  UO[        XR                  SS9S9PMY     snnnn
6 n[7        UR                  UUR                  U[        UR                   U R                  UR                  S
9U[9        U R;                  XR                  S96 U R#                  U5      U R$                  (       + U R                  SS9nU R=                  X?5      nU(       a4  U R                  R>                  UR                     R                  U5        GOKU(       au  U R                  R@                  UR                     nUS:X  a#  UUl!        UR&                  RE                  S5        OUS:X  a"  UUl#        UR&                  RE                  S5        OU R                  R)                  UR                  U5        U R                  RH                  [J        RL                  [J        RN                  1;   aq  U R                  R>                  UR                     (       aI  U R                  R>                  UR                     Ul        U R                  R>                  UR                  	 U=R&                  U-  sl        U R                   R                  SXU S9  U R                   R                  SXU S9  U R                  RH                  [J        RN                  L aD  UR                  S:X  a3  Xl        U RQ                  U5        U R                  RR                  U l        gggs  snnnn
f )z{Handle a function definition node.

Parameters:
    node: The node to visit.
    labels: Labels to add to the data object.
r   r   on_function_nodeFr   r   Nr   r0   ra   r   rg   rW   
annotationrR   rS   r   r   r   r   r   on_attribute_instancerV   attrr   )rd   r   re   r]   )rg   rR   rS   
parametersreturnsr   r   r   r   r7   r   r   writabler   	deletableon_function_instance)rV   funcr   rI   )*r6   r   r   r   rR   r   rJ   r#   r   appendr   typing_overloadr   r!   rg   r   r   rX   rK   r   r   r(   r   argsr'   
isinstancerx   r%   r+   rk   r   	overloadsmembersr   r   r   rd   r   MODULECLASSr   r7   )rL   rV   r   r   overloadrR   r   decorator_valuer   	attributerg   r   rd   re   r   r   property_functionbase_propertys                     rB   handle_functionVisitor.handle_function  sf    	YT>/dG35 
((+22F"&"5"5"5n\\in"o"*%#)00,77	
 !!),33FF #6 [[F++J77!YY.t||DLLY]YbYbc{{//--d3 ---!	I &LL##DIIy9OO  TPT UOO  !8t[_ `   8Fdii7P
 8Q3Dd 2:ll[_[d[de!'3// $,W\\Y^_ 8Q


 oo!'T\\RVR[R[\!*D,E,EdR[R[,E,\]))$/)))<<
 !22:HLL""8==188B'+||';';DII'FM H,'/$$$((4"i/(0%$$((5LL##DIIx8||  T[[$**$==$,,BXBXYaYfYfBg%)\\%;%;HMM%J"LL**8==96!]4P3$UYZ<<

*x}}
/J#Lt$<<..DL 0K*c
s   AUc                &    U R                  U5        g)zLVisit a function definition node.

Parameters:
    node: The node to visit.
Nr   r   s     rB   visit_functiondefVisitor.visit_functiondef  s     	T"rD   c                &    U R                  US1S9  g)zSVisit an async function definition node.

Parameters:
    node: The node to visit.
async)r   Nr   r   s     rB   visit_asyncfunctiondefVisitor.visit_asyncfunctiondef  s     	T7)4rD   c                ^   U R                   R                  SXS9  U R                   R                  SXS9  UR                  R                  n[	        UR
                  U R                  US9n U R                  [        U5      SS9n[        UUUR                  UR                  [        U R                  XS96 UU R                  S	S
9nU R                  R!                  X%5        U R                   R                  SXU S9  U R                   R                  SXU S9  g! [        [        4 a    Sn Nf = f)zCVisit a type alias node.

Parameters:
    node: The node to visit.
r   r   on_type_alias_nodera   TrO   Nr]   r   )rg   rW   rR   rS   r   r   r7   r   r   r   on_type_alias_instance)rV   
type_aliasr   )r6   r   rg   idr   rW   rJ   rX   r   r   AttributeErrorr)   rR   r   r+   rk   r   )rL   rV   rg   rW   r   r   s         rB   visit_typealiasVisitor.visit_typealias  s    OO   BOO  !5D M 99<<D'

4<<PTUE! //t/L	 #{{// .0I0I$0I0[ \#||!	J LL##D5OO  TQU VOO  !9cg h ">2 ! 	!s   +D D,+D,c           
        UR                    H  nUR                  (       a  UR                  OUR                  R                  SS5      S   nUR                  =(       d    UR                  SS5      S   nX0R                  R
                  U'   [        UUUR                  UR                  U R                  (       + SS9nU R                  R                  XE5        U R                  R                  SXQU S9  M     g)	z@Visit an import node.

Parameters:
    node: The node to visit.
r   rr   r   r   rR   rS   r   r   on_alias_instancealiasrV   r   N)namesasnamerg   splitrJ   importsr    rR   r   rK   r   r6   r   rL   rV   rg   
alias_path
alias_namer   s         rB   visit_importVisitor.visit_import,  s     JJD&*kktyysA7Nq7QJC
(8(8a(@(CJ/9LL  ,{{// ---!E LL##J6OO  !4ETX Y rD   c           
        UR                    GHq  nUR                  (       dH  UR                  S:X  a8  UR                  (       d'  U R                  R                  R
                  (       a  M]  [        XU R                  R                  5      nUR                  S:X  a%  UR                  SS5      nUR                  SS5      nO7UR                  =(       d    UR                  nX0R                  R                  U'   X0R                  R                   SU 3:w  d  GM
  [        UUUR                  UR                  U R                  (       + SS9nU R                  R                  XE5        U R                   R#                  S	XQU S
9  GMt     g)zGVisit an "import from" node.

Parameters:
    node: The node to visit.
rr   *r   /z.* r   r   r   r   N)r   r{   levelr   rJ   is_init_moduler   rg   replacer  r   r    rR   r   rK   r   r6   r   r  s         rB   visit_importfromVisitor.visit_importfromA  s$    JJD;;4::?4;;4<<K^K^KmKm
 -d$,,:M:MNJyyC'//S9
'//b9
![[5DII
3=$$Z0  1 12!J<@@;;"oo $ 1 11% ''
:$$%8X\$]9 rD   c                   U R                   R                  SXS9  U R                   R                  SXS9  U R                  n[        5       nSnUR                  [
        R                  L a   [        U5      nUR                  S5        GOUR                  [
        R                  L a   [        U5      n[        U[        5      (       a/  UR                  (       a  UR                  nUR                  S5        OUR                  (       a#  UR                  S5        UR                  S5        OmUR                  S5        O[UR                  [
        R                   L a>  UR"                  S:w  a  g [%        U5      nUR&                  nUc  gUR                  S5        U(       d  g[)        UR                  U R                  S	S
9n U R+                  [-        U5      SS9nU GH  nSU;   a  M  XR2                  ;   a  [        UR&                  [4        R6                  [4        R8                  45      (       a  MV  UR2                  U   n	[;        [<        [>        5         XIR@                  -  nU	RB                  (       a  U(       d  U	RB                  n[;        [0        5         U	RD                  (       a  U(       d  U	RD                  nSSS5        SSS5        [G        UUUURH                  URJ                  UU RL                  (       + SS9n
U
=R@                  U-  sl         URO                  X5        US:X  av  [;        [0        5         [Q        XR                  5       Vs/ s H8  n[        U[R        5      (       a  UO[U        UR"                  UR&                  S9PM:     snUl+        SSS5        U R                   R                  SXU S9  U R                   R                  SXU S9  GM     g! [         a     gf = f! [         a     gf = f! [         a     gf = f! [.        [0        4 a    Sn GNHf = f! , (       d  f       GNq= f! , (       d  f       GN{= fs  snf ! , (       d  f       N= f)zyHandle an attribute (assignment) node.

Parameters:
    node: The node to visit.
    annotation: A potential annotation.
r   r   on_attribute_nodeNzmodule-attributezclass-attributezinstance-attributerI   Fr   TrO   r   r   r   __all__r   r   r   r   r   ),r6   r   rJ   r   rd   r   r   r   KeyErrorr   r   r   r   is_classvarslicerW   FUNCTIONrg   r   r7   r   rX   r   r   r   r   ry   IfExceptHandlerr   r   r   r   r   r   r!   rR   r   rK   r   r   rx   r   exports)rL   rV   r   r7   r   r   rW   r   rg   existing_memberr   s              rB   handle_attributeVisitor.handle_attributee  s    	YT>0tH;;$++%!$ JJ)*[[DJJ&!$ *d++
0F0F'--


,-

,-

/0 

/0[[DMM){{j(*40 ]]F~JJ+,#DJJt||SXY	++HTN4+HI D d{~~% dkkCFFC4E4E+FGG"(.."624DE444F&00$3$=$=	!.1*55j)8)C)CJ 2 F "%{{//# ---!	I &d.y n- %4D,,$G&$GD !+4 5 58DIIVZVaVa;bb$G&FN .
 OO  TPT UOO  !8t[_ `U W    (   ~. 	I	* 21 FE0& .-s   +O 'O+ +O; ?P AP6%P$:P68Q?QQ
O('O(+
O87O8;
PPP! P!$
P3.P66
Q	Q
Q	c                &    U R                  U5        g)zDVisit an assignment node.

Parameters:
    node: The node to visit.
N)r  r   s     rB   visit_assignVisitor.visit_assign  s     	d#rD   c                `    U R                  U[        UR                  U R                  S95        g)zNVisit an annotated assignment node.

Parameters:
    node: The node to visit.
r   N)r  r   r   rJ   r   s     rB   visit_annassignVisitor.visit_annassign  s'     	d$7PTP\P\$]^rD   c                (   [        [        5         UR                  R                  S:H  =(       aA    U R                  R
                  =(       a$    [        UR                  [        R                  5      nU(       a|  U R                  R                  R                  [        XR                  5       Vs/ s H8  n[        U[        5      (       a  UO[        UR                  UR                   S9PM:     sn5        SSS5        gs  snf ! , (       d  f       g= f)zNVisit an augmented assignment node.

Parameters:
    node: The node to visit.
r  r   N)r   r   targetr   rJ   	is_moduler   opry   Addr  r   r   rx   r   rg   r7   )rL   rV   all_augmentrg   s       rB   visit_augassignVisitor.visit_augassign  s     n%)+ 1LL**1tww0 
 $$++ %4D,,$G$GD !+4 5 58DIIVZVaVa;bb$G &% &%s   BD/?C>
.D>D
Dc                   [        UR                  [        R                  [        R                  45      (       a5  [        UR                  U R                  SS9n[        U5      S;   a  SU l	        U R                  U5        SU l	        g)z>Visit an "if" node.

Parameters:
    node: The node to visit.
N)r7   	log_level>   r   typing.TYPE_CHECKINGTF)r   r7   ry   r&   ClassDefr   testrJ   rx   rK   r   )rL   rV   	conditions      rB   visit_ifVisitor.visit_if  sd     dkkCJJ#=>>*499T\\UYZI9~!JJ$(!4 !rD   )rA   rJ   r9   r8   r6   r@   r:   r?   r;   r7   rK   )NNNNN)r?   rx   r@   r,   rA   rx   r6   r   r7   Module | Noner8   DocstringStyle | Parser | Noner9   DocstringOptions | Noner:   LinesCollection | Noner;   ModulesCollection | NonereturnNone)rV   ast.ASTrP   boolr8  zDocstring | None)rV   zEast.FunctionDef | ast.AsyncFunctionDef | ast.ClassDef | ast.TypeAliasr^   
str | Noner8  list[TypeParameter])rV   z5ast.FunctionDef | ast.AsyncFunctionDef | ast.ClassDefr^   r<  r8  r=  )r8  r&   )rV   r:  r8  r9  )rV   z
ast.Moduler8  r9  )rV   zast.ClassDefr8  r9  )r   list[Decorator]r8  zset[str])r   r>  r   r%   r8  r<  rn   )rV   z&ast.AsyncFunctionDef | ast.FunctionDefr   z
set | Noner8  r9  )rV   zast.FunctionDefr8  r9  )rV   zast.AsyncFunctionDefr8  r9  )rV   zast.TypeAliasr8  r9  )rV   z
ast.Importr8  r9  )rV   zast.ImportFromr8  r9  )rV   zast.Assign | ast.AnnAssignr   zstr | Expr | Noner8  r9  )rV   z
ast.Assignr8  r9  )rV   zast.AnnAssignr8  r9  )rV   zast.AugAssignr8  r9  )rV   zast.Ifr8  r9  )(__name__
__module____qualname____firstlineno____doc__rI   rX   sysversion_infory   TypeVarr   type_varTypeVarTupletype_var_tuple	ParamSpec
param_specr\   __annotations__rk   r>   rC   r   r   r   r   r   r   r   r   r   r  r  r  r  r!  r)  r1  __static_attributes____classcell__)rM   s   @rB   r=   r=      s    !%;?59377;:?:? :? 	:?
 :? :? 9:? 3:? 1:? 5:? 
:? :?x ?D 

 7"KK*33/>>MM,77Z
 "V 	
 !%		W	 		
 !	2 !%		G	 		
 !	#KU.3+j$0h/T#5 7""	iHZ*"^N )-ia(ia &ia 
	iaV$_*" "rD   r=   )r?   rx   r@   r,   rA   rx   r6   zExtensions | Noner7   r3  r8   r4  r9   r5  r:   r6  r;   r7  r8  r&   )E
__future__r   ry   rD  
contextlibr   typingr   r   )griffe._internal.agents.nodes.assignmentsr   r   !griffe._internal.agents.nodes.astr	   r
   r   (griffe._internal.agents.nodes.docstringsr   %griffe._internal.agents.nodes.exportsr   %griffe._internal.agents.nodes.importsr   (griffe._internal.agents.nodes.parametersr   griffe._internal.collectionsr   r   griffe._internal.enumerationsr   r   griffe._internal.exceptionsr   r   r   griffe._internal.expressionsr   r   r   r   r   r   r    griffe._internal.extensions.baser   r   griffe._internal.modelsr    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   pathlibr,   #griffe._internal.docstrings.parsersr-   r.   r/   r   r   r   rC   r=   ro   rD   rB   <module>r`     sW   # 
 
  ' S 
 C A F C K A ] ]   I    T4 "  
 / ,, z"*J!7(0*'=$:)]  8$&BC %) 7;15/337000 0
 "0 0 50 /0 -0 10 0f}	" }	"rD   