
    Ei                     b   d Z ddlZddlZddlZddlZddlZddlZddlmZ ddl	Z	ddl
mZ ddl	mZ  ej                  e      Z e	j                   d      Z ee      Zej(                  fdZd Z G d	 d
ej.                        Z G d d      Z G d d      Zd Z G d d      Z G d de      Zy))AutoCastableAutoCloseableObjectTrackerLIBRARY_AVAILABLEDEBUG_AUTOCLOSE_debug_close_warn_close    N)defaultdict)cached_property)r   Fc                    |t         j                  k  ry 	 t        j                  t        j
                  j                         | dz   j                                y # t        $ r t        | t        j
                         Y y w xY w)N
)file)
r   valueoswritesysstderrfilenoencode	Exceptionprint)msgprios     P/home/agent/.friday_env/lib/python3.12/site-packages/pypdfium2/internal/bases.pyr   r      s]    o###$
""$s4x&7&7&9: $c

#$s   AA $B Bc                 8    t        | t        j                         y N)r   loggingWARNING)r   s    r   r   r       s    goo&    c                       e Zd ZdZdZdZdZy)_STATEr	         N)__name__
__module____qualname__INVALIDAUTOEXPLICITBYPARENT r   r   r!   r!   $   s    GDHHr   r!   c                       e Zd ZdZd Zy)_FinalizerInfo)
close_funcargskwargstrackedstatec                 h    || _         ||c| _        | _        || _        t        j
                  | _        y r   )r/   r0   r1   r2   r!   r)   r3   )selfr/   r0   r1   r2   s        r   __init__z_FinalizerInfo.__init__6   s+    $!%v	4;[[
r   Nr%   r&   r'   	__slots__r6   r,   r   r   r.   r.   4   s    DI!r   r.   c                       e Zd ZdZd Zy)_FinalizerOwnerrawparentwreftypereprc                 N    ||c| _         | _        |||c| _        | _        | _        y r   r;   )r5   r<   r=   r>   r?   r@   s         r   r6   z_FinalizerOwner.__init__>   s(     #V$+*.d'	49dir   Nr7   r,   r   r   r:   r:   <   s    9I;r   r:   c                    t        d| j                  j                  j                          d|j                          t
        st        d|j                   d       y | j                  t        j                  k7  sJ |j                  }||j                         rJ | j                  rm|j                  |j                  v s0J |j                   d|j                   d| d|j                          |j                  j                  |j                          | j                  |j                   g| j"                  i | j$                   t&        |j(                     j                  |j                         y )NzClose (z) z-> Cannot close z<; pdfium library is destroyed. This may cause a memory leak. z, )r   r3   namelowerr@   r   r   r!   r(   r=   _tree_closedr2   r>   _kidsremover/   r<   r0   r1   r   r?   )infoownerr=   s      r   _close_templaterK   C   s"    74::??00232ejj\BC&uzzl2nop::'''\\F&&(((<<::-d%**Quzzl"VHTUV\VbVbUc/dd-LL

+DOOEII9		9T[[9%**$$UZZ0r   c                   ,    e Zd Zed        Zed        Zy)r   c                     | j                   S r   )r<   r5   s    r   _as_parameter_zAutoCastable._as_parameter_]   s    
 xxr   c                 ,    t        j                  |       S r   )weakrefrefrN   s    r   _wref_to_selfzAutoCastable._wref_to_selfd   s    {{4  r   N)r%   r&   r'   propertyrO   r   rS   r,   r   r   r   r   [   s(      ! !r   r   c                   b    e Zd ZdddddZed        Zed        Zd Zd Zd	 Z	d
 Z
d ZddZy)r   NT)obj
needs_freer2   c                    t        | d      rJ t        ||||      | _        || n|| _        d | _        |r| j                          y y )N
_finalizer)hasattrr.   	_fin_info_fin_objrY   _attach_finalizer)r5   r/   rV   rW   r2   r0   r1   s          r   r6   zAutoCloseable.__init__k   sN     4...'
D&'J #""$ r   c                     t               S r   )setrN   s    r   rG   zAutoCloseable._kidsw   s	    ur   c                 p    t         j                  t        j                  k  rt	        j
                         S d S r   )r   r   r   r   uuiduuid4rN   s    r   _uuidzAutoCloseable._uuid{   s$    .44wFtzz|PDPr   c                     | j                   t        t        |             n| j                   j                  d d }dt        |       j                   d| dS )N   <rC   >)rc   hexidr?   r%   )r5   
identifiers     r   __repr__zAutoCloseable.__repr__   sI    &*jj&8SD]djjnnSb>Q
4:&&'qA66r   c           	      P   | j                   J t        |       }t        | j                  | j                  | j
                  |t        |             }t        j                  | j                  t        | j                  |      | _         t        |   j                  | j
                         y r   )rY   r?   r:   r<   r=   rS   r@   rQ   finalizer\   rK   r[   r   add)r5   own_typerJ   s      r   r]   zAutoCloseable._attach_finalizer   s~    &&&:  $++t7I7I8UYZ^U_`!**4==/4>>[`ah##D$6$67r   c                     | j                   j                          d | _         t        t        |          j	                  | j
                         y r   )rY   detachr   r?   rH   rS   rN   s    r   _detach_finalizerzAutoCloseable._detach_finalizer   s6     d4j!((););<r   c                 r    | j                   y| j                  d k7  r| j                  j                         ryy)NTF)r<   r=   rF   rN   s    r   rF   zAutoCloseable._tree_closed   s0    88;;$4;;#;#;#=r   c                 N    | j                   j                  |j                         y r   )rG   rn   rS   )r5   kids     r   _add_kidzAutoCloseable._add_kid   s    

))+r   c                 Z   | j                   sy| j                  sd | _         yg }| j                  D ]*  } |       }|s|j                   s|j                  |       , |D ]  }|j	                  d        | j                  r<t
        j                  d| j                          | j                  j                          |rt        j                  nt        j                  | j                  _        | j                          t        j                  | j                  _        d | _         d | _        y)NFT)
_by_parentz-Some kids weakrefs have not been cleaned up: )r<   rY   rG   appendcloseloggerwarningclearr!   r+   r*   r[   r3   r(   )r5   rx   
need_closek_wrefks        r   rz   zAutoCloseable.close   s    xxDH 
jj 	%FAQUU!!!$		%
  	%AGGtG$	% ::NNJ4::,WXJJ2<v&//%~~r   )F)r%   r&   r'   r6   r   rG   rc   rk   r]   rr   rF   rv   rz   r,   r   r   r   r   i   sV    .2tT 
%   Q Q78=
,
r   r   )__all__r   r   enumra   rQ   r   collectionsr
   pypdfium2_cfgpypdfium2._lazyr   r   	getLoggerr%   r{   _Mutabler   r_   r   DEBUGr   r   Enumr!   r.   r:   rK   r   r   r,   r   r   <module>r      s    D 	 
     #  + )			8	$*M**51 C  #== $'dii  ! !; ;10! !P\ Pr   