
    i1                    T   % S SK Jr  S SK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Jr  S SKJr  S SKJr  \
(       a
  S SKrS SKJr  S	\S
'    S SKr\\4r\R.                   V s1 s H  o R1                  S5      iM     sn r1 SkrSS jr " S S5      rg! \ a    \4r NJf = fs  sn f )    )annotationsN)cached_property)GetSetDescriptorType
ModuleType)TYPE_CHECKINGAnyClassVar)
ObjectKind)logger)Sequenceztuple[types.ModuleType, ...]_TYPING_MODULES_>   znumpy.core._multiarray_umathznumpy.core.multiarrayosntr   posixc                   U R                  S5       Vs/ s H  o"R                  S5      PM     snUR                  S5       Vs/ s H  o"R                  S5      PM     sn:H  $ s  snf s  snf )N.r   )splitlstrip)abcpns      _/home/james-whalen/.local/lib/python3.13/site-packages/griffe/_internal/agents/nodes/runtime.py_same_componentsr   $   sT    '(wws|4|JJsO|4TUT[T[\_T`8aT`SCT`8aaa48as   A"A'c                     \ rS rSr% Sr1 SkrS\S'    S!S"S jjrS#S jr\	S#S	 j5       r
\	S$S
 j5       r\	S%S j5       r\	S&S j5       r\S'S j5       r\S(S j5       r\S(S j5       r\S(S j5       r\S(S j5       r\S(S j5       r\S(S j5       r\S(S j5       r\S(S j5       r\S(S j5       r\S(S j5       r\S(S j5       r\S(S j5       r\S(S j5       r\S(S j5       r\S(S j5       r\S)S j5       rS*S jr \S%S j5       r!S r"g)+
