diff --git a/cubed/core/plan.py b/cubed/core/plan.py index ba8b64fa4..43f888024 100644 --- a/cubed/core/plan.py +++ b/cubed/core/plan.py @@ -399,8 +399,9 @@ def visualize( del d["target"] - d["label"] = label.strip() - d["tooltip"] = tooltip.strip() + # quote strings with colons in them (https://github.com/pydot/pydot/issues/258) + d["label"] = '"' + label.strip() + '"' + d["tooltip"] = '"' + tooltip.strip() + '"' if "name" in d: # pydot already has name del d["name"] diff --git a/docs/requirements.txt b/docs/requirements.txt index a977af60d..b4078834c 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -4,7 +4,7 @@ fsspec lithops[aws] >= 2.7.0 modal-client mypy_extensions # for rechunker -networkx < 2.8.3 # https://github.com/networkx/networkx/pull/5667 +networkx < 2.8.3, >= 3.3 numpy >= 1.22 pydot pytest diff --git a/pyproject.toml b/pyproject.toml index 5bd082449..93efe15d7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,7 +27,7 @@ dependencies = [ "donfig", "fsspec", "mypy_extensions", # for rechunker - "networkx < 2.8.3", + "networkx < 2.8.3, >= 3.3", "numpy >= 1.22", "tenacity", "toolz", diff --git a/requirements.txt b/requirements.txt index 381ac93ce..135c57ced 100644 --- a/requirements.txt +++ b/requirements.txt @@ -6,7 +6,7 @@ aiostream array-api-compat fsspec mypy_extensions # for rechunker -networkx < 2.8.3 +networkx < 2.8.3, >= 3.3 numpy >= 1.22 tenacity toolz