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

Support CPython 3.11, 3.12, and aarch64 processors #2331

Merged
merged 91 commits into from
Sep 11, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
91 commits
Select commit Hold shift + click to select a range
1e175c9
fix[ml]: adjust tests to reflect latest apis of 3rd party libraries (…
JovanVeljanoski Feb 7, 2024
8ea928d
Build wheels on pull_request
ddelange Jan 20, 2023
a210a40
Maximize wheel build parallellization
ddelange Jan 20, 2023
3395947
git submodule update --remote --merge packages/vaex-core/vendor/pybind11
ddelange Jan 20, 2023
b6c6925
Fix gcc error
ddelange Jan 20, 2023
9134301
Fix workflow syntax
ddelange Jan 20, 2023
65e1fd8
Remove redefinition
ddelange Jan 20, 2023
c1c15e6
Disable win32
ddelange Jan 20, 2023
0d0b272
Remove testing leftovers
ddelange Jan 20, 2023
7817433
Add upper cap on lightgbm
ddelange Sep 1, 2023
f556f56
Migrate to mamba-org/setup-micromamba@v1
ddelange Sep 4, 2023
34b0209
Upload release assets on Github (pre)release
ddelange Oct 14, 2023
8573502
Add missing permission for release assets
ddelange Oct 14, 2023
b614cd3
Build cp312 wheels
ddelange Oct 18, 2023
39eed15
Remove setuptools and wheel from pyproject.toml
ddelange Oct 19, 2023
0e37c40
Replace imp with importlib
ddelange Oct 20, 2023
63acdb6
chore: trigger ci
maartenbreddels Feb 7, 2024
ba4943b
ci: upgrade xcode for brew install libomp
maartenbreddels Feb 7, 2024
a346454
update requirements-ml to comply with the latest veex-ml expectations.
JovanVeljanoski Feb 9, 2024
d7023a7
try to install lightgbm via pip
JovanVeljanoski Feb 9, 2024
021e60f
fix: only the mini taxi file is on s3 for cost savings
maartenbreddels Feb 13, 2024
a44e464
ci: pin dask<2024.2.0 to get the same hash keys
maartenbreddels Feb 14, 2024
915d977
fix: only the mini taxi file is on s3 for cost savings (2)
maartenbreddels Feb 14, 2024
658816d
ci: skip notebooks that depend on the dataframe server
maartenbreddels Feb 14, 2024
afa6225
ci: skip ci steps in various old python versions
maartenbreddels Feb 14, 2024
eb2afa3
Bump micromamba and other actions
ddelange Feb 22, 2024
1f04e2e
ci: specific test hangs on ci+osx
maartenbreddels Mar 5, 2024
167e500
Bump cibuildwheel, use native arm64 mac runners
ddelange Apr 5, 2024
100a13f
test: log is renamed to log loss
maartenbreddels Jun 19, 2024
d32a9a5
test: skip lightgbm tests on 36 and 37
maartenbreddels Jun 19, 2024
310087c
test: skip sklearn tests on 36 and 37
maartenbreddels Jun 19, 2024
12e2478
Update packages/vaex-core/setup.py
maartenbreddels Jun 22, 2024
a19eb7e
chore: drop python 3.6 and 3.7 support
maartenbreddels Jul 3, 2024
5a34fee
test: skip a failing test for windows
maartenbreddels Jul 3, 2024
a32d9cb
ci: macOS 11 is retired as of June 28
maartenbreddels Jul 3, 2024
00d6c3a
ci: always build wheels, but do not publish instead
maartenbreddels Jul 3, 2024
a50ddca
ci: try with older micromamba, 1.5.6 seems to sometimes hang
maartenbreddels Jul 3, 2024
66a4500
Install setuptools in wheel.yml
ddelange Jul 3, 2024
3d078ae
Add sudo
ddelange Jul 3, 2024
9bb7964
Fix windows
ddelange Jul 3, 2024
1dbdb19
Use sudo only on macos
ddelange Jul 4, 2024
27d34e2
Fix empty string evaluating false
ddelange Jul 4, 2024
c4f234c
Add .readthedocs.yaml
ddelange Jul 4, 2024
0d9a3ce
Pull submodules
ddelange Jul 4, 2024
08da37b
Try editable rtd install
ddelange Jul 4, 2024
8ba6441
Try move editable install to requirements_rtd.txt
ddelange Jul 4, 2024
d46edbc
Allow newer sphinx
ddelange Jul 4, 2024
d4964f7
Autocancel previous runs in PRs
ddelange Jul 4, 2024
976b73f
Autocancel all jobs
ddelange Jul 4, 2024
4cf3f94
Sphinx sidebar fix
ddelange Jul 4, 2024
eacef43
Remove autocancel, doesn't work from forks
ddelange Jul 4, 2024
3fdd98e
Add cancel-in-progress keys
ddelange Jul 4, 2024
8fb9b3e
Amend to only cancel on PRs
ddelange Jul 4, 2024
7a78a23
Add CIBW_TEST_COMMAND
ddelange Jul 5, 2024
1b58e08
Disallow numpy v2
ddelange Jul 5, 2024
4fc584d
Skip musllinux due to misding blake3 wheels
ddelange Jul 5, 2024
3536f89
Install carco for blake3 source install
ddelange Jul 5, 2024
808a0de
Fix CIBW_ENVIRONMENT
ddelange Jul 5, 2024
169a236
Add CIBW_TEST_SKIP
ddelange Jul 5, 2024
735c319
Build wheels with numpy v1
ddelange Jul 5, 2024
f371ba7
run tests on 3.10-3.12
maartenbreddels Jul 7, 2024
777b0bf
upgrade micromamba
maartenbreddels Jul 7, 2024
5b9d775
unpin pytest-asyncio
maartenbreddels Jul 7, 2024
6ea1171
try different pin as <2.0 because mamba crashes on that
maartenbreddels Jul 16, 2024
0482887
Fix dephell and CI hell (ddelange#3)
ddelange Aug 24, 2024
aabd6fd
allow for multiple fingerprints related to package versions
maartenbreddels Aug 28, 2024
d76a36b
explicit dtype=object
maartenbreddels Aug 28, 2024
8ec050e
fix pandas issues
maartenbreddels Aug 29, 2024
3569f0a
revert graphene upgrade
maartenbreddels Aug 29, 2024
2fe29d4
force uv to ignore Werkzeug (we do not use it, its a subdependency wh…
maartenbreddels Aug 29, 2024
aaae4db
fix: work with modern scipy/sparse arrays
maartenbreddels Aug 29, 2024
cc8429e
skip test for python 3.8
maartenbreddels Aug 29, 2024
66d0b88
skip test on windows
maartenbreddels Aug 29, 2024
857786f
add missing import
maartenbreddels Aug 29, 2024
0383e3a
skip some tests conditionally
maartenbreddels Aug 29, 2024
37d7e8f
tuple comparison fix
maartenbreddels Aug 29, 2024
b7da706
does osx run without sourcing .bash profile?
maartenbreddels Aug 29, 2024
288d378
skip a few more tests
maartenbreddels Aug 29, 2024
7600119
only run test on linux
maartenbreddels Aug 29, 2024
2c8bb2f
Try building arm64 wheels on macos-13
ddelange Aug 29, 2024
3efae4b
Switch to older Xcode
ddelange Aug 29, 2024
7ed1b54
Fix readthedocs by manually unpinning werkzeug in the graphene-tornad…
ddelange Aug 30, 2024
91263bc
Simplify
ddelange Aug 30, 2024
3995302
Revert "Simplify"
ddelange Aug 30, 2024
bac3efb
Add back tags event trigger for core wheel upload
ddelange Aug 30, 2024
93ce2c0
Switch to trusted publishing
ddelange Aug 30, 2024
f6c8b79
Add trusted publishing for vaex-core
ddelange Aug 30, 2024
7988bb4
Exclude windows 3.8 from pythonpackage.yml
ddelange Aug 30, 2024
b23f5a7
Don't upload vaex-core source distribution
ddelange Aug 30, 2024
b594d77
Disable cp38-win vaex-core wheel build
ddelange Aug 30, 2024
faaf23e
Add permission
ddelange Aug 30, 2024
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
233 changes: 55 additions & 178 deletions .github/workflows/pythonpackage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,130 +5,74 @@ on:
branches:
- master
pull_request:
branches:
- master
- docs
schedule:
- cron: "0 2 * * 1-5"

# to make bash use ~/.bashrc, see https://github.com/marketplace/actions/setup-miniconda#example-5-custom-installer
concurrency:
group: ${{ github.workflow }}-${{ github.ref || github.run_id }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}

defaults:
run:
shell: bash -l {0}

concurrency:
group: ${{ github.ref }}
cancel-in-progress: true
shell: bash

jobs:
main:
env:
CACHE_NUMBER_COMPILE: 6
MAMBA_ROOT_PREFIX: /dev/shm/mambaroot
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
max-parallel: 12
matrix:
os: [ubuntu-latest, windows-latest, macOS-11]
python-version: [3.6, 3.7, 3.8, 3.9]
os: [ubuntu-latest, windows-latest, macos-13]
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
exclude:
- {os: windows-latest, python-version: "3.8"}

steps:
- name: disk space
if: ${{ (github.event.pull_request.head.repo.full_name == 'vaexio/vaex') && (matrix.os == 'ubuntu-latest') }}
run: |
df -h
- uses: maxim-lobanov/setup-xcode@v1
# alternative would be to upgrade tapi to 1100.0.11, we can possibly remove this in the future
if: matrix.os == 'macOS-11'
with:
xcode-version: "11.7.0"
- uses: actions/checkout@v2
with:
submodules: true
- uses: actions/checkout@v2
if: ${{ (github.event.pull_request.head.repo.full_name == 'vaexio/vaex') && (matrix.os == 'ubuntu-latest') }}
with:
repository: vaexio/vaex-enterprise
token: ${{ secrets.PAT_PULL_ENTERPRISE }}
path: vaex-enterprise
- name: install micromamba
uses: mamba-org/provision-with-micromamba@main

- uses: actions/setup-python@v5
with:
environment-name: vaex-dev
environment-file: ci/conda-env.yml
extra-specs: |
python=${{ matrix.python-version }}
- name: Extra non-windows installs
python-version: ${{ matrix.python-version }}

- run: python -m pip install --upgrade pip setuptools wheel uv

# - uses: actions/checkout@v2
# if: ${{ (github.event.pull_request.head.repo.full_name == 'vaexio/vaex') && (matrix.os == 'ubuntu-latest') }}
# with:
# repository: vaexio/vaex-enterprise
# token: ${{ secrets.PAT_PULL_ENTERPRISE }}
# path: vaex-enterprise

- name: Setup Graphviz
uses: ts-graphviz/setup-graphviz@v2

- name: Setup PCRE (Nix-only)
if: matrix.os != 'windows-latest'
run: |
echo "not needed for now"
# - name: Extra windows installs
# if: matrix.os == 'windows-latest'
# run: |
# # not sure why, but the conda env is strange (old dask) if we put this constraint in the conda solver
# # also might solve scipy issues
# micromamba update scipy ipython dask
# micromamba install scipy=1.7.1
# - name: free disk space
# if: matrix.os == 'ubuntu-latest'
# run: |
# sudo swapoff -a
# sudo rm -f /swapfile
# sudo apt clean
# docker rmi $(docker image ls -aq)
# df -h
run: sudo -E bash bin/install_pcre.sh

- name: Install OpenMP runtime (Mac-only)
if: matrix.os == 'macOS-11'
run: |
brew install libomp
- name: Cache compiled binaries
# this fails for this combination, leading to binaries filled with 0's
if: matrix.python-version != '3.6' || matrix.os != 'macOS-11'
id: cache-compiled-binaries
uses: actions/cache@v2
with:
path: |
packages/vaex-core/build/lib*/vaex/vaexfast*
packages/vaex-core/build/lib*/vaex/super*
key: ${{ runner.OS }}-${{ matrix.python-version }}-${{ hashFiles('packages/vaex-core/src/*') }}-${{ env.CACHE_NUMBER_COMPILE }}
- name: Fix cache timestamp
run: |
touch packages/vaex-core/build/lib*/vaex/vaexfast* || echo "ok to fail"
touch packages/vaex-core/build/lib*/vaex/super* || echo "ok to fail"
ls -alh packages/vaex-core/build/lib*/vaex/ || echo "ok to fail"
if: startswith(matrix.os, 'macos')
run: brew install libomp

- name: Copy dll (Windows-only)
if: (matrix.os == 'windows-latest')
uses: ./ci/actions/windll

- name: Install vaex
run: |
pip install myst_parser
pip install -e . -v
# ./ci/03-install-vaex.sh micromamba
run: uv pip install -v --system .[ci]

- run: uv pip freeze

# - name: Install vaex-enterprise
# if: ${{ (github.event.pull_request.head.repo.full_name == 'vaexio/vaex') && (matrix.os == 'ubuntu-latest') }}
# run: |
# cd vaex-enterprise
# micromamba install -c conda-forge distributed
# pip install ray
# pip install -e .
- name: Copy dll
if: (matrix.os == 'windows-latest')
uses: ./ci/actions/windll
- name: Build Python packages
run: |
mkdir dist
(cd packages/vaex-core && python setup.py bdist_wheel); cp packages/vaex-core/dist/* dist
(cd packages/vaex-graphql && python setup.py bdist_wheel); cp packages/vaex-graphql/dist/* dist
(cd packages/vaex-jupyter && python setup.py bdist_wheel); cp packages/vaex-jupyter/dist/* dist
(cd packages/vaex-ml && python setup.py bdist_wheel); cp packages/vaex-ml/dist/* dist
(cd packages/vaex-viz && python setup.py bdist_wheel); cp packages/vaex-viz/dist/* dist
(cd packages/vaex-astro && python setup.py bdist_wheel); cp packages/vaex-astro/dist/* dist
(cd packages/vaex-hdf5 && python setup.py bdist_wheel); cp packages/vaex-hdf5/dist/* dist
(cd packages/vaex-server && python setup.py bdist_wheel); cp packages/vaex-server/dist/* dist
(cd packages/vaex-meta && python setup.py bdist_wheel); cp packages/vaex-server/dist/* dist
- name: Upload builds
uses: actions/upload-artifact@v2
with:
name: dist-${{ github.run_number }}-${{ matrix.python-version }}-${{ matrix.os }}
path: ./dist

# - name: Lint with flake8
# run: |
# echo "soon"
Expand All @@ -137,123 +81,56 @@ jobs:
# # 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 fixes for Python 3.6
if: matrix.python-version == '3.6'
run: |
# by default on 3.6 we get an old version, so manually upgrade
pip install gcsfs==0.8.0
- name: Install pytest-asyncio correct version
if: matrix.python-version != '3.10'
run: |
# 3.10 doesn't seem to work
pip install "pytest-asyncio<0.14"

- name: Test with pytest
run: |
./ci/04-run-test-suite.sh

- name: Test with pytest (with cache on)
if: matrix.python-version == '3.9' && matrix.os == 'ubuntu-latest'
if: matrix.python-version == '3.12' && matrix.os == 'ubuntu-latest'
run: |
VAEX_CACHE_RESULTS=1 ./ci/04-run-test-suite.sh

- name: Check ml spec
# no catboost for py39 and py37
if: matrix.python-version != '3.9' && matrix.os != 'windows-latest' && matrix.python-version != '3.7'
run: |
python -m vaex.ml.spec packages/vaex-ml/vaex/ml/spec_new.json
diff packages/vaex-ml/vaex/ml/spec_new.json packages/vaex-ml/vaex/ml/spec.json

# - name: Test with pytest (vaex-enterprise)
# if: ${{ (github.event.pull_request.head.repo.full_name == 'vaexio/vaex') && (matrix.os == 'ubuntu-latest') }}
# run: |
# py.test vaex-enterprise/tests --timeout=1000

- name: Test notebooks
if: matrix.os != 'windows-latest' && matrix.python-version != '3.6'
run: |
./ci/05-run-notebooks.sh
if: matrix.os != 'windows-latest'
run: ./ci/05-run-notebooks.sh

- name: Authenticate Google Cloud Platform
if: ${{ (github.event.pull_request.head.repo.full_name == 'vaexio/vaex') && !((matrix.os == 'windows-latest') || (matrix.os == 'macOS-11' && matrix.python-version == '3.6')) }}
if: ${{ (github.event.pull_request.head.repo.full_name == 'vaexio/vaex') && !((matrix.os == 'windows-latest')) }}
uses: google-github-actions/setup-gcloud@v0
with:
project_id: ${{ secrets.GCP_PROJECT_ID_VAEX }}
service_account_key: ${{ secrets.GCP_SA_KEY_VAEX }}
export_default_credentials: true

- name: Test vaex-contrib
# do not run in a PR from someone else, skip windows, and osx+py36
if: ${{ (github.event.pull_request.head.repo.full_name == 'vaexio/vaex') && !((matrix.os == 'windows-latest') || (matrix.os == 'macOS-11' && matrix.python-version == '3.6')) }}
# do not run in a PR from someone else, skip windows
if: ${{ (github.event.pull_request.head.repo.full_name == 'vaexio/vaex') && (matrix.os != 'windows-latest') }}
env:
PROJECT_ID: ${{ secrets.GCP_PROJECT_ID_VAEX }}
run: |
pip install -e 'packages/vaex-contrib[gcp]'
./ci/06-run-contrib-tests.sh

install:
runs-on: ${{ matrix.os }}
needs: [main]

strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macOS-11]
python-version: [3.7, 3.8, 3.9]
# ssl/certifi issues with this combination
exclude:
- os: windows-latest
python-version: 3.7

steps:
- uses: actions/checkout@v2
- uses: actions/download-artifact@v2
with:
name: dist-${{ github.run_number }}-${{ matrix.python-version }}-${{ matrix.os }}
path: ./dist

- name: Install micromamba
uses: mamba-org/provision-with-micromamba@main
with:
environment-name: vaex-test
environment-file: ci/conda-base-minimal.yml
extra-specs: |
python=${{ matrix.python-version }}
pcre
rich
# it shouldn't be needed to use pcre, maybe we should make the wheels similar to how we make distributions
- name: Cache pip
uses: actions/cache@v2
env:
# Increase this value to reset cache
CACHE_NUMBER: 0
with:
path: |
~/.cache/pip
key:
pip-${{ runner.os }}-${{ matrix.python-version }}-${{ env.CACHE_NUMBER }}

- name: Install core packages
run: |
pip install -vv dist/vaex*core* dist/vaex*hdf5*

- name: Test core import
run: |
python -c "import vaex; df = vaex.example()"

- name: Install all packages
run: |
pip install -vv dist/*

- name: Test import
run: |
python -c "import vaex; df = vaex.example()"
run: ./ci/06-run-contrib-tests.sh

- name: Test comand line
run: |
vaex convert ~/.vaex/data/helmi-dezeeuw-2000-FeH-v2-10percent.hdf5 test.parquet
pip install rich
VAEX_PROGRESS_TYPE=rich vaex convert ~/.vaex/data/helmi-dezeeuw-2000-FeH-v2-10percent.hdf5 test.parquet
vaex settings yaml
vaex settings md

- name: Test server
if: matrix.os != 'windows-latest'
run: |
vaex server --add-example --port 9999&
vaex server --add-example --port 9999 &

- name: Wait for Vaex server
if: matrix.os != 'windows-latest'
Expand Down
Loading
Loading