U
    nuf
                     @   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f | dS )z
        Public constructor

        Parameters
        ----------
        config : Config
            Configuration file structure
        `**kw`
            Additional keyword arguments passed to parent
        N)super__init__)selfkw	__class__ @/tmp/pip-unpacked-wheel-nxpdnluh/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 |dS )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 subclassN)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   Z	traitletsr   Znbconvert.utils.baser   r   r   r   r   r   <module>   s   