plaquette-unionfind


Nameplaquette-unionfind JSON
Version 0.0.1a2 PyPI version JSON
download
home_page
Summary
upload_time2023-06-07 06:29:15
maintainer
docs_urlNone
author
requires_python>=3.10
license
keywords quantum error correction qec quantum computing fault tolerance error decoding
VCS
bugtrack_url
requirements plaquette plaquette_graph
Travis-CI No Travis.
coveralls test coverage No coveralls.
            ##################################
Plaquette UnionFind Decoder Plugin
##################################

.. image:: https://github.com/qc-design/plaquette-unionfind/actions/workflows/tests_linux.yml/badge.svg
    :target: https://github.com/qc-design/plaquette-unionfind/actions/workflows/tests_linux.yml

.. image:: https://github.com/qc-design/plaquette-unionfind/actions/workflows/tests_windows.yml/badge.svg
    :target: https://github.com/qc-design/plaquette-unionfind/actions/workflows/tests_windows.yml

.. header-start-inclusion-marker-do-not-remove

.. contents:: Table of Contents

.. about-start-inclusion-marker-do-not-remove

About 
=====

The `Plaquette-UnionFind <https://github.com/qc-design/plaquette-unionfind>`_ plugin
extends the `Plaquette <https://github.com/qc-design/plaquette>`_ error correction
software, providing a fast unionfind decoder written in C++. See the `Benchmarks`_
section for a comparison to other known decoding packages.

.. about-end-inclusion-marker-do-not-remove

.. installation-start-inclusion-marker-do-not-remove

Installation
============

The basic dependencies for installation are cmake and ninja.

The C++ tests/examples and python bindings can be built independently by

.. code-block:: console

   cmake -Bbuild -G Ninja -DPLAQUETTE_UNIONFIND_BUILD_TESTS=On -DPLAQUETTE_UNIONFIND_BUILD_BINDINGS=On
   cmake --build ./build


You can run the C++ backend tests with

.. code-block:: console

   make test-cpp


You can install just the python interface with (this quietly builds the C++ backend):

.. code-block:: console

   pip install -r requirements.txt
   pip install .

or get the latest stable release from PyPI

.. code-block:: console

    pip install plaquette_unionfind


You can run the python frontend tests with

.. code-block:: console

   make test-python

.. installation-end-inclusion-marker-do-not-remove

.. benchmark-start-inclusion-marker-do-not-remove

Usage
==========

Python Frontend
---------------

.. code-block:: python

    import plaquette_unionfind as puf
    import plaquette_graph as pg

    vertex_boundary = [False] * 12 + [True] * 8
    edges = [(0, 12), (0, 1), (1, 2), (2, 13), (0, 3), (1, 4), (2, 5), (3, 14), (3, 4),
             (4, 5), (5, 15), (3, 6), (4, 7), (5, 8), (6, 16), (6, 7), (7, 8), (8, 17),
             (6, 9), (7, 10), (8, 11), (9, 18), (9, 10), (10, 11), (11, 19)]
    syndrome = [False, False, True, True, False, True, True, False, True, False, True,
                False, False, False, False, False, False, False, False, False]
    dg = pg.DecodingGraph(num_vertices, edges, vertex_boundary)
    uf = puf.UnionFindDecoder(dg)
    correction = uf.decode(syndrome)


C++ Backend
-----------

.. code-block:: cpp

    #include "DecodingGraph.hpp"
    #include "UnionFindDecoder.hpp"

    int main(int argc, char *argv[]) {

        using namespace Plaquette;
        //a vector storing a flag that is 1 if the vertex is on the boundary
        std::vector<bool> vertex_boundary = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                                             0, 0, 1, 1, 1, 1, 1, 1, 1, 1};
        std::vector<std::pair<size_t, size_t>> edges = {
            {0, 12}, {0, 1},  {1, 2},   {2, 13}, {0, 3}, {1, 4},  {2, 5},
            {3, 14}, {3, 4},  {4, 5},   {5, 15}, {3, 6}, {4, 7},  {5, 8},
            {6, 16}, {6, 7},  {7, 8},   {8, 17}, {6, 9}, {7, 10}, {8, 11},
            {9, 18}, {9, 10}, {10, 11}, {11, 19}};

        std::vector<bool> syndrome = {false, false, true,  true,  false, true,  true,
                                      false, true,  false, true,  false, false, false,
                                      false, false, false, false, false, false};

        auto decoding_graph = DecodingGraph(vertex_boundary.size(),
                                          edges, vertex_boundary);
        UnionFindDecoder decoder(decoding_graph);
        auto correction = decoder.Decode(syndrome);
    }

