Skip to content

build also for OSX arm64 processors #704

build also for OSX arm64 processors

build also for OSX arm64 processors #704

name: Test code and publish package
on: [push]
jobs:
test:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
[
"ubuntu-latest",
"macos-latest",
"macos-latest-large",
"windows-latest",
]
python-version: ["3.8", "3.9", "3.10"]
defaults: # Needed for conda
run:
shell: bash -l {0}
steps:
- uses: actions/checkout@v4
with:
lfs: true
submodules: true
- uses: conda-incubator/setup-miniconda@v3
with:
python-version: ${{ matrix.python-version }}
mamba-version: "*"
miniforge-variant: Mambaforge
channels: acellera,conda-forge,defaults
- name: Lint with flake8
run: |
pip install flake8 coverage pytest-cov pytest pytest-subtests
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Install moleculekit conda deps. rdkit version is just set high for tests to pass
run: |
mamba install -y -q --file extra_requirements.txt python=${{ matrix.python-version }} -c acellera -c conda-forge
mamba install -y -q rdkit=2023.03.3 -c conda-forge
# scikit-learn, joblib, biopython are only used for rarely-used functions in smallmol
mamba install -y -q scikit-learn joblib biopython -c conda-forge
- name: Install cdpkit
if: ${{ matrix.os == 'ubuntu-latest' }}
run: |
# for testing CDPKit SmallMol
pip install cdpkit
- name: Install moleculekit
run: |
pip install "numpy>=1.18.5" "Cython>=0.29.21"
pip install .
pip install "versioneer==0.28"
python setup.py build_ext --inplace
- name: Test
run: |
pytest ./moleculekit
env:
GITHUB_ACTIONS: 1
# - name: Upload coverage to Codecov
# uses: codecov/codecov-action@v3
deploypypi:
if: startsWith(github.event.ref, 'refs/tags/')
needs: test
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: ["ubuntu-latest"]
python-version: ["3.9"]
steps:
- uses: actions/checkout@v4
- uses: conda-incubator/setup-miniconda@v3
with:
activate-environment: deploy
python-version: ${{ matrix.python-version }}
- name: Build PyPI 📦
run: |
pip install numpy>=1.18.5 Cython>=0.29.21 build
python -m build --sdist --outdir dist/ .
- name: Publish distribution 📦 to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
password: ${{ secrets.PUBLIC_PYPI_API_TOKEN }}
skip_existing: true
deploy_linux:
if: startsWith(github.event.ref, 'refs/tags/')
needs: test
runs-on: ${{ matrix.os }}
container: ${{ matrix.container }}
strategy:
fail-fast: false
matrix:
os: ["ubuntu-latest"]
python-version: ["3.8", "3.9", "3.10"]
container: ["quay.io/pypa/manylinux2014_x86_64"]
steps:
- uses: actions/checkout@v3
- uses: conda-incubator/setup-miniconda@v2
with:
miniconda-version: "latest"
activate-environment: ../deploy-env
python-version: ${{ matrix.python-version }}
- name: Build moleculekit package
shell: bash -l {0}
run: |
git config --global --add safe.directory '*'
conda install anaconda-client conda-build python=${{ matrix.python-version }} toml
pip install versioneer==0.28
python package/moleculekit/insert_placeholder_values.py
conda build --python ${{ matrix.python-version }} package/moleculekit/ --output-folder ./pkg/ --no-include-recipe --no-anaconda-upload -c acellera -c conda-forge
- name: Upload to conda
shell: bash -l {0}
run: |
anaconda -t ${{ secrets.ANACONDA_TOKEN_BASIC }} upload -u acellera ./pkg/*/moleculekit-*.tar.bz2
deploy_osx_win:
if: startsWith(github.event.ref, 'refs/tags/')
needs: test
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: ["macos-latest", "macos-latest-large", "windows-latest"]
python-version: ["3.8", "3.9", "3.10"]
steps:
- uses: actions/checkout@v4
- uses: conda-incubator/setup-miniconda@v3
with:
miniconda-version: "latest"
activate-environment: ../deploy-env
python-version: ${{ matrix.python-version }}
- name: Build moleculekit package
shell: bash -l {0}
run: |
git config --global --add safe.directory '*'
conda install anaconda-client conda-build python=${{ matrix.python-version }} toml
pip install versioneer==0.28
python package/moleculekit/insert_placeholder_values.py
conda build --python ${{ matrix.python-version }} package/moleculekit/ --output-folder ./pkg/ --no-include-recipe --no-anaconda-upload -c acellera -c conda-forge
- name: Upload to conda
shell: bash -l {0}
run: |
anaconda -t ${{ secrets.ANACONDA_TOKEN_BASIC }} upload -u acellera ./pkg/*/moleculekit-*.tar.bz2