-
Notifications
You must be signed in to change notification settings - Fork 2.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Improve error message in DAGCircuit.draw
for invalid filenames
#7447
Conversation
Pull Request Test Coverage Report for Build 1698104057
💛 - Coveralls |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In general this looks good to me. I had some questions in line, but most stuff is fairly minor.
FILENAME_EXTENSIONS = [ | ||
"bmp", | ||
"canon", | ||
"cgimage", | ||
"cmap", | ||
"cmapx", | ||
"cmapx_np", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Where did you find this full list? Perhaps we could cut it down to some more common ones - I think things like cmapx_np
might be a bit more noise than use.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
pydot library was throwing a exception with all those extensions...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah, I see - it's the failing output of dot -Tunknown
.
if extension not in FILENAME_EXTENSIONS: | ||
raise InvalidFileError( | ||
"Filename extension must be one of: " | ||
+ " ".join([str(elem) for elem in FILENAME_EXTENSIONS]) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
All the elements in FILENAME_EXTENSIONS
are already strings, so this is just the same as " ".join(FILENAME_EXTENSIONS)
.
try: | ||
dag_drawer(self.dag, filename="aaabc") | ||
self.fail("Expected error not raised!") | ||
except InvalidFileError as exception_instance: | ||
self.assertEqual( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Here, and in the next test, a clearer way of writing these tests of exceptions is
with self.assertRaisesRegex(InvalidFileError, "Parameter 'filename' must be in format 'name.extension'"):
dag_drawer(self.dag, filename="aaabc")
"Filename extension must be one of: bmp canon cgimage cmap cmapx cmapx_np " | ||
"dot dot_json eps exr fig gd gd2 gif gv icns ico imap imap_np ismap jp2 " | ||
"jpe jpeg jpg json json0 mp pct pdf pic pict plain plain-ext png pov " | ||
"ps ps2 psd sgi svg svgz tga tif tiff tk vdx vml vmlz vrml wbmp webp " | ||
"xdot xdot1.2 xdot1.4 xdot_json", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We might not want to test that exactly this set of extensions are supported - it'll be ok just to test that the message starts with "Filename extension must be one of:"
@jakelishman Thank you for your review. I fixed the issues. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This LGTM 🚀 Thanks for your contribution @iuliazidaru!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good to me! Please could you add a release note explaining the bug fix, and then we'll be good to merge.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This all looks good, thanks a lot!
I just reworded the release note a touch to add in Sphinx cross-references to the functions mentioned, and allude to the more common entry point DAGCircuit.draw
.
edit: sorry, apparently I was in two minds about the release note - first time round I tagged it as not needing one, then I asked you for one! My bad, sorry!
DAGCircuit.draw
for invalid filenames
@jakelishman Thanks a lot! |
* dag_drawer should check the existence of filename extension * fix review comments * add release note * Reword release note Co-authored-by: Abby Mitchell <23662430+javabster@users.noreply.github.com> Co-authored-by: Jake Lishman <jake.lishman@ibm.com> Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> (cherry picked from commit 25e1d20)
…) (#7531) * dag_drawer should check the existence of filename extension * fix review comments * add release note * Reword release note Co-authored-by: Abby Mitchell <23662430+javabster@users.noreply.github.com> Co-authored-by: Jake Lishman <jake.lishman@ibm.com> Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> (cherry picked from commit 25e1d20) Co-authored-by: Iulia Zidaru <iuliazidaru@users.noreply.github.com>
Summary
Fix #3099 dag_drawer should check the existence of filename extension
Details and comments
Added new exception and test