Skip to content

Commit d5d245c

Browse files
committed
Merge branch 'remove-requirejs' of github.com:plotly/plotly.py into anywidget
2 parents e21e3d7 + c3fc5c8 commit d5d245c

File tree

5 files changed

+14
-94
lines changed

5 files changed

+14
-94
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@ This project adheres to [Semantic Versioning](http://semver.org/).
2121

2222
- Fixed a bug in integer validation of arrays that threw an error when an array contained a mix of strings and integers.
2323

24+
- Fixed a bug in JupyterLab >= 4 and Jupyter Notebook >= 7 that caused latex to not render in plotly charts.
25+
26+
- Removed require.js from the generated javascript in plotly charts.
27+
2428
## [5.23.0] - 2024-07-23
2529

2630
### Updated

packages/python/plotly/plotly/basedatatypes.py

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3534,12 +3534,6 @@ def to_html(self, *args, **kwargs):
35343534
plotly.min.js bundle that is assumed to reside in the same
35353535
directory as the HTML file.
35363536
3537-
If 'require', Plotly.js is loaded using require.js. This option
3538-
assumes that require.js is globally available and that it has been
3539-
globally configured to know how to find Plotly.js as 'plotly'.
3540-
This option is not advised when full_html=True as it will result
3541-
in a non-functional html file.
3542-
35433537
If a string that ends in '.js', a script tag is included that
35443538
references the specified path. This approach can be used to point
35453539
the resulting HTML file to an alternative CDN or local bundle.
@@ -3643,12 +3637,6 @@ def write_html(self, *args, **kwargs):
36433637
directory because the plotly.js source code will be included only
36443638
once per output directory, rather than once per output file.
36453639
3646-
If 'require', Plotly.js is loaded using require.js. This option
3647-
assumes that require.js is globally available and that it has been
3648-
globally configured to know how to find Plotly.js as 'plotly'.
3649-
This option is not advised when full_html=True as it will result
3650-
in a non-functional html file.
3651-
36523640
If a string that ends in '.js', a script tag is included that
36533641
references the specified path. This approach can be used to point
36543642
the resulting HTML file to an alternative CDN or local bundle.

packages/python/plotly/plotly/io/_base_renderers.py

Lines changed: 4 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,6 @@ def __init__(
249249
self,
250250
connected=False,
251251
full_html=False,
252-
requirejs=True,
253252
global_init=False,
254253
config=None,
255254
auto_play=False,
@@ -261,7 +260,6 @@ def __init__(
261260
self.auto_play = auto_play
262261
self.connected = connected
263262
self.global_init = global_init
264-
self.requirejs = requirejs
265263
self.full_html = full_html
266264
self.animation_opts = animation_opts
267265
self.post_script = post_script
@@ -275,27 +273,13 @@ def activate(self):
275273
)
276274
)
277275

278-
if not self.requirejs:
279-
raise ValueError("global_init is only supported with requirejs=True")
280-
281276
if self.connected:
282-
# Connected so we configure requirejs with the plotly CDN
283277
script = """\
284278
<script type="text/javascript">
285279
{win_config}
286280
{mathjax_config}
287-
if (typeof require !== 'undefined') {{
288-
require.undef("plotly");
289-
requirejs.config({{
290-
paths: {{
291-
'plotly': ['{plotly_cdn}']
292-
}}
293-
}});
294-
require(['plotly'], function(Plotly) {{
295-
window._Plotly = Plotly;
296-
}});
297-
}}
298281
</script>
282+
<script type="module">import \"{plotly_cdn}\"</script>
299283
""".format(
300284
win_config=_window_plotly_config,
301285
mathjax_config=_mathjax_config,
@@ -309,15 +293,7 @@ def activate(self):
309293
<script type="text/javascript">
310294
{win_config}
311295
{mathjax_config}
312-
if (typeof require !== 'undefined') {{
313-
require.undef("plotly");
314-
define('plotly', function(require, exports, module) {{
315-
{script}
316-
}});
317-
require(['plotly'], function(Plotly) {{
318-
window._Plotly = Plotly;
319-
}});
320-
}}
296+
{script}
321297
</script>
322298
""".format(
323299
script=get_plotlyjs(),
@@ -331,10 +307,7 @@ def to_mimebundle(self, fig_dict):
331307

332308
from plotly.io import to_html
333309

334-
if self.requirejs:
335-
include_plotlyjs = "require"
336-
include_mathjax = False
337-
elif self.connected:
310+
if self.connected:
338311
include_plotlyjs = "cdn"
339312
include_mathjax = "cdn"
340313
else:
@@ -416,7 +389,6 @@ def __init__(
416389
super(NotebookRenderer, self).__init__(
417390
connected=connected,
418391
full_html=False,
419-
requirejs=True,
420392
global_init=True,
421393
config=config,
422394
auto_play=auto_play,
@@ -444,7 +416,6 @@ def __init__(
444416
super(KaggleRenderer, self).__init__(
445417
connected=True,
446418
full_html=False,
447-
requirejs=True,
448419
global_init=True,
449420
config=config,
450421
auto_play=auto_play,
@@ -472,7 +443,6 @@ def __init__(
472443
super(AzureRenderer, self).__init__(
473444
connected=True,
474445
full_html=False,
475-
requirejs=True,
476446
global_init=True,
477447
config=config,
478448
auto_play=auto_play,
@@ -497,7 +467,6 @@ def __init__(
497467
super(ColabRenderer, self).__init__(
498468
connected=True,
499469
full_html=True,
500-
requirejs=False,
501470
global_init=False,
502471
config=config,
503472
auto_play=auto_play,
@@ -832,7 +801,6 @@ def __init__(
832801
super(SphinxGalleryHtmlRenderer, self).__init__(
833802
connected=connected,
834803
full_html=False,
835-
requirejs=False,
836804
global_init=False,
837805
config=config,
838806
auto_play=auto_play,
@@ -844,10 +812,7 @@ def to_mimebundle(self, fig_dict):
844812

845813
from plotly.io import to_html
846814

847-
if self.requirejs:
848-
include_plotlyjs = "require"
849-
include_mathjax = False
850-
elif self.connected:
815+
if self.connected:
851816
include_plotlyjs = "cdn"
852817
include_mathjax = "cdn"
853818
else:

packages/python/plotly/plotly/io/_html.py

Lines changed: 3 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -67,12 +67,6 @@ def to_html(
6767
plotly.min.js bundle that is assumed to reside in the same
6868
directory as the HTML file.
6969
70-
If 'require', Plotly.js is loaded using require.js. This option
71-
assumes that require.js is globally available and that it has been
72-
globally configured to know how to find Plotly.js as 'plotly'.
73-
This option is not advised when full_html=True as it will result
74-
in a non-functional html file.
75-
7670
If a string that ends in '.js', a script tag is included that
7771
references the specified path. This approach can be used to point
7872
the resulting HTML file to an alternative CDN or local bundle.
@@ -254,20 +248,10 @@ def to_html(
254248
if isinstance(include_plotlyjs, str):
255249
include_plotlyjs = include_plotlyjs.lower()
256250

257-
# Start/end of requirejs block (if any)
258-
require_start = ""
259-
require_end = ""
260-
261251
# Init and load
262252
load_plotlyjs = ""
263253

264-
# Init plotlyjs. This block needs to run before plotly.js is loaded in
265-
# order for MathJax configuration to work properly
266-
if include_plotlyjs == "require":
267-
require_start = 'require(["plotly"], function(Plotly) {'
268-
require_end = "});"
269-
270-
elif include_plotlyjs == "cdn":
254+
if include_plotlyjs == "cdn":
271255
load_plotlyjs = """\
272256
{win_config}
273257
<script charset="utf-8" src="{cdn_url}"></script>\
@@ -343,10 +327,8 @@ def to_html(
343327
<div id="{id}" class="plotly-graph-div" \
344328
style="height:{height}; width:{width};"></div>\
345329
<script type="text/javascript">\
346-
{require_start}\
347-
window.PLOTLYENV=window.PLOTLYENV || {{}};{base_url_line}\
348-
{script};\
349-
{require_end}\
330+
window.PLOTLYENV=window.PLOTLYENV || {{}};{base_url_line}\
331+
{script};\
350332
</script>\
351333
</div>""".format(
352334
mathjax_script=mathjax_script,
@@ -355,9 +337,7 @@ def to_html(
355337
width=div_width,
356338
height=div_height,
357339
base_url_line=base_url_line,
358-
require_start=require_start,
359340
script=script,
360-
require_end=require_end,
361341
).strip()
362342

363343
if full_html:
@@ -433,12 +413,6 @@ def write_html(
433413
directory because the plotly.js source code will be included only
434414
once per output directory, rather than once per output file.
435415
436-
If 'require', Plotly.js is loaded using require.js. This option
437-
assumes that require.js is globally available and that it has been
438-
globally configured to know how to find Plotly.js as 'plotly'.
439-
This option is not advised when full_html=True as it will result
440-
in a non-functional html file.
441-
442416
If a string that ends in '.js', a script tag is included that
443417
references the specified path. This approach can be used to point
444418
the resulting HTML file to an alternative CDN or local bundle.

packages/python/plotly/plotly/tests/test_io/test_renderers.py

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -145,14 +145,6 @@ def assert_offline(html):
145145
assert get_plotlyjs() in html
146146

147147

148-
def assert_requirejs(html):
149-
assert 'require(["plotly"]' in html
150-
151-
152-
def assert_not_requirejs(html):
153-
assert 'require(["plotly"]' not in html
154-
155-
156148
def test_colab_renderer_show(fig1):
157149
pio.renderers.default = "colab"
158150

@@ -170,7 +162,6 @@ def test_colab_renderer_show(fig1):
170162
html = mock_arg1["text/html"]
171163
assert_full_html(html)
172164
assert_html_renderer_connected(html)
173-
assert_not_requirejs(html)
174165

175166
# check kwargs
176167
mock_kwargs = mock_call_args[1]
@@ -213,7 +204,6 @@ def test_notebook_connected_show(fig1, name, connected):
213204
# Check html display contents
214205
bundle_html = mock_arg1["text/html"]
215206
assert_not_full_html(bundle_html)
216-
assert_requirejs(bundle_html)
217207

218208
# check kwargs
219209
mock_kwargs = mock_call_args[1]
@@ -275,7 +265,6 @@ def open_url(url, new=0, autoraise=True):
275265
html = response.content.decode("utf8")
276266
assert_full_html(html)
277267
assert_offline(html)
278-
assert_not_requirejs(html)
279268

280269

281270
# Validation
@@ -317,12 +306,12 @@ def test_repr_html(renderer):
317306
+ '"></script> '
318307
'<div id="cd462b94-79ce-42a2-887f-2650a761a144" class="plotly-graph-div" '
319308
'style="height:100%; width:100%;"></div> <script type="text/javascript">'
320-
" window.PLOTLYENV=window.PLOTLYENV || {};"
321-
' if (document.getElementById("cd462b94-79ce-42a2-887f-2650a761a144"))'
309+
" window.PLOTLYENV=window.PLOTLYENV || {};"
310+
' if (document.getElementById("cd462b94-79ce-42a2-887f-2650a761a144"))'
322311
' { Plotly.newPlot( "cd462b94-79ce-42a2-887f-2650a761a144",'
323312
' [], {"template":{}},'
324313
' {"responsive": true} ) };'
325-
" </script> </div>"
314+
" </script> </div>"
326315
)
327316
if "text/html" in bundle:
328317
str_bundle = bundle["text/html"]

0 commit comments

Comments
 (0)