o
    j                     @   s   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eZe	dZeeZejfddZd	d
 ZG dd dejZG dd dZG dd dZdd ZG dd dZG dd deZdS ))AutoCastableAutoCloseableObjectTrackerLIBRARY_AVAILABLEDEBUG_AUTOCLOSE_debug_close_warn_close    N)defaultdict)cached_property)r   Fc                 C   sR   |t jk rd S zttj | d   W d S  ty(   t	| tjd Y d S w )N
)file)
r   valueoswritesysstderrfilenoencode	Exceptionprint)msgprio r   ^/var/www/html/fyndo/pharma/fyndo/venv/lib/python3.10/site-packages/pypdfium2/internal/bases.pyr      s   
 r   c                 C   s   t | tj d S N)r   loggingWARNING)r   r   r   r   r       s   r   c                   @   s   e Zd ZdZdZdZdZdS )_STATEr         N)__name__
__module____qualname__INVALIDAUTOEXPLICITBYPARENTr   r   r   r   r   $   s
    r   c                   @      e Zd ZdZdd ZdS )_FinalizerInfo)
close_funcargskwargstrackedstatec                 C   s&   || _ ||| _| _|| _tj| _d S r   )r*   r+   r,   r-   r   r%   r.   )selfr*   r+   r,   r-   r   r   r   __init__6   s   z_FinalizerInfo.__init__Nr!   r"   r#   	__slots__r0   r   r   r   r   r)   4       r)   c                   @   r(   )_FinalizerOwnerrawparentwreftypereprc                 C   s(   ||| _ | _|||| _| _| _d S r   r5   )r/   r6   r7   r8   r9   r:   r   r   r   r0   >   s   z_FinalizerOwner.__init__Nr1   r   r   r   r   r4   <   r3   r4   c                 C   s   t d| jj  d|j  tstd|j d d S | jtjks$J |j	}|d urS|
 r1J | jrS|j|jv sLJ |j d|j d| d|j |j|j | j|jg| jR i | j t|j |j d S )NzClose (z) z-> Cannot close z<; pdfium library is destroyed. This may cause a memory leak. z, )r   r.   namelowerr:   r   r   r   r$   r7   _tree_closedr-   r8   _kidsremover*   r6   r+   r,   r   r9   )infoownerr7   r   r   r   _close_templateC   s   0rC   c                   @   s$   e Zd Zedd Zedd ZdS )r   c                 C   s   | j S r   )r6   r/   r   r   r   _as_parameter_]   s   zAutoCastable._as_parameter_c                 C   s
   t | S r   )weakrefrefrD   r   r   r   _wref_to_selfd   s   
zAutoCastable._wref_to_selfN)r!   r"   r#   propertyrE   r
   rH   r   r   r   r   r   [   s
    
r   c                   @   sh   e Zd ZddddddZedd Zedd	 Zd
d Zdd Zdd Z	dd Z
dd ZdddZdS )r   NT)obj
needs_freer-   c                O   sJ   t | drJ t||||| _|d u r| n|| _d | _|r#|   d S d S )N
_finalizer)hasattrr)   	_fin_info_fin_objrL   _attach_finalizer)r/   r*   rJ   rK   r-   r+   r,   r   r   r   r0   k   s   zAutoCloseable.__init__c                 C   s   t  S r   )setrD   r   r   r   r?   w   s   zAutoCloseable._kidsc                 C   s   t jtjk r
t S d S r   )r   r   r   r   uuiduuid4rD   r   r   r   _uuid{   s   zAutoCloseable._uuidc                 C   s>   | j d u rtt| n| j jd d }dt| j d| dS )N   <r;   >)rT   hexidr9   r!   )r/   
identifierr   r   r   __repr__   s   &zAutoCloseable.__repr__c                 C   sZ   | j d u sJ t| }t| j| j| j|t| }t| j	t
| j|| _ t| | j d S r   )rL   r9   r4   r6   r7   rH   r:   rF   finalizerO   rC   rN   r   add)r/   own_typerB   r   r   r   rP      s
   zAutoCloseable._attach_finalizerc                 C   s(   | j   d | _ tt|  | j d S r   )rL   detachr   r9   r@   rH   rD   r   r   r   _detach_finalizer   s   
zAutoCloseable._detach_finalizerc                 C   s*   | j d u rdS | jd kr| j rdS dS )NTF)r6   r7   r>   rD   r   r   r   r>      s
   
zAutoCloseable._tree_closedc                 C   s   | j |j d S r   )r?   r]   rH   )r/   kidr   r   r   _add_kid   s   zAutoCloseable._add_kidFc                 C   s   | j sdS | jsd | _ dS g }| jD ]}| }|r!|j r!|| q|D ]}|jdd q$| jr>td| j  | j  |rCtj	ntj
| j_|   tj| j_d | _ d | _dS )NFT)
_by_parentz-Some kids weakrefs have not been cleaned up: )r6   rL   r?   appendcloseloggerwarningclearr   r'   r&   rN   r.   r$   )r/   rc   
need_closek_wrefkr   r   r   re      s,   




zAutoCloseable.close)F)r!   r"   r#   r0   r
   r?   rT   r[   rP   r`   r>   rb   re   r   r   r   r   r   i   s    

	r   )__all__r   r   enumrR   rF   r   collectionsr	   pypdfium2_cfgpypdfium2._lazyr
   r   	getLoggerr!   rf   _Mutabler   rQ   r   DEBUGr   r   Enumr   r)   r4   rC   r   r   r   r   r   r   <module>   s,   

	