.. image:: https://img.shields.io/pypi/v/pyqubo.svg
:target: https://pypi.python.org/pypi/pyqubo
.. image:: https://codecov.io/gh/recruit-communications/pyqubo/branch/master/graph/badge.svg
:target: https://codecov.io/gh/recruit-communications/pyqubo
.. image:: https://readthedocs.org/projects/pyqubo/badge/?version=latest
:target: http://pyqubo.readthedocs.io/en/latest/?badge=latest
.. image:: https://static.pepy.tech/badge/pyqubo
:target: https://www.pepy.tech/projects/pyqubo
.. image:: https://github.com/recruit-communications/pyqubo/actions/workflows/build_and_upolad.yaml/badge.svg
:target: https://github.com/recruit-communications/pyqubo/actions/workflows/build_and_upolad.yaml
.. index-start-marker1
PyQUBO
======
PyQUBO allows you to create QUBOs or Ising models from flexible mathematical expressions easily.
Some of the features of PyQUBO are
* **Python based (C++ backend).**
* **Fully integrated with Ocean SDK.** (`details <https://github.com/recruit-communications/pyqubo#integration-with-d-wave-ocean>`__)
* **Automatic validation of constraints.** (`details <https://pyqubo.readthedocs.io/en/latest/getting_started.html#validation-of-constraints>`__)
* **Placeholder** for parameter tuning. (`details <https://pyqubo.readthedocs.io/en/latest/getting_started.html#placeholder>`__)
For more details, see `PyQUBO Documentation <https://pyqubo.readthedocs.io/>`_.
Example Usage
-------------
Creating QUBO
`````````````
This example constructs a simple expression and compile it to ``model``.
By calling ``model.to_qubo()``, we get the resulting QUBO.
(This example solves `Number Partitioning Problem <https://en.wikipedia.org/wiki/Partition_problem>`_ with a set S = {4, 2, 7, 1})
>>> from pyqubo import Spin
>>> s1, s2, s3, s4 = Spin("s1"), Spin("s2"), Spin("s3"), Spin("s4")
>>> H = (4*s1 + 2*s2 + 7*s3 + s4)**2
>>> model = H.compile()
>>> qubo, offset = model.to_qubo()
>>> pprint(qubo) # doctest: +SKIP
{('s1', 's1'): -160.0,
('s1', 's2'): 64.0,
('s1', 's3'): 224.0,
('s1', 's4'): 32.0,
('s2', 's2'): -96.0,
('s2', 's3'): 112.0,
('s2', 's4'): 16.0,
('s3', 's3'): -196.0,
('s3', 's4'): 56.0,
('s4', 's4'): -52.0}
.. _integration:
Integration with D-Wave Ocean
`````````````````````````````
PyQUBO can output the `BinaryQuadraticModel(BQM) <https://docs.ocean.dwavesys.com/en/stable/docs_dimod/reference/bqm.html>`_
which is compatible with `Sampler` class defined in D-Wave Ocean SDK.
In the example below, we solve the problem with `SimulatedAnnealingSampler`.
>>> import neal
>>> sampler = neal.SimulatedAnnealingSampler()
>>> bqm = model.to_bqm()
>>> sampleset = sampler.sample(bqm, num_reads=10)
>>> decoded_samples = model.decode_sampleset(sampleset)
>>> best_sample = min(decoded_samples, key=lambda x: x.energy)
>>> best_sample.sample # doctest: +SKIP
{'s1': 0, 's2': 0, 's3': 1, 's4': 0}
If you want to solve the problem by actual D-Wave machines,
just replace the `sampler` by a `DWaveCliqueSampler` instance, for example.
For more examples, see `example notebooks <https://github.com/recruit-communications/pyqubo/tree/master/notebooks>`_.
Benchmarking
------------
Since the core logic of the new PyQUBO (>=1.0.0) is written in C++ and the logic itself is also optimized, the execution time to produce QUBO has become shorter.
We benchmarked the execution time to produce QUBOs of TSP with the new PyQUBO (1.0.0) and the previous PyQUBO (0.4.0).
The result shows the new PyQUBO runs 1000 times faster as the problem size increases.
.. image:: https://raw.githubusercontent.com/recruit-communications/pyqubo/master/images/benchmark.svg
:scale: 60%
:width: 550
:height: 440
:align: center
Execution time includes building Hamiltonian, compilation, and producing QUBOs. The code to produce the above result is found in `here <https://github.com/recruit-communications/pyqubo/tree/master/benchmark/>`_.
Installation
------------
.. code-block:: shell
pip install pyqubo
or
.. code-block:: shell
python -m pip install .
Supported Python Versions
-------------------------
Python 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 are supported.
Supported Operating Systems
---------------------------
- Linux (32/64bit)
- OSX (x86_64(Intel)/arm64(Apple Silicon), 64bit, >=10.9)
- Win (64bit)
.. index-end-marker1
Test
----
Run all tests.
.. code-block:: shell
export USE_TEST=1
python -m unittest discover tests
Show coverage report.
.. code-block:: shell
export USE_TEST=1
coverage run -m unittest discover
coverage html
Run doctest.
.. code-block:: shell
make doctest
Dependency
----------
This repository contains the source code of `cimod <https://github.com/OpenJij/cimod>`_ which is licensed under the Apache License 2.0.
`cimod <https://github.com/OpenJij/cimod>`_ is the C++ header-only library for a binary quadratic model, developed by `OpenJij <https://github.com/OpenJij>`_.
Citation
--------
If you use PyQUBO in your research, please cite the following papers (`[M. Zaman, et al., 2021] <https://ieeexplore.ieee.org/document/9369010>`_, `[K. Tanahashi, et al., 2019] <https://journals.jps.jp/doi/full/10.7566/JPSJ.88.061010>`_).
::
@article{zaman2021pyqubo,
title={PyQUBO: Python Library for QUBO Creation},
author={Zaman, Mashiyat and Tanahashi, Kotaro and Tanaka, Shu},
journal={IEEE Transactions on Computers},
year={2021},
publisher={IEEE}
}
@article{tanahashi2019application,
title={Application of Ising Machines and a Software Development for Ising Machines},
author={Tanahashi, Kotaro and Takayanagi, Shinichi and Motohashi, Tomomitsu and Tanaka, Shu},
journal={Journal of the Physical Society of Japan},
volume={88},
number={6},
pages={061010},
year={2019},
publisher={The Physical Society of Japan}
}
Organization
------------
Recruit Communications Co., Ltd.
Licence
-------
Released under the Apache License 2.0.
Contribution
------------
We welcome contributions to this project. See `CONTRIBUTING <./CONTRIBUTING.rst>`_.
We thank all contributors, especially @tail-island and @29rou.
Raw data
{
"_id": null,
"home_page": "https://github.com/recruit-communications/pyqubo",
"name": "pyqubo",
"maintainer": "Recruit Co., Ltd.",
"docs_url": null,
"requires_python": "<3.14,>=3.8",
"maintainer_email": "rco_pyqubo@ml.cocorou.jp",
"keywords": "QUBO, quantum annealing, annealing machine, ising model, optimization",
"author": "Recruit Co., Ltd.",
"author_email": "rco_pyqubo@ml.cocorou.jp",
"download_url": "https://github.com/recruit-communications/pyqubo",
"platform": null,
"description": ".. image:: https://img.shields.io/pypi/v/pyqubo.svg\n :target: https://pypi.python.org/pypi/pyqubo\n\n.. image:: https://codecov.io/gh/recruit-communications/pyqubo/branch/master/graph/badge.svg\n :target: https://codecov.io/gh/recruit-communications/pyqubo\n\n.. image:: https://readthedocs.org/projects/pyqubo/badge/?version=latest\n :target: http://pyqubo.readthedocs.io/en/latest/?badge=latest\n\n.. image:: https://static.pepy.tech/badge/pyqubo\n :target: https://www.pepy.tech/projects/pyqubo\n \n.. image:: https://github.com/recruit-communications/pyqubo/actions/workflows/build_and_upolad.yaml/badge.svg\n :target: https://github.com/recruit-communications/pyqubo/actions/workflows/build_and_upolad.yaml\n\n\n.. index-start-marker1\n\nPyQUBO\n======\n\nPyQUBO allows you to create QUBOs or Ising models from flexible mathematical expressions easily.\nSome of the features of PyQUBO are\n\n* **Python based (C++ backend).**\n* **Fully integrated with Ocean SDK.** (`details <https://github.com/recruit-communications/pyqubo#integration-with-d-wave-ocean>`__)\n* **Automatic validation of constraints.** (`details <https://pyqubo.readthedocs.io/en/latest/getting_started.html#validation-of-constraints>`__)\n* **Placeholder** for parameter tuning. (`details <https://pyqubo.readthedocs.io/en/latest/getting_started.html#placeholder>`__)\n\n\nFor more details, see `PyQUBO Documentation <https://pyqubo.readthedocs.io/>`_.\n\nExample Usage\n-------------\n\nCreating QUBO\n`````````````\n\nThis example constructs a simple expression and compile it to ``model``.\nBy calling ``model.to_qubo()``, we get the resulting QUBO.\n(This example solves `Number Partitioning Problem <https://en.wikipedia.org/wiki/Partition_problem>`_ with a set S = {4, 2, 7, 1})\n\n>>> from pyqubo import Spin\n>>> s1, s2, s3, s4 = Spin(\"s1\"), Spin(\"s2\"), Spin(\"s3\"), Spin(\"s4\")\n>>> H = (4*s1 + 2*s2 + 7*s3 + s4)**2\n>>> model = H.compile()\n>>> qubo, offset = model.to_qubo()\n>>> pprint(qubo) # doctest: +SKIP\n{('s1', 's1'): -160.0,\n('s1', 's2'): 64.0,\n('s1', 's3'): 224.0,\n('s1', 's4'): 32.0,\n('s2', 's2'): -96.0,\n('s2', 's3'): 112.0,\n('s2', 's4'): 16.0,\n('s3', 's3'): -196.0,\n('s3', 's4'): 56.0,\n('s4', 's4'): -52.0}\n\n.. _integration:\n\nIntegration with D-Wave Ocean\n`````````````````````````````\n\nPyQUBO can output the `BinaryQuadraticModel(BQM) <https://docs.ocean.dwavesys.com/en/stable/docs_dimod/reference/bqm.html>`_\nwhich is compatible with `Sampler` class defined in D-Wave Ocean SDK.\nIn the example below, we solve the problem with `SimulatedAnnealingSampler`.\n\n>>> import neal\n>>> sampler = neal.SimulatedAnnealingSampler()\n>>> bqm = model.to_bqm()\n>>> sampleset = sampler.sample(bqm, num_reads=10)\n>>> decoded_samples = model.decode_sampleset(sampleset)\n>>> best_sample = min(decoded_samples, key=lambda x: x.energy)\n>>> best_sample.sample # doctest: +SKIP\n{'s1': 0, 's2': 0, 's3': 1, 's4': 0}\n\nIf you want to solve the problem by actual D-Wave machines,\njust replace the `sampler` by a `DWaveCliqueSampler` instance, for example.\n\n\nFor more examples, see `example notebooks <https://github.com/recruit-communications/pyqubo/tree/master/notebooks>`_.\n\n\nBenchmarking\n------------\n\nSince the core logic of the new PyQUBO (>=1.0.0) is written in C++ and the logic itself is also optimized, the execution time to produce QUBO has become shorter.\nWe benchmarked the execution time to produce QUBOs of TSP with the new PyQUBO (1.0.0) and the previous PyQUBO (0.4.0).\nThe result shows the new PyQUBO runs 1000 times faster as the problem size increases.\n\n.. image:: https://raw.githubusercontent.com/recruit-communications/pyqubo/master/images/benchmark.svg\n :scale: 60%\n :width: 550\n :height: 440\n :align: center\n\nExecution time includes building Hamiltonian, compilation, and producing QUBOs. The code to produce the above result is found in `here <https://github.com/recruit-communications/pyqubo/tree/master/benchmark/>`_.\n\n\nInstallation\n------------\n\n.. code-block:: shell\n\n pip install pyqubo\n\nor\n\n.. code-block:: shell\n\n python -m pip install .\n\nSupported Python Versions\n-------------------------\n\nPython 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 are supported.\n\nSupported Operating Systems\n---------------------------\n\n- Linux (32/64bit)\n- OSX (x86_64(Intel)/arm64(Apple Silicon), 64bit, >=10.9)\n- Win (64bit)\n\n.. index-end-marker1\n\nTest\n----\n\nRun all tests.\n\n.. code-block:: shell\n\n export USE_TEST=1\n python -m unittest discover tests\n\nShow coverage report.\n\n.. code-block:: shell\n\n export USE_TEST=1\n coverage run -m unittest discover\n coverage html\n\nRun doctest.\n\n.. code-block:: shell\n\n make doctest\n\n\nDependency\n----------\n\nThis repository contains the source code of `cimod <https://github.com/OpenJij/cimod>`_ which is licensed under the Apache License 2.0.\n`cimod <https://github.com/OpenJij/cimod>`_ is the C++ header-only library for a binary quadratic model, developed by `OpenJij <https://github.com/OpenJij>`_.\n\nCitation\n--------\n\nIf you use PyQUBO in your research, please cite the following papers (`[M. Zaman, et al., 2021] <https://ieeexplore.ieee.org/document/9369010>`_, `[K. Tanahashi, et al., 2019] <https://journals.jps.jp/doi/full/10.7566/JPSJ.88.061010>`_).\n\n::\n\n @article{zaman2021pyqubo,\n title={PyQUBO: Python Library for QUBO Creation},\n author={Zaman, Mashiyat and Tanahashi, Kotaro and Tanaka, Shu},\n journal={IEEE Transactions on Computers},\n year={2021},\n publisher={IEEE}\n }\n\n @article{tanahashi2019application,\n title={Application of Ising Machines and a Software Development for Ising Machines},\n author={Tanahashi, Kotaro and Takayanagi, Shinichi and Motohashi, Tomomitsu and Tanaka, Shu},\n journal={Journal of the Physical Society of Japan},\n volume={88},\n number={6},\n pages={061010},\n year={2019},\n publisher={The Physical Society of Japan}\n }\n\n\nOrganization\n------------\n\nRecruit Communications Co., Ltd.\n\nLicence\n-------\n\nReleased under the Apache License 2.0.\n\nContribution\n------------\n\nWe welcome contributions to this project. See `CONTRIBUTING <./CONTRIBUTING.rst>`_.\n\nWe thank all contributors, especially @tail-island and @29rou.\n",
"bugtrack_url": null,
"license": "Apache 2.0",
"summary": "PyQUBO allows you to create QUBOs or Ising models from mathematical expressions.",
"version": "1.5.0",
"project_urls": {
"Download": "https://github.com/recruit-communications/pyqubo",
"Homepage": "https://github.com/recruit-communications/pyqubo"
},
"split_keywords": [
"qubo",
" quantum annealing",
" annealing machine",
" ising model",
" optimization"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "06c43c8171e4ecc15256b371c99ef2dff411dcaf58d334debb6e1efef831eb59",
"md5": "87d5c11b6f9b93f54e427d9395874e75",
"sha256": "f443b03f667723651e62ae1e2910cd4441e20f42a28c87c1c0909b960a8d302c"
},
"downloads": -1,
"filename": "pyqubo-1.5.0-cp310-cp310-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "87d5c11b6f9b93f54e427d9395874e75",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "<3.14,>=3.8",
"size": 233065,
"upload_time": "2024-11-09T14:16:58",
"upload_time_iso_8601": "2024-11-09T14:16:58.918096Z",
"url": "https://files.pythonhosted.org/packages/06/c4/3c8171e4ecc15256b371c99ef2dff411dcaf58d334debb6e1efef831eb59/pyqubo-1.5.0-cp310-cp310-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "efccd25b3f47e2edad63ca09f8075b6ece2e136a50c9fb6b6c7ad1f1b148096d",
"md5": "eba81b21b4cfe0cb613662f913cc68e5",
"sha256": "fc0c03c7424aa72299a8e9021a2132f74a24c47311c4afc9841d0adf62582286"
},
"downloads": -1,
"filename": "pyqubo-1.5.0-cp310-cp310-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "eba81b21b4cfe0cb613662f913cc68e5",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "<3.14,>=3.8",
"size": 207514,
"upload_time": "2024-11-09T14:17:01",
"upload_time_iso_8601": "2024-11-09T14:17:01.021323Z",
"url": "https://files.pythonhosted.org/packages/ef/cc/d25b3f47e2edad63ca09f8075b6ece2e136a50c9fb6b6c7ad1f1b148096d/pyqubo-1.5.0-cp310-cp310-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ad181de5bd9d635212802236414324d7f147bdb8453529eb09669f47182ae773",
"md5": "d4be9e1de0bde0a89840dc44e8fb2bfa",
"sha256": "1e6dd28cf57da810bc4a8def5eaeca20ba1c4f77d94c0605f09c5e1587d396a5"
},
"downloads": -1,
"filename": "pyqubo-1.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "d4be9e1de0bde0a89840dc44e8fb2bfa",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "<3.14,>=3.8",
"size": 257594,
"upload_time": "2024-11-09T14:17:03",
"upload_time_iso_8601": "2024-11-09T14:17:03.055223Z",
"url": "https://files.pythonhosted.org/packages/ad/18/1de5bd9d635212802236414324d7f147bdb8453529eb09669f47182ae773/pyqubo-1.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ebf12b4a44a124b82de2cc7942b0c618f3e4315c1fb89816ca1be85d24c6b444",
"md5": "b8f74a5885a3818ca2edf63b9d03329f",
"sha256": "92bf3fcb7f358ad681039c122907c3188bedae264e12dd8fd0ff6c7af41a7219"
},
"downloads": -1,
"filename": "pyqubo-1.5.0-cp310-cp310-win_amd64.whl",
"has_sig": false,
"md5_digest": "b8f74a5885a3818ca2edf63b9d03329f",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "<3.14,>=3.8",
"size": 401633,
"upload_time": "2024-11-09T14:17:04",
"upload_time_iso_8601": "2024-11-09T14:17:04.548111Z",
"url": "https://files.pythonhosted.org/packages/eb/f1/2b4a44a124b82de2cc7942b0c618f3e4315c1fb89816ca1be85d24c6b444/pyqubo-1.5.0-cp310-cp310-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ec4cd257eb1a20cc71fed5371188ff4432d55c076a4468be003c36e5627237df",
"md5": "6b5130151a9e4b79016ea28688115b0a",
"sha256": "1da327bea2ece9de37665fd0e8409f75f77e6d40c0945127808eaeb81fff947f"
},
"downloads": -1,
"filename": "pyqubo-1.5.0-cp311-cp311-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "6b5130151a9e4b79016ea28688115b0a",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "<3.14,>=3.8",
"size": 234542,
"upload_time": "2024-11-09T14:17:05",
"upload_time_iso_8601": "2024-11-09T14:17:05.892474Z",
"url": "https://files.pythonhosted.org/packages/ec/4c/d257eb1a20cc71fed5371188ff4432d55c076a4468be003c36e5627237df/pyqubo-1.5.0-cp311-cp311-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "9fa889ce2c8e309eaec4b49c92a0e0af22c79799fee3cfa54d514bde1deb3354",
"md5": "b9fa7b5d960e11aaa56c84b51648dd9b",
"sha256": "89483fa6c34bf098ae37a59cf2754ff275a2d597ebf9bbb0d6c4351394813e5e"
},
"downloads": -1,
"filename": "pyqubo-1.5.0-cp311-cp311-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "b9fa7b5d960e11aaa56c84b51648dd9b",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "<3.14,>=3.8",
"size": 208859,
"upload_time": "2024-11-09T14:17:07",
"upload_time_iso_8601": "2024-11-09T14:17:07.876168Z",
"url": "https://files.pythonhosted.org/packages/9f/a8/89ce2c8e309eaec4b49c92a0e0af22c79799fee3cfa54d514bde1deb3354/pyqubo-1.5.0-cp311-cp311-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "3038508c3399730a300eecf7dffc99d3f6cf76abc20d72bc3794a4e2db776277",
"md5": "9b18864e1f7eb4a66ebcac53c65408d4",
"sha256": "78cffc164ce014d130f57d915ff0ef5629ff56971843a8ba7b0a7221efd7b570"
},
"downloads": -1,
"filename": "pyqubo-1.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "9b18864e1f7eb4a66ebcac53c65408d4",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "<3.14,>=3.8",
"size": 258255,
"upload_time": "2024-11-09T14:17:09",
"upload_time_iso_8601": "2024-11-09T14:17:09.368270Z",
"url": "https://files.pythonhosted.org/packages/30/38/508c3399730a300eecf7dffc99d3f6cf76abc20d72bc3794a4e2db776277/pyqubo-1.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "1f8747df0ea82252d485791b20d05a9b1d942d717e6e3dbd3c1266a5f3c1aff5",
"md5": "415cc9c08c7485ceb7bbb5b4e57292a0",
"sha256": "3ad3c8dbaf59d5da9a819bb259192a5f0602b10eed4eb1367217db757e4f68de"
},
"downloads": -1,
"filename": "pyqubo-1.5.0-cp311-cp311-win_amd64.whl",
"has_sig": false,
"md5_digest": "415cc9c08c7485ceb7bbb5b4e57292a0",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "<3.14,>=3.8",
"size": 403174,
"upload_time": "2024-11-09T14:17:10",
"upload_time_iso_8601": "2024-11-09T14:17:10.651333Z",
"url": "https://files.pythonhosted.org/packages/1f/87/47df0ea82252d485791b20d05a9b1d942d717e6e3dbd3c1266a5f3c1aff5/pyqubo-1.5.0-cp311-cp311-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "85b0fdcc75f4e6006609ef7360e92e3977ea27a6f4d6d009011e880f9d1b22d2",
"md5": "d5fc4249ed48da6abd4524d0148bb165",
"sha256": "8db7ebf99a0ca6137b3fd979e8a123f32942abca4dbcfb82f59275eec17bf3bb"
},
"downloads": -1,
"filename": "pyqubo-1.5.0-cp312-cp312-macosx_10_13_x86_64.whl",
"has_sig": false,
"md5_digest": "d5fc4249ed48da6abd4524d0148bb165",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "<3.14,>=3.8",
"size": 235004,
"upload_time": "2024-11-09T14:17:12",
"upload_time_iso_8601": "2024-11-09T14:17:12.579155Z",
"url": "https://files.pythonhosted.org/packages/85/b0/fdcc75f4e6006609ef7360e92e3977ea27a6f4d6d009011e880f9d1b22d2/pyqubo-1.5.0-cp312-cp312-macosx_10_13_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e0d4af8f1824e936ed0385984b7ec9b80b3ef2a147b71c49ae640ff7222a25a1",
"md5": "9e12df4d0c2582aec4723e97da4b77a7",
"sha256": "da76d681800692663b83b2f39943b4c1b0590630989783ecdd429fafd96b3928"
},
"downloads": -1,
"filename": "pyqubo-1.5.0-cp312-cp312-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "9e12df4d0c2582aec4723e97da4b77a7",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "<3.14,>=3.8",
"size": 209399,
"upload_time": "2024-11-09T14:17:13",
"upload_time_iso_8601": "2024-11-09T14:17:13.802355Z",
"url": "https://files.pythonhosted.org/packages/e0/d4/af8f1824e936ed0385984b7ec9b80b3ef2a147b71c49ae640ff7222a25a1/pyqubo-1.5.0-cp312-cp312-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ca61ea8cf90be145fc020309671238de774f79f9b6361b1bec56533bacdc3fb7",
"md5": "79fb2d7e485186a007ef57d7770de480",
"sha256": "347d66417ce530ecca325d88dce0c40288176fe0864867ab3addd2dd155d6eeb"
},
"downloads": -1,
"filename": "pyqubo-1.5.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "79fb2d7e485186a007ef57d7770de480",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "<3.14,>=3.8",
"size": 256844,
"upload_time": "2024-11-09T14:17:15",
"upload_time_iso_8601": "2024-11-09T14:17:15.065483Z",
"url": "https://files.pythonhosted.org/packages/ca/61/ea8cf90be145fc020309671238de774f79f9b6361b1bec56533bacdc3fb7/pyqubo-1.5.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2e34405974062a669f3e416dea60317d336498b0a828bf73b60ecfefda6fc899",
"md5": "43df14958eebdf91ca450ec46b5cbaa0",
"sha256": "665d41e73c5504db44b2bd8679a610a326dfb188030bf5c90ea1dfe0f238bec4"
},
"downloads": -1,
"filename": "pyqubo-1.5.0-cp312-cp312-win_amd64.whl",
"has_sig": false,
"md5_digest": "43df14958eebdf91ca450ec46b5cbaa0",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "<3.14,>=3.8",
"size": 403493,
"upload_time": "2024-11-09T14:17:16",
"upload_time_iso_8601": "2024-11-09T14:17:16.341168Z",
"url": "https://files.pythonhosted.org/packages/2e/34/405974062a669f3e416dea60317d336498b0a828bf73b60ecfefda6fc899/pyqubo-1.5.0-cp312-cp312-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "803ab21d617500f094474e431dc25f0d8c3c9d7df6a1f36e5631e8acc86c4c33",
"md5": "477a8df2ba0f4af7aaa7ed657c904bf5",
"sha256": "b01e724bcb573bdba31e5948a6718bb3a0135a3a84f1556df4271fe7334f54c0"
},
"downloads": -1,
"filename": "pyqubo-1.5.0-cp313-cp313-macosx_10_13_x86_64.whl",
"has_sig": false,
"md5_digest": "477a8df2ba0f4af7aaa7ed657c904bf5",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": "<3.14,>=3.8",
"size": 235056,
"upload_time": "2024-11-09T14:17:17",
"upload_time_iso_8601": "2024-11-09T14:17:17.526956Z",
"url": "https://files.pythonhosted.org/packages/80/3a/b21d617500f094474e431dc25f0d8c3c9d7df6a1f36e5631e8acc86c4c33/pyqubo-1.5.0-cp313-cp313-macosx_10_13_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "450eb5fe9aa8283dbb9864ab4a7b66fc9c362111c11106a45655eb239fef32e1",
"md5": "c45612b3a4b8ef48f48cf2abdf33a2f4",
"sha256": "7cbd5f2d8842f4a506c2af337436a485969c25a77ef4c376678e59a513b83655"
},
"downloads": -1,
"filename": "pyqubo-1.5.0-cp313-cp313-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "c45612b3a4b8ef48f48cf2abdf33a2f4",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": "<3.14,>=3.8",
"size": 209541,
"upload_time": "2024-11-09T14:17:19",
"upload_time_iso_8601": "2024-11-09T14:17:19.712555Z",
"url": "https://files.pythonhosted.org/packages/45/0e/b5fe9aa8283dbb9864ab4a7b66fc9c362111c11106a45655eb239fef32e1/pyqubo-1.5.0-cp313-cp313-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e99b325ea620ec0d6e592e18677fa7e4a8b56f75debe3ce0f9ced5c9d849e822",
"md5": "11839905d32da046f09d24a77c64c759",
"sha256": "d7f2d9f309657b234eb19cb50b0617142cadce65243a118ff8a04774ca4351be"
},
"downloads": -1,
"filename": "pyqubo-1.5.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "11839905d32da046f09d24a77c64c759",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": "<3.14,>=3.8",
"size": 256873,
"upload_time": "2024-11-09T14:17:21",
"upload_time_iso_8601": "2024-11-09T14:17:21.826432Z",
"url": "https://files.pythonhosted.org/packages/e9/9b/325ea620ec0d6e592e18677fa7e4a8b56f75debe3ce0f9ced5c9d849e822/pyqubo-1.5.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f4601110cc30756924631252b1013972503b224a631fd597e80980af76d09f14",
"md5": "06e8953f84e35c42ef0044cce19de851",
"sha256": "94c4b8764f5cb063f71d2eab0f23577b9edea2820ef5a8c6685f9b99c3454644"
},
"downloads": -1,
"filename": "pyqubo-1.5.0-cp313-cp313-win_amd64.whl",
"has_sig": false,
"md5_digest": "06e8953f84e35c42ef0044cce19de851",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": "<3.14,>=3.8",
"size": 403498,
"upload_time": "2024-11-09T14:17:23",
"upload_time_iso_8601": "2024-11-09T14:17:23.797135Z",
"url": "https://files.pythonhosted.org/packages/f4/60/1110cc30756924631252b1013972503b224a631fd597e80980af76d09f14/pyqubo-1.5.0-cp313-cp313-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4443c6ca36143c84ab74eb73ee81a026883b56f5db558ee0f3953aa496670530",
"md5": "097c6f7d8d4870a1910a7553d0614e0b",
"sha256": "150bb47df21c1cbf7f8e46049e459905aa0975f31cdc6eae6d580b112e792a75"
},
"downloads": -1,
"filename": "pyqubo-1.5.0-cp38-cp38-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "097c6f7d8d4870a1910a7553d0614e0b",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": "<3.14,>=3.8",
"size": 232766,
"upload_time": "2024-11-09T14:17:26",
"upload_time_iso_8601": "2024-11-09T14:17:26.511896Z",
"url": "https://files.pythonhosted.org/packages/44/43/c6ca36143c84ab74eb73ee81a026883b56f5db558ee0f3953aa496670530/pyqubo-1.5.0-cp38-cp38-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4016eeb1e8587714308ee45403b26b24c049020ad14231a84635f5e0e3c8c4d5",
"md5": "0db76fc59e79123f4980820b01d5ddf9",
"sha256": "ace18ed66bba4df88d9a70951a360492ff73525a9df28f34c0a9ec0dcc2175f4"
},
"downloads": -1,
"filename": "pyqubo-1.5.0-cp38-cp38-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "0db76fc59e79123f4980820b01d5ddf9",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": "<3.14,>=3.8",
"size": 207410,
"upload_time": "2024-11-09T14:17:27",
"upload_time_iso_8601": "2024-11-09T14:17:27.653562Z",
"url": "https://files.pythonhosted.org/packages/40/16/eeb1e8587714308ee45403b26b24c049020ad14231a84635f5e0e3c8c4d5/pyqubo-1.5.0-cp38-cp38-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2dad1a642067639c215a6f66206b2f6eb443abf286e549d82706a018cfcf0f05",
"md5": "76cd3eab2f026d7cd9823233f305f2fb",
"sha256": "a011fc238ef430a0d36c14bc8af33b397f28c8d62ee734c79a9c23cfc89f73e8"
},
"downloads": -1,
"filename": "pyqubo-1.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "76cd3eab2f026d7cd9823233f305f2fb",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": "<3.14,>=3.8",
"size": 257134,
"upload_time": "2024-11-09T14:17:28",
"upload_time_iso_8601": "2024-11-09T14:17:28.892245Z",
"url": "https://files.pythonhosted.org/packages/2d/ad/1a642067639c215a6f66206b2f6eb443abf286e549d82706a018cfcf0f05/pyqubo-1.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4934a82312277a207ef253194ac69473f46d7cc3d6d4e115d8f0772fa8585095",
"md5": "62a7b9ce402de51b07dea24afa3be3d1",
"sha256": "86546fa8cc37c3dd16927b04ed33d682136e221c631ee215f631f9d679731615"
},
"downloads": -1,
"filename": "pyqubo-1.5.0-cp38-cp38-win_amd64.whl",
"has_sig": false,
"md5_digest": "62a7b9ce402de51b07dea24afa3be3d1",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": "<3.14,>=3.8",
"size": 405065,
"upload_time": "2024-11-09T14:17:30",
"upload_time_iso_8601": "2024-11-09T14:17:30.277527Z",
"url": "https://files.pythonhosted.org/packages/49/34/a82312277a207ef253194ac69473f46d7cc3d6d4e115d8f0772fa8585095/pyqubo-1.5.0-cp38-cp38-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "7f66861924b05a052d4ed0011ba6ba51f509f44aac4ad2b9603cf673e27076bf",
"md5": "07389b6c8db664efc055ec0ee16c3428",
"sha256": "b60a6ecea8daa01b19507cff39a41082d82f82de3bb9eddbb8e374742a76df66"
},
"downloads": -1,
"filename": "pyqubo-1.5.0-cp39-cp39-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "07389b6c8db664efc055ec0ee16c3428",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": "<3.14,>=3.8",
"size": 233123,
"upload_time": "2024-11-09T14:17:32",
"upload_time_iso_8601": "2024-11-09T14:17:32.341239Z",
"url": "https://files.pythonhosted.org/packages/7f/66/861924b05a052d4ed0011ba6ba51f509f44aac4ad2b9603cf673e27076bf/pyqubo-1.5.0-cp39-cp39-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c091fc3529b95fbf7500f341787318b10f18664eac48d258ca60bca1fcb27ec2",
"md5": "4e1280feffe7c4891d104fc319d054df",
"sha256": "399203e43db297166acf8629086736f0eca54391943ce00f672360e636b9166c"
},
"downloads": -1,
"filename": "pyqubo-1.5.0-cp39-cp39-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "4e1280feffe7c4891d104fc319d054df",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": "<3.14,>=3.8",
"size": 207606,
"upload_time": "2024-11-09T14:17:34",
"upload_time_iso_8601": "2024-11-09T14:17:34.355207Z",
"url": "https://files.pythonhosted.org/packages/c0/91/fc3529b95fbf7500f341787318b10f18664eac48d258ca60bca1fcb27ec2/pyqubo-1.5.0-cp39-cp39-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "15c2dfbb20b6fd37282e44fe0c573f791ec90bbe782c92e55f10ccedcde17859",
"md5": "8c7c205894d639c3c6492c633b0290e6",
"sha256": "d881a05dbfcdc77752fa06ddcc2f0db4bb903607b18771f7660da6783f7b08a2"
},
"downloads": -1,
"filename": "pyqubo-1.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "8c7c205894d639c3c6492c633b0290e6",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": "<3.14,>=3.8",
"size": 257863,
"upload_time": "2024-11-09T14:17:36",
"upload_time_iso_8601": "2024-11-09T14:17:36.530239Z",
"url": "https://files.pythonhosted.org/packages/15/c2/dfbb20b6fd37282e44fe0c573f791ec90bbe782c92e55f10ccedcde17859/pyqubo-1.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f182f26e0997c92e92208830af7208c867b055609850321533bf212355a90fda",
"md5": "1df35ff89343b597926e6fef1f02ebb5",
"sha256": "cc021d32b20fc2d0fcd46e5512c6ac33b5df396ae7cf87464f426d1025c3fe94"
},
"downloads": -1,
"filename": "pyqubo-1.5.0-cp39-cp39-win_amd64.whl",
"has_sig": false,
"md5_digest": "1df35ff89343b597926e6fef1f02ebb5",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": "<3.14,>=3.8",
"size": 400011,
"upload_time": "2024-11-09T14:17:37",
"upload_time_iso_8601": "2024-11-09T14:17:37.777703Z",
"url": "https://files.pythonhosted.org/packages/f1/82/f26e0997c92e92208830af7208c867b055609850321533bf212355a90fda/pyqubo-1.5.0-cp39-cp39-win_amd64.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-11-09 14:16:58",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "recruit-communications",
"github_project": "pyqubo",
"travis_ci": false,
"coveralls": true,
"github_actions": true,
"requirements": [],
"lcname": "pyqubo"
}