o
    f                     @   sH   d Z ddlZddlZddlmZ ddlmZ e	dZ
G dd dZdS ))PdfUnspHandler    N	pypdfium2c                   @   s>   e Zd ZdZdd Zdd ZdddZd	d
 Zedd Z	dS )r   a  
    Unsupported feature handler helper class.
    
    Attributes:
        handlers (dict[str, typing.Callable]):
            A dictionary of named handler functions to be called with an unsupported code (:attr:`FPDF_UNSP_*`) when PDFium detects an unsupported feature.
    c                 C   s   i | _ d | _d S N)handlers_configself r	   W/home/ubuntu/webapp/venv/lib/python3.10/site-packages/pypdfium2/_helpers/unsupported.py__init__   s   
zPdfUnspHandler.__init__c                 C   s   | j  D ]}|| qd S r   )r   values)r   _typehandlerr	   r	   r
   __call__   s   
zPdfUnspHandler.__call__Tc                 C   sN   t jdd| _t| jd|  t | j t| j |r%t	j
| jd< dS dS )a  
        Attach the handler to PDFium, and register an exit function to keep the object alive for the rest of the session.
        
        Parameters:
            add_default (bool):
                If True, add a default callback that will log unsupported features as warning.
           )versionFSDK_UnSupport_HandlerdefaultN)pdfium_cUNSUPPORT_INFOr   pdfium_iset_callbackFSDK_SetUnSpObjProcessHandleratexitregister_keepr   _defaultr   )r   add_defaultr	   r	   r
   setup!   s   	zPdfUnspHandler.setupc                 C   s   t | j t | j d S r   )idr   r   r   r	   r	   r
   r   4   s   
zPdfUnspHandler._keepc                 C   s   t dtj|   d S )NzUnsupported PDF feature: )
lib_loggerwarningr   UnsupportedInfoToStrget)r   r	   r	   r
   r   9   s   zPdfUnspHandler._defaultN)T)
__name__
__module____qualname____doc__r   r   r   r   staticmethodr   r	   r	   r	   r
   r      s    
r   )__all__r   loggingpypdfium2.rawrawr   pypdfium2.internalinternalr   	getLoggerr!   r   r	   r	   r	   r
   <module>   s   
