-
Notifications
You must be signed in to change notification settings - Fork 2.4k
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
Move build configuration to static configuration files #10958
Changes from 4 commits
651e51b
40a8959
b474c53
927540b
338a0e7
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,6 +2,135 @@ | |
requires = ["setuptools", "wheel", "setuptools-rust"] | ||
build-backend = "setuptools.build_meta" | ||
|
||
[project] | ||
name = "qiskit" | ||
description = "An open-source SDK for working with quantum computers at the level of extended quantum circuits, operators, and primitives." | ||
requires-python = ">=3.8" | ||
license = { file = "LICENSE.txt" } | ||
authors = [ | ||
{ name = "Qiskit Development Team", email = "[email protected]" }, | ||
] | ||
keywords = [ | ||
"qiskit", | ||
"quantum circuit", | ||
"quantum computing", | ||
"quantum programming language", | ||
Comment on lines
+15
to
+17
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. These are good additions. While we're modifying the metadata, did you want anything compiler related here? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Oh, I think I just made sure it was synchronised with the tags on the GitHub repo, rather than going out my way to add things. We can add "quantum compiler" to both if you thing it'd be good? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Nah it's fine, we can always tweak these later if needed. |
||
"quantum", | ||
"sdk", | ||
] | ||
classifiers = [ | ||
"Environment :: Console", | ||
"Intended Audience :: Developers", | ||
"Intended Audience :: Science/Research", | ||
"License :: OSI Approved :: Apache Software License", | ||
"Operating System :: MacOS", | ||
"Operating System :: Microsoft :: Windows", | ||
"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", | ||
jakelishman marked this conversation as resolved.
Show resolved
Hide resolved
|
||
"Programming Language :: Python :: 3.12", | ||
"Topic :: Scientific/Engineering", | ||
] | ||
# These are configured in the `tool.setuptools.dynamic` table. | ||
dynamic = ["version", "readme", "dependencies"] | ||
|
||
# If modifying this table, be sure to sync with `requirements-optional.txt` and | ||
# `qiskit.utils.optionals`. | ||
[project.optional-dependencies] | ||
qasm3-import = [ | ||
"qiskit-qasm3-import >= 0.1.0", | ||
] | ||
visualization = [ | ||
"matplotlib >= 3.3", | ||
"ipywidgets >= 7.3.0", | ||
"pydot", | ||
"Pillow >= 4.2.1", | ||
"pylatexenc >= 1.4", | ||
"seaborn >= 0.9.0", | ||
"pygments >= 2.4", | ||
] | ||
crosstalk-pass = [ | ||
"z3-solver >= 4.7", | ||
] | ||
csp-layout-pass = [ | ||
"python-constraint >= 1.4", | ||
] | ||
# This will make the resolution work for installers from PyPI, but `pip install .[all]` will be | ||
# unreliable because `qiskit` will resolve to the PyPI version, so local changes in the | ||
# optionals won't be reflected. | ||
all = ["qiskit[qasm3-import,visualization,crosstalk-pass,csp-layout-pass]"] | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This seems less than ideal, but in practice I guess people aren't using the There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yeah, it's not super ideal, though I was assuming |
||
|
||
[project.urls] | ||
Homepage = "https://qiskit.org" | ||
Documentation = "https://qiskit.org/documentation" | ||
Repository = "https://github.com/Qiskit/qiskit" | ||
Issues = "https://github.com/Qiskit/qiskit/issues" | ||
Changelog = "https://qiskit.org/documentation/release_notes.html" | ||
|
||
[project.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" | ||
|
||
[project.entry-points."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" | ||
|
||
[project.entry-points."qiskit.transpiler.init"] | ||
default = "qiskit.transpiler.preset_passmanagers.builtin_plugins:DefaultInitPassManager" | ||
|
||
[project.entry-points."qiskit.transpiler.translation"] | ||
synthesis = "qiskit.transpiler.preset_passmanagers.builtin_plugins:UnitarySynthesisPassManager" | ||
translator = "qiskit.transpiler.preset_passmanagers.builtin_plugins:BasisTranslatorPassManager" | ||
unroller = "qiskit.transpiler.preset_passmanagers.builtin_plugins:UnrollerPassManager" | ||
|
||
[project.entry-points."qiskit.transpiler.routing"] | ||
basic = "qiskit.transpiler.preset_passmanagers.builtin_plugins:BasicSwapPassManager" | ||
lookahead = "qiskit.transpiler.preset_passmanagers.builtin_plugins:LookaheadSwapPassManager" | ||
none = "qiskit.transpiler.preset_passmanagers.builtin_plugins:NoneRoutingPassManager" | ||
sabre = "qiskit.transpiler.preset_passmanagers.builtin_plugins:SabreSwapPassManager" | ||
stochastic = "qiskit.transpiler.preset_passmanagers.builtin_plugins:StochasticSwapPassManager" | ||
|
||
[project.entry-points."qiskit.transpiler.optimization"] | ||
default = "qiskit.transpiler.preset_passmanagers.builtin_plugins:OptimizationPassManager" | ||
|
||
[project.entry-points."qiskit.transpiler.layout"] | ||
default = "qiskit.transpiler.preset_passmanagers.builtin_plugins:DefaultLayoutPassManager" | ||
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" | ||
trivial = "qiskit.transpiler.preset_passmanagers.builtin_plugins:TrivialLayoutPassManager" | ||
|
||
[project.entry-points."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" | ||
|
||
[tool.setuptools] | ||
include-package-data = true | ||
|
||
[tool.setuptools.dynamic] | ||
version = { file = "qiskit/VERSION.txt" } | ||
readme = { file = "README.md", content-type = "text/markdown" } | ||
dependencies = {file = "requirements.txt" } | ||
|
||
[tool.setuptools.packages.find] | ||
include = ["qiskit", "qiskit.*"] | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Wouldn't There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It would be more consistent and I can switch it over to that if you prefer. I think the include-list form is maybe a bit less liable to silently break than an exclude list, though. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. That's fine with me, this works. |
||
|
||
[tool.black] | ||
line-length = 100 | ||
target-version = ['py38', 'py39', 'py310', 'py311'] | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should we add?
I'm not sure if this is valid syntax or not though. I was doing one final pass through comparing the old setup.py with the metadata in the
pyproject.toml
and noticed we had the license string set before (and the file was pulled in implicitly I think) but now we just point to the file. But I also need to read PEP 639 to see if this matters at all either.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The current PyPA guidelines say it's either-or (though maybe others interpret that text differently), so maybe it's best to just revisit when PEP 639 is accepted?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, we can look at it again if/when pep 639 is accepted.