Skip to content

Pretty print #245

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

Open
wants to merge 230 commits into
base: master
Choose a base branch
from
Open

Pretty print #245

wants to merge 230 commits into from

Conversation

benjvmin93
Copy link
Contributor

@benjvmin93 benjvmin93 commented Feb 5, 2025

Before submitting, please check the following:

  • Make sure you have tests for the new code and that test passes (run nox)
  • If applicable, add a line to the [unreleased] part of CHANGELOG.md, following keep-a-changelog.
  • Format added code by ruff
    • See CONTRIBUTING.md for more details
  • Make sure the checks (github actions) pass.

Then, please fill in below:

Context (if applicable):

#239

Description of the change:

New draw() methods in Circuit and Pattern classes.

  • Circuit.draw() generates the corresponding Qasm3 code and pass it to qiskit.draw() method. It relates on the same arguments (see qiskit.draw() method documentation).
  • pattern.draw() locally generates the appropriate visualization object (in the ascii, unicode, png, or latex formats)
  • pattern.__repr__() returns the pythonic representation useful to initialize the same object. It involves handling __repr__ method for commands. Thus, directly related to the writing of a class Command.

More details on the different changes are described in the CHANGELOG.md file.

Related issue:

benjvmin93 and others added 30 commits April 8, 2024 17:15
…ng: see tests_patterns, tests_tnsim and tests_transpiler
import PIL

try:
subprocess.run(
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Have you looked for latex wrappers? I feel the approach here (raw subprocess call) is a little bit too direct.


output.write(self.to_latex(left_to_right))

output.write("\n\\end{document}")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Raw string

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Beware that \n is an escape form.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see, but still it sounds odd that we need to manually input \n. This may be avoided by connecting print to the output instance.

@EarlMilktea
Copy link
Contributor

@benjvmin93 Could you turn on ruff rule PTH before final review?

Copy link
Contributor

@thierry-martinez thierry-martinez left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There are still some fixes needed, and I made some remarks to clean the code and make it more general.


output.write(self.to_latex(left_to_right))

output.write("\n\\end{document}")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Beware that \n is an escape form.

"""Return a string representation of the Circuit."""
return self.draw()

def draw(self, output: str = "text") -> TextDrawing | matplotlib.figure | PIL.Image | str:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't understand your argument. I think it would be more efficient if you provided a direct code suggestion, assuming you believe it's worthwhile.

@shinich1
Copy link
Contributor

if possible, can we move the implementation of drawing methods out of Pattern class (pattern module)? This has become a bit too large.

@EarlMilktea
Copy link
Contributor

@benjvmin93 (CC: @shinich1 )

Additionally, if you're planning to add bunch of features to Pattern, I may request you to turn on mypy check against the file.

@thierry-martinez

Are there any updates on Pattern refactoring? It would be better to merge it before this large diff. is introduced.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants