Skip to content

Commit

Permalink
Merge pull request #216 from precice/python-bindings-v3.1.2
Browse files Browse the repository at this point in the history
Release v3.1.2
  • Loading branch information
BenjaminRodenberg committed Aug 27, 2024
2 parents 14f1e01 + 087b9f6 commit 1f75046
Show file tree
Hide file tree
Showing 10 changed files with 70 additions and 65 deletions.
6 changes: 3 additions & 3 deletions .github/workflows/build-env.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
- name: Set up Docker
uses: docker/setup-buildx-action@v1
- name: Login to registry
uses: docker/login-action@v1
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
Expand All @@ -24,5 +24,5 @@ jobs:
with:
push: true
context: .
file: spack/ci-spack-pyprecice-deps-2204.dockerfile
tags: precice/ci-spack-pyprecice-deps-2204
file: spack/ci-spack-pyprecice-deps-2404.dockerfile
tags: precice/ci-spack-pyprecice-deps-2404
70 changes: 35 additions & 35 deletions .github/workflows/build-spack.yml
Original file line number Diff line number Diff line change
@@ -1,35 +1,35 @@
# name: Build Spack
# on:
# push:
# branches:
# - "*"
# pull_request:
# branches:
# - "*"
# schedule:
# - cron: '0 4 * * 1' # Schedule it every Sunday
#
# jobs:
# build_spack:
# name: build_spack
# runs-on: ubuntu-latest
# timeout-minutes: 15
# container: precice/ci-spack-pyprecice-deps-2204
# defaults:
# run:
# shell: "bash --login -eo pipefail {0}"
# steps:
# - name: Checkout Repository
# uses: actions/checkout@v2
# - name: Move Package Script
# run: |
# cp -r spack/repo/packages/py-pyprecice/ /py-pyprecice-repo/packages/
# - name: Try to build py-pyprecice with spack and test it
# run: |
# . /opt/spack/share/spack/setup-env.sh
# spack env activate ci && spack arch
# spack remove py-pyprecice
# spack add pyprecice.test.py-pyprecice@develop && spack develop pyprecice.test.py-pyprecice@develop
# spack install && spack find
# spack load py-pyprecice
# BINDINGS_VERSION=$(python3 -c "import precice; print(precice.__version__)") && echo "Installed version of bindings is ${BINDINGS_VERSION}"
name: Build Spack
on:
push:
branches:
- "*"
pull_request:
branches:
- "*"
schedule:
- cron: '0 4 * * 1' # Schedule it every Sunday

jobs:
build_spack:
name: build_spack
runs-on: ubuntu-latest
timeout-minutes: 15
container: precice/ci-spack-pyprecice-deps-2404
defaults:
run:
shell: "bash --login -eo pipefail {0}"
steps:
- name: Checkout Repository
uses: actions/checkout@v2
- name: Move Package Script
run: |
cp -r spack/repo/packages/py-pyprecice/ /py-pyprecice-repo/packages/
- name: Try to build py-pyprecice@develop with spack and test it
run: |
. /opt/spack/share/spack/setup-env.sh
spack env activate ci && spack arch
spack remove py-pyprecice
spack add pyprecice.test.py-pyprecice@develop && spack develop pyprecice.test.py-pyprecice@develop
spack install && spack find
spack load py-pyprecice
BINDINGS_VERSION=$(python3 -c "import precice; print(precice.__version__)") && echo "Installed version of bindings is ${BINDINGS_VERSION}"
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,13 @@

All notable changes to this project will be documented in this file.

## v3.1.2

* Restrict to numpy < 2 for better compatibility with CI pipeline. https://github.com/precice/python-bindings/pull/213
* Require setuptools < 72 since support for the test command was removed in Setuptools 72. https://github.com/precice/python-bindings/pull/213
* Require setuptools >= 61 to guarantee that pyproject.toml is used https://github.com/precice/python-bindings/pull/207
* Fix CI pipeline for spack https://github.com/precice/python-bindings/pull/206

## v3.1.1

