ó
    …~is  ã                   ó`   • / S Qr SSKrSSKrSSKJr  SSKJr  S
S jrSS jr	SS jr
SS	 jr\rg))ÚparentÚ	referenceÚatÚparentsÚchildrené    Né   )Ú_proxy_helper)Ú_locate_objectc                 óL   • Sn[        XX25      nUR                  5       nXPL a  gU$ )al  
>>> listiter = iter([4,5,6,7])
>>> obj = parent(listiter, list)
>>> obj == [4,5,6,7]  # actually 'is', but don't have handle any longer
True

NOTE: objtype can be a single type (e.g. int or list) or a tuple of types.

WARNING: if obj is a sequence (e.g. list), may produce unexpected results.
Parent finds *one* parent (e.g. the last member of the sequence).
    r   N)r   Úpop)ÚobjÚobjtypeÚignoreÚdepthÚchainr   s         ÚJ/home/mande/repo/quber/.venv/lib/python3.13/site-packages/dill/pointers.pyr   r      s-   € ð €EÜ�C %Ó0€EØ�Y‰Y‹[€FØ‚}ØØ€Mó    c                 ó–   ^• [         R                  nU4S jn[        US5      (       d  U4OUnS U 5       n[        XXB5      SSS2   nU$ )zêFind the chain of referents for obj. Chain will end with obj.

objtype: an object type or tuple of types to search for
depth: search depth (e.g. depth=2 is 'grandparents')
ignore: an object or tuple of objects to ignore in the search
c                 ó   >• [        U T5      $ ©N©Ú
isinstance©Úxr   s    €r   Ú<lambda>Úparents.<locals>.<lambda>-   ó   ø€ œ* Q¨Ô0r   Ú__len__c              3   ó8   #   • U  H  n[        U5      v •  M     g 7fr   ©Úid©Ú.0r   s     r   Ú	<genexpr>Úparents.<locals>.<genexpr>0   ó   é € Ð(¢˜#Œb��gˆg¢ùó   ‚Néÿÿÿÿ)ÚgcÚget_referentsÚhasattrÚ
find_chain©r   r   r   r   Ú	edge_funcÚ	predicater   s    `     r   r   r   %   sN   ø€ ô × Ñ €IÜ0€Iä% f¨i×8Ñ8ˆf‰Y¸f€FÙ(¡Ó(€FÜ�s yÓ8¹¸2¸Ñ>€Eà€Lr   c                 óŒ   ^• [         R                  nU4S jn[        US5      (       d  U4OUnS U 5       n[        XXBU5      nU$ )aî  Find the chain of referrers for obj. Chain will start with obj.

objtype: an object type or tuple of types to search for
depth: search depth (e.g. depth=2 is 'grandchildren')
ignore: an object or tuple of objects to ignore in the search

NOTE: a common thing to ignore is all globals, 'ignore=(globals(),)'

NOTE: repeated calls may yield different results, as python stores
the last value in the special variable '_'; thus, it is often good
to execute something to replace '_' (e.g. >>> 1+1).
c                 ó   >• [        U T5      $ r   r   r   s    €r   r   Úchildren.<locals>.<lambda>D   r   r   r   c              3   ó8   #   • U  H  n[        U5      v •  M     g 7fr   r    r"   s     r   r$   Úchildren.<locals>.<genexpr>G   r&   r'   )r)   Úget_referrersr+   r,   r-   s    `     r   r   r   6   sG   ø€ ô × Ñ €IÜ0€Iä% f¨i×8Ñ8ˆf‰Y¸f€FÙ(¡Ó(€FÜ�s y¸Ó@€Eà€Lr   c                 ó>  • U /n[        U 5      S0n[        U 5      S 0n[        U5      nUR                  [        U5      5        UR                  [        U5      5        UR                  [        U5      5        UR                  [        U5      5        UR                  [        U5      5        UR                  [        [        R                  " 5       5      5        UR                  [        [        R                  " S5      5      5        [
        R                  " 5         U(       aú  UR                  S5      n	U" U	5      (       aD  U	/n
U[        U	5         b0  U[        U	5         n	U
R                  U	5        U[        U	5         b  M0  U
$ U[        U	5         nX³:  a|  U" U	5      nUR                  [        U5      5        U HT  n[        U5      U;   a  M  [        U5      U;  d  M%  US-   U[        U5      '   X—[        U5      '   UR                  U5        MV     U(       a  Mú  U /$ )Nr   r   )	r!   ÚsetÚaddÚsysÚ	_getframer)   Úcollectr   Úappend)r   r/   r.   Ú	max_depthÚextra_ignoreÚqueuer   r   r   Útargetr   ÚtdepthÚ	referrersÚsources                 r   r,   r,   S   s¨  € ØˆE€EÜ�‹W�aˆL€EÜ�‹g�tˆ_€FÜ�Ó€FØ
‡J�JŒr�,ÓÔ Ø
‡J�JŒr�%‹yÔØ
‡J�JŒr�%‹yÔØ
‡J�JŒr�&‹zÔØ
‡J�JŒr�&‹zÔØ
‡J�JŒr”#—-’-“/Ó"Ô#Ø
‡J�JŒr”#—-’- Ó"Ó#Ô$Ü‡J‚J„LÞ
Ø—‘˜1“ˆÙ�V×ÑØ�HˆEØœ˜F›Ñ$Ñ0Ø¤ 6£
Ñ+�Ø—‘˜VÔ$ð œ˜F›Ñ$Ó0ð ˆLØ”r˜&“zÑ"ˆØÓÙ! &Ó)ˆIØ�J‰J”r˜)“}Ô%Û#�Ü�f“: Ó'ÙÜ�f“: UÕ*Ø(.°©
�Eœ"˜V›*Ñ%Ø)/œ2˜f›:Ñ&Ø—L‘L Ö(ñ $÷ ˆ%ð& ˆ5€Lr   )© )r   rD   )é   rD   )Ú__all__r)   r9   Ú_dillr	   r   r
   r   r   r   r   r,   Ú	refobjectrD   r   r   Ú<module>rI      s4   ðò ?€ã 	Û 
å -Ý 'ôô(ô"ô: ðH �	r   