B
    Z[E                 @   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   )NbConvertBase    )Boolc                   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 )Preprocessora7   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 :meth:`preprocess_cell` to apply a transformation
    independently on each cell or :meth:`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)Zconfigc                s   t t| jf | dS )z
        Public constructor
        
        Parameters
        ----------
        config : Config
            Configuration file structure
        `**kw`
            Additional keyword arguments passed to parent
        N)superr   __init__)selfkw)	__class__ ;lib/python3.7/site-packages/nbconvert/preprocessors/base.pyr      s    zPreprocessor.__init__c             C   s0   | j r$| jd| jj | ||S ||fS d S )NzApplying preprocessor: %s)enabledlogdebugr
   __name__
preprocess)r   nb	resourcesr   r   r   __call__+   s
    
zPreprocessor.__call__c             C   s8   x.t |jD ] \}}| |||\|j|< }qW ||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.
        )	enumerateZcellspreprocess_cell)r   r   r   indexcellr   r   r   r   3   s    zPreprocessor.preprocessc             C   s   t d||f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 subclass)NotImplementedError)r   r   r   r   r   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
utils.baser   Z	traitletsr   r   r   r   r   r   <module>   s   