Merge pull request #323 from mdboom/fix-matplotlib

Fix matplotlib wasm backend after undefined attribute behavior changed
This commit is contained in:
Michael Droettboom 2019-02-21 20:41:49 -05:00 committed by GitHub
commit f3fcf034ad
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 12 deletions

View File

@ -90,21 +90,24 @@ class FigureCanvasWasm(backend_agg.FigureCanvasAgg):
This is typically 2 on a HiDPI ("Retina") display, and 1 otherwise.
"""
backing_store = (
context.backingStorePixelRatio or
context.webkitBackingStorePixel or
context.mozBackingStorePixelRatio or
context.msBackingStorePixelRatio or
context.oBackingStorePixelRatio or
context.backendStorePixelRatio or
getattr(context, 'backingStorePixelRatio', 0) or
getattr(context, 'webkitBackingStorePixel', 0) or
getattr(context, 'mozBackingStorePixelRatio', 0) or
getattr(context, 'msBackingStorePixelRatio', 0) or
getattr(context, 'oBackingStorePixelRatio', 0) or
getattr(context, 'backendStorePixelRatio', 0) or
1
)
return (window.devicePixelRatio or 1) / backing_store
return (getattr(window, 'devicePixelRatio', 0) or 1) / backing_store
def create_root_element(self):
# Designed to be overridden by subclasses for use in contexts other
# than iodide.
from js import iodide
return iodide.output.element('div')
if iodide is not None:
return iodide.output.element('div')
else:
return document.createElement('div')
def show(self):
# If we've already shown this canvas elsewhere, don't create a new one,

View File

@ -1,8 +1,10 @@
def test_matplotlib(selenium):
def test_matplotlib(selenium_standalone):
selenium = selenium_standalone
selenium.load_package("matplotlib")
selenium.run("from matplotlib import pyplot as plt")
selenium.run("plt.figure()")
selenium.run("x = plt.plot([1,2,3])")
selenium.run("plt.plot([1,2,3])")
selenium.run("plt.show()")
def test_svg(selenium):
@ -26,5 +28,3 @@ def test_pdf(selenium):
selenium.run("import io")
selenium.run("fd = io.BytesIO()")
selenium.run("plt.savefig(fd, format='pdf')")
content = selenium.run("fd.getvalue()")
assert len(content) == 5559