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

Automatic distribution to PyPI and TestPyPI #54

Merged
merged 1 commit into from
Oct 18, 2024
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
102 changes: 102 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
name: Publish to PyPI and TestPyPI

on: push

jobs:
build:
name: Build Distribution
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Get history and tags for SCM versioning to work
if: ${{ !startsWith(github.ref, 'refs/tags/') }}
run: |
git fetch --prune --unshallow
git tag -d $(git tag --points-at HEAD)
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.x"
- name: Install pypa/build
run: pip install build --user
- name: Build a binary wheel and a source tarball
run: python3 -m build
- name: Store the distribution packages
uses: actions/upload-artifact@v4
with:
name: python-package-distributions
path: dist/

publish-to-pypi:
name: Publish to PyPI
if: startsWith(github.ref, 'refs/tags/') # only publish to PyPI on tag pushes
needs: [build]
runs-on: ubuntu-latest
environment:
name: pypi
url: https://pypi.org/p/TopoEmbedX
permissions:
id-token: write

steps:
- name: Download all the dists
uses: actions/download-artifact@v4
with:
name: python-package-distributions
path: dist/
- name: Publish distribution 📦 to PyPI
uses: pypa/gh-action-pypi-publish@release/v1

github-release:
name: Sign and Upload as GitHub Release
needs: [publish-to-pypi]
runs-on: ubuntu-latest

permissions:
contents: write
id-token: write

steps:
- name: Download all the dists
uses: actions/download-artifact@v4
with:
name: python-package-distributions
path: dist/
- name: Sign the dists with Sigstore
uses: sigstore/[email protected]
with:
inputs: >-
./dist/*.tar.gz
./dist/*.whl
- name: Create GitHub Release
env:
GITHUB_TOKEN: ${{ github.token }}
run: gh release create '${{ github.ref_name }}' --repo '${{ github.repository }}' --notes ""
- name: Upload artifact signatures to GitHub Release
env:
GITHUB_TOKEN: ${{ github.token }}
run: gh release upload '${{ github.ref_name }}' dist/** --repo '${{ github.repository }}'

publish-to-testpypi:
name: Publish to TestPyPI
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }}
needs: [build]
runs-on: ubuntu-latest

environment:
name: testpypi
url: https://test.pypi.org/p/TopoEmbedX

permissions:
id-token: write

steps:
- name: Download all the dists
uses: actions/download-artifact@v4
with:
name: python-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/
7 changes: 6 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,10 @@ coverage.xml
**/*.cpython-38.pyc
**/__pycache__/**
__pycache__/
dist/
docs/build/
toponetx/.DS_Store
topoembedx/.DS_Store
topoembedx/_version.py

# Sphinx documentation
docs/_build/
43 changes: 22 additions & 21 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,27 +1,32 @@
[build-system]
requires = ["setuptools"]
requires = ["setuptools>=64.0", "setuptools_scm>=8"]
build-backend = "setuptools.build_meta"

[project]
name = "TopoEmbedX"
dynamic = ["version"]
authors = [
{name = "PyT-Team Authors", email = "[email protected]"}
{name = "Mustafa Hajij", email = "[email protected]"},
{name = "Mathilde Papillon", email = "[email protected]"},
{name = "Florian Frantzen", email = "[email protected]"}
]
readme = "README.md"
description = "Representation Learning on Topological Domains"
license = {file = "LICENSE.txt"}
classifiers = [
"License :: OSI Approved :: MIT License",
"Development Status :: 4 - Beta",
"Development Status :: 3 - Alpha",
"Intended Audience :: Developers",
"Intended Audience :: Science/Research",
"Operating System :: OS Independent",
"License :: OSI Approved :: MIT License",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Topic :: Scientific/Engineering",
"Topic :: Scientific/Engineering :: Mathematics",
"Topic :: Scientific/Engineering :: Artificial Intelligence",
"Natural Language :: English",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11"
]
requires-python = ">= 3.10"
dependencies=[
Expand Down Expand Up @@ -60,11 +65,8 @@ dev = ["TopoEmbedX[test, lint]"]
all = ["TopoEmbedX[dev, doc]"]

[project.urls]
homepage="https://github.com/pyt-team/TopoEmbedX"
repository="https://github.com/pyt-team/TopoEmbedX"

[tool.ruff]
extend-include = ["*.ipynb"]
documentation="https://pyt-team.github.io/topoembedx/"
source="https://github.com/pyt-team/TopoEmbedX/"

[tool.ruff.format]
docstring-code-format = true
Expand Down Expand Up @@ -93,19 +95,18 @@ ignore = ["E501"] # line too long
[tool.ruff.lint.pydocstyle]
convention = "numpy"

[tool.setuptools.dynamic]
version = {attr = "topoembedx.__version__"}

[tool.setuptools.packages.find]
include = [
"topoembedx",
"topoembedx.*"
]
include = ["topoembedx"]

[tool.setuptools_scm]
local_scheme = "no-local-version"
version_file = "topoembedx/_version.py"

[tool.mypy]
warn_redundant_casts = true
warn_unreachable = true
warn_unused_ignores = true
show_error_codes = true
enable_error_code = ["ignore-without-code", "redundant-expr", "truthy-bool"]
disable_error_code = ["import-untyped"]
plugins = "numpy.typing.mypy_plugin"

Expand Down
1 change: 0 additions & 1 deletion topoembedx/__init__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
"""Initialize the library with modules and other content."""
__version__ = "0.0.1"

from .classes.cell2vec import Cell2Vec
from .classes.cell_diff2vec import CellDiff2Vec
Expand Down