##// END OF EJS Templates
docs
Matthias BUSSONNIER -
Show More
@@ -1,20 +1,44 b''
1 """
1 """
2 Module that regroups transformer that woudl be applied to ipynb files
3 before going through the templating machinery.
2
4
5 It exposes convenient classes to inherit from to access configurability
6 as well as decorator to simplify tasks.
3 """
7 """
4
8
5 from __future__ import print_function
9 from __future__ import print_function
6
10
7
8 from IPython.config.configurable import Configurable
11 from IPython.config.configurable import Configurable
9 from IPython.utils.traitlets import Unicode, Bool, Dict, List
12 from IPython.utils.traitlets import Unicode, Bool, Dict, List
10
13
11 class ConfigurableTransformers(Configurable):
14 class ConfigurableTransformers(Configurable):
12 """ A configurable transformer """
15 """ A configurable transformer
16
17 Inherit from this class if you wish to have configurability for your
18 transformer.
19
20 Any configurable traitlets this class exposed will be configurable in profiles
21 using c.SubClassName.atribute=value
22
23 you can overwrite cell_transform to apply a transformation independently on each cell
24 or __call__ if you prefer your own logic. See orresponding docstring for informations.
25
26
27 """
13
28
14 def __init__(self, config=None, **kw):
29 def __init__(self, config=None, **kw):
15 super(ConfigurableTransformers, self).__init__(config=config, **kw)
30 super(ConfigurableTransformers, self).__init__(config=config, **kw)
16
31
17 def __call__(self, nb, other):
32 def __call__(self, nb, other):
33 """transformation to apply on each notebook.
34
35 received a handle to the current notebook as well as a dict of resources
36 which structure depends on the transformer.
37
38 You should return modified nb, other.
39
40 If you wish to apply on each cell, you might want to overwrite cell_transform method.
41 """
18 try :
42 try :
19 for worksheet in nb.worksheets :
43 for worksheet in nb.worksheets :
20 for index, cell in enumerate(worksheet.cells):
44 for index, cell in enumerate(worksheet.cells):
@@ -25,12 +49,24 b' class ConfigurableTransformers(Configurable):'
25
49
26 def cell_transform(self, cell, other, index):
50 def cell_transform(self, cell, other, index):
27 """
51 """
28 Overwrite if you want to apply a transformation on each cell
52 Overwrite if you want to apply a transformation on each cell,
53
54 receive the current cell, the resource dict and the index of current cell as parameter.
55
56 You should return modified cell and resource dict.
29 """
57 """
30 raise NotImplementedError('should be implemented by subclass')
58 raise NotImplementedError('should be implemented by subclass')
59 return cell, other
31
60
32
61
33 class ActivatableTransformer(ConfigurableTransformers):
62 class ActivatableTransformer(ConfigurableTransformers):
63 """A simple ConfigurableTransformers that have an enabled flag
64
65 Inherit from that if you just want to have a transformer which is
66 no-op by default but can be activated in profiles with
67
68 c.YourTransformerName.enabled = True
69 """
34
70
35 enabled = Bool(False, config=True)
71 enabled = Bool(False, config=True)
36
72
@@ -45,9 +81,9 b' def cell_preprocessor(function):'
45 """ wrap a function to be executed on all cells of a notebook
81 """ wrap a function to be executed on all cells of a notebook
46
82
47 wrapped function parameters :
83 wrapped function parameters :
48 cell : the cell
84 cell : the cell
49 other : external resources
85 other : external resources
50 index : index of the cell
86 index : index of the cell
51 """
87 """
52 def wrappedfunc(nb, other):
88 def wrappedfunc(nb, other):
53 for worksheet in nb.worksheets :
89 for worksheet in nb.worksheets :
@@ -100,10 +136,9 b' def coalesce_streams(cell, other, count):'
100 cell.outputs = new_outputs
136 cell.outputs = new_outputs
101 return cell, other
137 return cell, other
102
138
103
104
105 class ExtractFigureTransformer(ActivatableTransformer):
139 class ExtractFigureTransformer(ActivatableTransformer):
106
140
141
107 extra_ext_map = Dict({},
142 extra_ext_map = Dict({},
108 config=True,
143 config=True,
109 help="""extra map to override extension based on type.
144 help="""extra map to override extension based on type.
@@ -127,6 +162,7 b' class ExtractFigureTransformer(ActivatableTransformer):'
127 config=True,
162 config=True,
128 )
163 )
129
164
165
130 #to do change this to .format {} syntax
166 #to do change this to .format {} syntax
131 default_key_tpl = Unicode('_fig_{count:02d}.{ext}', config=True)
167 default_key_tpl = Unicode('_fig_{count:02d}.{ext}', config=True)
132
168
General Comments 0
You need to be logged in to leave comments. Login now