Improve metadata access for pristine DataStore sources #988
This file contains hidden or 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: Build & Test Linux arm64 | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| TAG_NAME: | |
| description: 'Release Version Tag' | |
| required: true | |
| release: | |
| types: [created] | |
| push: | |
| branches: | |
| - main | |
| paths-ignore: | |
| - '**/*.md' | |
| pull_request: | |
| types: [opened, synchronize, reopened, ready_for_review] | |
| branches: | |
| - main | |
| paths-ignore: | |
| - '**/*.md' | |
| jobs: | |
| test_datastore: | |
| name: Test DataStore (Linux arm64) | |
| runs-on: [self-hosted, linux, arm64, ubuntu-latest] | |
| if: ${{ !github.event.pull_request.draft }} | |
| steps: | |
| - name: Install system dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y make build-essential libssl-dev zlib1g-dev \ | |
| libbz2-dev libreadline-dev wget curl \ | |
| libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev \ | |
| libffi-dev liblzma-dev libsqlite3-dev | |
| - name: Setup pyenv | |
| run: | | |
| rm -rf $HOME/.pyenv | |
| curl https://pyenv.run | bash | |
| export PATH="$HOME/.pyenv/bin:$PATH" | |
| eval "$(pyenv init -)" | |
| pyenv install 3.9:latest | |
| pyenv install 3.10:latest | |
| pyenv install 3.11:latest | |
| pyenv install 3.12:latest | |
| pyenv install 3.13:latest | |
| pyenv install 3.14:latest | |
| pyenv global 3.9 3.10 3.11 3.12 3.13 3.14 | |
| echo "Installed versions:" | |
| pyenv versions | |
| - name: Verify pyenv installations | |
| run: | | |
| export PATH="$HOME/.pyenv/bin:$PATH" | |
| eval "$(pyenv init -)" | |
| echo "Installed Python versions:" | |
| pyenv versions | |
| echo "" | |
| echo "Verifying all required Python versions are available:" | |
| for version in 3.9 3.10 3.11 3.12 3.13 3.14; do | |
| if ! pyenv versions --bare | grep -q "^$version"; then | |
| echo "ERROR: Python $version is not installed!" | |
| exit 1 | |
| fi | |
| echo "✓ Python $version is installed" | |
| done | |
| echo "All Python versions verified successfully!" | |
| - name: Install dependencies for all Python versions | |
| run: | | |
| export PATH="$HOME/.pyenv/bin:$PATH" | |
| eval "$(pyenv init -)" | |
| for version in 3.9 3.10 3.11 3.12 3.13 3.14; do | |
| echo "Installing dependencies for Python $version" | |
| pyenv shell $version | |
| python -m pip install --upgrade pip | |
| python -m pip install setuptools tox pandas pyarrow wheel pytest pytest-cov | |
| pyenv shell --unset | |
| done | |
| - uses: actions/checkout@v3 | |
| with: | |
| fetch-depth: 0 | |
| - name: Build wheel | |
| run: | | |
| export PATH="$HOME/.pyenv/bin:$PATH" | |
| eval "$(pyenv init -)" | |
| pyenv shell 3.9 | |
| make wheel | |
| - name: Show files | |
| run: | | |
| ls -lh dist | |
| shell: bash | |
| - name: Test DataStore on all Python versions with pandas 2.x and 3.x | |
| run: | | |
| export PATH="$HOME/.pyenv/bin:$PATH" | |
| eval "$(pyenv init -)" | |
| for version in 3.9 3.10 3.11 3.12 3.13 3.14; do | |
| # pandas 3.x requires Python >= 3.11 | |
| if [[ "$version" == "3.9" || "$version" == "3.10" ]]; then | |
| PANDAS_CONSTRAINTS=("pandas<3.0") | |
| else | |
| PANDAS_CONSTRAINTS=("pandas<3.0" "pandas>=3.0") | |
| fi | |
| for PANDAS_CONSTRAINT in "${PANDAS_CONSTRAINTS[@]}"; do | |
| echo "==============================================" | |
| echo "Testing DataStore on Python $version with $PANDAS_CONSTRAINT" | |
| echo "==============================================" | |
| pyenv shell $version | |
| python -m pip install dist/*.whl --force-reinstall | |
| python -m pip install pytest pytest-cov "$PANDAS_CONSTRAINT" | |
| echo "Installed pandas version:" | |
| python -c "import pandas; print(pandas.__version__)" | |
| echo "Running DataStore tests on Python $version with $PANDAS_CONSTRAINT ..." | |
| cd datastore | |
| python -m pytest tests/ -v --tb=short -x | |
| cd .. | |
| echo "==============================================" | |
| echo "DataStore tests PASSED on Python $version with $PANDAS_CONSTRAINT" | |
| echo "==============================================" | |
| pyenv shell --unset | |
| done | |
| done | |
| continue-on-error: false |