Interface to Plaquette
----------------------

`Plaquette <https://github.com/qc-design/plaquette>`_ is undergoing heavy development, so this interface is likely to change. If you are benchmarking
our decoder, please do not use the plaquette interface unless you know what you are doing. You will be timing other computations unrelated to the decoding.

.. code-block:: python

    from plaquette.codes import LatticeCode
    import plaquette_unionfind
    
        code = LatticeCode.make_planar(n_rounds=1, size=size)
        qed = {
            "pauli": {q.equbit_idx: {"x": error_rate} for q in code.lattice.dataqubits}
        }
        decoder = plaquette_unionfind.UnionFindDecoderInterface.from_code(code, qed, weighted=False)
    
Benchmarks
==========

We benchmark plaquette-unionfind along with two of the leading open source decorders `PyMatching-v2 <https://arxiv.org/abs/2303.15933>`_ 
and `FusionBlosson <https://arxiv.org/abs/2305.08307>`_. 

For our benchmarks, we have been careful to only time the intrinsic PyMatching and FusionBlossom decoding
functions. Only the intrinsic speed of the decoder was timed, so e.g., we do not yet benchmark along with 
the decode_batch function for Pymatching-v2. We also set FusionBlossom to single-threaded mode for a fair 
comparison with PyMatching and plaquette-unionfind. All benchmarks are performed on a m6id.4xlarge AWS node. 
All benchmarks are reproducible (see below) using our scripts on a m6id.4xlarge.

For our first benchmark, we use the 2-D (perfect measurement) Planar Code with p = 0.05 depolarization
error. We observe up to 8-10x speedup over PyMatching and FusionBlossom.

.. image:: https://github.com/qc-design/plaquette-unionfind/blob/40fb8fab11ad60e281089e3b0b26865c899749cb/benchmarks/perfect_planar_0.05.png?raw=true
   :align: center
   :width: 500px 

For our second benchmark we use the 3-D Rotated Planar Code to account for measurement errors, with p = 0.01 depolarization
error and p = 0.01 measurement error. We observe that Pymatching is more sensitive to the lattice size than the other decoders.

.. image:: https://github.com/qc-design/plaquette-unionfind/blob/40fb8fab11ad60e281089e3b0b26865c899749cb/benchmarks/imperfect_rotated_planar_0.01.png?raw=true
   :align: center
   :width: 500px 

Finally we benchmark a 30x30 Rotated Planar Code (29 rounds of measurement) with varying probability. We observe that
FusionBlossom is sensitive to the error probability.

.. image:: https://github.com/qc-design/plaquette-unionfind/blob/40fb8fab11ad60e281089e3b0b26865c899749cb/benchmarks/imperfect_rotated_planar_fixed_size.png?raw=true
   :align: center
   :width: 500px 

To run all three benchmarks, use the following bash commands:

.. code-block:: console

   source benchmarks/run_perfect_planar_benchmark.sh 0.05
   source benchmarks/run_imperfect_rotated_planar_benchmark.sh 0.01
   source benchmarks/run_imperfect_rotated_planar_fixed_size_benchmark.sh

   python plot_benchmark_1.py perfect_planar_0.05.dat perfect_planar_0.05.png "Surface Code Benchmark #1" 5
   python plot_benchmark_2.py imperfect_rotated_planar_0.01.dat imperfect_rotated_planar_0.01.png "Surface Code Benchmark #2" 5
   python plot_benchmark_3.py imperfect_rotated_planar_fixed_size.dat imperfect_rotated_planar_fixed_size.png "Surface Code Benchmark #3" 1
        
.. benchmark-end-inclusion-marker-do-not-remove

Documentation
=============

To generate the documentation you will need to install graphviz and doxygen. Then run

.. code-block:: console

   pip install -r doc/requirements.txt
   make docs
   firefox ./doc/_build/html/index.html

