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

Deploy cladetime to test-pypi #81

Merged
merged 3 commits into from
Jan 9, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
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
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
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

pypi-test is an environment I created in the cladetime repo: https://github.com/reichlab/cladetime/settings/environments

  • the environment is specified as part of the trusted publisher I set up on PyPI (see screenshot on PR description)
  • the environment also specifies that the jobs using it must be manually approved before they're run (this is a requirement for publishing to PyPI)

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 = "[email protected]"},
]
maintainers = [
{name = "Becky Sweger", email = "[email protected]"},
{name = "Evan Ray", email="[email protected]"},
{name = "Ben Rogers", email = "[email protected]"},
{name = "Becky Sweger", email = "[email protected]"},
]

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

Loading