@@ -154,15 +154,100 @@ def test_bytesio():
154154
155155def test_defaults ():
156156 """Test that image output defaults can be set using pio.defaults.*"""
157+ test_fig = go .Figure (fig )
158+ test_image_bytes = b"mock image data"
159+
160+ # Check initial defaults
161+ assert pio .defaults .default_format == "png"
162+ assert pio .defaults .default_width == 700
163+ assert pio .defaults .default_height == 500
164+ assert pio .defaults .default_scale == 1
165+ assert pio .defaults .mathjax is None
166+ assert pio .defaults .topojson is None
167+ assert pio .defaults .plotlyjs is None
168+
157169 try :
158- assert pio . defaults . default_format == "png"
170+ # Set new defaults
159171 pio .defaults .default_format = "svg"
172+ pio .defaults .default_width = 701
173+ pio .defaults .default_height = 501
174+ pio .defaults .default_scale = 2
175+ pio .defaults .mathjax = (
176+ "https://cdn.jsdelivr.net/npm/[email protected] /es5/tex-svg.js" 177+ )
178+ pio .defaults .topojson = "path/to/topojson/files/"
179+ pio .defaults .plotlyjs = "https://cdn.plot.ly/plotly-3.0.0.js"
180+
181+ # Check that new defaults are saved
160182 assert pio .defaults .default_format == "svg"
161- result = pio .to_image (fig , format = "svg" , validate = False )
162- assert result .startswith (b"<svg" )
183+ assert pio .defaults .default_width == 701
184+ assert pio .defaults .default_height == 501
185+ assert pio .defaults .default_scale == 2
186+ assert (
187+ pio .defaults .mathjax
188+ == "https://cdn.jsdelivr.net/npm/[email protected] /es5/tex-svg.js" 189+ )
190+ assert pio .defaults .topojson == "path/to/topojson/files/"
191+ assert pio .defaults .plotlyjs == "https://cdn.plot.ly/plotly-3.0.0.js"
192+
193+ if kaleido_major () > 0 :
194+ # Check that all the defaults values are passed through to the function call to calc_fig_sync
195+ with patch (
196+ "plotly.io._kaleido.kaleido.calc_fig_sync" ,
197+ return_value = test_image_bytes ,
198+ ) as mock_calc_fig :
199+ # ===== CLAUDE START HERE 1 =====
200+ result = pio .to_image (test_fig , validate = False )
201+
202+ # Verify calc_fig_sync was called with correct args
203+ # taken from pio.defaults
204+ mock_calc_fig .assert_called_once ()
205+ args , kwargs = mock_calc_fig .call_args
206+ assert args [0 ] == test_fig .to_dict ()
207+ assert kwargs ["opts" ]["format" ] == "svg"
208+ assert kwargs ["opts" ]["width" ] == 701
209+ assert kwargs ["opts" ]["height" ] == 501
210+ assert kwargs ["opts" ]["scale" ] == 2
211+ assert kwargs ["topojson" ] == "path/to/topojson/files/"
212+ # mathjax and plotlyjs are passed through in kopts
213+ assert (
214+ kwargs ["kopts" ]["mathjax" ]
215+ == "https://cdn.jsdelivr.net/npm/[email protected] /es5/tex-svg.js" 216+ )
217+ assert (
218+ kwargs ["kopts" ]["plotlyjs" ]
219+ == "https://cdn.plot.ly/plotly-3.0.0.js"
220+ )
221+
222+ else :
223+ # Check that all the default values have been set in pio._kaleido.scope
224+ assert pio ._kaleido .scope .default_format == "svg"
225+ assert pio ._kaleido .scope .default_width == 701
226+ assert pio ._kaleido .scope .default_height == 501
227+ assert pio ._kaleido .scope .default_scale == 2
228+ assert (
229+ pio ._kaleido .scope .mathjax
230+ == "https://cdn.jsdelivr.net/npm/[email protected] /es5/tex-svg.js" 231+ )
232+ assert pio ._kaleido .scope .topojson == "path/to/topojson/files/"
233+ assert pio ._kaleido .scope .plotlyjs == "https://cdn.plot.ly/plotly-3.0.0.js"
234+
163235 finally :
236+ # Reset defaults to original values and check that they are restored
164237 pio .defaults .default_format = "png"
238+ pio .defaults .default_width = 700
239+ pio .defaults .default_height = 500
240+ pio .defaults .default_scale = 1
241+ pio .defaults .mathjax = None
242+ pio .defaults .topojson = None
243+ pio .defaults .plotlyjs = None
165244 assert pio .defaults .default_format == "png"
245+ assert pio .defaults .default_width == 700
246+ assert pio .defaults .default_height == 500
247+ assert pio .defaults .default_scale == 1
248+ assert pio .defaults .mathjax is None
249+ assert pio .defaults .topojson is None
250+ assert pio .defaults .plotlyjs is None
166251
167252
168253def test_fig_write_image ():
0 commit comments