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

Retain all deprecated Bit properties in QPY roundtrip #9525

Merged
merged 9 commits into from
Feb 16, 2023

Commits on Feb 3, 2023

  1. Retain more deprecated Bit properties in QPY roundtrip

    A major bugfix for QPY's handling of loose circuit bits in c0ac5fb
    (Qiskitgh-9095) caused the deprecated bit properties `index` and `register` to
    be lost after the QPY roundtrip.  As far as Terra's data model is
    concerned, the two circuits would still compare equal after this loss;
    the output registers would still be equal to the inputs, and bit
    equality is not considered directly since it general bit instances are
    not expected to be equal between circuits.
    
    Losing this information caused some downstream issues for the IBM
    runtime, which was still relying on `Bit.index` working in some cases,
    despite it issuing a deprecating warning since Terra 0.17 (April 2021).
    While this can be corrected downstream, QPY can still do a better job of
    roundtripping the deprecated information while it is still present.
    
    The QPY format does not currently store enough information to
    _completely_ roundtrip this information in cases that some but not all
    owned bits from a register are present in the circuit.  (This partial
    data is a decent part of the cause of the bugs that Qiskitgh-9095 fixed.)
    Since this is just in the support of deprecated functionality that
    Terra's data model does not even require for circuit equality (QPY's
    goal), it seems not worth it to produce a new QPY binary format version
    to store this, when the deprecated properties being removed would
    obsolete the format again immediately.
    jakelishman committed Feb 3, 2023
    Configuration menu
    Copy the full SHA
    489cd7f View commit details
    Browse the repository at this point in the history
  2. Fix lint

    jakelishman committed Feb 3, 2023
    Configuration menu
    Copy the full SHA
    03fd414 View commit details
    Browse the repository at this point in the history

Commits on Feb 7, 2023

  1. Correct deprecated bit information in QPY

    This allows complete round-tripping of all the deprecated register+index
    information in the `Bit` instances through QPY, restoring us to the
    _intended_ behaviour before Qiskitgh-9095.  The behaviour in the dumper before
    that did not allow full reconstruction, because some of the information
    was lost for bits that were encountered in more than one register.
    
    This fixes the dumper to always output all the indexing information for
    all bits, not to use `-1` whenever a bit _is_ in the circuit but has
    previously been encountered.  The `standalone` field on a register is
    sufficient to tell whether the bits contained in it should have their
    "owner" information set; it's not possible (in valid Qiskit code) to
    have a register that owns only _some_ of its bits.  To accomodate this,
    the register reader now needs to be two-pass.
    jakelishman committed Feb 7, 2023
    Configuration menu
    Copy the full SHA
    b27da19 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    05e9467 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    5d6658f View commit details
    Browse the repository at this point in the history
  4. Rewrite release note

    jakelishman committed Feb 7, 2023
    Configuration menu
    Copy the full SHA
    1f8a68a View commit details
    Browse the repository at this point in the history

Commits on Feb 14, 2023

  1. Configuration menu
    Copy the full SHA
    79acf63 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    1f7b51b View commit details
    Browse the repository at this point in the history

Commits on Feb 16, 2023

  1. Configuration menu
    Copy the full SHA
    7359df7 View commit details
    Browse the repository at this point in the history