Skip to content
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

ci: Publish python package to pypi #908

Merged
merged 4 commits into from
Apr 3, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 59 additions & 0 deletions .github/workflows/python-wheels.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
name: Build and publish python wheels

on:
workflow_dispatch:
push:
branches:
- main
tags:
- '*'

jobs:
build-publish:
name: Build and publish wheels
runs-on: ubuntu-latest
strategy:
matrix:
package:
- 'quantinuum-hugr-py'

steps:
- uses: actions/checkout@v4
- name: Run sccache-cache
uses: mozilla-actions/[email protected]
- name: Install poetry
run: pipx install poetry
- name: Set up Python '3.10'
uses: actions/setup-python@v5
with:
python-version: '3.10'
cache: "poetry"

- name: Build sdist and wheels
run: |
cd ${{ matrix.package }}
poetry build -o ../dist

- name: Upload the built packages as artifacts
uses: actions/upload-artifact@v4
with:
name: build-${{ matrix.package }}-sdist
path: |
dist/*.tar.gz
dist/*.whl

- name: Publish to test instance of PyPI
if: ${{ github.event_name == 'workflow_dispatch' || (github.event_name == 'push' && github.ref_type == 'branch' ) }}
run: |
cd ${{ matrix.package }}
poetry config repositories.test-pypi https://test.pypi.org/legacy/
poetry config pypi-token.test-pypi ${{ secrets.PYPI_TEST_PUBLISH }}
poetry publish -r test-pypi --dist-dir ../dist --skip-existing
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps we could do a --dry-run here, to avoid spamming the test registry


- name: Publish to PyPI
if: ${{ github.event_name == 'push' && github.ref_type == 'tag' && startsWith(github.ref, format('refs/tags/{}-v', matrix.package)) }}
run: |
cd ${{ matrix.package }}
poetry config repositories.test-pypi https://test.pypi.org/legacy/
poetry config pypi-token.test-pypi ${{ secrets.PYPI_PUBLISH }}
poetry publish -r test-pypi --dist-dir ../dist --skip-existing
5 changes: 2 additions & 3 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,9 @@
description = "Namespace for the python packages in the HUGR repository. See the individual packages for more information."
name = "hugr-project"
version = "0.0.0"
authors = []
authors = ["TKET development team <[email protected]>"]
readme = "README.md"
packages = []

packages = [{ include = "quantunuum_hugr", from = "quantunuum-hugr-py" }]
aborgna-q marked this conversation as resolved.
Show resolved Hide resolved
package-mode = false

[tool.poetry.group.main.dependencies]
Expand Down
10 changes: 4 additions & 6 deletions quantinuum-hugr-py/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,13 @@ The HUGR specification is [here](https://github.com/CQCL/hugr/blob/main/specific

## Installation

TODO

The package name is `quantinuum_hugr`, but it hasn't been published yet.
The current experimental version can be installed from the source code:

The package name is `quantinuum_hugr`, it can be installed from PyPI:
aborgna-q marked this conversation as resolved.
Show resolved Hide resolved
```bash
pip install "quantinuum_hugr@git+https://github.com/CQCL/hugr.git@main#subdirectory=quantinuum-hugr-py"
pip install quantinuum_hugr"
aborgna-q marked this conversation as resolved.
Show resolved Hide resolved
```

The current releases are in alpha stage, and the API is subject to change.

## Usage

TODO
Expand Down
22 changes: 17 additions & 5 deletions quantinuum-hugr-py/pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,11 +1,23 @@
[tool.poetry]
classifiers = [
"Environment :: Console",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
Comment on lines +5 to +6
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We are only building with 3.10; should we be building with 3.11 and 3.12 as well?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added a python 3.12 target to the CI checks in addition to the 3.10.

The wheels we build are source-based, so they should be portable between versions.

"License :: OSI Approved :: Apache Software License",
"Operating System :: MacOS :: MacOS X",
"Operating System :: POSIX :: Linux",
"Operating System :: Microsoft :: Windows",
"Intended Audience :: Developers",
"Intended Audience :: Science/Research",
"Topic :: Scientific/Engineering",
]
name = "quantinuum_hugr"
version = "0.0.0"
version = "0.1.0a1"
description = "Quantinuum's common representation for quantum programs"
classifiers = [] # TODO
keywords = [] # TODO
authors = [] # TODO
maintainers = [] # TODO
#keywords = []
authors = ["TKET development team <[email protected]>"]
maintainers = ["TKET development team <[email protected]>"]
license = "Apache-2.0"
readme = "README.md"
homepage = "https://github.com/CQCL/hugr"
Expand Down