-
Notifications
You must be signed in to change notification settings - Fork 7
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
feat(hugr-passes): Add nonlocal_edges
and ensure_no_nonlocal_edges
#1345
Conversation
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #1345 +/- ##
==========================================
+ Coverage 87.59% 87.65% +0.06%
==========================================
Files 112 113 +1
Lines 19964 20051 +87
Branches 17697 17784 +87
==========================================
+ Hits 17487 17576 +89
- Misses 1694 1695 +1
+ Partials 783 780 -3
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. |
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.
Everything except docstring comments are minor
hugr-passes/src/non_local.rs
Outdated
//! This module provides functions for inspecting and modifying the nature of | ||
//! non local edges in a Hugr. | ||
//! | ||
//! TODO Add `remove_nonlocal_edges` and `add_nonlocal_edges` functions |
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.
should this go in the module docstring or be left as a comment?
hugr-passes/src/non_local.rs
Outdated
|
||
/// Returns an iterator over all non local edges in a Hugr. | ||
/// | ||
/// All `(node, in_port)` pairs are returned where `in_port` is connected to a |
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.
maybe make clear only checks value ports
hugr-passes/src/non_local.rs
Outdated
hugr.nodes().flat_map(move |node| { | ||
hugr.in_value_types(node).filter_map(move |(in_p, _)| { | ||
hugr.linked_outputs(node, in_p) | ||
.any(|(neighbour_node, _)| hugr.get_parent(node) != hugr.get_parent(neighbour_node)) |
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.
nit: hugr.get_parent(node)
can be computed once outside this closure
hugr-passes/src/non_local.rs
Outdated
let mut builder = DFGBuilder::new(Signature::new_endo(BOOL_T)).unwrap(); | ||
let [in_w] = builder.input_wires_arr(); | ||
let ([out_w], edge) = { | ||
let mut builder = builder |
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.
nit: give this builder a different name to the outer one to make it easier to parse
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.
I prefer the same name. It is invalid to refer to the shadowed variable since the new one holds a mutable reference to it. But I do not feel strongly, have renamed.
Co-authored-by: Seyon Sivarajah <[email protected]>
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.
thanks!
## 🤖 New release * `hugr`: 0.9.1 -> 0.10.0 * `hugr-core`: 0.6.1 -> 0.7.0 * `hugr-passes`: 0.6.1 -> 0.6.2 * `hugr-cli`: 0.2.1 -> 0.3.0 <details><summary><i><b>Changelog</b></i></summary><p> ## `hugr` <blockquote> ## 0.10.0 (2024-07-26) ### Bug Fixes (#1350)) - [**breaking**] Bump serialisation version with no upgrade path ([#1352](#1352)) ### Features - Add `nonlocal_edges` and `ensure_no_nonlocal_edges` ([#1345](#1345)) - Serialization upgrade path ([#1327](#1327)) - [**breaking**] Replace opaque type arguments with String ([#1328](#1328)) - Add `impl Hash for Type` ([#1347](#1347)) - `HasDef` and `HasConcrete` traits for def/concrete op design pattern ([#1336](#1336)) - Add pointer standard extension ([#1337](#1337)) - [**breaking**] Remove the `Eq` type bound. ([#1364](#1364)) ### Refactor - [**breaking**] Use JSON rather than YAML in opaque fields. ([#1338](#1338)) - [**breaking**] Declarative module behind optional feature flag ([#1341](#1341)) ### Testing - Miri gate serialization upgrades ([#1349](#1349)) </blockquote> ## `hugr-core` <blockquote> ## 0.7.0 (2024-07-26) ### Bug Fixes (#1350)) - [**breaking**] Bump serialisation version with no upgrade path ([#1352](#1352)) ### Features - Serialization upgrade path ([#1327](#1327)) - [**breaking**] Replace opaque type arguments with String ([#1328](#1328)) - Add `impl Hash for Type` ([#1347](#1347)) - `HasDef` and `HasConcrete` traits for def/concrete op design pattern ([#1336](#1336)) - Add pointer standard extension ([#1337](#1337)) - [**breaking**] Remove the `Eq` type bound. ([#1364](#1364)) ### Refactor - [**breaking**] Use JSON rather than YAML in opaque fields. ([#1338](#1338)) - [**breaking**] Declarative module behind optional feature flag ([#1341](#1341)) ### Testing - Miri gate serialization upgrades ([#1349](#1349)) </blockquote> ## `hugr-passes` <blockquote> ## 0.6.2 (2024-07-26) ### Features - Add `nonlocal_edges` and `ensure_no_nonlocal_edges` ([#1345](#1345)) </blockquote> ## `hugr-cli` <blockquote> ## 0.3.0 (2024-07-26) ### Features - [**breaking**] Created `validate` CLI subcommand. ([#1312](#1312)) </blockquote> </p></details> --- This PR was generated with [release-plz](https://github.com/MarcoIeni/release-plz/). --------- Co-authored-by: Douglas Wilson <[email protected]>
Closes #1346