o
    UTi\                     @   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eeZ	dd Z
G dd dZedZedZG dd	 d	ejZG d
d dZdd ZG dd deZdS ))AutoCastableAutoCloseableDEBUG_AUTOCLOSELIBRARY_AVAILABLE_safe_debug    Nc                 C   sD   zt tj | d   W d S  ty!   t| tjd Y d S w )N
)file)oswritesysstderrfilenoencode	Exceptionprint)msg r   S/var/www/html/RAG/RAG_venv/lib/python3.10/site-packages/pypdfium2/internal/bases.pyr      s
    r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )_Mutablec                 C   s
   || _ d S Nvalue)selfr   r   r   r   __init__      
z_Mutable.__init__c                 C   s   d| j  dS )Nz	_Mutable()r   r   r   r   r   __repr__   s   z_Mutable.__repr__c                 C   s
   t | jS r   )boolr   r   r   r   r   __bool__    r   z_Mutable.__bool__N)__name__
__module____qualname__r   r   r   r   r   r   r   r      s    r   Fc                   @   s   e Zd ZdZdZdZdZdS )_STATEr         N)r    r!   r"   INVALIDAUTOEXPLICITBYPARENTr   r   r   r   r#   (   s
    r#   c                   @   s   e Zd Zedd ZdS )r   c                 C   s   | j S r   )rawr   r   r   r   _as_parameter_1   s   zAutoCastable._as_parameter_N)r    r!   r"   propertyr,   r   r   r   r   r   /   s    r   c                 C   sn   t rtd|jj  d|  tstd d S |jtjks J |d u s*| r*J | |g|R i | d S )NzClose (z) zR-> Cannot close object; pdfium library is destroyed. This may cause a memory leak.)	r   r   r   namelowerr   r#   r'   _tree_closed)
close_funcr+   obj_reprstateparentargskwargsr   r   r   _close_template9   s   r7   c                   @   sN   e Zd Zddd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_freec                O   sp   t | drJ || _|d u r| n|| _|| _|| _ttj| _t	r%t
 nd | _d | _g | _|r6|   d S d S )N
_finalizer)hasattr_close_func_obj_ex_args
_ex_kwargsr   r#   r(   _autoclose_stater   uuiduuid4_uuidr:   _kids_attach_finalizer)r   r1   r8   r9   r5   r6   r   r   r   r   I   s   zAutoCloseable.__init__c                 C   s>   | j d u rtt| n| j jd d }dt| j d| dS )N   < >)rC   hexidtyper    )r   
identifierr   r   r   r   [   s   &zAutoCloseable.__repr__c                 C   s@   | j d u sJ t| jt| j| jt| | j| j	| j
| j	| _ d S r   )r:   weakreffinalizer=   r7   r<   r+   reprr@   r4   r>   r?   r   r   r   r   rE   `   s   2zAutoCloseable._attach_finalizerc                 C   s   | j   d | _ d S r   )r:   detachr   r   r   r   _detach_finalizere   s   

zAutoCloseable._detach_finalizerc                 C   s*   | j d u rdS | jd kr| j rdS dS )NTF)r+   r4   r0   r   r   r   r   r0   i   s
   
zAutoCloseable._tree_closedc                 C   s   | j t| d S r   )rD   appendrN   ref)r   kr   r   r   _add_kidp   s   zAutoCloseable._add_kidFc                 C   s   | j sdS | jsd | _ dS | jD ]}| }|r |j r |jdd q|r&tjntj| j_|   tj	| j_d | _ d | _| j
  dS )NFT)
_by_parent)r+   r:   rD   closer#   r*   r)   r@   r   r'   clear)r   rW   k_refrU   r   r   r   rX   t   s"   



zAutoCloseable.close)F)
r    r!   r"   r   r   rE   rR   r0   rV   rX   r   r   r   r   r   G   s    r   )__all__r	   r   enumrA   rN   logging	getLoggerr    loggerr   r   r   r   Enumr#   r   r7   r   r   r   r   r   <module>   s    

