Skip to content

Commit

Permalink
Merge branch 'main' into io_info_as_classmethod
Browse files Browse the repository at this point in the history
  • Loading branch information
liamhuber committed Mar 27, 2024
2 parents 36aae48 + 5962bb4 commit 1b3039e
Show file tree
Hide file tree
Showing 5 changed files with 41 additions and 12 deletions.
2 changes: 1 addition & 1 deletion .binder/environment.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ dependencies:
- coverage
- bidict =0.23.1
- cloudpickle =3.0.0
- graphviz =8.1.0
- graphviz =9.0.0
- h5io =0.2.2
- h5io_browser =0.0.9
- matplotlib =3.8.3
Expand Down
2 changes: 1 addition & 1 deletion .ci_support/environment.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ dependencies:
- coverage
- bidict =0.23.1
- cloudpickle =3.0.0
- graphviz =8.1.0
- graphviz =9.0.0
- h5io =0.2.2
- h5io_browser =0.0.9
- matplotlib =3.8.3
Expand Down
2 changes: 1 addition & 1 deletion docs/environment.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ dependencies:
- coverage
- bidict =0.23.1
- cloudpickle =3.0.0
- graphviz =8.1.0
- graphviz =9.0.0
- h5io =0.2.2
- h5io_browser =0.0.9
- matplotlib =3.8.3
Expand Down
11 changes: 11 additions & 0 deletions pyiron_workflow/node.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import sys
from abc import ABC
from concurrent.futures import Future
import platform
from typing import Any, Literal, Optional, TYPE_CHECKING
import warnings

Expand Down Expand Up @@ -645,7 +646,17 @@ def draw(
Returns:
(graphviz.graphs.Digraph): The resulting graph object.
Warnings:
Rendering a PDF format appears to not be working on Windows right now.
"""
if format == "pdf" and platform.system() == "Windows":
warnings.warn(
"Graphviz does not appear to be playing well with Windows right now,"
"this will probably fail and you will need to try a different format."
"If it _doesn't_ fail, please contact the developers by raising an "
"issue at github.com/pyiron/pyiron_workflow"
)
if size is not None:
size = f"{size[0]},{size[1]}"
graph = GraphvizNode(self, depth=depth, rankdir=rankdir, size=size).graph
Expand Down
36 changes: 27 additions & 9 deletions tests/unit/test_node.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
from concurrent.futures import Future
import os
import platform
from subprocess import CalledProcessError
import sys
from typing import Literal, Optional
import unittest
Expand Down Expand Up @@ -318,15 +320,31 @@ def test_draw(self):
any(self.n1.working_directory.path.iterdir())
)

fmt = "pdf" # This is just so we concretely know the filename suffix
self.n1.draw(save=True, format=fmt)
expected_name = self.n1.label + "_graph." + fmt
# That name is just an implementation detail, update it as needed
self.assertTrue(
self.n1.working_directory.path.joinpath(expected_name).is_file(),
msg="If `save` is called, expect the rendered image to exist in the working"
"directory"
)
for fmt in ["pdf", "png"]:
with self.subTest(f"Testing with format {fmt}"):
if fmt == "pdf" and platform.system() == "Windows":
with self.assertRaises(
CalledProcessError,
msg="Graphviz doesn't seem to be happy about the "
"combindation PDF format and Windows right now. We "
"throw a warning for it in `Node.draw`, so if this "
"test ever fails and this combination _doesn't_ fail, "
"remove this extra bit of testing and remove the "
"warning."
):
self.n1.draw(save=True, format=fmt)
else:
self.n1.draw(save=True, format=fmt)
expected_name = self.n1.label + "_graph." + fmt
# That name is just an implementation detail, update it as
# needed
self.assertTrue(
self.n1.working_directory.path.joinpath(
expected_name
).is_file(),
msg="If `save` is called, expect the rendered image to "
"exist in the working directory"
)

user_specified_name = "foo"
self.n1.draw(filename=user_specified_name, format=fmt)
Expand Down

0 comments on commit 1b3039e

Please sign in to comment.