diff --git a/.flake8 b/.flake8 deleted file mode 100644 index e0ea542fd..000000000 --- a/.flake8 +++ /dev/null @@ -1,3 +0,0 @@ -[flake8] -max-line-length = 88 -extend-ignore = E203 \ No newline at end of file diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 000000000..386ca6993 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,48 @@ +name: Main pipeline for linting and testing + +on: [push] + +jobs: + lint: + runs-on: ubuntu-latest + timeout-minutes: 60 + steps: + - name: Check out + uses: actions/checkout@v4 + + - name: Set up Python environment + uses: actions/setup-python@v5 + with: + python-version: "3.10.*" + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -e .[dev] + + - name: Run pre-commit + # FIXME: Does only run on subset of files since not all files are linted yet + run: pre-commit run --files pyproject.toml .pre-commit-config.yaml requirements/* --show-diff-on-failure + + build: + runs-on: ubuntu-latest + timeout-minutes: 60 + strategy: + matrix: + python-version: ["3.10.*"] + steps: + - name: Check out repository + uses: actions/checkout@v4 + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -e .[dev] + + - name: Test with pytest + run: pytest diff --git a/.github/workflows/qrisp_test.yml b/.github/workflows/qrisp_test.yml deleted file mode 100644 index 46b68b52e..000000000 --- a/.github/workflows/qrisp_test.yml +++ /dev/null @@ -1,34 +0,0 @@ -name: Qrisp unit tests via Pytest - -on: [push] - -jobs: - build: - - runs-on: ubuntu-latest - timeout-minutes: 60 - strategy: - matrix: - python-version: ["3.10.*"] - - steps: - - uses: actions/checkout@v3 - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v4 - with: - python-version: ${{ matrix.python-version }} - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install pytest - pip install -e ./ - pip install --upgrade pennylane-catalyst - pip install qiskit-aer - pip install jax==0.4.28 - pip install jaxlib==0.4.28 - pip install pyscf - pip install qiskit-iqm - pip install stim - - name: Test with pytest - run: | - pytest diff --git a/.gitignore b/.gitignore index ee91a69a9..dd5be7bf7 100644 --- a/.gitignore +++ b/.gitignore @@ -13,4 +13,4 @@ __pycache__/ /docuenv/ /eccvenv/ /python311venv/ -/multiverseenv/ \ No newline at end of file +/multiverseenv/ diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml deleted file mode 100644 index 528e5ef9c..000000000 --- a/.gitlab-ci.yml +++ /dev/null @@ -1,63 +0,0 @@ -image: python:3.9.16 # The latest python version 3.9.17 throws an error in the CI/CD pipeline - -variables: - PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip" - -cache: - paths: - - .cache/pip - - venv/ - -stages: - - test - -before_script: - - python --version # For debugging - - pip3 install virtualenv - - virtualenv venv - - source venv/bin/activate - # - pip install pre-commit - # - pip install isort - # - pip install black==23.1.0 - # - pip install flake8 - # - pip install pylint - - pip install pytest - - pip install networkx[default] - - pip install -e . - - pip install networkit - - pip install qiskit-aer - - pip install qiskit_ibm_runtime - - pip install pennylane - - pip install pytket - - pip install pytket-qiskit - - pip install jax - - -# isort: -# stage: linting -# script: -# - isort . - -# black: -# stage: linting -# script: -# - black --check src/ -# - black --check tests/ -# - black --exclude=´/src/qrisp/interface/´ - -# flake8: -# stage: linting -# script: -# - flake8 src/ -# - flake8 tests/ - -# pylint: -# stage: linting -# script: -# - pylint src/ - -python_test: - stage: test - script: - #- venv install - - python -m pytest diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 000000000..cf08edd04 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,18 @@ +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: "v5.0.0" + hooks: + - id: check-case-conflict + - id: check-merge-conflict + - id: end-of-file-fixer + - id: trailing-whitespace + - id: check-toml + - id: check-yaml + + - repo: https://github.com/astral-sh/ruff-pre-commit + rev: "v0.12.3" + hooks: + - id: ruff + args: [--exit-non-zero-on-fix, --config=pyproject.toml] + - id: ruff-format + args: [--config=pyproject.toml] diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000..874b16ba1 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,91 @@ +# Contributing to Qrisp + +Thank you for your interest in contributing to Qrisp! This guide will help you get started with setting up your development environment and understanding the contribution workflow. + +- [Contributing to Qrisp](#contributing-to-qrisp) + - [Set up a Python development environment](#set-up-a-python-development-environment) + - [uv](#uv) + - [Conda](#conda) + - [Style and lint](#style-and-lint) + - [Testing](#testing) + - [Dependency management](#dependency-management) + - [License](#license) + +## Set up a Python development environment + +### uv + +For [uv](https://docs.astral.sh/uv/) users, a new virtual environment with required dependencies can be created by running + +```bash +uv sync +``` + +Qrisp can then be installed with development dependencies by running + +```bash +uv pip install -e ".[dev]" +``` + +### Conda + +For [Conda](https://anaconda.org/anaconda/conda) users, a new virtual environment can be created as follows + +```bash +conda create -y -n qrisp-dev python=3.10 pip +conda activate qrisp-dev +``` + +Qrisp can then be installed with development dependencies by running + +```bash +pip install -e ".[dev]" +``` + +## Style and lint + +Qrisp uses [ruff](https://github.com/astral-sh/ruff) for style checking and linting. The configuration is stored in [pyproject.toml](pyproject.toml). The rules are enforced by using [pre-commit](https://pre-commit.com/). Pre-commit is automatically installed with the `dev` dependencies. It will install [Git hooks](https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks) defined in [.pre-commit-config.yaml](.pre-commit-config.yaml), and run them automatically when you run `git commit`. Furthermore, the GitHub pipeline is configured to run pre-commit on every push. + +To run `pre-commit` manually + +```bash +pre-commit run --show-diff-on-failure +``` + +To run `ruff` manually + +```bash +ruff check +``` + +## Testing + +Tests should be added for every new feature. The tests can be found in the [`tests/`](tests/) folder. For testing the Python library [pytest](https://docs.pytest.org/en/stable/) is used. + +To run the tests (use `-s` to print STDOUT) + +```bash +pytest +``` + +## Dependency management + +Qrisp dependencies are managed with [pip-compile](https://pip-tools.readthedocs.io/en/latest/) to ensure proper pinning of versions. To update the dependencies, modify the input files (e.g., [`requirements/base.in`](requirements/base.in)), and run: + +```bash +pip-compile requirements/base.in -o requirements/base.txt +``` + +Since we have different groups of dependencies, e.g. `dev` for development dependencies - depending on base dependencies, we use [layered requirement files](https://pip-tools.readthedocs.io/en/latest/#workflow-for-layered-requirements) for [`requirements/dev.in`](requirements/dev.in). + +To update all requirement files: + +```bash +uv pip compile requirements/base.in -o requirements/base.txt +uv pip compile requirements/dev.in -o requirements/dev.txt +uv pip compile requirements/iqm.in -o requirements/iqm.txt +``` + +## License + +By contributing to Qrisp, you agree that your contributions will be licensed under the [Eclipse Public License 2.0](LICENSE). diff --git a/LICENSE b/LICENSE index e23ece2c8..e48e09634 100644 --- a/LICENSE +++ b/LICENSE @@ -261,8 +261,8 @@ No third-party beneficiary rights are created under this Agreement. Exhibit A - Form of Secondary Licenses Notice -"This Source Code may also be made available under the following -Secondary Licenses when the conditions for such availability set forth +"This Source Code may also be made available under the following +Secondary Licenses when the conditions for such availability set forth in the Eclipse Public License, v. 2.0 are satisfied: {name license(s), version(s), and exceptions or additional permissions here}." @@ -274,4 +274,4 @@ version(s), and exceptions or additional permissions here}." file in a relevant directory) where a recipient would be likely to look for such a notice. - You may add additional accurate notices of copyright ownership. \ No newline at end of file + You may add additional accurate notices of copyright ownership. diff --git a/README.md b/README.md index fba7a01c9..7f2d69e0f 100644 --- a/README.md +++ b/README.md @@ -40,11 +40,13 @@ pip install qrisp Qrisp has been confirmed to work with Python version 3.10, 3.11 & 3.12. Qrisp is compatible with any QASM-capable quantum backend! If you want to work with IQM quantum computers as a backend, you need to install additional dependencies using + ```bash pip install qrisp[iqm] ``` ## Documentation + The full documentation, alongside with many tutorials and examples, is available under [Qrisp Documentation](https://www.qrisp.eu/). ## Shor's Algorithm with Qrisp @@ -75,6 +77,7 @@ To find out how this can be used to break encryption be sure to check the [tutor Qrisp offers much more than just factoring! More examples, like simulating molecules at the quantum level or how to solve the Travelling Salesman Problem, can be found [here](https://www.qrisp.eu/general/tutorial.html). ## Authors and Citation + Qrisp was mainly devised and implemented by Raphael Seidel, supported by Sebastian Bock, Nikolay Tcholtchev, René Zander, Niklas Steinmann and Matic Petric. If you have comments, questions or love letters, feel free to reach out to us: @@ -89,17 +92,16 @@ If you want to cite Qrisp in your work, please use: ``` @misc{seidel2024qrisp, - title={Qrisp: A Framework for Compilable High-Level Programming of Gate-Based Quantum Computers}, + title={Qrisp: A Framework for Compilable High-Level Programming of Gate-Based Quantum Computers}, author={Raphael Seidel and Sebastian Bock and René Zander and Matic Petrič and Niklas Steinmann and Nikolay Tcholtchev and Manfred Hauswirth}, year={2024}, eprint={2406.14792}, archivePrefix={arXiv}, primaryClass={quant-ph}, - url={https://arxiv.org/abs/2406.14792}, + url={https://arxiv.org/abs/2406.14792}, } ``` - ## License -[Eclipse Public License 2.0](https://github.com/fraunhoferfokus/Qrisp/blob/main/LICENSE) +[Eclipse Public License 2.0](https://github.com/eclipse-qrisp/Qrisp/blob/main/LICENSE) diff --git a/pyproject.toml b/pyproject.toml index 58cbbd744..be56199a1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,12 +1,52 @@ [build-system] -requires = [ - "setuptools>=42", - "wheel" -] +requires = ["setuptools>=42", "wheel"] build-backend = "setuptools.build_meta" -[tool.isort] -profile = "black" +[project] +name = "qrisp" +version = "0.7.6" +dynamic = ["dependencies", "optional-dependencies"] +description = "Qrisp - A high level language for gate-based quantum computing" +classifiers = [ + "Programming Language :: Python :: 3", + "License :: OSI Approved :: Eclipse Public License 2.0 (EPL-2.0)", + "Operating System :: OS Independent", +] +requires-python = ">=3.10" +readme = "README.md" +license = {file = "LICENSE"} +[[project.authors]] +name = "The Qrisp team" +email = "raphael.seidel@fokus.fraunhofer.de" + +[project.urls] +homepage = "https://www.qrisp.eu/" +source = "https://github.com/eclipse-qrisp/Qrisp" +issues = "https://github.com/eclipse-qrisp/Qrisp/issues" + +[tool.ruff] +line-length = 88 + +[tool.ruff.lint] +select = [ + # isort + "I", + # ruff + "RUF", + # pycodestyle + "E", "W", + # flake8-bugbear + "B", + # flake8-simplify + "SIM", +] +ignore = ["E203"] + +[tool.setuptools.dynamic.dependencies] +file = "requirements/base.txt" + +[tool.setuptools.dynamic.optional-dependencies.dev] +file = "requirements/dev.txt" -[tool.pylint. messages_control] -disable = ["import-error"] \ No newline at end of file +[tool.setuptools.dynamic.optional-dependencies.iqm] +file = "requirements/iqm.txt" diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 6464bc0e7..000000000 --- a/requirements.txt +++ /dev/null @@ -1,12 +0,0 @@ -qiskit>=0.44.0 -matplotlib>=3.5.1 -waitress>=2.1.1 -scipy>=1.10.0 -numba -networkx -tdqm -dill -flask -jax==0.4.28 -flask -psutil \ No newline at end of file diff --git a/requirements/base.in b/requirements/base.in new file mode 100644 index 000000000..b4d6436f9 --- /dev/null +++ b/requirements/base.in @@ -0,0 +1,17 @@ +numpy>=2.0 +sympy<=1.13 +qiskit>=1.0,<1.3 +matplotlib>=3.5.1 +scipy>=1.10.0 +numba +networkx<3.5 +tqdm +dill +flask +waitress +pyyaml +requests +psutil +jax==0.4.28 +jaxlib==0.4.28 +packaging<25.0,>=24.1 diff --git a/requirements/base.txt b/requirements/base.txt new file mode 100644 index 000000000..911edb23c --- /dev/null +++ b/requirements/base.txt @@ -0,0 +1,119 @@ +# This file was autogenerated by uv via the following command: +# uv pip compile requirements/base.in -o requirements/base.txt +blinker==1.9.0 + # via flask +certifi==2025.7.9 + # via requests +charset-normalizer==3.4.2 + # via requests +click==8.2.1 + # via flask +contourpy==1.3.2 + # via matplotlib +cycler==0.12.1 + # via matplotlib +dill==0.4.0 + # via + # -r requirements/base.in + # qiskit +flask==3.1.1 + # via -r requirements/base.in +fonttools==4.58.5 + # via matplotlib +idna==3.10 + # via requests +itsdangerous==2.2.0 + # via flask +jax==0.4.28 + # via -r requirements/base.in +jaxlib==0.4.28 + # via -r requirements/base.in +jinja2==3.1.6 + # via flask +kiwisolver==1.4.8 + # via matplotlib +llvmlite==0.44.0 + # via numba +markupsafe==3.0.2 + # via + # flask + # jinja2 + # werkzeug +matplotlib==3.10.3 + # via -r requirements/base.in +ml-dtypes==0.5.1 + # via + # jax + # jaxlib +mpmath==1.3.0 + # via sympy +networkx==3.4 + # via -r requirements/base.in +numba==0.61.2 + # via -r requirements/base.in +numpy==2.2.6 + # via + # -r requirements/base.in + # contourpy + # jax + # jaxlib + # matplotlib + # ml-dtypes + # numba + # qiskit + # rustworkx + # scipy +opt-einsum==3.4.0 + # via jax +packaging==24.2 + # via + # -r requirements/base.in + # matplotlib +pbr==6.1.1 + # via stevedore +pillow==11.3.0 + # via matplotlib +psutil==7.0.0 + # via -r requirements/base.in +pyparsing==3.2.3 + # via matplotlib +python-dateutil==2.9.0.post0 + # via + # matplotlib + # qiskit +pyyaml==6.0.2 + # via -r requirements/base.in +qiskit==1.2.4 + # via -r requirements/base.in +requests==2.32.4 + # via -r requirements/base.in +rustworkx==0.16.0 + # via qiskit +scipy==1.15.3 + # via + # -r requirements/base.in + # jax + # jaxlib + # qiskit +setuptools==80.9.0 + # via pbr +six==1.17.0 + # via python-dateutil +stevedore==5.4.1 + # via qiskit +symengine==0.13.0 + # via qiskit +sympy==1.13.0 + # via + # -r requirements/base.in + # qiskit +tqdm==4.67.1 + # via -r requirements/base.in +typing-extensions==4.14.1 + # via qiskit +urllib3==2.5.0 + # via requests +waitress==3.0.2 + # via -r requirements/base.in +werkzeug==3.1.3 + # via flask diff --git a/requirements/dev.in b/requirements/dev.in new file mode 100644 index 000000000..4780655b6 --- /dev/null +++ b/requirements/dev.in @@ -0,0 +1,10 @@ +-c base.txt +-c iqm.txt +pytest +pre-commit +ruff +pip-tools +pennylane-catalyst +qiskit-aer +pyscf +stim diff --git a/requirements/dev.txt b/requirements/dev.txt new file mode 100644 index 000000000..f73d083b9 --- /dev/null +++ b/requirements/dev.txt @@ -0,0 +1,244 @@ +# This file was autogenerated by uv via the following command: +# uv pip compile requirements/dev.in -o requirements/dev.txt +appdirs==1.4.4 + # via pennylane +astunparse==1.6.3 + # via diastatic-malt +autograd==1.8.0 + # via pennylane +autoray==0.7.2 + # via pennylane +build==1.2.2.post1 + # via pip-tools +cachetools==6.1.0 + # via pennylane +certifi==2025.7.9 + # via + # -c requirements/base.txt + # -c requirements/iqm.txt + # requests +cfgv==3.4.0 + # via pre-commit +charset-normalizer==3.4.2 + # via + # -c requirements/base.txt + # -c requirements/iqm.txt + # requests +click==8.2.1 + # via + # -c requirements/base.txt + # pip-tools +diastatic-malt==2.15.2 + # via + # pennylane + # pennylane-catalyst +dill==0.4.0 + # via + # -c requirements/base.txt + # -c requirements/iqm.txt + # qiskit +distlib==0.3.9 + # via virtualenv +filelock==3.18.0 + # via virtualenv +gast==0.6.0 + # via diastatic-malt +h5py==3.14.0 + # via pyscf +identify==2.6.12 + # via pre-commit +idna==3.10 + # via + # -c requirements/base.txt + # -c requirements/iqm.txt + # requests +iniconfig==2.1.0 + # via pytest +jax==0.4.28 + # via + # -c requirements/base.txt + # pennylane-catalyst +jaxlib==0.4.28 + # via + # -c requirements/base.txt + # pennylane-catalyst +ml-dtypes==0.5.1 + # via + # -c requirements/base.txt + # jax + # jaxlib +mpmath==1.3.0 + # via + # -c requirements/base.txt + # -c requirements/iqm.txt + # sympy +networkx==3.4 + # via + # -c requirements/base.txt + # pennylane +nodeenv==1.9.1 + # via pre-commit +numpy==2.2.6 + # via + # -c requirements/base.txt + # -c requirements/iqm.txt + # autograd + # h5py + # jax + # jaxlib + # ml-dtypes + # pennylane + # pennylane-catalyst + # pyscf + # qiskit + # qiskit-aer + # rustworkx + # scipy + # stim +opt-einsum==3.4.0 + # via + # -c requirements/base.txt + # jax +packaging==24.2 + # via + # -c requirements/base.txt + # -c requirements/iqm.txt + # build + # pennylane + # pytest +pbr==6.1.1 + # via + # -c requirements/base.txt + # -c requirements/iqm.txt + # stevedore +pennylane==0.41.1 + # via + # pennylane-catalyst + # pennylane-lightning +pennylane-catalyst==0.11.0 + # via -r requirements/dev.in +pennylane-lightning==0.41.1 + # via + # pennylane + # pennylane-catalyst +pip==25.1.1 + # via pip-tools +pip-tools==7.4.1 + # via -r requirements/dev.in +platformdirs==4.3.8 + # via virtualenv +pluggy==1.6.0 + # via pytest +pre-commit==4.2.0 + # via -r requirements/dev.in +psutil==7.0.0 + # via + # -c requirements/base.txt + # -c requirements/iqm.txt + # qiskit-aer +pygments==2.19.2 + # via pytest +pyproject-hooks==1.2.0 + # via + # build + # pip-tools +pyscf==2.9.0 + # via -r requirements/dev.in +pytest==8.4.1 + # via -r requirements/dev.in +python-dateutil==2.9.0.post0 + # via + # -c requirements/base.txt + # -c requirements/iqm.txt + # qiskit +pyyaml==6.0.2 + # via + # -c requirements/base.txt + # pre-commit +qiskit==1.2.4 + # via + # -c requirements/base.txt + # -c requirements/iqm.txt + # qiskit-aer +qiskit-aer==0.15.1 + # via + # -c requirements/iqm.txt + # -r requirements/dev.in +requests==2.32.4 + # via + # -c requirements/base.txt + # -c requirements/iqm.txt + # pennylane +ruff==0.12.3 + # via -r requirements/dev.in +rustworkx==0.16.0 + # via + # -c requirements/base.txt + # -c requirements/iqm.txt + # pennylane + # qiskit +scipy==1.15.3 + # via + # -c requirements/base.txt + # -c requirements/iqm.txt + # jax + # jaxlib + # pennylane + # pyscf + # qiskit + # qiskit-aer +scipy-openblas32==0.3.30.0.1 + # via + # pennylane-catalyst + # pennylane-lightning +setuptools==80.9.0 + # via + # -c requirements/base.txt + # -c requirements/iqm.txt + # pbr + # pip-tools + # pyscf +six==1.17.0 + # via + # -c requirements/base.txt + # -c requirements/iqm.txt + # astunparse + # python-dateutil +stevedore==5.4.1 + # via + # -c requirements/base.txt + # -c requirements/iqm.txt + # qiskit +stim==1.15.0 + # via -r requirements/dev.in +symengine==0.13.0 + # via + # -c requirements/base.txt + # -c requirements/iqm.txt + # qiskit +sympy==1.13.0 + # via + # -c requirements/base.txt + # -c requirements/iqm.txt + # qiskit +termcolor==3.1.0 + # via diastatic-malt +tomlkit==0.13.3 + # via pennylane +typing-extensions==4.14.1 + # via + # -c requirements/base.txt + # -c requirements/iqm.txt + # pennylane + # qiskit +urllib3==2.5.0 + # via + # -c requirements/base.txt + # -c requirements/iqm.txt + # requests +virtualenv==20.31.2 + # via pre-commit +wheel==0.45.1 + # via + # astunparse + # pip-tools diff --git a/requirements/iqm.in b/requirements/iqm.in new file mode 100644 index 000000000..14978c090 --- /dev/null +++ b/requirements/iqm.in @@ -0,0 +1,2 @@ +-c base.txt +qiskit-iqm>=17.0,<18.0 diff --git a/requirements/iqm.txt b/requirements/iqm.txt new file mode 100644 index 000000000..6100ba22d --- /dev/null +++ b/requirements/iqm.txt @@ -0,0 +1,110 @@ +# This file was autogenerated by uv via the following command: +# uv pip compile requirements/iqm.in -o requirements/iqm.txt +annotated-types==0.7.0 + # via pydantic +certifi==2025.7.9 + # via + # -c requirements/base.txt + # requests +charset-normalizer==3.4.2 + # via + # -c requirements/base.txt + # requests +dill==0.4.0 + # via + # -c requirements/base.txt + # qiskit +idna==3.10 + # via + # -c requirements/base.txt + # requests +iqm-client==22.4 + # via qiskit-iqm +mpmath==1.3.0 + # via + # -c requirements/base.txt + # sympy +numpy==2.2.6 + # via + # -c requirements/base.txt + # iqm-client + # qiskit + # qiskit-aer + # qiskit-iqm + # rustworkx + # scipy +packaging==24.2 + # via + # -c requirements/base.txt + # iqm-client +pbr==6.1.1 + # via + # -c requirements/base.txt + # stevedore +psutil==7.0.0 + # via + # -c requirements/base.txt + # qiskit-aer +pydantic==2.11.7 + # via iqm-client +pydantic-core==2.33.2 + # via pydantic +python-dateutil==2.9.0.post0 + # via + # -c requirements/base.txt + # qiskit +qiskit==1.2.4 + # via + # -c requirements/base.txt + # qiskit-aer + # qiskit-iqm +qiskit-aer==0.15.1 + # via qiskit-iqm +qiskit-iqm==17.7 + # via -r requirements/iqm.in +requests==2.32.4 + # via + # -c requirements/base.txt + # iqm-client +rustworkx==0.16.0 + # via + # -c requirements/base.txt + # qiskit +scipy==1.15.3 + # via + # -c requirements/base.txt + # qiskit + # qiskit-aer +setuptools==80.9.0 + # via + # -c requirements/base.txt + # pbr +six==1.17.0 + # via + # -c requirements/base.txt + # python-dateutil +stevedore==5.4.1 + # via + # -c requirements/base.txt + # qiskit +symengine==0.13.0 + # via + # -c requirements/base.txt + # qiskit +sympy==1.13.0 + # via + # -c requirements/base.txt + # qiskit +typing-extensions==4.14.1 + # via + # -c requirements/base.txt + # pydantic + # pydantic-core + # qiskit + # typing-inspection +typing-inspection==0.4.1 + # via pydantic +urllib3==2.5.0 + # via + # -c requirements/base.txt + # requests diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index 25d9cf85a..000000000 --- a/setup.cfg +++ /dev/null @@ -1,27 +0,0 @@ -[metadata] -name = qrisp -version = 0.7.6 -author = The Qrisp authors -author_email = raphael.seidel@fokus.fraunhofer.de -description = A high-level quantum programming language -long_description = file: README.md -long_description_content_type = text/markdown -url = https://github.com/fraunhoferfokus/Qrisp -project_urls = - Bug Tracker = https://github.com/fraunhoferfokus/Qrisp/issues - -[options] -package_dir = - =src -packages = find: -python_requires = >=3.8 - -[options.packages.find] -where = src - -[options.extras_require] -iqm = qiskit-iqm - -[tool:pytest] -testpaths = ./tests -pythonpath = . diff --git a/setup.py b/setup.py deleted file mode 100644 index b0533801a..000000000 --- a/setup.py +++ /dev/null @@ -1,63 +0,0 @@ -""" -******************************************************************************** -* Copyright (c) 2025 the Qrisp authors -* -* This program and the accompanying materials are made available under the -* terms of the Eclipse Public License 2.0 which is available at -* http://www.eclipse.org/legal/epl-2.0. -* -* This Source Code may also be made available under the following Secondary -* Licenses when the conditions for such availability set forth in the Eclipse -* Public License, v. 2.0 are satisfied: GNU General Public License, version 2 -* with the GNU Classpath Exception which is -* available at https://www.gnu.org/software/classpath/license.html. -* -* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 -******************************************************************************** -""" - -import setuptools - -REQUIREMENTS = [ - "numpy>=2.0", - "sympy<=1.13", - "qiskit>=0.44.0", - "matplotlib>=3.5.1", - "scipy>=1.10.0", - "numba", - "networkx", - "tdqm", - "dill", - "flask", - "waitress", - "pyyaml", - "requests", - "psutil", - "jax==0.4.28", - "jaxlib==0.4.28"] - - -with open("README.md", "r", encoding="utf-8") as fh: - long_description = fh.read() - -setuptools.setup( - name="qrisp", - author="The Qrisp team", - author_email="raphael.seidel@fokus.fraunhofer.de", - description="Qrisp - A high level language for gate-based quantum computing", - long_description=long_description, - long_description_content_type="text/markdown", - classifiers=[ - "Programming Language :: Python :: 3", - "License :: OSI Approved :: Eclipse Public License 2.0 (EPL-2.0)", - "Operating System :: OS Independent", - ], - package_dir={"": "src"}, - install_requires = REQUIREMENTS, - setup_requires = REQUIREMENTS, - extras_require={ - 'iqm': ['iqm-client[qiskit]'] - }, - packages=setuptools.find_packages(where="src"), - python_requires=">=3.10", -)