Spooky / pyproject.toml
JavideuS's picture
Deploy a665039
beeea66 verified
Raw
History Blame Contribute Delete
3.76 kB
[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"
[project]
name = "spooky"
version = "0.1.0"
description = "Hybrid quantum-classical multi-robot path planning using QUBO formulations"
authors = [
{name="JavideuS", email="javi.rm2005@gmail.com"}
]
readme = "README.md"
license = {text = "Apache-2.0"}
requires-python = ">=3.8"
keywords = [
"path planning",
"multi-robot",
"QUBO",
"quantum annealing",
"QAOA",
"robotics",
"quantum computing"
]
classifiers = [
"Development Status :: 3 - Alpha",
"Intended Audience :: Science/Research",
"Intended Audience :: Developers",
"License :: OSI Approved :: Apache Software License",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.12",
"Topic :: Scientific/Engineering :: Artificial Intelligence",
"Topic :: Scientific/Engineering :: Physics",
"Topic :: Software Development :: Libraries :: Python Modules",
]
dependencies = [
"pyyaml",
"h5py",
"numpy",
"pennylane",
"networkx", # Used by the CBS classical baseline
]
[project.optional-dependencies]
gpu = [
"custatevec-cu12",
"pennylane-lightning-gpu",
]
dwave = [
"dimod",
"dwave-system",
"dwave-neal",
]
ibm = [
"qiskit-ibm-runtime",
"pennylane-qiskit",
]
ros = [
"pillow",
]
iqm = [
# qrisp[iqm] pulls in iqm-client and provides qrisp.interface.IQMBackend,
# the execution path Pennylane_solver.py bridges into for real IQM hardware
# (PennyLane -> Qiskit -> Qrisp) — see Pennylane_solver.py's IQM comments
# for why qiskit.remote's Sampler can't be used directly against IQM.
"qrisp[iqm]",
"pennylane-qiskit",
"python-dotenv",
]
jupyter = [
"ipykernel",
"nbformat>=4.2.0",
]
dev = [
"pytest",
"black",
"flake8",
]
visualizer = [
"plotly",
"kaleido",
]
fastapi = [
"fastapi",
"uvicorn",
"python-multipart", # required by FastAPI's UploadFile form parsing
"dash",
]
paper = [
"matplotlib",
]
classical = [
"pyomo",
"highspy",
]
# quantum/benchmark/sweep_runner.py + quantum/benchmark/analysis/
benchmark = [
"pandas",
"scipy",
]
all = [
"spooky[gpu,dwave,ibm,iqm,jupyter,dev,visualizer,fastapi,paper,ros,classical,benchmark]",
]
# PennyLane ships no CUDA/lightning-gpu wheels for Windows, so this mirrors
# "all" minus the gpu extra.
windows = [
"spooky[dwave,ibm,iqm,jupyter,dev,visualizer,fastapi,paper,ros,classical,benchmark]",
]
[project.urls]
Homepage = "https://github.com/JavideuS/Spooky"
Repository = "https://github.com/JavideuS/Spooky"
Issues = "https://github.com/JavideuS/Spooky/issues"
[project.scripts]
spooky-solve = "quantum.qubo_cli:main"
spooky-sweep = "quantum.benchmark.run_sweep:main"
[tool.setuptools.packages.find]
where = ["."]
include = ["quantum*"]
exclude = ["quantum.prueba*", "quantum.tfg_proves*", "quantum.paper*"]
# Data the library loads at runtime relative to its own __file__, so it has to
# travel with the package. Without this a non-editable `pip install .` copies
# only the .py files. Map .h5 files are deliberately NOT listed here — they're
# generated artifacts (see maps/yaml2HDF5.py); the 1000x1000 map alone is 11MB,
# so bundling every .h5 would balloon the wheel. registry.py generates missing
# .h5 files on demand from the bundled .yaml sources instead, cached outside
# the install so it survives on a read-only or reinstalled package dir.
# "images/*.png" is the only extension the visualizer's default "auto" theme
# actually loads (quantum/images/*.jpg and *.svg are unused leftovers).
[tool.setuptools.package-data]
"quantum" = ["images/*.png"]
"quantum.config" = ["*.yaml"]
"quantum.maps" = ["*.yaml"]