[build-system] requires = ["setuptools>=68", "wheel"] build-backend = "setuptools.build_meta" [project] name = "autoresearch-quantum" version = "0.1.0" description = "Karpathy-style autoresearch harness for encoded magic-state preparation experiments." readme = "README.md" requires-python = ">=3.11" authors = [ { name = "saymrwulf" } ] dependencies = [ "qiskit>=2.3,<3", "qiskit-aer>=0.17,<0.18", "pyyaml>=6,<7", ] [project.optional-dependencies] hardware = [ "qiskit-ibm-runtime>=0.46,<0.47", ] notebooks = [ "notebook>=7,<8", "jupyterlab>=4,<5", "matplotlib>=3.8", "ipywidgets>=8,<9", ] dev = [ "pytest>=9,<10", "pytest-cov>=6,<7", "ruff>=0.11,<1", "nbclient>=0.10,<1", "nbformat>=5,<6", "mypy>=1.15,<2", ] ux = [ "playwright>=1.52,<2", ] [project.scripts] autoresearch-quantum = "autoresearch_quantum.cli:main" [tool.setuptools] package-dir = {"" = "src"} [tool.setuptools.packages.find] where = ["src"] [tool.pytest.ini_options] pythonpath = ["src"] testpaths = ["tests"] addopts = "--cov=autoresearch_quantum --cov-report=term-missing --cov-config=pyproject.toml -m 'not browser'" markers = [ "browser: end-to-end browser UX tests (requires playwright)", ] [tool.coverage.run] source = ["autoresearch_quantum"] [tool.coverage.report] show_missing = true skip_empty = true exclude_lines = [ "pragma: no cover", "if TYPE_CHECKING:", "if __name__ == .__main__.", ] [tool.mypy] python_version = "3.11" strict = true warn_return_any = true warn_unused_configs = true disallow_untyped_defs = true disallow_incomplete_defs = true check_untyped_defs = true no_implicit_optional = true warn_redundant_casts = true warn_unused_ignores = true show_error_codes = true namespace_packages = true explicit_package_bases = true mypy_path = ["src"] [[tool.mypy.overrides]] module = [ "qiskit.*", "qiskit_aer.*", "qiskit_ibm_runtime.*", "IPython.*", "ipywidgets.*", "nbformat.*", "matplotlib.*", "numpy.*", "yaml.*", ] ignore_missing_imports = true [tool.ruff] target-version = "py311" line-length = 120 src = ["src", "tests"] [tool.ruff.lint] select = ["E", "F", "W", "I", "UP", "B", "SIM"] ignore = ["E501"]