Here is a live link to the documentation: https://docs.plaquette.design/projects/unionfind

            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "plaquette-unionfind",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": "",
    "keywords": "Quantum error correction,qec,quantum computing,fault tolerance,error decoding",
    "author": "",
    "author_email": "",
    "download_url": "",
    "platform": null,
    "description": "##################################\nPlaquette UnionFind Decoder Plugin\n##################################\n\n.. image:: https://github.com/qc-design/plaquette-unionfind/actions/workflows/tests_linux.yml/badge.svg\n    :target: https://github.com/qc-design/plaquette-unionfind/actions/workflows/tests_linux.yml\n\n.. image:: https://github.com/qc-design/plaquette-unionfind/actions/workflows/tests_windows.yml/badge.svg\n    :target: https://github.com/qc-design/plaquette-unionfind/actions/workflows/tests_windows.yml\n\n.. header-start-inclusion-marker-do-not-remove\n\n.. contents:: Table of Contents\n\n.. about-start-inclusion-marker-do-not-remove\n\nAbout \n=====\n\nThe `Plaquette-UnionFind <https://github.com/qc-design/plaquette-unionfind>`_ plugin\nextends the `Plaquette <https://github.com/qc-design/plaquette>`_ error correction\nsoftware, providing a fast unionfind decoder written in C++. See the `Benchmarks`_\nsection for a comparison to other known decoding packages.\n\n.. about-end-inclusion-marker-do-not-remove\n\n.. installation-start-inclusion-marker-do-not-remove\n\nInstallation\n============\n\nThe basic dependencies for installation are cmake and ninja.\n\nThe C++ tests/examples and python bindings can be built independently by\n\n.. code-block:: console\n\n   cmake -Bbuild -G Ninja -DPLAQUETTE_UNIONFIND_BUILD_TESTS=On -DPLAQUETTE_UNIONFIND_BUILD_BINDINGS=On\n   cmake --build ./build\n\n\nYou can run the C++ backend tests with\n\n.. code-block:: console\n\n   make test-cpp\n\n\nYou can install just the python interface with (this quietly builds the C++ backend):\n\n.. code-block:: console\n\n   pip install -r requirements.txt\n   pip install .\n\nor get the latest stable release from PyPI\n\n.. code-block:: console\n\n    pip install plaquette_unionfind\n\n\nYou can run the python frontend tests with\n\n.. code-block:: console\n\n   make test-python\n\n.. installation-end-inclusion-marker-do-not-remove\n\n.. benchmark-start-inclusion-marker-do-not-remove\n\nUsage\n==========\n\nPython Frontend\n---------------\n\n.. code-block:: python\n\n    import plaquette_unionfind as puf\n    import plaquette_graph as pg\n\n    vertex_boundary = [False] * 12 + [True] * 8\n    edges = [(0, 12), (0, 1), (1, 2), (2, 13), (0, 3), (1, 4), (2, 5), (3, 14), (3, 4),\n             (4, 5), (5, 15), (3, 6), (4, 7), (5, 8), (6, 16), (6, 7), (7, 8), (8, 17),\n             (6, 9), (7, 10), (8, 11), (9, 18), (9, 10), (10, 11), (11, 19)]\n    syndrome = [False, False, True, True, False, True, True, False, True, False, True,\n                False, False, False, False, False, False, False, False, False]\n    dg = pg.DecodingGraph(num_vertices, edges, vertex_boundary)\n    uf = puf.UnionFindDecoder(dg)\n    correction = uf.decode(syndrome)\n\n\nC++ Backend\n-----------\n\n.. code-block:: cpp\n\n    #include \"DecodingGraph.hpp\"\n    #include \"UnionFindDecoder.hpp\"\n\n    int main(int argc, char *argv[]) {\n\n        using namespace Plaquette;\n        //a vector storing a flag that is 1 if the vertex is on the boundary\n        std::vector<bool> vertex_boundary = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n                                             0, 0, 1, 1, 1, 1, 1, 1, 1, 1};\n        std::vector<std::pair<size_t, size_t>> edges = {\n            {0, 12}, {0, 1},  {1, 2},   {2, 13}, {0, 3}, {1, 4},  {2, 5},\n            {3, 14}, {3, 4},  {4, 5},   {5, 15}, {3, 6}, {4, 7},  {5, 8},\n            {6, 16}, {6, 7},  {7, 8},   {8, 17}, {6, 9}, {7, 10}, {8, 11},\n            {9, 18}, {9, 10}, {10, 11}, {11, 19}};\n\n        std::vector<bool> syndrome = {false, false, true,  true,  false, true,  true,\n                                      false, true,  false, true,  false, false, false,\n                                      false, false, false, false, false, false};\n\n        auto decoding_graph = DecodingGraph(vertex_boundary.size(),\n                                          edges, vertex_boundary);\n        UnionFindDecoder decoder(decoding_graph);\n        auto correction = decoder.Decode(syndrome);\n    }\n\nInterface to Plaquette\n----------------------\n\n`Plaquette <https://github.com/qc-design/plaquette>`_ is undergoing heavy development, so this interface is likely to change. If you are benchmarking\nour decoder, please do not use the plaquette interface unless you know what you are doing. You will be timing other computations unrelated to the decoding.\n\n.. code-block:: python\n\n    from plaquette.codes import LatticeCode\n    import plaquette_unionfind\n    \n        code = LatticeCode.make_planar(n_rounds=1, size=size)\n        qed = {\n            \"pauli\": {q.equbit_idx: {\"x\": error_rate} for q in code.lattice.dataqubits}\n        }\n        decoder = plaquette_unionfind.UnionFindDecoderInterface.from_code(code, qed, weighted=False)\n    \nBenchmarks\n==========\n\nWe benchmark plaquette-unionfind along with two of the leading open source decorders `PyMatching-v2 <https://arxiv.org/abs/2303.15933>`_ \nand `FusionBlosson <https://arxiv.org/abs/2305.08307>`_. \n\nFor our benchmarks, we have been careful to only time the intrinsic PyMatching and FusionBlossom decoding\nfunctions. Only the intrinsic speed of the decoder was timed, so e.g., we do not yet benchmark along with \nthe decode_batch function for Pymatching-v2. We also set FusionBlossom to single-threaded mode for a fair \ncomparison with PyMatching and plaquette-unionfind. All benchmarks are performed on a m6id.4xlarge AWS node. \nAll benchmarks are reproducible (see below) using our scripts on a m6id.4xlarge.\n\nFor our first benchmark, we use the 2-D (perfect measurement) Planar Code with p = 0.05 depolarization\nerror. We observe up to 8-10x speedup over PyMatching and FusionBlossom.\n\n.. image:: https://github.com/qc-design/plaquette-unionfind/blob/40fb8fab11ad60e281089e3b0b26865c899749cb/benchmarks/perfect_planar_0.05.png?raw=true\n   :align: center\n   :width: 500px \n\nFor our second benchmark we use the 3-D Rotated Planar Code to account for measurement errors, with p = 0.01 depolarization\nerror and p = 0.01 measurement error. We observe that Pymatching is more sensitive to the lattice size than the other decoders.\n\n.. image:: https://github.com/qc-design/plaquette-unionfind/blob/40fb8fab11ad60e281089e3b0b26865c899749cb/benchmarks/imperfect_rotated_planar_0.01.png?raw=true\n   :align: center\n   :width: 500px \n\nFinally we benchmark a 30x30 Rotated Planar Code (29 rounds of measurement) with varying probability. We observe that\nFusionBlossom is sensitive to the error probability.\n\n.. image:: https://github.com/qc-design/plaquette-unionfind/blob/40fb8fab11ad60e281089e3b0b26865c899749cb/benchmarks/imperfect_rotated_planar_fixed_size.png?raw=true\n   :align: center\n   :width: 500px \n\nTo run all three benchmarks, use the following bash commands:\n\n.. code-block:: console\n\n   source benchmarks/run_perfect_planar_benchmark.sh 0.05\n   source benchmarks/run_imperfect_rotated_planar_benchmark.sh 0.01\n   source benchmarks/run_imperfect_rotated_planar_fixed_size_benchmark.sh\n\n   python plot_benchmark_1.py perfect_planar_0.05.dat perfect_planar_0.05.png \"Surface Code Benchmark #1\" 5\n   python plot_benchmark_2.py imperfect_rotated_planar_0.01.dat imperfect_rotated_planar_0.01.png \"Surface Code Benchmark #2\" 5\n   python plot_benchmark_3.py imperfect_rotated_planar_fixed_size.dat imperfect_rotated_planar_fixed_size.png \"Surface Code Benchmark #3\" 1\n        \n.. benchmark-end-inclusion-marker-do-not-remove\n\nDocumentation\n=============\n\nTo generate the documentation you will need to install graphviz and doxygen. Then run\n\n.. code-block:: console\n\n   pip install -r doc/requirements.txt\n   make docs\n   firefox ./doc/_build/html/index.html\n\nHere is a live link to the documentation: https://docs.plaquette.design/projects/unionfind\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "",
    "version": "0.0.1a2",
    "project_urls": {
        "Bug Tracker": "https://github.com/qc-design/plaquette-unionfind/issues",
        "Homepage": "https://docs.plaquette.design/projects/unionfind"
    },
    "split_keywords": [
        "quantum error correction",
        "qec",
        "quantum computing",
        "fault tolerance",
        "error decoding"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0aeffed54e97a617bfd7f9deee62aa178c7ea215a709c276dbe41a5f71ae89f9",
                "md5": "10e43fee1eaf0681672ead6b95d721d0",
                "sha256": "922cf895f999478a2ab790d00b5cf80dd54386d80e16ceb67140d6450e3bc412"
            },
            "downloads": -1,
            "filename": "plaquette_unionfind-0.0.1a2-cp310-cp310-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "10e43fee1eaf0681672ead6b95d721d0",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.10",
            "size": 83666,
            "upload_time": "2023-06-07T06:29:15",
            "upload_time_iso_8601": "2023-06-07T06:29:15.107883Z",
            "url": "https://files.pythonhosted.org/packages/0a/ef/fed54e97a617bfd7f9deee62aa178c7ea215a709c276dbe41a5f71ae89f9/plaquette_unionfind-0.0.1a2-cp310-cp310-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "fd2d88de10f0fb6b3ff30138e9f325cc6477c439fca5326907a33eaf232c58ba",
                "md5": "d70f13480593fb4a5b98221bd27d8d32",
                "sha256": "8b47d87d771009950b2faf3ef93c7fbac4ba45e081fab0edb06348634997efb9"
            },
            "downloads": -1,
            "filename": "plaquette_unionfind-0.0.1a2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "d70f13480593fb4a5b98221bd27d8d32",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.10",
            "size": 113156,
            "upload_time": "2023-06-07T06:29:17",
            "upload_time_iso_8601": "2023-06-07T06:29:17.248100Z",
            "url": "https://files.pythonhosted.org/packages/fd/2d/88de10f0fb6b3ff30138e9f325cc6477c439fca5326907a33eaf232c58ba/plaquette_unionfind-0.0.1a2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6970bd0578f9d4d9eb8ea8347755acb80f8aabde64ddecfd737a63f1ebd939dc",
                "md5": "a2b4dc06042327fbb6babf4f81996d4f",
                "sha256": "a6db3543a02aabfdb5a79546b7deb3b4f1b3c5e31fa755ef97972c24d5d10ecd"
            },
            "downloads": -1,
            "filename": "plaquette_unionfind-0.0.1a2-cp310-cp310-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "a2b4dc06042327fbb6babf4f81996d4f",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.10",
            "size": 635369,
            "upload_time": "2023-06-07T06:29:19",
            "upload_time_iso_8601": "2023-06-07T06:29:19.573177Z",
            "url": "https://files.pythonhosted.org/packages/69/70/bd0578f9d4d9eb8ea8347755acb80f8aabde64ddecfd737a63f1ebd939dc/plaquette_unionfind-0.0.1a2-cp310-cp310-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a365de70969f9b12a25b33fd42b7765dfd6b4ce5ad45a643cf0d93d305f2102d",
                "md5": "b8bee486febcd8a969531c5366dad1f5",
                "sha256": "ab6fd7389c39e4b843c4384391fecc53b32e2617f8d9ba64a3f03cd48f7328b1"
            },
            "downloads": -1,
            "filename": "plaquette_unionfind-0.0.1a2-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "b8bee486febcd8a969531c5366dad1f5",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.10",
            "size": 1118715,
            "upload_time": "2023-06-07T06:29:23",
            "upload_time_iso_8601": "2023-06-07T06:29:23.139524Z",
            "url": "https://files.pythonhosted.org/packages/a3/65/de70969f9b12a25b33fd42b7765dfd6b4ce5ad45a643cf0d93d305f2102d/plaquette_unionfind-0.0.1a2-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "50e7e47421b87efca0d3b8f39d63919b4066e32af3c9e33c117b6caf6359fdcd",
                "md5": "cee5a25614b9f180a80d0dac30544c83",
                "sha256": "ac947182665d0d774490ba7427196df8668dbfe9551342a3e4b33dc82ddbc7c3"
            },
            "downloads": -1,
            "filename": "plaquette_unionfind-0.0.1a2-cp311-cp311-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "cee5a25614b9f180a80d0dac30544c83",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.10",
            "size": 83628,
            "upload_time": "2023-06-07T06:29:25",
            "upload_time_iso_8601": "2023-06-07T06:29:25.191320Z",
            "url": "https://files.pythonhosted.org/packages/50/e7/e47421b87efca0d3b8f39d63919b4066e32af3c9e33c117b6caf6359fdcd/plaquette_unionfind-0.0.1a2-cp311-cp311-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "94a8a26104d30eaa228584cc8b0e03e035339fad953f9828631d5ff3b1479897",
                "md5": "0b72ce75776ed32ab41f5ca9369fd242",
                "sha256": "8e2c4dde7c6ac3f68c6127187502f664161d66881928ddcad6f07b45f7793883"
            },
            "downloads": -1,
            "filename": "plaquette_unionfind-0.0.1a2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "0b72ce75776ed32ab41f5ca9369fd242",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.10",
            "size": 113097,
            "upload_time": "2023-06-07T06:29:26",
            "upload_time_iso_8601": "2023-06-07T06:29:26.749918Z",
            "url": "https://files.pythonhosted.org/packages/94/a8/a26104d30eaa228584cc8b0e03e035339fad953f9828631d5ff3b1479897/plaquette_unionfind-0.0.1a2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "00243b18326156a42aaf0048a13990e9cefaabdb30fe177a1792084e056e6172",
                "md5": "f4cb11d7d9a2adf69c4878828ffb705c",
                "sha256": "545f3182a0c5724c31026d20a9b2d5cc3fb5382ef89605a5c8fc7f84d464f6af"
            },
            "downloads": -1,
            "filename": "plaquette_unionfind-0.0.1a2-cp311-cp311-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "f4cb11d7d9a2adf69c4878828ffb705c",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.10",
            "size": 635352,
            "upload_time": "2023-06-07T06:29:28",
            "upload_time_iso_8601": "2023-06-07T06:29:28.628424Z",
            "url": "https://files.pythonhosted.org/packages/00/24/3b18326156a42aaf0048a13990e9cefaabdb30fe177a1792084e056e6172/plaquette_unionfind-0.0.1a2-cp311-cp311-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2109ea006826120e555121bb9efbef7254f445bc1677c1bf34a020d5257acf58",
                "md5": "82f81f67f831cc842c32c90654bc2938",
                "sha256": "89fe088b99b29df33482af2d70de86ca013ce14dc4bdc9fc5ce48f252a1b2eb9"
            },
            "downloads": -1,
            "filename": "plaquette_unionfind-0.0.1a2-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "82f81f67f831cc842c32c90654bc2938",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.10",
            "size": 1119704,
            "upload_time": "2023-06-07T06:29:32",
            "upload_time_iso_8601": "2023-06-07T06:29:32.245495Z",
            "url": "https://files.pythonhosted.org/packages/21/09/ea006826120e555121bb9efbef7254f445bc1677c1bf34a020d5257acf58/plaquette_unionfind-0.0.1a2-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-06-07 06:29:15",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "qc-design",
    "github_project": "plaquette-unionfind",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "plaquette",
            "specs": []
        },
        {
            "name": "plaquette_graph",
            "specs": []
        }
    ],
    "lcname": "plaquette-unionfind"
}
        
Elapsed time: 0.07463s