diff --git a/.github/workflows/publish-pypi-test.yaml b/.github/workflows/publish-pypi-test.yaml new file mode 100644 index 0000000..3ae60f9 --- /dev/null +++ b/.github/workflows/publish-pypi-test.yaml @@ -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/ diff --git a/pyproject.toml b/pyproject.toml index 65161ee..e2d0f9a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -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", @@ -59,7 +69,7 @@ docs = [ "sphinx-github-style", "sphinxext-opengraph", "sphinx_toolbox", - ] +] [project.urls] Repository = "https://github.com/reichlab/cladetime.git" @@ -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 = [ @@ -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 -