ObjectNode(   a  Helper class to represent an object tree.

It's not really a tree but more a backward-linked list:
each node has a reference to its parent, but not to its child (for simplicity purposes and to avoid bugs).

Each node stores an object, its name, and a reference to its parent node.
>   __spec__
__loader____builtins__zClassVar[set[str]]exclude_specialsNc                    [         R                  " U5      n[        U[        5      (       a  SnUR                  nOSnXl         X l	         X0l
         XPl        g! [         a!  n[        R                  " SX$5         SnANhSnAff = f)zInitialize the object.

Parameters:
    obj: A Python object.
    name: The object's name.
    parent: The object's parent node.
zCould not unwrap %s: %rNTF)inspectunwrap	Exceptionr   debug
isinstancer   funcobjnameparentis_cached_property)selfr,   r-   r.   errorr/   s         r   __init__ObjectNode.__init__4   s    	A..%C c?++!%((C!&'	')/(:>+  	A
 LL2D@@	As   A 
B$B  Bc                $    SU R                   < S3$ )NzObjectNode(name=))r-   r0   s    r   __repr__ObjectNode.__repr__V   s    !$))a00    c                ~    U R                   c  U R                  $ U R                   R                   SU R                   3$ )zThe object's (Python) path.r   )r.   r-   pathr6   s    r   r;   ObjectNode.pathY   s8     ;;99++""#1TYYK00r9   c                    U R                   (       a  U $ U R                  b  U R                  R                  $ [        SU R                   S35      e)z0The object's module, fetched from the node tree.zObject node z does not have a parent module)	is_moduler.   module
ValueErrorr;   r6   s    r   r?   ObjectNode.module`   sC     >>K;;";;%%%<		{2PQRRr9   c                    U R                   R                  n[        U[        5      (       a9  [        R
                  " SU R                  5        [        US[        USS5      5      $ [        U[        5      (       a  U$ [        R
                  " SU R                  [        [        U5      S[        [        U5      5      5      5        g! [         a     [        R                  " U R                   5      =(       d    U R                  R                   nO! [         a      gf = f UR                  R                   s $ ! [         a    [        USS5      s s $ f = ff = f)zThe object's module path.zObject %s has its `__module__` attribute set to a module object: it must be a string instead (the module fully qualified name). Please report to the maintainers of this library.__qualname____name__NzObject %s has its `__module__` attribute set to a %s object: it must be a string instead (the module fully qualified name). Please report to the maintainers of this library.)r,   
__module__r*   r   r   r)   r;   getattrstrtypeAttributeErrorr&   	getmoduler?   r@   r!   r-   )r0   r?   s     r   module_pathObjectNode.module_pathi   s"   	XX((F &*--H II	 v~wvzSW7XYY&#&&LLD 		Vj#d6l2CD ;  	9 **4884G 9+++! 9vz4889	9sS   C 
E=DE
DEDE!D96E9EEEEc                   U R                   (       a  [        R                  $ U R                  (       a  [        R                  $ U R
                  (       a  [        R                  $ U R                  (       a  [        R                  $ U R                  (       a  [        R                  $ U R                  (       a  [        R                  $ U R                  (       a  [        R                  $ U R                  (       a  [        R                   $ U R"                  (       a  [        R$                  $ U R&                  (       a  [        R(                  $ U R*                  (       a  [        R,                  $ U R.                  (       a  [        R0                  $ U R2                  (       a  [        R4                  $ U R6                  (       a  [        R8                  $ [        R:                  $ )zThe kind of this node.)r>   r
   MODULEis_classCLASSis_staticmethodSTATICMETHODis_classmethodCLASSMETHODr/   CACHED_PROPERTY	is_methodMETHODis_builtin_methodBUILTIN_METHODis_coroutine	COROUTINEis_builtin_functionBUILTIN_FUNCTIONis_method_descriptorMETHOD_DESCRIPTORis_functionFUNCTIONis_getset_descriptorGETSET_DESCRIPTORis_propertyPROPERTYis_type_alias
TYPE_ALIAS	ATTRIBUTEr6   s    r   kindObjectNode.kind   s0    >>$$$==###***)))""--->>$$$!!,,,'''##...$$///&&&$$///&&&(((###r9   c           	         / n[         R                  " U R                  5       H6  u  p#U R                  X#5      (       d  M  UR	                  [        X2U S95        M8     U$ )zThe children of this node.)r.   )r&   
getmembersr,   _pick_memberappendr   )r0   childrenr-   members       r   ro   ObjectNode.children   sO     #..txx8LD  ..
6 EF 9 r9   c                B    [         R                  " U R                  5      $ )z'Whether this node's object is a module.)r&   ismoduler,   r6   s    r   r>   ObjectNode.is_module   s     ))r9   c                B    [         R                  " U R                  5      $ )z&Whether this node's object is a class.)r&   isclassr,   r6   s    r   rO   ObjectNode.is_class   s     txx((r9   c                    [         R                  " U R                  5      =(       d-    [        U R                  5      =(       a    U R                  (       + $ )z)Whether this node's object is a function.)r&   
isfunctionr,   callablerO   r6   s    r   r`   ObjectNode.is_function   s3     !!$((+Y0B0X4==GXYr9   c                V    [        U R                  [        S [         5       5      5      $ )z+Whether this node's object is a type alias.c              3  `   #    U  H$  n[        US 5      (       d  M  UR                  v   M&     g7f)TypeAliasTypeN)hasattrr~   ).0r?   s     r   	<genexpr>+ObjectNode.is_type_alias.<locals>.<genexpr>   s$     i_6PVXgHh&&&&_s   ..)r*   r,   tupler   r6   s    r   rf   ObjectNode.is_type_alias   s&     HHi_ii
 	
r9   c                B    [         R                  " U R                  5      $ )z1Whether this node's object is a builtin function.)r&   	isbuiltinr,   r6   s    r   r\   ObjectNode.is_builtin_function   s       **r9   c                B    [         R                  " U R                  5      $ )z*Whether this node's object is a coroutine.)r&   iscoroutinefunctionr,   r6   s    r   rZ   ObjectNode.is_coroutine   s     **48844r9   c                6    [        U R                  [        5      $ )z3Whether this node's object is a get/set descriptor.)r*   r,   r   r6   s    r   rb   ObjectNode.is_getset_descriptor   s     $(($899r9   c                \    [        U R                  [        5      =(       d    U R                  $ )z)Whether this node's object is a property.)r*   r,   propertyr/   r6   s    r   rd   ObjectNode.is_property   s      $((H-H1H1HHr9   c                f    [        U R                  =(       a    U R                  R                  5      $ )z4Whether the object of this node's parent is a class.)boolr.   rO   r6   s    r   parent_is_classObjectNode.parent_is_class   s"     DKK8DKK$8$899r9   c                l    [        S 5      nU R                  =(       a    [        U R                  U5      $ )z'Whether this node's object is a method.c                     g N r   r9   r   <lambda>&ObjectNode.is_method.<locals>.<lambda>   s    Tr9   )rH   r   r*   r,   )r0   function_types     r   rV   ObjectNode.is_method   s*     \*##K
488](KKr9   c                B    [         R                  " U R                  5      $ )zWhether this node's object is a method descriptor.

Built-in methods (e.g. those implemented in C/Rust) are often
method descriptors, rather than normal methods.
)r&   ismethoddescriptorr,   r6   s    r   r^   ObjectNode.is_method_descriptor   s     ))$((33r9   c                @    U R                   =(       a    U R                  $ )z/Whether this node's object is a builtin method.)r\   r   r6   s    r   rX   ObjectNode.is_builtin_method   s     ''@D,@,@@r9   c                    U R                   c  g U R                   R                  R                  R                  U R                  S5      nU R                  =(       a    [        U[        5      $ ! [
         a     gf = f)z-Whether this node's object is a staticmethod.NF)	r.   r,   __dict__getr-   rI   r   r*   staticmethodr0   self_from_parents     r   rQ   ObjectNode.is_staticmethod   sj     ;;	#{{77;;DIItL ##R
3C\(RR  		   :A- -
A:9A:c                    U R                   c  g U R                   R                  R                  R                  U R                  S5      nU R                  =(       a    [        U[        5      $ ! [
         a     gf = f)z,Whether this node's object is a classmethod.NF)	r.   r,   r   r   r-   rI   r   r*   classmethodr   s     r   rS   ObjectNode.is_classmethod  sj     ;;	#{{77;;DIItL ##Q
3C[(QQ  		r   c                :    U R                   [        R                  L $ )z+Whether this node's object is an attribute.)ri   r
   rh   r6   s    r   is_attributeObjectNode.is_attribute  s     yyJ0000r9   c                    U R                   c  [        U R                  5      1$ [        U R                  5      1U R                   R                  -  $ r   )r.   idr,   _idsr6   s    r   r   ObjectNode._ids  s;    ;;txxL>!488~ 0 000r9   c                    XR                   ;  =(       aU    U[        L=(       aF    U[        L=(       a7    [        U5      U R                  ;  =(       a    U[        U R                  5      ;   $ r   )r$   rH   objectr   r   varsr,   )r0   r-   rp   s      r   rm   ObjectNode._pick_member  s[    --- 'd"'f$' 6
$))+' TXX&	
r9   c                   U R                   c  gU R                  (       a  gU R                  nU(       d  gU R                   R                  nU(       d  gX!4[        ;   a  g[	        X!5      (       a  gUR                  S5      [        ;   a  UR                  S5      nU R                  (       a  U$ [        U R                  SU R                  [        U R                  R                  5      S-   S 5      nU SU 3$ )z?Alias target path of this node, if the node should be an alias.Nr   rC      r   )r.   r   rK   _cyclic_relationshipsr   r   _builtin_module_namesr>   rF   r,   r;   lenr?   )r0   child_module_pathparent_module_path
child_names       r   alias_target_pathObjectNode.alias_target_path&  s     ;;  !,,  "[[44! 26KK .BB ##C(,AA 1 8 8 = >>$$ TXX~tyyT[[EUEUAVYZAZA\7]^
#$Aj\22r9   )r/   r-   r,   r.   r   )r,   r   r-   rG   r.   zObjectNode | NonereturnNone)r   rG   )r   r   )r   z
str | None)r   r
   )r   zSequence[ObjectNode])r   r   )r   zset[int])r-   rG   rp   r   r   r   )#rD   rE   rC   __firstlineno____doc__r$   __annotations__r2   r7   r   r;   r?   rK   ri   r   ro   r>   rO   r`   rf   r\   rZ   rb   rd   r   rV   r^   rX   rQ   rS   r   r   rm   r   __static_attributes__r   r9   r   r   r   (   s    ,V(UL ?D1 1 1 S S ! !F $ $@   * * ) ) Z Z
 
 
 + + 5 5 : : I I : : L L
 4 4 A A S S R R 1 1 1 1

 .3 .3r9   r   )r   rG   r   rG   r   r   )
__future__r   r&   systyping	functoolsr   typesr   r   r   r   r	   griffe._internal.enumerationsr
   griffe._internal.loggerr   collections.abcr   r   typing_extensionsr   ImportErrorbuiltin_module_namesr   r   r   r   r   )r   s   0r   <module>r      s    #  
  % 2 / / 4 *(- -2 01O 140H0HI0H1#0HI  bm3 m3%   iO  Js   B %B%	B"!B"