o
    fi                     @   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	e
dZe
dZdZdZdZdZG dd dZd	d
 ZG dd deZdS ))AutoCastableAutoCloseableDEBUG_AUTOCLOSELIBRARY_AVAILABLE    NF      c                   @   s   e Zd Zedd ZdS )r   c                 C   s   | j S N)rawself r   Q/home/ubuntu/webapp/venv/lib/python3.10/site-packages/pypdfium2/internal/bases.py_as_parameter_   s   zAutoCastable._as_parameter_N)__name__
__module____qualname__propertyr   r   r   r   r   r      s    r   c                 O   s   t rtdtdtdi|j }ttj	 d| d| d
  ts.ttj	 d
  d S |d u s8| r8J | |g|R i | d S )Nautoexplicitz	by parentzClose (z) 
zL-> Cannot close object, library is destroyed. This may cause a memory leak!
)r   
STATE_AUTOSTATE_EXPLICITSTATE_BYPARENTvalueoswritesysstderrfilenoencoder   _tree_closed)
close_funcr
   obj_reprstateparentargskwargsdescr   r   r   _close_template    s   $r)   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   sh   t | drJ || _|d u r| n|| _t | _|| _|| _t	t
| _d | _g | _|r2|   d S d S )N
_finalizer)hasattr_close_func_objuuiduuid4_uuid_ex_args
_ex_kwargsctypesc_int8r   _autoclose_stater,   _kids_attach_finalizer)r   r"   r*   r+   r&   r'   r   r   r   __init__1   s   
zAutoCloseable.__init__c                 C   s&   dt | j dt| jd d  dS )N<z uuid:   >)typer   strr2   r   r   r   r   __repr__C   s   &zAutoCloseable.__repr__c                 C   sJ   | j d u sJ tj| jt| j| jt| | j| j	g| j
R i | j| _ d S r	   )r,   weakreffinalizer/   r)   r.   r
   reprr7   r%   r3   r4   r   r   r   r   r9   G   s   <zAutoCloseable._attach_finalizerc                 C   s   | j   d | _ d S r	   )r,   detachr   r   r   r   _detach_finalizerL   s   

zAutoCloseable._detach_finalizerc                 C   s*   | j d u rdS | jd ur| j rdS dS )NTF)r
   r%   r!   r   r   r   r   r!   P   s
   
zAutoCloseable._tree_closedc                 C   s   | j t| d S r	   )r8   appendrA   ref)r   kr   r   r   _add_kidW   s   zAutoCloseable._add_kidFc                 C   sr   | j r| jsdS | jD ]}| }|r|j r|jdd q|r tnt| j_|   t| j_d | _ d | _| j	  dS )NFT)
_by_parent)
r
   r,   r8   closer   r   r7   r   STATE_INVALIDclear)r   rJ   k_refrH   r   r   r   rK   [   s   


zAutoCloseable.close)F)
r   r   r   r:   r@   r9   rE   r!   rI   rK   r   r   r   r   r   /   s    r   )__all__r   r   r5   rA   loggingr0   	getLoggerr   loggerc_boolr   r   rL   r   r   r   r   r)   r   r   r   r   r   <module>   s"   


