From cfb5caf76cdf3ed02c4d577cd35c4ab536c6032b Mon Sep 17 00:00:00 2001 From: Sameeul Samee Date: Thu, 23 Jan 2025 15:11:30 -0500 Subject: [PATCH 1/5] add python 313 build --- .github/workflows/build_cuda11_wheels.yml | 4 ++-- .github/workflows/build_cuda12_wheels.yml | 4 ++-- .github/workflows/build_wheels.yml | 6 +++--- .github/workflows/publish_cuda11_pypi.yml | 4 ++-- .github/workflows/publish_cuda12_pypi.yml | 4 ++-- .github/workflows/publish_pypi.yml | 8 ++++---- 6 files changed, 15 insertions(+), 15 deletions(-) diff --git a/.github/workflows/build_cuda11_wheels.yml b/.github/workflows/build_cuda11_wheels.yml index 56bacbff..3e60160a 100644 --- a/.github/workflows/build_cuda11_wheels.yml +++ b/.github/workflows/build_cuda11_wheels.yml @@ -12,7 +12,7 @@ jobs: matrix: os: [windows-2019, ubuntu-20.04] cibw_archs: ["auto64"] - cibw_build: ["cp39-*", "cp310-*", "cp311-*", "cp312-*"] + cibw_build: ["cp39-*", "cp310-*", "cp311-*", "cp312-*", "cp313-*"] steps: - uses: actions/checkout@v3 @@ -47,7 +47,7 @@ jobs: - name: Install cibuildwheel run: | - python -m pip install cibuildwheel==2.16.2 delvewheel wheel + python -m pip install cibuildwheel delvewheel wheel - name: Building wheels run: | diff --git a/.github/workflows/build_cuda12_wheels.yml b/.github/workflows/build_cuda12_wheels.yml index 1258d6c6..4550c55d 100644 --- a/.github/workflows/build_cuda12_wheels.yml +++ b/.github/workflows/build_cuda12_wheels.yml @@ -12,7 +12,7 @@ jobs: matrix: os: [windows-2019, ubuntu-20.04] cibw_archs: ["auto64"] - cibw_build: ["cp39-*", "cp310-*", "cp311-*", "cp312-*"] + cibw_build: ["cp39-*", "cp310-*", "cp311-*", "cp312-*", "cp313-*"] steps: - uses: actions/checkout@v3 @@ -47,7 +47,7 @@ jobs: - name: Install cibuildwheel run: | - python -m pip install cibuildwheel==2.16.2 delvewheel wheel + python -m pip install cibuildwheel delvewheel wheel - name: Building wheels run: | diff --git a/.github/workflows/build_wheels.yml b/.github/workflows/build_wheels.yml index bb97b762..1208bbd8 100644 --- a/.github/workflows/build_wheels.yml +++ b/.github/workflows/build_wheels.yml @@ -14,7 +14,7 @@ jobs: matrix: os: [ubuntu-20.04, macos-13, windows-latest] cibw_archs: ["auto64"] - cibw_build: ["cp39-*", "cp310-*", "cp311-*", "cp312-*"] + cibw_build: ["cp39-*", "cp310-*", "cp311-*", "cp312-*", "cp313-*"] steps: - uses: actions/checkout@v3 @@ -32,7 +32,7 @@ jobs: - name: Install cibuildwheel run: | - python -m pip install cibuildwheel==2.16.2 delvewheel wheel + python -m pip install cibuildwheel delvewheel wheel - name: Building wheels run: | @@ -95,7 +95,7 @@ jobs: - name: Install cibuildwheel run: | - python -m pip install cibuildwheel==2.16.2 delocate wheel + python -m pip install cibuildwheel delocate wheel - name: Building wheels run: | diff --git a/.github/workflows/publish_cuda11_pypi.yml b/.github/workflows/publish_cuda11_pypi.yml index 8e4cd5b6..49592383 100644 --- a/.github/workflows/publish_cuda11_pypi.yml +++ b/.github/workflows/publish_cuda11_pypi.yml @@ -14,7 +14,7 @@ jobs: matrix: os: [windows-2019, ubuntu-20.04] cibw_archs: ["auto64"] - cibw_build: ["cp39-*", "cp310-*", "cp311-*", "cp312-*"] + cibw_build: ["cp39-*", "cp310-*", "cp311-*", "cp312-*", "cp313-*"] steps: - uses: actions/checkout@v3 @@ -49,7 +49,7 @@ jobs: - name: Install cibuildwheel run: | - python -m pip install cibuildwheel==2.16.2 delvewheel wheel + python -m pip install cibuildwheel delvewheel wheel - name: Building wheels run: | diff --git a/.github/workflows/publish_cuda12_pypi.yml b/.github/workflows/publish_cuda12_pypi.yml index f7e0055c..ccab5763 100644 --- a/.github/workflows/publish_cuda12_pypi.yml +++ b/.github/workflows/publish_cuda12_pypi.yml @@ -14,7 +14,7 @@ jobs: matrix: os: [windows-2019, ubuntu-20.04] cibw_archs: ["auto64"] - cibw_build: ["cp39-*", "cp310-*", "cp311-*", "cp312-*"] + cibw_build: ["cp39-*", "cp310-*", "cp311-*", "cp312-*", "cp313-*"] steps: - uses: actions/checkout@v3 @@ -49,7 +49,7 @@ jobs: - name: Install cibuildwheel run: | - python -m pip install cibuildwheel==2.16.2 delvewheel wheel + python -m pip install cibuildwheel delvewheel wheel - name: Building wheels run: | diff --git a/.github/workflows/publish_pypi.yml b/.github/workflows/publish_pypi.yml index d94a8866..138ebccb 100644 --- a/.github/workflows/publish_pypi.yml +++ b/.github/workflows/publish_pypi.yml @@ -16,7 +16,7 @@ jobs: matrix: os: [ubuntu-20.04, macos-13, windows-latest] cibw_archs: ["auto64"] - cibw_build: ["cp39-*", "cp310-*", "cp311-*", "cp312-*"] + cibw_build: ["cp39-*", "cp310-*", "cp311-*", "cp312-*", "cp313-*"] steps: - uses: actions/checkout@v3 @@ -34,7 +34,7 @@ jobs: - name: Install cibuildwheel run: | - python -m pip install cibuildwheel==2.16.2 delvewheel wheel + python -m pip install cibuildwheel delvewheel wheel - name: Building wheels run: | @@ -85,7 +85,7 @@ jobs: matrix: os: [macos-13-xlarge] cibw_archs: ["arm64"] - cibw_build: ["cp39-*", "cp310-*", "cp311-*", "cp312-*"] + cibw_build: ["cp39-*", "cp310-*", "cp311-*", "cp312-*", "cp313-*"] steps: - uses: actions/checkout@v3 @@ -98,7 +98,7 @@ jobs: - name: Install cibuildwheel run: | - python -m pip install cibuildwheel==2.16.2 delocate wheel + python -m pip install cibuildwheel delocate wheel - name: Building wheels run: | From 569b28e5f1d890f3ae99f2da2dd0e4afb391790a Mon Sep 17 00:00:00 2001 From: Sameeul Samee Date: Thu, 23 Jan 2025 15:16:06 -0500 Subject: [PATCH 2/5] update upload-artifacts --- .github/workflows/build_cuda11_wheels.yml | 4 ++-- .github/workflows/build_cuda12_wheels.yml | 4 ++-- .github/workflows/build_wheels.yml | 8 ++++---- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build_cuda11_wheels.yml b/.github/workflows/build_cuda11_wheels.yml index 3e60160a..e5f7e019 100644 --- a/.github/workflows/build_cuda11_wheels.yml +++ b/.github/workflows/build_cuda11_wheels.yml @@ -78,8 +78,8 @@ jobs: CIBW_TEST_COMMAND: python -m pip check - name: Upload Artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: - name: nyxus-cuda11-wheels + name: nyxus-cuda11-wheels-${{ matrix.os }}-${{ matrix.cibw_archs }}-${{ matrix.cibw_build }} path: dist/*.whl retention-days: 1 \ No newline at end of file diff --git a/.github/workflows/build_cuda12_wheels.yml b/.github/workflows/build_cuda12_wheels.yml index 4550c55d..b3e5cc36 100644 --- a/.github/workflows/build_cuda12_wheels.yml +++ b/.github/workflows/build_cuda12_wheels.yml @@ -78,8 +78,8 @@ jobs: CIBW_TEST_COMMAND: python -m pip check - name: Upload Artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: - name: nyxus-cuda12-wheels + name: nyxus-cuda12-wheels-${{ matrix.os }}-${{ matrix.cibw_archs }}-${{ matrix.cibw_build }} path: dist/*.whl retention-days: 1 diff --git a/.github/workflows/build_wheels.yml b/.github/workflows/build_wheels.yml index 1208bbd8..c3d78c78 100644 --- a/.github/workflows/build_wheels.yml +++ b/.github/workflows/build_wheels.yml @@ -66,9 +66,9 @@ jobs: CIBW_TEST_COMMAND: pytest -vv {project}/tests/python - name: Upload Artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: - name: nyxus-wheels + name: nyxus-wheels-${{ matrix.os }}-${{ matrix.cibw_archs }}-${{ matrix.cibw_build }} path: dist/*.whl retention-days: 1 @@ -117,8 +117,8 @@ jobs: CIBW_TEST_COMMAND: pytest -vv {project}/tests/python - name: Upload Artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: - name: nyxus-wheels-apple-arm64 + name: nyxus-wheels-${{ matrix.os }}-${{ matrix.cibw_archs }}-${{ matrix.cibw_build }} path: dist/*.whl retention-days: 1 \ No newline at end of file From 411d20ceffb8f862c06f607e6efa097733a7fb26 Mon Sep 17 00:00:00 2001 From: Sameeul Samee Date: Thu, 23 Jan 2025 16:33:36 -0500 Subject: [PATCH 3/5] Fix syntax --- .github/workflows/build_cuda11_wheels.yml | 4 ++-- .github/workflows/build_cuda12_wheels.yml | 4 ++-- .github/workflows/build_wheels.yml | 8 ++++---- .github/workflows/publish_cuda11_pypi.yml | 4 ++-- .github/workflows/publish_cuda12_pypi.yml | 4 ++-- .github/workflows/publish_pypi.yml | 8 ++++---- 6 files changed, 16 insertions(+), 16 deletions(-) diff --git a/.github/workflows/build_cuda11_wheels.yml b/.github/workflows/build_cuda11_wheels.yml index e5f7e019..6bb2e0fe 100644 --- a/.github/workflows/build_cuda11_wheels.yml +++ b/.github/workflows/build_cuda11_wheels.yml @@ -12,7 +12,7 @@ jobs: matrix: os: [windows-2019, ubuntu-20.04] cibw_archs: ["auto64"] - cibw_build: ["cp39-*", "cp310-*", "cp311-*", "cp312-*", "cp313-*"] + cibw_build: ["cp39", "cp310", "cp311", "cp312", "cp313"] steps: - uses: actions/checkout@v3 @@ -53,7 +53,7 @@ jobs: run: | python -m cibuildwheel --output-dir dist env: - CIBW_BUILD: ${{ matrix.cibw_build }} + CIBW_BUILD: ${{ matrix.cibw_build }}-* CIBW_SKIP: "*musllinux*" CIBW_BUILD_VERBOSITY: 3 CIBW_MANYLINUX_X86_64_IMAGE: manylinux2014 diff --git a/.github/workflows/build_cuda12_wheels.yml b/.github/workflows/build_cuda12_wheels.yml index b3e5cc36..d70b2727 100644 --- a/.github/workflows/build_cuda12_wheels.yml +++ b/.github/workflows/build_cuda12_wheels.yml @@ -12,7 +12,7 @@ jobs: matrix: os: [windows-2019, ubuntu-20.04] cibw_archs: ["auto64"] - cibw_build: ["cp39-*", "cp310-*", "cp311-*", "cp312-*", "cp313-*"] + cibw_build: ["cp39", "cp310", "cp311", "cp312", "cp313"] steps: - uses: actions/checkout@v3 @@ -53,7 +53,7 @@ jobs: run: | python -m cibuildwheel --output-dir dist env: - CIBW_BUILD: ${{ matrix.cibw_build }} + CIBW_BUILD: ${{ matrix.cibw_build }}-* CIBW_SKIP: "*musllinux*" CIBW_BUILD_VERBOSITY: 3 CIBW_MANYLINUX_X86_64_IMAGE: manylinux2014 diff --git a/.github/workflows/build_wheels.yml b/.github/workflows/build_wheels.yml index c3d78c78..2a839698 100644 --- a/.github/workflows/build_wheels.yml +++ b/.github/workflows/build_wheels.yml @@ -14,7 +14,7 @@ jobs: matrix: os: [ubuntu-20.04, macos-13, windows-latest] cibw_archs: ["auto64"] - cibw_build: ["cp39-*", "cp310-*", "cp311-*", "cp312-*", "cp313-*"] + cibw_build: ["cp39", "cp310", "cp311", "cp312", "cp313"] steps: - uses: actions/checkout@v3 @@ -38,7 +38,7 @@ jobs: run: | python -m cibuildwheel --output-dir dist env: - CIBW_BUILD: ${{ matrix.cibw_build }} + CIBW_BUILD: ${{ matrix.cibw_build }}-* CIBW_SKIP: "*musllinux*" CIBW_BUILD_VERBOSITY: 3 CIBW_MANYLINUX_X86_64_IMAGE: manylinux2014 @@ -82,7 +82,7 @@ jobs: matrix: os: [macos-13-xlarge] cibw_archs: ["arm64"] - cibw_build: ["cp39-*", "cp310-*", "cp311-*", "cp312-*"] + cibw_build: ["cp39", "cp310", "cp311", "cp312"] steps: - uses: actions/checkout@v3 @@ -101,7 +101,7 @@ jobs: run: | python -m cibuildwheel --output-dir dist env: - CIBW_BUILD: ${{ matrix.cibw_build }} + CIBW_BUILD: ${{ matrix.cibw_build }}-* CIBW_BUILD_VERBOSITY: 3 CIBW_ARCHS_MACOS: arm64 CIBW_BEFORE_ALL_MACOS: brew install llvm@16 && diff --git a/.github/workflows/publish_cuda11_pypi.yml b/.github/workflows/publish_cuda11_pypi.yml index 49592383..34c5db71 100644 --- a/.github/workflows/publish_cuda11_pypi.yml +++ b/.github/workflows/publish_cuda11_pypi.yml @@ -14,7 +14,7 @@ jobs: matrix: os: [windows-2019, ubuntu-20.04] cibw_archs: ["auto64"] - cibw_build: ["cp39-*", "cp310-*", "cp311-*", "cp312-*", "cp313-*"] + cibw_build: ["cp39", "cp310", "cp311", "cp312", "cp313"] steps: - uses: actions/checkout@v3 @@ -55,7 +55,7 @@ jobs: run: | python -m cibuildwheel --output-dir dist env: - CIBW_BUILD: ${{ matrix.cibw_build }} + CIBW_BUILD: ${{ matrix.cibw_build }}-* CIBW_SKIP: "*musllinux*" CIBW_BUILD_VERBOSITY: 3 CIBW_MANYLINUX_X86_64_IMAGE: manylinux2014 diff --git a/.github/workflows/publish_cuda12_pypi.yml b/.github/workflows/publish_cuda12_pypi.yml index ccab5763..f2983ed7 100644 --- a/.github/workflows/publish_cuda12_pypi.yml +++ b/.github/workflows/publish_cuda12_pypi.yml @@ -14,7 +14,7 @@ jobs: matrix: os: [windows-2019, ubuntu-20.04] cibw_archs: ["auto64"] - cibw_build: ["cp39-*", "cp310-*", "cp311-*", "cp312-*", "cp313-*"] + cibw_build: ["cp39", "cp310", "cp311", "cp312", "cp313"] steps: - uses: actions/checkout@v3 @@ -55,7 +55,7 @@ jobs: run: | python -m cibuildwheel --output-dir dist env: - CIBW_BUILD: ${{ matrix.cibw_build }} + CIBW_BUILD: ${{ matrix.cibw_build }}-* CIBW_SKIP: "*musllinux*" CIBW_BUILD_VERBOSITY: 3 CIBW_BEFORE_ALL_LINUX: sed -i s/mirror.centos.org/vault.centos.org/g /etc/yum.repos.d/*.repo && diff --git a/.github/workflows/publish_pypi.yml b/.github/workflows/publish_pypi.yml index 138ebccb..6bd526c8 100644 --- a/.github/workflows/publish_pypi.yml +++ b/.github/workflows/publish_pypi.yml @@ -16,7 +16,7 @@ jobs: matrix: os: [ubuntu-20.04, macos-13, windows-latest] cibw_archs: ["auto64"] - cibw_build: ["cp39-*", "cp310-*", "cp311-*", "cp312-*", "cp313-*"] + cibw_build: ["cp39", "cp310", "cp311", "cp312", "cp313"] steps: - uses: actions/checkout@v3 @@ -40,7 +40,7 @@ jobs: run: | python -m cibuildwheel --output-dir dist env: - CIBW_BUILD: ${{ matrix.cibw_build }} + CIBW_BUILD: ${{ matrix.cibw_build }}-* CIBW_SKIP: "*musllinux*" CIBW_BUILD_VERBOSITY: 3 CIBW_MANYLINUX_X86_64_IMAGE: manylinux2014 @@ -85,7 +85,7 @@ jobs: matrix: os: [macos-13-xlarge] cibw_archs: ["arm64"] - cibw_build: ["cp39-*", "cp310-*", "cp311-*", "cp312-*", "cp313-*"] + cibw_build: ["cp39", "cp310", "cp311", "cp312", "cp313"] steps: - uses: actions/checkout@v3 @@ -104,7 +104,7 @@ jobs: run: | python -m cibuildwheel --output-dir dist env: - CIBW_BUILD: ${{ matrix.cibw_build }} + CIBW_BUILD: ${{ matrix.cibw_build }}-* CIBW_BUILD_VERBOSITY: 3 CIBW_ARCHS_MACOS: arm64 CIBW_BEFORE_ALL_MACOS: brew install llvm@16 && From db7fa53c2124a18ecd44fca53ba7ec3f68f57185 Mon Sep 17 00:00:00 2001 From: Sameeul Samee Date: Tue, 4 Feb 2025 01:15:07 -0500 Subject: [PATCH 4/5] update libpng --- ci-utils/install_prereq_linux.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ci-utils/install_prereq_linux.sh b/ci-utils/install_prereq_linux.sh index fd852fd6..e2eb8a63 100755 --- a/ci-utils/install_prereq_linux.sh +++ b/ci-utils/install_prereq_linux.sh @@ -153,9 +153,9 @@ make install -j4 cd ../../ if [[ $BULD_DCMTK_DEP -eq 1 ]]; then - curl -L https://github.com/glennrp/libpng/archive/refs/tags/v1.6.39.zip -o v1.6.39.zip - unzip v1.6.39.zip - cd libpng-1.6.39 + curl -L https://github.com/glennrp/libpng/archive/refs/tags/v1.6.39.zip -o v1.6.46.zip + unzip v1.6.46.zip + cd libpng-1.6.46 mkdir build_man cd build_man cmake -DCMAKE_INSTALL_PREFIX=../../"$LOCAL_INSTALL_DIR"/ -DCMAKE_PREFIX_PATH=../../"$LOCAL_INSTALL_DIR"/ .. From bfe2392aae574041880c2fe10ee561bbdd9f3c76 Mon Sep 17 00:00:00 2001 From: Sameeul Samee Date: Wed, 5 Feb 2025 00:00:34 -0500 Subject: [PATCH 5/5] exclude some libs in wheel repair --- .github/workflows/build_wheels.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build_wheels.yml b/.github/workflows/build_wheels.yml index 2a839698..9e4685cd 100644 --- a/.github/workflows/build_wheels.yml +++ b/.github/workflows/build_wheels.yml @@ -59,7 +59,7 @@ jobs: CIBW_ENVIRONMENT_MACOS: REPAIR_LIBRARY_PATH="/tmp/nyxus_bld/local_install/lib:/tmp/nyxus_bld/local_install/lib64" PATH="$(brew --prefix llvm@16)/bin:$PATH" COMPILER="/usr/local/opt/llvm@16/bin/clang++" CFLAGS="-I /usr/local/include -I/usr/local/opt/llvm@16/include" CXXFLAGS="-I /usr/local/include -I/usr/local/opt/llvm@16/include" LDFLAGS="-L /usr/local/lib -L/usr/local/opt/llvm@16/lib -Wl,-rpath,/usr/local/opt/llvm@16/lib" CXX="/usr/local/opt/llvm@16/bin/clang++" CC="/usr/local/opt/llvm@16/bin/clang" NYXUS_DEP_DIR="/tmp/nyxus_bld/local_install" CIBW_ENVIRONMENT_LINUX: LD_LIBRARY_PATH="/tmp/nyxus_bld/local_install/lib:/tmp/nyxus_bld/local_install/lib64:$LD_LIBRARY_PATH" NYXUS_DEP_DIR="/tmp/nyxus_bld/local_install" CIBW_ENVIRONMENT_WINDOWS: PATH="C:\\TEMP\\nyxus_bld\\local_install\\bin;$PATH" NYXUS_DEP_DIR="C:\\TEMP\\nyxus_bld\\local_install" - CIBW_REPAIR_WHEEL_COMMAND_MACOS: DYLD_LIBRARY_PATH=$REPAIR_LIBRARY_PATH delocate-listdeps {wheel} && DYLD_LIBRARY_PATH=$REPAIR_LIBRARY_PATH delocate-wheel --require-archs {delocate_archs} -w {dest_dir} {wheel} + CIBW_REPAIR_WHEEL_COMMAND_MACOS: DYLD_LIBRARY_PATH=$REPAIR_LIBRARY_PATH delocate-listdeps {wheel} && DYLD_LIBRARY_PATH=$REPAIR_LIBRARY_PATH delocate-wheel --require-archs {delocate_archs} -w {dest_dir} {wheel} --exclude libzstd*.dylib --exclude liblzma*.dylib CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: "delvewheel repair -w {dest_dir} {wheel}" CIBW_ARCHS: ${{ matrix.cibw_archs }} CIBW_TEST_REQUIRES: numpy pandas pyarrow pytest bfio @@ -111,7 +111,7 @@ jobs: cp -r local_install /tmp/nyxus_bld CIBW_ENVIRONMENT_MACOS: REPAIR_LIBRARY_PATH="/tmp/nyxus_bld/local_install/lib:/tmp/nyxus_bld/local_install/lib64" PATH="/opt/homebrew/opt/llvm@16/bin:$PATH" COMPILER="/opt/homebrew/opt/llvm@16/bin/clang++" CFLAGS="-I/opt/homebrew/opt/llvm@16/include" CPPFLAGS="-I/opt/homebrew/opt/llvm@16/include" LDFLAGS="-L/opt/homebrew/opt/llvm@16/lib -L/opt/homebrew/opt/llvm@16/lib/c++ -Wl,-rpath,/opt/homebrew/opt/llvm@16/lib/c++" CXX="/opt/homebrew/opt/llvm@16/bin/clang++" CC="/opt/homebrew/opt/llvm@16/bin/clang" NYXUS_DEP_DIR="/tmp/nyxus_bld/local_install" - CIBW_REPAIR_WHEEL_COMMAND_MACOS: DYLD_LIBRARY_PATH=$REPAIR_LIBRARY_PATH delocate-listdeps {wheel} && DYLD_LIBRARY_PATH=$REPAIR_LIBRARY_PATH delocate-wheel --require-archs {delocate_archs} -w {dest_dir} {wheel} + CIBW_REPAIR_WHEEL_COMMAND_MACOS: DYLD_LIBRARY_PATH=$REPAIR_LIBRARY_PATH delocate-listdeps {wheel} && DYLD_LIBRARY_PATH=$REPAIR_LIBRARY_PATH delocate-wheel --require-archs {delocate_archs} -w {dest_dir} {wheel} --exclude libzstd*.dylib --exclude liblzma*.dylib CIBW_ARCHS: ${{ matrix.cibw_archs }} CIBW_TEST_REQUIRES: numpy pandas pyarrow pytest bfio CIBW_TEST_COMMAND: pytest -vv {project}/tests/python