# This code is part of Qiskit. # # (C) Copyright IBM 2017. # # 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. "The Qiskit Terra setup file." import os import re from setuptools import setup, find_packages from setuptools_rust import Binding, RustExtension with open("requirements.txt") as f: REQUIREMENTS = f.read().splitlines() # Read long description from README. README_PATH = os.path.join(os.path.abspath(os.path.dirname(__file__)), "README.md") with open(README_PATH) as readme_file: README = re.sub( ".*", "", readme_file.read(), flags=re.S | re.M, ) # If RUST_DEBUG is set, force compiling in debug mode. Else, use the default behavior of whether # it's an editable installation. rust_debug = True if os.getenv("RUST_DEBUG") == "1" else None # If modifying these optional extras, make sure to sync with `requirements-optional.txt` and # `qiskit.utils.optionals` as well. qasm3_import_extras = [ "qiskit-qasm3-import>=0.1.0", ] visualization_extras = [ "matplotlib>=3.3", "ipywidgets>=7.3.0", "pydot", "pillow>=4.2.1", "pylatexenc>=1.4", "seaborn>=0.9.0", "pygments>=2.4", ] z3_requirements = [ "z3-solver>=4.7", ] csp_requirements = ["python-constraint>=1.4"] setup( name="qiskit-terra", version="1.0.0", description="Software for developing quantum computing programs", long_description=README, long_description_content_type="text/markdown", url="https://github.com/Qiskit/qiskit", author="Qiskit Development Team", author_email="hello@qiskit.org", license="Apache 2.0", 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 :: Only", "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", packages=find_packages(exclude=["test*"]), install_requires=REQUIREMENTS, include_package_data=True, python_requires=">=3.8", extras_require={ "qasm3-import": qasm3_import_extras, "visualization": visualization_extras, "crosstalk-pass": z3_requirements, "csp-layout-pass": csp_requirements, "all": visualization_extras + z3_requirements + csp_requirements + qasm3_import_extras, }, project_urls={ "Bug Tracker": "https://github.com/Qiskit/qiskit-terra/issues", "Documentation": "https://qiskit.org/documentation/", "Source Code": "https://github.com/Qiskit/qiskit-terra", }, rust_extensions=[ RustExtension( "qiskit._accelerate", "crates/accelerate/Cargo.toml", binding=Binding.PyO3, debug=rust_debug, ), RustExtension( "qiskit._qasm2", "crates/qasm2/Cargo.toml", binding=Binding.PyO3, debug=rust_debug, ), ], options={"bdist_wheel": {"py_limited_api": "cp38"}}, zip_safe=False, entry_points={ "qiskit.unitary_synthesis": [ "default = qiskit.transpiler.passes.synthesis.unitary_synthesis:DefaultUnitarySynthesis", "aqc = qiskit.transpiler.synthesis.aqc.aqc_plugin:AQCSynthesisPlugin", "sk = qiskit.transpiler.passes.synthesis.solovay_kitaev_synthesis:SolovayKitaevSynthesis", ], "qiskit.synthesis": [ "clifford.default = qiskit.transpiler.passes.synthesis.high_level_synthesis:DefaultSynthesisClifford", "clifford.ag = qiskit.transpiler.passes.synthesis.high_level_synthesis:AGSynthesisClifford", "clifford.bm = qiskit.transpiler.passes.synthesis.high_level_synthesis:BMSynthesisClifford", "clifford.greedy = qiskit.transpiler.passes.synthesis.high_level_synthesis:GreedySynthesisClifford", "clifford.layers = qiskit.transpiler.passes.synthesis.high_level_synthesis:LayerSynthesisClifford", "clifford.lnn = qiskit.transpiler.passes.synthesis.high_level_synthesis:LayerLnnSynthesisClifford", "linear_function.default = qiskit.transpiler.passes.synthesis.high_level_synthesis:DefaultSynthesisLinearFunction", "linear_function.kms = qiskit.transpiler.passes.synthesis.high_level_synthesis:KMSSynthesisLinearFunction", "linear_function.pmh = qiskit.transpiler.passes.synthesis.high_level_synthesis:PMHSynthesisLinearFunction", "permutation.default = qiskit.transpiler.passes.synthesis.high_level_synthesis:BasicSynthesisPermutation", "permutation.kms = qiskit.transpiler.passes.synthesis.high_level_synthesis:KMSSynthesisPermutation", "permutation.basic = qiskit.transpiler.passes.synthesis.high_level_synthesis:BasicSynthesisPermutation", "permutation.acg = qiskit.transpiler.passes.synthesis.high_level_synthesis:ACGSynthesisPermutation", ], "qiskit.transpiler.init": [ "default = qiskit.transpiler.preset_passmanagers.builtin_plugins:DefaultInitPassManager", ], "qiskit.transpiler.translation": [ "translator = qiskit.transpiler.preset_passmanagers.builtin_plugins:BasisTranslatorPassManager", "unroller = qiskit.transpiler.preset_passmanagers.builtin_plugins:UnrollerPassManager", "synthesis = qiskit.transpiler.preset_passmanagers.builtin_plugins:UnitarySynthesisPassManager", ], "qiskit.transpiler.routing": [ "basic = qiskit.transpiler.preset_passmanagers.builtin_plugins:BasicSwapPassManager", "stochastic = qiskit.transpiler.preset_passmanagers.builtin_plugins:StochasticSwapPassManager", "lookahead = qiskit.transpiler.preset_passmanagers.builtin_plugins:LookaheadSwapPassManager", "sabre = qiskit.transpiler.preset_passmanagers.builtin_plugins:SabreSwapPassManager", "none = qiskit.transpiler.preset_passmanagers.builtin_plugins:NoneRoutingPassManager", ], "qiskit.transpiler.optimization": [ "default = qiskit.transpiler.preset_passmanagers.builtin_plugins:OptimizationPassManager", ], "qiskit.transpiler.layout": [ "default = qiskit.transpiler.preset_passmanagers.builtin_plugins:DefaultLayoutPassManager", "trivial = qiskit.transpiler.preset_passmanagers.builtin_plugins:TrivialLayoutPassManager", "dense = qiskit.transpiler.preset_passmanagers.builtin_plugins:DenseLayoutPassManager", "noise_adaptive = qiskit.transpiler.preset_passmanagers.builtin_plugins:NoiseAdaptiveLayoutPassManager", "sabre = qiskit.transpiler.preset_passmanagers.builtin_plugins:SabreLayoutPassManager", ], "qiskit.transpiler.scheduling": [ "alap = qiskit.transpiler.preset_passmanagers.builtin_plugins:AlapSchedulingPassManager", "asap = qiskit.transpiler.preset_passmanagers.builtin_plugins:AsapSchedulingPassManager", "default = qiskit.transpiler.preset_passmanagers.builtin_plugins:DefaultSchedulingPassManager", ], }, )