Repository URL to install this package:
|
Version:
2022.10.0 ▾
|
import xml.etree.ElementTree
import pytest
import dask.array as da
from dask.array.svg import draw_sizes
def parses(text):
cleaned = text.replace("→", "") # xml doesn't like righarrow character
assert xml.etree.ElementTree.fromstring(cleaned) is not None # parses cleanly
def test_basic():
parses(da.ones(10).to_svg())
parses(da.ones((10, 10)).to_svg())
parses(da.ones((10, 10, 10)).to_svg())
parses(da.ones((10, 10, 10, 10)).to_svg())
parses(da.ones((10, 10, 10, 10, 10)).to_svg())
parses(da.ones((10, 10, 10, 10, 10, 10)).to_svg())
parses(da.ones((10, 10, 10, 10, 10, 10, 10)).to_svg())
def test_repr_html():
pytest.importorskip("jinja2")
assert da.ones([])._repr_html_()
assert da.ones(10)[:0]._repr_html_()
assert da.ones(10)._repr_html_()
assert da.ones((10, 10))._repr_html_()
assert da.ones((10, 10, 10))._repr_html_()
assert da.ones((10, 10, 10, 10))._repr_html_()
def test_errors():
# empty arrays
with pytest.raises(NotImplementedError) as excpt:
da.ones([]).to_svg()
assert "0 dimensions" in str(excpt.value)
# Scalars
with pytest.raises(NotImplementedError) as excpt:
da.asarray(1).to_svg()
assert "0 dimensions" in str(excpt.value)
# 0-length dims arrays
with pytest.raises(NotImplementedError) as excpt:
da.ones(10)[:0].to_svg()
assert "0-length dimensions" in str(excpt.value)
# unknown chunk sizes
with pytest.raises(NotImplementedError) as excpt:
x = da.ones(10)
x = x[x > 5]
x.to_svg()
assert "unknown chunk sizes" in str(excpt.value)
def test_repr_html_size_units():
pytest.importorskip("jinja2")
x = da.ones((10000, 5000))
x = da.ones((3000, 10000), chunks=(1000, 1000))
text = x._repr_html_()
assert "MB" in text or "MiB" in text
assert str(x.shape) in text
assert str(x.dtype) in text
parses(text)
x = da.ones((3000, 10000, 50), chunks=(1000, 1000, 10))
parses(x._repr_html_())
def test_draw_sizes():
assert draw_sizes((10, 10), size=100) == (100, 100) # respect symmetry
assert draw_sizes((10, 10), size=200) == (200, 200) # respect size keyword
assert draw_sizes((10, 5), size=100) == (100, 50) # respect small ratios
a, b, c = draw_sizes((1000, 100, 10))
assert a > b
assert b > c
assert a < b * 5
assert b < c * 5
def test_too_many_lines_fills_sides_darker():
data = da.ones((16000, 2400, 3600), chunks=(1, 2400, 3600))
text = data.to_svg()
assert "8B4903" in text
assert text.count("\n") < 300
def test_3d():
text = da.ones((10, 10, 10, 10, 10)).to_svg()
assert text.count("<svg") == 1