* Fix NumPy include order to not conflict with system NumPy and the one installed via pip https://github.com/precice/python-bindings/pull/204
Expand Down
9 changes: 6 additions & 3 deletions cyprecice/cyprecice.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -818,23 +818,26 @@ cdef class Participant:
>>> mesh_name = "MeshOne"
>>> data_name = "DataOne"
>>> vertex_ids = [1, 2, 3, 4, 5]
>>> values = read_data(mesh_name, data_name, vertex_ids)
>>> dt = 1.0
>>> values = read_data(mesh_name, data_name, vertex_ids, dt)
>>> values.shape
>>> (5, )
Read vector data for a 2D problem with 5 vertices:
>>> mesh_name = "MeshOne"
>>> data_name = "DataOne"
>>> vertex_ids = [1, 2, 3, 4, 5]
>>> values = read_data(mesh_name, data_name, vertex_ids)
>>> dt = 1.0
>>> values = read_data(mesh_name, data_name, vertex_ids, dt)
>>> values.shape
>>> (5, 2)
Read vector data for a 3D system with 5 vertices:
>>> mesh_name = "MeshOne"
>>> data_name = "DataOne"
>>> vertex_ids = [1, 2, 3, 4, 5]
>>> values = read_data(mesh_name, data_name, vertex_ids)
>>> dt = 1.0
>>> values = read_data(mesh_name, data_name, vertex_ids, dt)
>>> values.shape
>>> (5, 3)
"""
Expand Down
2 changes: 1 addition & 1 deletion docs/ReleaseGuide.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ The release of the `python-bindings` repository is made directly from a release

7. If everything is in order up to this point then the new version can be released by hitting the "Publish release" button in your release Draft. This will create the corresponding tag and trigger [publishing the release to PyPI](https://github.com/precice/python-bindings/actions?query=workflow%3A%22Upload+Python+Package%22).

8. Now there exists be a tag corresponding to the release on `master`. Re-run the [docker release workflow `build-docker.yml` via dispatch]([https://github.com/precice/fenics-adapter/actions/workflows/build-docker.yml](https://github.com/precice/python-bindings/actions/workflows/build-docker.yml)) such that the correct version is picked up by `versioneer`. Check the version in the container via `docker pull precice/pythonbindings`, then `docker run -ti precice/pythonbindings`, and inside the container `$ python3 -c "import precice; print(precice.__version__)"`. ⚠️ There is an open issue that needs fixing https://github.com/precice/python-bindings/issues/195 ⚠️
8. Now there exists be a tag corresponding to the release on `master`. Re-run the [docker release workflow `build-docker.yml` via dispatch]([https://github.com/precice/fenics-adapter/actions/workflows/build-docker.yml](https://github.com/precice/python-bindings/actions/workflows/build-docker.yml)) such that the correct version is picked up by `versioneer`. Check the version in the container via `docker pull precice/python-bindings`, then `docker run -ti precice/python-bindings`, and inside the container `$ python3 -c "import precice; print(precice.__version__)"`. ⚠️ There is an open issue that needs fixing https://github.com/precice/python-bindings/issues/195 ⚠️

9. Add an empty commit (details https://github.com/precice/python-bindings/issues/109) on master by running the steps:

Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
[build-system]
# PEP 518 - minimum build system requirements
requires = ["setuptools", "wheel", "Cython>=0.29", "packaging", "pip>=19.0.0", "numpy", "mpi4py", "pkgconfig"]
requires = ["setuptools>=61,<72", "wheel", "Cython>=0.29", "packaging", "pip>=19.0.0", "numpy<2", "mpi4py", "pkgconfig"]
14 changes: 1 addition & 13 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,6 @@

uses_pip = "pip" in __file__

# check whether pip is used for installation. If pip is not used, dependencies defined in pyproject.toml might be
# missing.
if not uses_pip:
warnings.warn(
"It looks like you are not using pip for installation. Installing the package via 'pip3 install "
"--user .' is recommended. You can still use 'python3 setup.py install --user', if you want and if "
"the bindings work correctly, you do not have to worry. However, if you face problems during "
"installation or running pyprecice, this means that you have to make sure that all dependencies are "
"installed correctly and repeat the installation of pyprecice. Refer to pyproject.toml for a list "
"of dependencies.")

if uses_pip:
# If installed with pip we need to check its version
try:
Expand Down Expand Up @@ -45,7 +34,6 @@
" flag.".format(pip.__version__))

from setuptools import setup
from setuptools import Command
from setuptools.command.test import test
from setuptools.command.install import install
from Cython.Distutils.extension import Extension
Expand Down Expand Up @@ -149,7 +137,7 @@ def initialize_options(self):
author_email='info@precice.org',
license='LGPL-3.0',
python_requires='>=3',
install_requires=['numpy', 'mpi4py', 'Cython'],
install_requires=['numpy<2', 'mpi4py', 'Cython'],
# mpi4py is only needed, if preCICE was compiled with MPI
# see https://github.com/precice/python-bindings/issues/8
packages=['precice'],
Expand Down
6 changes: 3 additions & 3 deletions spack/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@

The Spack package `py-pyprecice` provides the python bindings via Spack and was submitted via [pull request 19558](https://github.com/spack/spack/pull/19558) in the Spack repository. This folder contains the Spack package script that can be used for testing whether the Spack installation works.

## Docker image `precice/ci-spack-pyprecice-deps-2204`
## Docker image `precice/ci-spack-pyprecice-deps-2404`

The workflow `build-spack-pyprecice-deps` in `.github/workflows/build-env.yml` creates the image `precice/ci-spack-pyprecice-deps-2204`. This image contains all dependencies of `py-pyprecice@develop`.
The workflow `build-spack-pyprecice-deps` in `.github/workflows/build-env.yml` creates the image `precice/ci-spack-pyprecice-deps-2404`. This image contains all dependencies of `py-pyprecice@develop`.

The workflow `build_spack` in `.github/workflows/build-spack.yml` uses the image `precice/ci-spack-pyprecice-deps-2204` to reduce build time. The workflow uses the `package.py` from this repository to build the latest version of the bindings and run a small test on this version.
The workflow `build_spack` in `.github/workflows/build-spack.yml` uses the image `precice/ci-spack-pyprecice-deps-2404` to reduce build time. The workflow uses the `package.py` from this repository to build the latest version of the bindings and run a small test on this version.

## When a new Spack release is necessary

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Build stage with Spack pre-installed and ready to be used
FROM spack/ubuntu-jammy:latest
FROM spack/ubuntu-noble:latest

# Mount the current sources into the build container
# and build the default environment
Expand Down
17 changes: 12 additions & 5 deletions spack/repo/packages/py-pyprecice/package.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Copyright 2013-2023 Lawrence Livermore National Security, LLC and other
# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
Expand All @@ -14,13 +14,18 @@ class PyPyprecice(PythonPackage):

homepage = "https://precice.org"
git = "https://github.com/precice/python-bindings.git"
url = "https://github.com/precice/python-bindings/archive/v2.4.0.0.tar.gz"
url = "https://github.com/precice/python-bindings/archive/v3.1.1.tar.gz"
maintainers("ajaust", "BenjaminRodenberg", "IshaanDesai")

# Always prefer final version of release candidate
version("develop", branch="develop")
version("3.1.1", sha256="50a0f1cbdb8fc362c22d316151c0e757958ff136a094e63b9b82d045d01d19c7")
version("3.1.0", sha256="8d9bd9e28859001ab503a1e2f90e54b3c000079f04c14dc7c0c04c61c5666641")
version("3.0.0.0", sha256="7e2c4b106a231b0df2a430d86d4a7b295f85adbe3478c425f863d1a4bebee9f7")
version("2.5.0.4", sha256="7f9449573eb52ce48ca3f0ab35529ea0064942487842515ae0a2c9299aa0f0db")
version("2.5.0.3", sha256="b983229b9fdf6bd4605ae8710985eb681025f6fb28ad8d7736cdf92593eef6df")
version("2.5.0.2", sha256="6d7b78da830db6c5133b44617196ee90be8c7d6c8e14c8994a4800b3d4856416")
version("2.5.0.1", sha256="e2602f828d4f907ea93e34f7d4adb8db086044a75a446592a4099423d56ed62c")
version("2.5.0.1", sha256="d7c666e6ebff9e007c3703d8e3c3fcdf0f45289e36c2c17223b3aedc3259ab6c")
version("2.5.0.0", sha256="9f55a22594bb602cde8a5987217728569f16d9576ea53ed00497e9046a2e1794")
version("2.4.0.0", sha256="e80d16417b8ce1fdac80c988cb18ae1e16f785c5eb1035934d8b37ac18945242")
version("2.3.0.1", sha256="ed4e48729b662680beaa4ee2a9aff724a79e760534c6c58181be739988da2789")
Expand All @@ -37,6 +42,8 @@ class PyPyprecice(PythonPackage):

for ver in [
"develop",
"3.1", # only consider major.minor from 3.1.0. See https://github.com/precice/python-bindings/pull/199
"3.0.0",
"2.5.0",
"2.4.0",
"2.3.0",
Expand All @@ -51,8 +58,8 @@ class PyPyprecice(PythonPackage):
depends_on("precice@" + ver, when="@" + ver)

depends_on("python@3:", type=("build", "link", "run"))
depends_on("py-setuptools", type="build")
depends_on("py-numpy", type=("build", "link", "run"))
depends_on("py-setuptools@61:71", type="build")
depends_on("py-numpy@:1", type=("build", "link", "run"))
depends_on("py-mpi4py", type=("build", "run"))
depends_on("py-cython@0.29:", type="build")
depends_on("py-packaging", type="build")
Expand Down

0 comments on commit 1f75046

Please sign in to comment.