talipot-core/GraphImpl: Simplify node/edge iterators implementation #525
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: windows-wheels-build | |
on: [push, pull_request] | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
windows: | |
name: Talipot Python ${{ matrix.python-version }} wheel build on windows | |
runs-on: windows-latest | |
env: | |
TWINE_REPOSITORY: https://test.pypi.org/legacy/ | |
TWINE_USERNAME: __token__ | |
TWINE_PASSWORD: ${{ secrets.TEST_PYPI_API_TOKEN }} | |
defaults: | |
run: | |
shell: msys2 {0} | |
strategy: | |
matrix: | |
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"] | |
steps: | |
- name: Checkout Talipot code | |
uses: actions/checkout@v4 | |
- name: Install mingw64 and Talipot build dependencies | |
uses: msys2/setup-msys2@v2 | |
with: | |
msystem: MINGW64 | |
update: true | |
install: git | |
base-devel | |
mingw-w64-x86_64-toolchain | |
mingw-w64-x86_64-cmake | |
mingw-w64-x86_64-ccache | |
mingw-w64-x86_64-yajl | |
mingw-w64-x86_64-zstd | |
mingw-w64-x86_64-qhull | |
mingw-w64-x86_64-graphviz | |
mingw-w64-x86_64-libgit2 | |
- name: Install Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v4 | |
id: python-install | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install sip, twine and wheel Python packages | |
run: | | |
PYTHON_PATH=$(echo '${{ steps.python-install.outputs.python-path }}') | |
export PATH=$(cygpath -u "$(dirname $PYTHON_PATH)\Scripts"):$PATH | |
pip install sip twine wheel | |
- name: Get wheel next dev version | |
run: | | |
PYTHON_PATH=$(echo '${{ steps.python-install.outputs.python-path }}') | |
export PATH=$(cygpath -u "$(dirname $PYTHON_PATH)"):$PATH | |
JSON=$(curl -s 'https://test.pypi.org/pypi/talipot/json') | |
LAST_VERSION=$(echo $JSON | python -c " | |
import sys, json | |
print(json.load(sys.stdin)['info']['version'])" 2>/dev/null) | |
if [ $? -ne 0 ] | |
then | |
DEV_VERSION=1 | |
else | |
echo last wheel dev version = $LAST_VERSION | |
# check if dev wheel version needs to be incremented | |
VERSION_INCREMENT=$(echo $JSON | python -c " | |
import sys, json | |
from wheel._bdist_wheel import get_abi_tag | |
releases = json.load(sys.stdin)['releases']['$LAST_VERSION'] | |
abi_tag = get_abi_tag() + '-' | |
print(any(['win_amd64' in r['filename'] and abi_tag in r['filename'] for r in releases]))") | |
DEV_VERSION=$(echo $LAST_VERSION | cut -f4 -d '.' | sed 's/dev//') | |
if [ "$VERSION_INCREMENT" == "True" ] | |
then | |
let DEV_VERSION+=1 | |
fi | |
fi | |
echo current wheel dev version = $DEV_VERSION | |
echo "DEV_VERSION=$DEV_VERSION" >> $GITHUB_ENV | |
- name: Prepare ccache timestamp | |
id: get-current-date | |
run: | | |
echo "date=$(date -u "+%Y-%m-%d-%H-%m-%S")" >> $GITHUB_OUTPUT | |
- name: Get ccache directory | |
id: get-cccache-dir | |
run: | | |
ccache_dir=$(ccache -sv | grep "Cache directory" | awk '{print $3}') | |
echo "ccache-dir=$ccache_dir" >> $GITHUB_OUTPUT | |
- name: Cache files | |
uses: actions/cache@v4 | |
with: | |
path: ${{ steps.get-cccache-dir.outputs.ccache-dir }} | |
key: | |
windows-wheel-${{ steps.python-install.outputs.python-version }}-build-ccache | |
-${{ steps.get-current-date.outputs.date }} | |
restore-keys: | | |
windows-wheel-${{ steps.python-install.outputs.python-version }}-build-ccache | |
save-always: true | |
- name: Create build directory | |
run: mkdir build | |
- name: Configure Talipot Python wheel build with CMake | |
working-directory: ./build | |
run: cmake .. -G "MSYS Makefiles" | |
-DCMAKE_BUILD_TYPE=Release | |
-DCMAKE_NEED_RESPONSE=ON | |
-DCMAKE_INSTALL_PREFIX=$PWD/install | |
-DTALIPOT_ACTIVATE_PYTHON_WHEEL_TARGET=ON | |
-DTALIPOT_PYTHON_TEST_WHEEL_SUFFIX=a3.dev${{ env.DEV_VERSION }} | |
-DPython3_EXECUTABLE=$(cygpath -u "${{ steps.python-install.outputs.python-path }}") | |
-DTALIPOT_USE_CCACHE=ON | |
-DTALIPOT_BUILD_CORE_ONLY=ON | |
-DTALIPOT_BUILD_DOC=OFF | |
- name: Talipot Python wheel build | |
working-directory: ./build | |
run: make -j4 test-wheel | |
- name: Upload Talipot Python wheel on test PyPI | |
if: github.ref == 'refs/tags/dev-latest' | |
working-directory: ./build | |
run: make test-wheel-upload | |
- name: Test uploaded wheel in clean environment | |
if: github.ref == 'refs/tags/dev-latest' | |
run: | | |
PYTHON_PATH=$(echo '${{ steps.python-install.outputs.python-path }}') | |
export PATH=$(cygpath -u "$(dirname $PYTHON_PATH)"):$PATH | |
export PATH=$(cygpath -u "$(dirname $PYTHON_PATH)\Scripts"):$PATH | |
pacman --noconfirm -Rc \ | |
mingw-w64-x86_64-toolchain \ | |
mingw-w64-x86_64-cmake \ | |
mingw-w64-x86_64-ccache \ | |
mingw-w64-x86_64-zlib \ | |
mingw-w64-x86_64-yajl \ | |
mingw-w64-x86_64-zstd \ | |
mingw-w64-x86_64-qhull \ | |
mingw-w64-x86_64-graphviz | |
pip install --index-url https://test.pypi.org/simple/ talipot | |
python -c "from talipot import tlp; print(tlp.getLayoutAlgorithmPluginsList())" |