o
    i
                     @   s0   d Z ddlmZ ddlmZ G dd deZdS )zBase class for preprocessors    )Bool)NbConvertBasec                       sH   e Zd ZdZedjddZ fddZdd Zd	d
 Z	dd Z
  ZS )Preprocessora.  A configurable preprocessor

    Inherit from this class if you wish to have configurability for your
    preprocessor.

    Any configurable traitlets this class exposed will be configurable in
    profiles using c.SubClassName.attribute = value

    You can overwrite `preprocess_cell()` to apply a transformation
    independently on each cell or `preprocess()` if you prefer your own
    logic. See corresponding docstring for information.

    Disabled by default and can be enabled via the config by
        'c.YourPreprocessorName.enabled = True'
    FT)configc                    s   t  jdi | dS )z
        Public constructor

        Parameters
        ----------
        config : Config
            Configuration file structure
        `**kw`
            Additional keyword arguments passed to parent
        N )super__init__)selfkw	__class__r   W/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/nbconvert/preprocessors/base.pyr      s   zPreprocessor.__init__c                 C   s,   | j r| jd| jj | ||S ||fS )zApply the preprocessor.zApplying preprocessor: %s)enabledlogdebugr   __name__
preprocess)r	   nb	resourcesr   r   r   __call__,   s   zPreprocessor.__call__c                 C   s4   t |jD ]\}}| |||\|j|< }q||fS )a  
        Preprocessing to apply on each notebook.

        Must return modified nb, resources.

        If you wish to apply your preprocessing to each cell, you might want
        to override preprocess_cell method instead.

        Parameters
        ----------
        nb : NotebookNode
            Notebook being converted
        resources : dictionary
            Additional resources used in the conversion process.  Allows
            preprocessors to pass variables into the Jinja engine.
        )	enumeratecellspreprocess_cell)r	   r   r   indexcellr   r   r   r   3   s   zPreprocessor.preprocessc                 C   s   d}t |)a  
        Override if you want to apply some preprocessing to each cell.
        Must return modified cell and resource dictionary.

        Parameters
        ----------
        cell : NotebookNode cell
            Notebook cell being processed
        resources : dictionary
            Additional resources used in the conversion process.  Allows
            preprocessors to pass variables into the Jinja engine.
        index : int
            Index of the cell being processed
        z!should be implemented by subclass)NotImplementedError)r	   r   r   r   msgr   r   r   r   H   s   zPreprocessor.preprocess_cell)r   
__module____qualname____doc__r   tagr   r   r   r   r   __classcell__r   r   r   r   r      s    r   N)r   	traitletsr   nbconvert.utils.baser   r   r   r   r   r   <module>   s    