diff --git a/.azure/lint-linux.yml b/.azure/lint-linux.yml index 5b79db09ae1b..532c2072ed29 100644 --- a/.azure/lint-linux.yml +++ b/.azure/lint-linux.yml @@ -35,7 +35,7 @@ jobs: set -e source test-job/bin/activate echo "Running black, any errors reported can be fixed with 'tox -eblack'" - black --check qiskit test tools examples setup.py + black --check qiskit test tools examples setup.py qiskit_pkg echo "Running rustfmt check, any errors reported can be fixed with 'cargo fmt'" cargo fmt --check displayName: "Formatting" @@ -44,7 +44,7 @@ jobs: set -e source test-job/bin/activate echo "Running ruff" - ruff qiskit test tools examples setup.py + ruff qiskit test tools examples setup.py qiskit_pkg/setup.py echo "Running pylint" pylint -rn qiskit test tools echo "Running Cargo Clippy" diff --git a/README.md b/README.md index f88d53267771..7ab8b7fbf29d 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,26 @@ -# Qiskit Terra -[![License](https://img.shields.io/github/license/Qiskit/qiskit-terra.svg?style=popout-square)](https://opensource.org/licenses/Apache-2.0)[![Release](https://img.shields.io/github/release/Qiskit/qiskit-terra.svg?style=popout-square)](https://github.com/Qiskit/qiskit-terra/releases)[![Downloads](https://img.shields.io/pypi/dm/qiskit-terra.svg?style=popout-square)](https://pypi.org/project/qiskit-terra/)[![Coverage Status](https://coveralls.io/repos/github/Qiskit/qiskit-terra/badge.svg?branch=main)](https://coveralls.io/github/Qiskit/qiskit-terra?branch=main)[![Minimum rustc 1.61.0](https://img.shields.io/badge/rustc-1.61.0+-blue.svg)](https://rust-lang.github.io/rfcs/2495-min-rust-version.html) +# Qiskit +[![License](https://img.shields.io/github/license/Qiskit/qiskit-terra.svg?)](https://opensource.org/licenses/Apache-2.0) +[![Release](https://img.shields.io/github/release/Qiskit/qiskit-terra.svg)](https://github.com/Qiskit/qiskit-terra/releases) +[![Downloads](https://img.shields.io/pypi/dm/qiskit-terra.svg)](https://pypi.org/project/qiskit-terra/) +[![Coverage Status](https://coveralls.io/repos/github/Qiskit/qiskit-terra/badge.svg?branch=main)](https://coveralls.io/github/Qiskit/qiskit-terra?branch=main) +![PyPI - Python Version](https://img.shields.io/pypi/pyversions/qiskit) +[![Minimum rustc 1.61.0](https://img.shields.io/badge/rustc-1.61.0+-blue.svg)](https://rust-lang.github.io/rfcs/2495-min-rust-version.html) +[![Downloads](https://pepy.tech/badge/qiskit-terra)](https://pypi.org/project/qiskit-terra/) +[![DOI](https://zenodo.org/badge/161550823.svg)](https://zenodo.org/badge/latestdoi/161550823) **Qiskit** is an open-source framework for working with noisy quantum computers at the level of pulses, circuits, and algorithms. -This library is the core component of Qiskit, **Terra**, which contains the building blocks for creating -and working with quantum circuits, programs, and algorithms. It also contains a compiler that supports +This framework allows for building, transforming, and visualizing quantum circuits. It also contains a compiler that supports different quantum computers and a common interface for running programs on different quantum computer architectures. For more details on how to use Qiskit you can refer to the documentation located here: -https://qiskit.org/documentation/ + ## Installation -We encourage installing Qiskit via ``pip``. The following command installs the core Qiskit components, including Terra. +We encourage installing Qiskit via ``pip``: ```bash pip install qiskit @@ -24,7 +30,7 @@ Pip will handle all dependencies automatically and you will always install the l To install from source, follow the instructions in the [documentation](https://qiskit.org/documentation/contributing_to_qiskit.html#install-install-from-source-label). -## Creating Your First Quantum Program in Qiskit Terra +## Creating Your First Quantum Program in Qiskit Now that Qiskit is installed, it's time to begin working with Qiskit. To do this we create a `QuantumCircuit` object to define a basic quantum program. @@ -37,7 +43,7 @@ qc.cx(0, 1) qc.measure([0,1], [0,1]) ``` -This simple example makes an entangled state, also called a [Bell state](https://qiskit.org/textbook/ch-gates/multiple-qubits-entangled-states.html#3.2-Entangled-States-). +This example makes an entangled state, also called a [Bell state](https://en.wikipedia.org/wiki/Bell_state). Once you've made your first quantum circuit, you can then simulate it. To do this, first we need to compile your circuit for the target backend we're going to run @@ -66,12 +72,9 @@ The output from this execution will look similar to this: {'00': 513, '11': 511} ``` -For further examples of using Qiskit you can look at the example scripts in **examples/python**. You can start with -[using_qiskit_terra_level_0.py](examples/python/using_qiskit_terra_level_0.py) and working up in the levels. Also -you can refer to the tutorials in the documentation here: - -https://qiskit.org/documentation/tutorials.html +For further examples of using Qiskit you can look at the tutorials in the documentation here: + ### Executing your code on a real quantum chip @@ -94,22 +97,18 @@ on how to get access and use these systems. ## Contribution Guidelines -If you'd like to contribute to Qiskit Terra, please take a look at our -[contribution guidelines](CONTRIBUTING.md). This project adheres to Qiskit's [code of conduct](CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. +If you'd like to contribute to Qiskit, please take a look at our +[contribution guidelines](CONTRIBUTING.md). By participating, you are expected to uphold our [code of conduct](CODE_OF_CONDUCT.md). We use [GitHub issues](https://github.com/Qiskit/qiskit-terra/issues) for tracking requests and bugs. Please -[join the Qiskit Slack community](https://qisk.it/join-slack) -and use our [Qiskit Slack channel](https://qiskit.slack.com) for discussion and simple questions. -For questions that are more suited for a forum we use the `qiskit` tag in the [Stack Exchange](https://quantumcomputing.stackexchange.com/questions/tagged/qiskit). - -## Next Steps +[join the Qiskit Slack community](https://qisk.it/join-slack) for discussion, comments, and questions. +For questions related to running or using Qiskit, [Stack Overflow has a `qiskit`](https://stackoverflow.com/questions/tagged/qiskit). +For questions on quantum computing with Qiskit, use the `qiskit` tag in the [Quantum Computing Stack Exchange](https://quantumcomputing.stackexchange.com/questions/tagged/qiskit) (please, read first the [guidelines on how to ask](https://quantumcomputing.stackexchange.com/help/how-to-ask) in that forum). -Now you're set up and ready to check out some of the other examples from our -[Qiskit Tutorials](https://github.com/Qiskit/qiskit-tutorials) repository. ## Authors and Citation -Qiskit Terra is the work of [many people](https://github.com/Qiskit/qiskit-terra/graphs/contributors) who contribute +Qiskit is the work of [many people](https://github.com/Qiskit/qiskit-terra/graphs/contributors) who contribute to the project at different levels. If you use Qiskit, please cite as per the included [BibTeX file](CITATION.bib). ## Changelog and Release Notes @@ -118,10 +117,10 @@ The changelog for a particular release is dynamically generated and gets written to the release page on Github for each release. For example, you can find the page for the `0.9.0` release here: -https://github.com/Qiskit/qiskit-terra/releases/tag/0.9.0 + The changelog for the current release can be found in the releases tab: -[![Releases](https://img.shields.io/github/release/Qiskit/qiskit-terra.svg?style=popout-square)](https://github.com/Qiskit/qiskit-terra/releases) +[![Releases](https://img.shields.io/github/release/Qiskit/qiskit-terra.svg?style=flat&label=)](https://github.com/Qiskit/qiskit-terra/releases) The changelog provides a quick overview of notable changes for a given release. diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 2f04ae2e2ef8..fab49e8bfae1 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -277,3 +277,21 @@ stages: env: TWINE_USERNAME: "qiskit" TWINE_PASSWORD: $(TWINE_PASSWORD) + - job: 'qiskit-pkg' + pool: {vmImage: 'ubuntu-latest'} + steps: + - task: UsePythonVersion@0 + - bash: | + set -e + python -m pip install --upgrade pip build + cd qiskit_pkg + python -m build . + - task: PublishBuildArtifacts@1 + inputs: {pathtoPublish: 'dist'} + condition: succeededOrFailed() + - bash: | + python -m pip install --upgrade twine + twine upload dist/* + env: + TWINE_USERNAME: "qiskit" + TWINE_PASSWORD: $(TWINE_PASSWORD) diff --git a/qiskit_pkg/LICENSE.txt b/qiskit_pkg/LICENSE.txt new file mode 120000 index 000000000000..4ab43736a839 --- /dev/null +++ b/qiskit_pkg/LICENSE.txt @@ -0,0 +1 @@ +../LICENSE.txt \ No newline at end of file diff --git a/qiskit_pkg/MANIFEST.in b/qiskit_pkg/MANIFEST.in new file mode 100644 index 000000000000..42eb4101e514 --- /dev/null +++ b/qiskit_pkg/MANIFEST.in @@ -0,0 +1 @@ +include LICENSE.txt diff --git a/qiskit_pkg/README.md b/qiskit_pkg/README.md new file mode 120000 index 000000000000..32d46ee883b5 --- /dev/null +++ b/qiskit_pkg/README.md @@ -0,0 +1 @@ +../README.md \ No newline at end of file diff --git a/qiskit_pkg/setup.py b/qiskit_pkg/setup.py new file mode 100644 index 000000000000..3db3aa707fd5 --- /dev/null +++ b/qiskit_pkg/setup.py @@ -0,0 +1,73 @@ +# -*- coding: utf-8 -*- + +# This code is part of Qiskit. +# +# (C) Copyright IBM 2018. +# +# This code is licensed under the Apache License, Version 2.0. You may +# obtain a copy of this license in the LICENSE.txt file in the root directory +# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. +# +# Any modifications or derivative works of this code must retain this +# copyright notice, and modified files need to carry a notice indicating +# that they have been altered from the originals. + +# This file is the setup.py file for the qiskit package. Because python +# packaging doesn't offer a mechanism to have qiskit supersede qiskit-terra +# and cleanly upgrade from one to the other, there needs to be a separate +# package shim to ensure no matter how people installed qiskit < 0.45.0 the +# upgrade works. + +import os + +from setuptools import setup + +README_PATH = os.path.join(os.path.abspath(os.path.dirname(__file__)), "README.md") +with open(README_PATH) as readme_file: + README = readme_file.read() + +requirements = ["qiskit-terra==0.45.0"] + +setup( + name="qiskit", + version="0.45.0", + description="Software for developing quantum computing programs", + long_description=README, + long_description_content_type="text/markdown", + url="https://qiskit.org/", + author="Qiskit Development Team", + author_email="hello@qiskit.org", + license="Apache 2.0", + py_modules=[], + packages=[], + classifiers=[ + "Environment :: Console", + "License :: OSI Approved :: Apache Software License", + "Intended Audience :: Developers", + "Intended Audience :: Science/Research", + "Operating System :: Microsoft :: Windows", + "Operating System :: MacOS", + "Operating System :: POSIX :: Linux", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Topic :: Scientific/Engineering", + ], + keywords="qiskit sdk quantum", + install_requires=requirements, + project_urls={ + "Bug Tracker": "https://github.com/Qiskit/qiskit/issues", + "Documentation": "https://qiskit.org/documentation/", + "Source Code": "https://github.com/Qiskit/qiskit", + }, + include_package_data=True, + python_requires=">=3.8", + extras_require={ + "qasm3-import": ["qiskit-terra[qasm3-import]"], + "visualization": ["qiskit-terra[visualization]"], + "crosstalk-pass": ["qiskit-terra[crosstalk-pass]"], + "csp-layout-pass": ["qiskit-terra[csp-layout-pass]"], + "all": ["qiskit-terra[all]"], + }, +) diff --git a/releasenotes/notes/remove-toqm-optional-extra-90e974b64ec4a3bd.yaml b/releasenotes/notes/remove-toqm-optional-extra-90e974b64ec4a3bd.yaml new file mode 100644 index 000000000000..3bc6411d73c7 --- /dev/null +++ b/releasenotes/notes/remove-toqm-optional-extra-90e974b64ec4a3bd.yaml @@ -0,0 +1,8 @@ +--- +upgrade: + - | + The ``toqm`` optional setuptools extra that previously enabled running + ``pip install qiskit-terra[topm]`` has been removed as nothing in the + Qiskit code base is currently using that package anymore. If you'd like + to use the qiskit TOQM transpiler plugin you should install the + ``qiskit-toqm`` package directly. diff --git a/setup.py b/setup.py index 92bb16a90e3e..a295f70b3b99 100644 --- a/setup.py +++ b/setup.py @@ -52,9 +52,8 @@ z3_requirements = [ "z3-solver>=4.7", ] -bip_requirements = ["cplex", "docplex"] csp_requirements = ["python-constraint>=1.4"] -toqm_requirements = ["qiskit-toqm>=0.1.0"] + setup( name="qiskit-terra", @@ -89,12 +88,8 @@ extras_require={ "qasm3-import": qasm3_import_extras, "visualization": visualization_extras, - "bip-mapper": bip_requirements, "crosstalk-pass": z3_requirements, "csp-layout-pass": csp_requirements, - "toqm": toqm_requirements, - # Note: 'all' only includes extras that are stable and work on the majority of Python - # versions and OSes supported by Terra. You have to ask for anything else explicitly. "all": visualization_extras + z3_requirements + csp_requirements + qasm3_import_extras, }, project_urls={ diff --git a/tox.ini b/tox.ini index d62dcc9fa6cc..37059659becd 100644 --- a/tox.ini +++ b/tox.ini @@ -24,8 +24,8 @@ commands = [testenv:lint] basepython = python3 commands = - ruff check qiskit test tools examples setup.py - black --check {posargs} qiskit test tools examples setup.py + ruff check qiskit test tools examples setup.py qiskit_pkg + black --check {posargs} qiskit test tools examples setup.py qiskit_pkg pylint -rn qiskit test tools # This line is commented out until #6649 merges. We can't run this currently # via tox because tox doesn't support globbing @@ -39,8 +39,8 @@ commands = basepython = python3 allowlist_externals = git commands = - ruff check qiskit test tools examples setup.py - black --check {posargs} qiskit test tools examples setup.py + ruff check qiskit test tools examples setup.py qiskit_pkg + black --check {posargs} qiskit test tools examples setup.py qiskit_pkg -git fetch -q https://github.com/Qiskit/qiskit-terra.git :lint_incr_latest python {toxinidir}/tools/pylint_incr.py -rn -j4 -sn --paths :/qiskit/*.py :/test/*.py :/tools/*.py python {toxinidir}/tools/pylint_incr.py -rn -j4 -sn --disable='invalid-name,missing-module-docstring,redefined-outer-name' --paths :(glob,top)examples/python/*.py @@ -50,7 +50,7 @@ commands = reno lint [testenv:black] -commands = black {posargs} qiskit test tools examples setup.py +commands = black {posargs} qiskit test tools examples setup.py qiskit_pkg [testenv:coverage] basepython = python3