feat(hugr_py)!: operation parameter rendering in HUGR visualizations#2995
Conversation
There was a problem hiding this comment.
Pull request overview
Updates HUGR graphviz rendering in hugr-py to display operation parameters (type args) directly in node labels, aligning operation rendering with existing type parameter rendering and addressing #2890.
Changes:
- Render
AsExtOpandCustomoperation type arguments in node labels during HUGR visualization. - Introduce
hugr.utils.name_w_args()as a shared formatter forname<type_args>strings. - Replace the private
_type_strhelper intys.pywithname_w_args, updating relevant__str__implementations and snapshots.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
hugr-py/src/hugr/hugr/render.py |
Adds operation-argument rendering for node labels (via name_w_args) using pattern matching on op types. |
hugr-py/src/hugr/utils.py |
Introduces name_w_args() helper for consistent name<args> formatting. |
hugr-py/src/hugr/tys.py |
Switches type string formatting to use name_w_args (removing _type_str). |
hugr-py/tests/__snapshots__/test_hugr_build.ambr |
Updates expected rendered output to include operation parameters in node labels. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #2995 +/- ##
==========================================
- Coverage 81.29% 81.29% -0.01%
==========================================
Files 239 239
Lines 45350 45354 +4
Branches 39160 39160
==========================================
+ Hits 36866 36869 +3
- Misses 6493 6494 +1
Partials 1991 1991
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
🤖 I have created a release *beep* *boop* --- ## [0.16.0](hugr-py-v0.15.4...hugr-py-v0.16.0) (2026-04-01) This release changes the default text serialization format from JSON to `MODEL_WITH_EXTS` (the JSON format is now deprecated). It also adds the ability to link packages and modules from Python, renders operation type arguments in HUGR visualizations, introduces a new `debug_info` module for attaching source-level debug metadata to nodes, and introduces multi-version support in `ExtensionRegistry`, allowing different versions of the same extension to coexist in the same registry. ### ⚠ BREAKING CHANGES * `ExtensionRegistry` may now contain multiple versions of the same extension. `.extensions` is now an iterator of the latest versions instead of a dictionary. `.register_updated` and `.add_extension` have been replaced with a singular `.register`. * Default `EnvelopeConfig` changed from `EnvelopeFormat.JSON` to `EnvelopeFormat.MODEL_WITH_EXTS`. * Substituted `hugr-py/src/hugr/tys.py::_type_str` with `hugr-py/src/hugr/utils.py::name_w_args`. ### Features * Add debug info metadata specification in `hugr-py` ([#2971](#2971)) ([a4da8ef](a4da8ef)) * Allow multiple versions of an extension in an ExtensionRegistry ([#3005](#3005)) ([ee90cd1](ee90cd1)) * Deprecate JSON serialization format ([#2991](#2991)) ([0f7a880](0f7a880)) * Operation parameter rendering in HUGR visualizations ([#2995](#2995)) ([d619148](d619148)) * Allow linking packages and modules from Python ([#2947](#2947)) ([329c243](329c243)) * Make `_composable_pass` and `_scope` public modules ([#2962](#2962)) ([1d6af9a](1d6af9a)), closes [#2961](#2961) * Allow missing ext versions ExtensionDesc metadata ([#2979](#2979)) ([bc1c445](bc1c445)) * Allow dfg conversion in to TrackedDfg ([#2993](#2993)) ([3bd7a88](3bd7a88)) ### Bug Fixes * Allow both _composable_pass and composable_pass imports ([#2965](#2965)) ([0a5664d](0a5664d)) * Allow both _scope and scope imports ([#3003](#3003)) ([de0458c](de0458c)) * Always do extension resolution when loading packages and hugrs ([#2953](#2953)) ([0086d2a](0086d2a)) * Correct pyo3 module definitions and add missing exception class export ([#2964](#2964)) ([3df73f4](3df73f4)) * Include extensions during link serialization ([#2992](#2992)) ([9236e89](9236e89)) * Prefix names with underscores during serialization ([#2989](#2989)) ([8aab636](8aab636)) * Use valid identifiers when constructing AST model ([#2973](#2973)) ([8750a6b](8750a6b)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --------- Co-authored-by: Agustín Borgna <[email protected]>
close #2890
Changed the hugr rendering in
hugr-py/render.pyto render in the node the type args of the operation.BREAKING CHANGE: Substituted
hugr-py/src/hugr/tys.py::_type_strwithhugr-py/src/hugr/utils.py::name_w_args