18
18
19
19
from sphinx .errors import ExtensionError
20
20
21
+ import matplotlib
22
+
21
23
22
24
class figmplnode (nodes .General , nodes .Element ):
23
25
pass
@@ -106,7 +108,10 @@ def _copy_images_figmpl(self, node):
106
108
107
109
# these will be the temporary place the plot-directive put the images eg:
108
110
# ../../../build/html/plot_directive/users/explain/artists/index-1.png
109
- srcset = _parse_srcsetNodes (node ['srcset' ])
111
+ if node ['srcset' ]:
112
+ srcset = _parse_srcsetNodes (node ['srcset' ])
113
+ else :
114
+ srcset = None
110
115
111
116
# the rst file's location: eg /Users/username/matplotlib/doc/users/explain/artists
112
117
docsource = PurePosixPath (self .document ['source' ]).parent
@@ -123,19 +128,24 @@ def _copy_images_figmpl(self, node):
123
128
Path (imagedir ).mkdir (parents = True , exist_ok = True )
124
129
125
130
# copy all the sources to the imagedir:
126
- for mult in srcset :
127
- # the entries in srcset are relative to docsource's directory
128
- abspath = PurePosixPath (docsource , srcset [mult ])
131
+ if srcset :
132
+ for mult in srcset :
133
+ # the entries in srcset are relative to docsource's directory
134
+ abspath = PurePosixPath (docsource , srcset [mult ])
135
+ shutil .copyfile (abspath , imagedir / abspath .name )
136
+ else :
137
+ abspath = PurePosixPath (docsource , node ['uri' ])
129
138
shutil .copyfile (abspath , imagedir / abspath .name )
130
139
140
+
131
141
return imagedir , srcset
132
142
133
143
134
144
def visit_figmpl_html (self , node ):
135
145
136
- if node ['srcset' ] is None :
137
- self . visit_image ( node )
138
- return
146
+ # if node['srcset'] is None:
147
+ # print('NODE: NONE' )
148
+ # return self.visit_figure(node)
139
149
140
150
imagedir , srcset = _copy_images_figmpl (self , node )
141
151
@@ -158,34 +168,42 @@ def visit_figmpl_html(self, node):
158
168
else : # html
159
169
imagerel = imagerel + ''
160
170
161
- # make srcset str. Need to change all the prefixes!
162
- srcsetst = ''
163
- maxmult = - 1
164
- for mult in srcset :
165
- nm = PurePosixPath (srcset [mult ][1 :]).name
166
- # ../../_images/plot_1_2_0x.png
167
- path = imagerel + '/' + nm
168
- srcsetst += f'{ path } '
169
- if mult == 0 :
170
- srcsetst += ', '
171
- else :
172
- srcsetst += f' { mult :1.2f} x, '
173
-
174
- if mult > maxmult :
175
- maxmult = mult
176
- maxsrc = path
177
-
178
- # trim trailing comma and space...
179
- srcsetst = srcsetst [:- 2 ]
180
-
181
171
# make uri also be relative...
182
172
nm = PurePosixPath (node ['uri' ][1 :]).name
183
173
uri = imagerel + '/' + nm
184
174
175
+
176
+ # make srcset str. Need to change all the prefixes!
177
+ if srcset :
178
+ srcsetst = ''
179
+ maxmult = - 1
180
+ for mult in srcset :
181
+ nm = PurePosixPath (srcset [mult ][1 :]).name
182
+ # ../../_images/plot_1_2_0x.png
183
+ path = imagerel + '/' + nm
184
+ srcsetst += f'{ path } '
185
+ if mult == 0 :
186
+ srcsetst += ', '
187
+ else :
188
+ srcsetst += f' { mult :1.2f} x, '
189
+
190
+ if mult > maxmult :
191
+ maxmult = mult
192
+ maxsrc = path
193
+
194
+ # trim trailing comma and space...
195
+ srcsetst = srcsetst [:- 2 ]
196
+ else :
197
+ srcsetst = ''
198
+ maxsrc = uri
199
+
185
200
alt = node ['alt' ]
186
201
if node ['class' ] is not None :
187
- classst = node ['class' ][0 ]
202
+ classst = ''
203
+ for cl in node ['class' ]:
204
+ classst += cl + ' '
188
205
classst = f'class="{ classst } "'
206
+
189
207
else :
190
208
classst = ''
191
209
@@ -230,7 +248,7 @@ def visit_figmpl_latex(self, node):
230
248
maxmult = max (maxmult , key )
231
249
node ['uri' ] = str (PurePosixPath (srcset [maxmult ]).name )
232
250
233
- self .visit_image (node )
251
+ self .visit_figure (node )
234
252
235
253
236
254
def depart_figmpl_html (self , node ):
@@ -248,5 +266,9 @@ def figurempl_addnode(app):
248
266
249
267
250
268
def setup (app ):
269
+ print ('SETUPPPPP' )
251
270
app .add_directive ("figure-mpl" , FigureMpl )
252
271
figurempl_addnode (app )
272
+ metadata = {'parallel_read_safe' : True , 'parallel_write_safe' : True ,
273
+ 'version' : matplotlib .__version__ }
274
+ return metadata
0 commit comments