Skip to content

Commit

Permalink
Deploy cladetime to test-pypi (#81)
Browse files Browse the repository at this point in the history
* Update pyproject.toml for use with pypi

This changeset makes a few fixes and updates to pyproject.toml as
we work towards releasing Cladetime on pypi. Mostly adds and revises
metadata, and fixes a few directives that impact the build process.

* Add a workflow for building and publishing to test PyPI

Cladetime has been successfully published to test-pypi:
https://test.pypi.org/project/cladetime/

This commit adds a workflow to automate publishing to test-pypi. Once this
is hooked up, we can focus on what deployment to the real PyPI should look like
(presumably we'd want to use a similar process to what Zhian set up for our
R packages).

* Bump cladetime version
  • Loading branch information
bsweger authored Jan 9, 2025
1 parent 0833d7b commit 334001c
Show file tree
Hide file tree
Showing 2 changed files with 83 additions and 12 deletions.
61 changes: 61 additions & 0 deletions .github/workflows/publish-pypi-test.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# .github/workflows/publish-pypi-test.yaml
# uses trusted publishing to publish the package to TestPyPI as described here:
# https://packaging.python.org/en/latest/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows/
name: Publish to Test PyPI

on:
push:
branches:
- main
workflow_dispatch:

jobs:
build:
name: Build distribution 📦
runs-on: ubuntu-latest

steps:
- name: Checkout 🛎️
uses: actions/checkout@v4
with:
persist-credentials: false

- name: Set up Python 🐍
uses: actions/setup-python@v5

- name: Install uv 🌟
uses: astral-sh/setup-uv@v5
with:
version: ">=0.0.1"

- name: Build package for distribution 🛠️
run: |
uv build
- name: Upload distribution packages 📤
uses: actions/upload-artifact@v4
with:
name: cladetime-package-distribution
path: dist/

publish-to-testpypi:
name: Publish Python distribution to TestPyPI
needs:
- build
runs-on: ubuntu-latest
environment:
name: pypi-test
url: https://test.pypi.org/p/cladetime
permissions:
id-token: write # needed for trusted publishing (i.e., OIDC)

steps:
- name: Download distribution artifacts 📥
uses: actions/download-artifact@v4
with:
name: cladetime-package-distributions
path: dist/
- name: Publish distribution to TestPyPI 🚀
uses: pypa/gh-action-pypi-publish@release/v1
with:
repository-url: https://test.pypi.org/legacy/
34 changes: 22 additions & 12 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,21 +1,31 @@
[project]
name = "cladetime"
version = "0.2.0"
description = "Assign clades to viral genome sequences at a point in time."
version = "0.2.3"
description = "Assign clades to SARS-CoV-2 genome sequences at a point in time."
authors = [
{name = "Reich Lab @ University of Massachusetts", email = "nick@umass.edu"},
]
maintainers = [
{name = "Becky Sweger", email = "rsweger@umass.edu"},
{name = "Evan Ray", email="elray@umass.edu"},
{name = "Ben Rogers", email = "bwrogers@umass.edu"},
{name = "Becky Sweger", email = "rsweger@umass.edu"},
]

requires-python = ">=3.11"
readme = "README.md"
license = {text = "MIT License"}
keywords = ["biostatistics", "clade", "covid", "epidemiology", "genome", "sequence"]

classifiers = [
"Development Status :: 3 - Alpha",
"Development Status :: 4 - Beta",
"License :: OSI Approved :: MIT License",
"Natural Language :: English",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3",
"Topic :: Scientific/Engineering",
"Topic :: Scientific/Engineering :: Bio-Informatics",
]

requires-python = ">=3.11"
readme = "README.md"

dependencies = [
"awscli>=1.32.92",
"biopython",
Expand Down Expand Up @@ -59,7 +69,7 @@ docs = [
"sphinx-github-style",
"sphinxext-opengraph",
"sphinx_toolbox",
]
]

[project.urls]
Repository = "https://github.com/reichlab/cladetime.git"
Expand All @@ -70,6 +80,10 @@ Issues = "https://github.com/reichlab/cladetime/issues"
requires = ["setuptools>=64", "wheel"]
build-backend = "setuptools.build_meta"

[tool.setuptools.packages.find]
namespaces = true
where = ["src"]

[tool.pytest.ini_options]
tmp_path_retention_policy = "none"
filterwarnings = [
Expand All @@ -89,9 +103,5 @@ lint.extend-select = ["I"]
# Ignore import formatting rules in `__init__.py`
"__init__.py" = ["I001"]

[tools.setuptools]
packages = ["cladetime"]

[tool.mypy]
ignore_missing_imports = true

0 comments on commit 334001c

Please sign in to comment.