Skip to content
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!: Update serialisation schema, implement CustomConst serialisation #1005

Merged
merged 18 commits into from
May 9, 2024

Conversation

doug-q
Copy link
Collaborator

@doug-q doug-q commented May 7, 2024

We fix model_rebuild in tys.py to update the model_config rather than overwrite it. This prevents our config, i.e. json_scheme_extra.required from being removed during a model_rebuild.

We remove most json_scheme_extra.required from the schema, using these only for RootModels. This allows us to remove TaggedSumType, as well as alleviating us from the need of introducing TaggedOpaqueType.

The serialisation schema is updated, and is proptested in #981. Reviewers should verify that the serde annotations, the pydantic schema definition, and the generated schemas exactly match that branch.

BREAKING CHANGE:

  • Serialization schema
  • Const::const_type and Value::const_type are renamed to Const::get_type and Value::get_type. These now match several other get_type functions.

note: many PRs broke the serialisation schema. In the process of cleaning up changelog I am leaving only this one.
BEGIN_COMMIT_OVERRIDE
feat: Implement CustomConst serialization (#1005)

refactor!: rename Const::const_type and Value::const_type to Const::get_type and Value::get_type. These now match several other get_type functions (#1005)

END_COMMIT_OVERRIDE

@doug-q doug-q requested review from mark-koch and croyzor May 7, 2024 11:16
@doug-q doug-q force-pushed the feat/const-serialisation2 branch from 00bd27d to 3305567 Compare May 7, 2024 11:31
Copy link

codecov bot commented May 7, 2024

Codecov Report

Attention: Patch coverage is 86.14458% with 23 lines in your changes are missing coverage. Please review.

Project coverage is 86.27%. Comparing base (b0eb9d3) to head (1d09946).
Report is 1 commits behind head on main.

Files Patch % Lines
hugr/src/ops/constant/custom.rs 82.14% 11 Missing and 9 partials ⚠️
hugr/src/ops/constant.rs 93.02% 3 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1005      +/-   ##
==========================================
+ Coverage   86.21%   86.27%   +0.05%     
==========================================
  Files          81       81              
  Lines       16848    16964     +116     
  Branches    16848    16964     +116     
==========================================
+ Hits        14526    14636     +110     
+ Misses       1542     1539       -3     
- Partials      780      789       +9     
Flag Coverage Δ
rust 86.27% <86.14%> (+0.05%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@doug-q doug-q force-pushed the feat/const-serialisation2 branch from a4bfc32 to 94fbb8f Compare May 8, 2024 08:12
Copy link
Contributor

@mark-koch mark-koch left a comment

Choose a reason for hiding this comment

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

The schema looks good to me 👍

hugr-py/src/hugr/serialization/ops.py Show resolved Hide resolved
Comment on lines 141 to 142
#[serde(flatten)]
v: Box<dyn CustomConst>,
Copy link
Contributor

Choose a reason for hiding this comment

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

If you flatten this field, don't you need to get rid of the v in

class CustomConst(ConfiguredBaseModel):
    c: str
    v: Any

and instead accept extra args in the model?

Copy link
Contributor

Choose a reason for hiding this comment

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

Ah nevermind, you set content = "v" in the typetag for CustomConst 👍

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

I will add a comment about this, it's quite important

@doug-q doug-q force-pushed the feat/const-serialisation2 branch 2 times, most recently from c8fdc48 to dbacfe0 Compare May 8, 2024 09:45
@doug-q doug-q requested a review from mark-koch May 8, 2024 10:12
Comment on lines -51 to +52
def set_model_config(cls, config: ConfigDict):
cls.model_config = config
def update_model_config(cls, config: ConfigDict):
cls.model_config.update(config)
Copy link
Contributor

Choose a reason for hiding this comment

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

👍

hugr-py/src/hugr/serialization/ops.py Outdated Show resolved Hide resolved
hugr-py/src/hugr/serialization/ops.py Show resolved Hide resolved
@doug-q doug-q force-pushed the feat/const-serialisation2 branch from 3bc5749 to 8b7d7f4 Compare May 8, 2024 15:27
@doug-q doug-q changed the title fix: const serialisation2 schema: Update serialisation schema, implement CustomConst serialisation May 9, 2024
@doug-q doug-q force-pushed the feat/const-serialisation2 branch from d28d21c to 999f067 Compare May 9, 2024 12:09
@doug-q doug-q changed the title schema: Update serialisation schema, implement CustomConst serialisation feat!: Update serialisation schema, implement CustomConst serialisation May 9, 2024
@doug-q doug-q marked this pull request as ready for review May 9, 2024 12:10
@doug-q
Copy link
Collaborator Author

doug-q commented May 9, 2024

I've also run cargo fmt -- --unstable-features --config format_code_in_doc_comments=true (with a nightly toolchain), hence random reformatting of doctests

@doug-q doug-q added this to the v0.4.0 milestone May 9, 2024
@@ -504,14 +578,14 @@ mod test {
#[rstest]
#[case(Value::unit(), Type::UNIT, "const:seq:{}")]
#[case(const_usize(), USIZE_T, "const:custom:ConstUsize(")]
#[case(serialized_float(17.4), FLOAT64_TYPE, "const:custom:yaml:Number(17.4)")]
// #[case(serialized_float(17.4), FLOAT64_TYPE, "const:custom:yaml:Number(17.4)")]
Copy link
Contributor

Choose a reason for hiding this comment

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

Why is this now commented out?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Because the name has changed, it's now something like const::custom:yaml:Mapping {"c": "ConstFloat", "v": Number(17.4)}

Do you think I should correct the string in the test(ugly as it is), or delete?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

I realised we are just checking prefix, so updated and uncommented.

@@ -392,12 +469,9 @@ mod test {

/// A [`CustomSerialized`] encoding a [`FLOAT64_TYPE`] float constant used in testing.
pub(crate) fn serialized_float(f: f64) -> Value {
Copy link
Contributor

Choose a reason for hiding this comment

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

We probably don't need this function if making such a value is as easy as line 496

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

agreed

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

I rescind my agreement, it's not so easy: this is a CustomSerialized holding a ConstF64.

hugr/src/ops/constant.rs Outdated Show resolved Hide resolved
hugr/src/ops/constant.rs Outdated Show resolved Hide resolved
#[serde(transparent)]
pub struct ExtensionValue(pub(super) Box<dyn CustomConst>);
pub struct ExtensionValue {
#[serde(flatten, with = "self::custom::serde_extension_value")]
Copy link
Contributor

Choose a reason for hiding this comment

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

My serde-fu isn't good enough to work out how this should resolve?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

flatten means "take all the attributes from this dictionary and pretend they are in me".

with means "look at this module and use serialize and deserialize within".

Does that answer your question?

I will remove the #[serde(transparent)] above

hugr/src/ops/constant/custom.rs Show resolved Hide resolved
hugr/src/ops/constant/custom.rs Outdated Show resolved Hide resolved
hugr/src/ops/constant/custom.rs Outdated Show resolved Hide resolved
doug-q and others added 6 commits May 9, 2024 15:38
Co-authored-by: Craig Roy <croyzor@users.noreply.github.com>
Co-authored-by: Craig Roy <croyzor@users.noreply.github.com>
Co-authored-by: Craig Roy <croyzor@users.noreply.github.com>
Co-authored-by: Craig Roy <croyzor@users.noreply.github.com>
@doug-q doug-q requested a review from mark-koch May 9, 2024 14:53
@doug-q doug-q added this pull request to the merge queue May 9, 2024
Merged via the queue into main with commit c45e6fc May 9, 2024
17 checks passed
@doug-q doug-q deleted the feat/const-serialisation2 branch May 9, 2024 16:24
doug-q pushed a commit that referenced this pull request May 10, 2024
🤖 I have created a release *beep* *boop*
---


##
[0.2.0-pre](hugr-py-v0.1.0...hugr-py-v0.2.0-pre)
(2024-05-10)


### ⚠ BREAKING CHANGES

* New serialisation schema
* rename `Const::const_type` and `Value::const_type` to
`Const::get_type` and `Value::get_type`. These now match several other
`get_type` functions ([#1005](#1005))
* Many uses of `Const` now use `Value`.

### Features

* Add LoadFunction node
([#947](#947))
([81e9602](81e9602))
* Encoder metadata in serialized hugr
([#955](#955))
([0a44d48](0a44d48))
* Implement `CustomConst` serialization
([#1005](#1005))
([c45e6fc](c45e6fc))
* Revert the removal of `Value`
([#967](#967))
([0c354b6](0c354b6))
* Set default value for `Conditional.sum_rows`
([#934](#934))
([d69198e](d69198e))


### Bug Fixes

* `OpDef` serialization
([#1013](#1013))
([3d8f6f6](3d8f6f6))
* input_port_types and other helper functions on pydantic schema
([#958](#958))
([8651839](8651839))
* Remove insert_port_types for LoadFunction
([#993](#993))
([acca7bf](acca7bf))
* Serialisation for `Type`, `PolyFuncType`, and `Value`
([#968](#968))
([d913f40](d913f40))
* Serialization for `Op`s
([#997](#997))
([9ce6e49](9ce6e49))


### Code Refactoring

* rename `Const::const_type` and `Value::const_type` to
`Const::get_type` and `Value::get_type`. These now match several other
`get_type` functions ([#1005](#1005))
([c45e6fc](c45e6fc))

---
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: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
github-merge-queue bot pushed a commit that referenced this pull request May 13, 2024
🤖 I have created a release *beep* *boop*
---


##
[0.2.0a1](hugr-py-v0.1.0...hugr-py-v0.2.0a1)
(2024-05-13)


### ⚠ BREAKING CHANGES

* New serialisation schema
* rename `Const::const_type` and `Value::const_type` to
`Const::get_type` and `Value::get_type`. These now match several other
`get_type` functions ([#1005](#1005))
* Many uses of `Const` now use `Value`.

### Features

* Add LoadFunction node
([#947](#947))
([81e9602](81e9602))
* Encoder metadata in serialized hugr
([#955](#955))
([0a44d48](0a44d48))
* Implement `CustomConst` serialization
([#1005](#1005))
([c45e6fc](c45e6fc))
* Revert the removal of `Value`
([#967](#967))
([0c354b6](0c354b6))
* Set default value for `Conditional.sum_rows`
([#934](#934))
([d69198e](d69198e))


### Bug Fixes

* `OpDef` serialization
([#1013](#1013))
([3d8f6f6](3d8f6f6))
* input_port_types and other helper functions on pydantic schema
([#958](#958))
([8651839](8651839))
* Remove insert_port_types for LoadFunction
([#993](#993))
([acca7bf](acca7bf))
* Serialisation for `Type`, `PolyFuncType`, and `Value`
([#968](#968))
([d913f40](d913f40))
* Serialization for `Op`s
([#997](#997))
([9ce6e49](9ce6e49))
* set `[build-system]` in `hugr-py/pyproject.toml`
([#1022](#1022))
([b9c3ee4](b9c3ee4))


### Code Refactoring

* rename `Const::const_type` and `Value::const_type` to
`Const::get_type` and `Value::get_type`. These now match several other
`get_type` functions ([#1005](#1005))
([c45e6fc](c45e6fc))

---
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: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Douglas Wilson <douglas.wilson@quantinuum.com>
github-merge-queue bot pushed a commit that referenced this pull request May 13, 2024
## 🤖 New release
* `hugr`: 0.3.1 -> 0.4.0-alpha.1 (⚠️ API breaking changes)

### ⚠️ `hugr` breaking changes

```
--- failure enum_marked_non_exhaustive: enum marked #[non_exhaustive] ---

Description:
A public enum has been marked #[non_exhaustive]. Pattern-matching on it outside of its crate must now include a wildcard pattern like `_`, or it will fail to compile.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#attr-adding-non-exhaustive
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.31.0/src/lints/enum_marked_non_exhaustive.ron

Failed in:
  enum RegionBlocksError in /tmp/.tmpleGpag/hugr/hugr/src/algorithm/nest_cfgs.rs:282
  enum EdgeValidationError in /tmp/.tmpleGpag/hugr/hugr/src/ops/validate.rs:213
  enum ExtensionDeclarationError in /tmp/.tmpleGpag/hugr/hugr/src/extension/declarative.rs:179
  enum InterGraphEdgeError in /tmp/.tmpleGpag/hugr/hugr/src/hugr/validate.rs:748
  enum ValidationError in /tmp/.tmpleGpag/hugr/hugr/src/hugr/validate.rs:632
  enum ValidationError in /tmp/.tmpleGpag/hugr/hugr/src/hugr/validate.rs:632
  enum HUGRSerializationError in /tmp/.tmpleGpag/hugr/hugr/src/hugr/serialize.rs:107
  enum InlineDFGError in /tmp/.tmpleGpag/hugr/hugr/src/hugr/rewrite/inline_dfg.rs:15
  enum ExtensionError in /tmp/.tmpleGpag/hugr/hugr/src/extension/validate.rs:163
  enum IntOpDef in /tmp/.tmpleGpag/hugr/hugr/src/std_extensions/arithmetic/int_ops.rs:51
  enum ChildrenValidationError in /tmp/.tmpleGpag/hugr/hugr/src/ops/validate.rs:163
  enum SumTypeError in /tmp/.tmpleGpag/hugr/hugr/src/types/check.rs:11
  enum ReplaceError in /tmp/.tmpleGpag/hugr/hugr/src/hugr/rewrite/replace.rs:388
  enum ConvertOpDef in /tmp/.tmpleGpag/hugr/hugr/src/std_extensions/arithmetic/conversions.rs:30
  enum InvalidSubgraph in /tmp/.tmpleGpag/hugr/hugr/src/hugr/views/sibling_subgraph.rs:647
  enum TypeArgError in /tmp/.tmpleGpag/hugr/hugr/src/types/type_param.rs:376
  enum SumType in /tmp/.tmpleGpag/hugr/hugr/src/types.rs:124
  enum ListOp in /tmp/.tmpleGpag/hugr/hugr/src/std_extensions/collections.rs:209
  enum SimpleReplacementError in /tmp/.tmpleGpag/hugr/hugr/src/hugr/rewrite/simple_replace.rs:185
  enum SimpleReplacementError in /tmp/.tmpleGpag/hugr/hugr/src/hugr/rewrite/simple_replace.rs:185
  enum SimpleReplacementError in /tmp/.tmpleGpag/hugr/hugr/src/hugr/rewrite/simple_replace.rs:185
  enum CustomCheckFailure in /tmp/.tmpleGpag/hugr/hugr/src/ops/constant.rs:227
  enum CustomCheckFailure in /tmp/.tmpleGpag/hugr/hugr/src/ops/constant.rs:227
  enum IdentityInsertionError in /tmp/.tmpleGpag/hugr/hugr/src/hugr/rewrite/insert_identity.rs:36
  enum RemoveError in /tmp/.tmpleGpag/hugr/hugr/src/hugr/rewrite/consts.rs:18
  enum OutlineCfgError in /tmp/.tmpleGpag/hugr/hugr/src/hugr/rewrite/outline_cfg.rs:223
  enum NaryLogic in /tmp/.tmpleGpag/hugr/hugr/src/std_extensions/logic.rs:56
  enum OpLoadError in /tmp/.tmpleGpag/hugr/hugr/src/extension/simple_op.rs:24
  enum ConstTypeError in /tmp/.tmpleGpag/hugr/hugr/src/ops/constant.rs:244
  enum ConstTypeError in /tmp/.tmpleGpag/hugr/hugr/src/ops/constant.rs:244
  enum InvalidReplacement in /tmp/.tmpleGpag/hugr/hugr/src/hugr/views/sibling_subgraph.rs:629
  enum InvalidSubgraphBoundary in /tmp/.tmpleGpag/hugr/hugr/src/hugr/views/sibling_subgraph.rs:665
  enum InferExtensionError in /tmp/.tmpleGpag/hugr/hugr/src/extension/infer.rs:68
  enum FloatOps in /tmp/.tmpleGpag/hugr/hugr/src/std_extensions/arithmetic/float_ops.rs:25
  enum CustomOpError in /tmp/.tmpleGpag/hugr/hugr/src/ops/custom.rs:400

--- failure enum_missing: pub enum removed or renamed ---

Description:
A publicly-visible enum cannot be imported by its prior path. A `pub use` may have been removed, or the enum itself may have been renamed or removed entirely.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.31.0/src/lints/enum_missing.ron

Failed in:
  enum hugr::ops::constant::Const, previously in file /tmp/.tmppKREXC/hugr/src/ops/constant.rs:22
  enum hugr::ops::Const, previously in file /tmp/.tmppKREXC/hugr/src/ops/constant.rs:22

--- failure enum_struct_variant_field_added: pub enum struct variant field added ---

Description:
An enum's exhaustive struct variant has a new field, which has to be included when constructing or matching on this variant.
        ref: https://doc.rust-lang.org/reference/attributes/type_system.html#the-non_exhaustive-attribute
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.31.0/src/lints/enum_struct_variant_field_added.ron

Failed in:
  field dir of variant HUGRSerializationError::MissingPortOffset in /tmp/.tmpleGpag/hugr/hugr/src/hugr/serialize.rs:120

--- failure enum_variant_added: enum variant added on exhaustive enum ---

Description:
A publicly-visible enum without #[non_exhaustive] has a new variant.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#enum-variant-new
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.31.0/src/lints/enum_variant_added.ron

Failed in:
  variant SignatureError:LoadFunctionIncorrectlyAppliesType in /tmp/.tmpleGpag/hugr/hugr/src/extension.rs:182
  variant ExtensionBuildError:ValueExists in /tmp/.tmpleGpag/hugr/hugr/src/extension.rs:405

--- failure inherent_method_missing: pub method removed or renamed ---

Description:
A publicly-visible method or associated fn is no longer available under its prior name. It may have been renamed or removed entirely.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.31.0/src/lints/inherent_method_missing.ron

Failed in:
  ConvertOpDef::with_width, previously in file /tmp/.tmppKREXC/hugr/src/std_extensions/arithmetic/conversions.rs:78
  IntOpDef::with_width, previously in file /tmp/.tmppKREXC/hugr/src/std_extensions/arithmetic/int_ops.rs:314
  IntOpDef::with_two_widths, previously in file /tmp/.tmppKREXC/hugr/src/std_extensions/arithmetic/int_ops.rs:323
  Const::const_type, previously in file /tmp/.tmppKREXC/hugr/src/ops/constant.rs:124
  Const::sum, previously in file /tmp/.tmppKREXC/hugr/src/ops/constant.rs:138
  Const::tuple, previously in file /tmp/.tmppKREXC/hugr/src/ops/constant.rs:153
  Const::function, previously in file /tmp/.tmppKREXC/hugr/src/ops/constant.rs:164
  Const::unit, previously in file /tmp/.tmppKREXC/hugr/src/ops/constant.rs:173
  Const::unit_sum, previously in file /tmp/.tmppKREXC/hugr/src/ops/constant.rs:178
  Const::unary_unit_sum, previously in file /tmp/.tmppKREXC/hugr/src/ops/constant.rs:183
  Const::true_val, previously in file /tmp/.tmppKREXC/hugr/src/ops/constant.rs:188
  Const::false_val, previously in file /tmp/.tmppKREXC/hugr/src/ops/constant.rs:193
  Const::from_bool, previously in file /tmp/.tmppKREXC/hugr/src/ops/constant.rs:199
  Const::extension, previously in file /tmp/.tmppKREXC/hugr/src/ops/constant.rs:208
  Const::get_custom_value, previously in file /tmp/.tmppKREXC/hugr/src/ops/constant.rs:215
  Const::const_type, previously in file /tmp/.tmppKREXC/hugr/src/ops/constant.rs:124
  Const::sum, previously in file /tmp/.tmppKREXC/hugr/src/ops/constant.rs:138
  Const::tuple, previously in file /tmp/.tmppKREXC/hugr/src/ops/constant.rs:153
  Const::function, previously in file /tmp/.tmppKREXC/hugr/src/ops/constant.rs:164
  Const::unit, previously in file /tmp/.tmppKREXC/hugr/src/ops/constant.rs:173
  Const::unit_sum, previously in file /tmp/.tmppKREXC/hugr/src/ops/constant.rs:178
  Const::unary_unit_sum, previously in file /tmp/.tmppKREXC/hugr/src/ops/constant.rs:183
  Const::true_val, previously in file /tmp/.tmppKREXC/hugr/src/ops/constant.rs:188
  Const::false_val, previously in file /tmp/.tmppKREXC/hugr/src/ops/constant.rs:193
  Const::from_bool, previously in file /tmp/.tmppKREXC/hugr/src/ops/constant.rs:199
  Const::extension, previously in file /tmp/.tmppKREXC/hugr/src/ops/constant.rs:208
  Const::get_custom_value, previously in file /tmp/.tmppKREXC/hugr/src/ops/constant.rs:215

--- failure struct_missing: pub struct removed or renamed ---

Description:
A publicly-visible struct cannot be imported by its prior path. A `pub use` may have been removed, or the struct itself may have been renamed or removed entirely.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.31.0/src/lints/struct_missing.ron

Failed in:
  struct hugr::std_extensions::arithmetic::int_types::ConstIntS, previously in file /tmp/.tmppKREXC/hugr/src/std_extensions/arithmetic/int_types.rs:83
  struct hugr::std_extensions::arithmetic::int_types::ConstIntU, previously in file /tmp/.tmppKREXC/hugr/src/std_extensions/arithmetic/int_types.rs:76
  struct hugr::ops::constant::ExtensionConst, previously in file /tmp/.tmppKREXC/hugr/src/ops/constant.rs:64

--- failure trait_missing: pub trait removed or renamed ---

Description:
A publicly-visible trait cannot be imported by its prior path. A `pub use` may have been removed, or the trait itself may have been renamed or removed entirely.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.31.0/src/lints/trait_missing.ron

Failed in:
  trait hugr::ops::OpName, previously in file /tmp/.tmppKREXC/hugr/src/ops.rs:307

--- failure trait_removed_supertrait: supertrait removed or renamed ---

Description:
A supertrait was removed from a trait. Users of the trait can no longer assume it can also be used like its supertrait.
        ref: https://doc.rust-lang.org/reference/items/traits.html#supertraits
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.31.0/src/lints/trait_removed_supertrait.ron

Failed in:
  supertrait hugr::ops::OpName of trait MakeExtensionOp in file /tmp/.tmpleGpag/hugr/hugr/src/extension/simple_op.rs:87
  supertrait hugr::ops::OpName of trait MakeOpDef in file /tmp/.tmpleGpag/hugr/hugr/src/extension/simple_op.rs:45
```

<details><summary><i><b>Changelog</b></i></summary><p>

<blockquote>

## 0.4.0 (2024-05-13)

### Bug Fixes

- Serialization round-trips
([#948](#948))
- [**breaking**] Combine `ConstIntU` and `ConstIntS`
([#974](#974))
- Disable serialisation tests when miri is active
([#977](#977))
- [**breaking**] Serialisation schema
([#968](#968))
- Correct constant fold for `fne`.
([#995](#995))
- [**breaking**] Serialisation fixes
([#997](#997))
- [**breaking**] OpDef serialisation
([#1013](#1013))
- NaryLogicOp constant folding
([#1026](#1026))

### Features

- 'Replace' rewrite returns node map
([#929](#929))
- `new` methods for leaf ops
([#940](#940))
- Add `string` type and `print` function to `prelude`
([#942](#942))
- `CustomOp::extension` utility function
([#951](#951))
- [**breaking**] Add `non_exhaustive` to various enums
([#952](#952))
- Encoder metadata in serialized hugr
([#955](#955))
- [**breaking**] Bring back Value
([#967](#967))
- Add LoadFunction node ([#947](#947))
- Add From impls for TypeArg
([#1002](#1002))
- Constant-folding of integer and logic operations
([#1009](#1009))
- [**breaking**] Update serialisation schema, implement `CustomConst`
serialisation ([#1005](#1005))
- Merge basic blocks algorithm
([#956](#956))
- [**breaking**] Allow panic operation to have any input and output
wires ([#1024](#1024))

### Refactor

- Outline hugr::serialize::test
([#976](#976))
- [**breaking**] Replace SmolStr identifiers with wrapper types.
([#959](#959))
- Separate extension validation from the rest
([#1011](#1011))
- Remove "trait TypeParametrised"
([#1019](#1019))

### Testing

- Add a test of instantiating an extension set
([#939](#939))
- Ignore serialisation tests when using miri
([#975](#975))
- [**breaking**] Test roundtrip serialisation against strict + lax
schema ([#982](#982))
- Fix some bad assert_matches
([#1006](#1006))
- Expand test of instantiating extension sets
([#1003](#1003))
- Fix unconnected ports in extension test
([#1010](#1010))
</blockquote>


</p></details>

---
This PR was generated with
[release-plz](https://github.com/MarcoIeni/release-plz/).

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Douglas Wilson <douglas.wilson@quantinuum.com>
This was referenced May 15, 2024
github-merge-queue bot pushed a commit that referenced this pull request May 20, 2024
## 🤖 New release
* `hugr`: 0.3.1 -> 0.4.0 (⚠️ API breaking changes)

### ⚠️ `hugr` breaking changes

```
--- failure inherent_method_const_removed: pub method is no longer const ---

Description:
A publicly-visible method or associated fn is no longer `const` and can no longer be used in a `const` context.
        ref: https://doc.rust-lang.org/reference/const_eval.html
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.31.0/src/lints/inherent_method_const_removed.ron

Failed in:
  ConstF64::new in /tmp/.tmpwo5blB/hugr/hugr/src/std_extensions/arithmetic/float_types.rs:43

--- failure struct_missing: pub struct removed or renamed ---

Description:
A publicly-visible struct cannot be imported by its prior path. A `pub use` may have been removed, or the struct itself may have been renamed or removed entirely.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.31.0/src/lints/struct_missing.ron

Failed in:
  struct hugr::ops::constant::ExtensionValue, previously in file /tmp/.tmpq1W6bC/hugr/src/ops/constant.rs:184
```

<details><summary><i><b>Changelog</b></i></summary><p>

<blockquote>

## 0.4.0 (2024-05-20)

### Bug Fixes

- Disallow non-finite values for `ConstF64`
([#1075](#1075))
- Serialization round-trips
([#948](#948))
- [**breaking**] Combine `ConstIntU` and `ConstIntS`
([#974](#974))
- Disable serialisation tests when miri is active
([#977](#977))
- [**breaking**] Serialisation schema
([#968](#968))
- Correct constant fold for `fne`.
([#995](#995))
- [**breaking**] Serialisation fixes
([#997](#997))
- [**breaking**] OpDef serialisation
([#1013](#1013))
- NaryLogicOp constant folding
([#1026](#1026))

### Features

- Add verification to constant folding
([#1030](#1030))
- Add `Const::get_custom_value`
([#1037](#1037))
- Add serialization schema for metadata
([#1038](#1038))
- 'Replace' rewrite returns node map
([#929](#929))
- `new` methods for leaf ops
([#940](#940))
- Add `string` type and `print` function to `prelude`
([#942](#942))
- `CustomOp::extension` utility function
([#951](#951))
- [**breaking**] Add `non_exhaustive` to various enums
([#952](#952))
- Encoder metadata in serialized hugr
([#955](#955))
- [**breaking**] Bring back Value
([#967](#967))
- Add LoadFunction node ([#947](#947))
- Add From impls for TypeArg
([#1002](#1002))
- Constant-folding of integer and logic operations
([#1009](#1009))
- [**breaking**] Update serialisation schema, implement `CustomConst`
serialisation ([#1005](#1005))
- Merge basic blocks algorithm
([#956](#956))
- [**breaking**] Allow panic operation to have any input and output
wires ([#1024](#1024))

### Refactor

- [**breaking**] Rename `crate::ops::constant::ExtensionValue` =>
`OpaqueValue` ([#1036](#1036))
- Outline hugr::serialize::test
([#976](#976))
- [**breaking**] Replace SmolStr identifiers with wrapper types.
([#959](#959))
- Separate extension validation from the rest
([#1011](#1011))
- Remove "trait TypeParametrised"
([#1019](#1019))

### Testing

- Reorg OutlineCfg/nest_cfgs tests so hugr doesn't depend on algorithm
([#1007](#1007))
- Ignore tests which depend on typetag when cfg(miri)
([#1051](#1051))
- Really ignore tests which depend on typetag when cfg(miri)
([#1058](#1058))
- Proptests for round trip serialisation of `Type`s and `Op`s.
([#981](#981))
- Add a test of instantiating an extension set
([#939](#939))
- Ignore serialisation tests when using miri
([#975](#975))
- [**breaking**] Test roundtrip serialisation against strict + lax
schema ([#982](#982))
- Fix some bad assert_matches
([#1006](#1006))
- Expand test of instantiating extension sets
([#1003](#1003))
- Fix unconnected ports in extension test
([#1010](#1010))

</blockquote>


</p></details>

---
This PR was generated with
[release-plz](https://github.com/MarcoIeni/release-plz/).

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Douglas Wilson <douglas.wilson@quantinuum.com>
github-merge-queue bot pushed a commit that referenced this pull request May 20, 2024
🤖 I have created a release *beep* *boop*
---

##
[0.2.1](hugr-py-v0.2.0...hugr-py-v0.2.1)
(2024-05-20)

### ⚠ BREAKING CHANGES

* New serialisation schema
* rename `Const::const_type` and `Value::const_type` to
`Const::get_type` and `Value::get_type`. These now match several other
`get_type` functions ([#1005](#1005))
* Many uses of `Const` now use `Value`.

### Features

* Add serialization schema for metadata
([#1038](#1038))
([19bac62](19bac62))
* Add LoadFunction node
([#947](#947))
([81e9602](81e9602))
* Encoder metadata in serialized hugr
([#955](#955))
([0a44d48](0a44d48))
* Implement `CustomConst` serialization
([#1005](#1005))
([c45e6fc](c45e6fc))
* Revert the removal of `Value`
([#967](#967))
([0c354b6](0c354b6))
* Set default value for `Conditional.sum_rows`
([#934](#934))
([d69198e](d69198e))


### Bug Fixes

* `OpDef` serialization
([#1013](#1013))
([3d8f6f6](3d8f6f6))
* input_port_types and other helper functions on pydantic schema
([#958](#958))
([8651839](8651839))
* Remove insert_port_types for LoadFunction
([#993](#993))
([acca7bf](acca7bf))
* Serialisation for `Type`, `PolyFuncType`, and `Value`
([#968](#968))
([d913f40](d913f40))
* Serialization for `Op`s
([#997](#997))
([9ce6e49](9ce6e49))
* set `[build-system]` in `hugr-py/pyproject.toml`
([#1022](#1022))
([b9c3ee4](b9c3ee4))


### Code Refactoring

* rename `Const::const_type` and `Value::const_type` to
`Const::get_type` and `Value::get_type`. These now match several other
`get_type` functions ([#1005](#1005))
([c45e6fc](c45e6fc))

---
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 <121866228+aborgna-q@users.noreply.github.com>
Co-authored-by: doug-q <141026920+doug-q@users.noreply.github.com>
Co-authored-by: Douglas Wilson <douglas.wilson@quantinuum.com>
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.

3 participants