Bump to version 4.3.0 #3004
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: Code Quality Checks | |
| on: [pull_request] | |
| permissions: | |
| contents: read | |
| id-token: write | |
| jobs: | |
| run-unit-tests: | |
| runs-on: | |
| group: databricks-protected-runner-group | |
| labels: linux-ubuntu-latest | |
| strategy: | |
| matrix: | |
| python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"] | |
| dependency-version: ["default", "min"] | |
| exclude: | |
| - python-version: "3.12" | |
| dependency-version: "min" | |
| - python-version: "3.13" | |
| dependency-version: "min" | |
| name: "Unit Tests (Python ${{ matrix.python-version }}, ${{ matrix.dependency-version }} deps)" | |
| steps: | |
| - name: Check out repository | |
| uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 | |
| - name: Setup Poetry | |
| uses: ./.github/actions/setup-poetry | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| cache-suffix: "${{ matrix.dependency-version }}-" | |
| - name: Install Python tools for custom versions | |
| if: matrix.dependency-version != 'default' | |
| run: poetry run pip install toml packaging | |
| - name: Generate requirements file | |
| if: matrix.dependency-version != 'default' | |
| run: | | |
| poetry run python scripts/dependency_manager.py ${{ matrix.dependency-version }} --output requirements-${{ matrix.dependency-version }}.txt | |
| echo "Generated requirements for ${{ matrix.dependency-version }} versions:" | |
| cat requirements-${{ matrix.dependency-version }}.txt | |
| - name: Override with custom dependency versions | |
| if: matrix.dependency-version != 'default' | |
| run: poetry run pip install -r requirements-${{ matrix.dependency-version }}.txt | |
| - name: Show installed versions | |
| run: | | |
| echo "=== Dependency Version: ${{ matrix.dependency-version }} ===" | |
| poetry run pip list | |
| - name: Run tests | |
| run: poetry run python -m pytest tests/unit -m "not realkernel" | |
| run-unit-tests-with-arrow: | |
| runs-on: | |
| group: databricks-protected-runner-group | |
| labels: linux-ubuntu-latest | |
| strategy: | |
| matrix: | |
| python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"] | |
| dependency-version: ["default", "min"] | |
| exclude: | |
| - python-version: "3.12" | |
| dependency-version: "min" | |
| - python-version: "3.13" | |
| dependency-version: "min" | |
| name: "Unit Tests + PyArrow (Python ${{ matrix.python-version }}, ${{ matrix.dependency-version }} deps)" | |
| steps: | |
| - name: Check out repository | |
| uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 | |
| - name: Install Kerberos system dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y libkrb5-dev | |
| - name: Setup Poetry | |
| uses: ./.github/actions/setup-poetry | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| # Install ONLY the pyarrow extra (not --all-extras) so this | |
| # tier isolates the "pyarrow present, kernel absent" | |
| # configuration. --all-extras would also pull the kernel wheel, | |
| # making this job redundant with "Unit Tests + Kernel". | |
| install-args: "--extras pyarrow" | |
| cache-suffix: "pyarrow-${{ matrix.dependency-version }}-" | |
| - name: Install Python tools for custom versions | |
| if: matrix.dependency-version != 'default' | |
| run: poetry run pip install toml packaging | |
| - name: Generate requirements file with pyarrow | |
| if: matrix.dependency-version != 'default' | |
| run: | | |
| poetry run python scripts/dependency_manager.py ${{ matrix.dependency-version }} --output requirements-${{ matrix.dependency-version }}-arrow.txt | |
| echo "Generated requirements for ${{ matrix.dependency-version }} versions with PyArrow:" | |
| cat requirements-${{ matrix.dependency-version }}-arrow.txt | |
| - name: Override with custom dependency versions | |
| if: matrix.dependency-version != 'default' | |
| run: poetry run pip install -r requirements-${{ matrix.dependency-version }}-arrow.txt | |
| - name: Show installed versions | |
| run: | | |
| echo "=== Dependency Version: ${{ matrix.dependency-version }} with PyArrow ===" | |
| poetry run pip list | |
| - name: Run tests | |
| run: poetry run python -m pytest tests/unit -m "not realkernel" | |
| run-unit-tests-with-kernel: | |
| runs-on: | |
| group: databricks-protected-runner-group | |
| labels: linux-ubuntu-latest | |
| strategy: | |
| matrix: | |
| # Kernel wheel is cp310-abi3 (Requires-Python >=3.10), so this | |
| # matrix omits 3.9 — the [kernel] extra is a no-op there. | |
| python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"] | |
| name: "Unit Tests + Kernel (Python ${{ matrix.python-version }})" | |
| steps: | |
| - name: Check out repository | |
| uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 | |
| - name: Install Kerberos system dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y libkrb5-dev | |
| - name: Setup Poetry | |
| uses: ./.github/actions/setup-poetry | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| # Install the kernel extra (pulls the published | |
| # databricks-sql-kernel wheel, which transitively brings | |
| # pyarrow). Explicit --extras kernel rather than --all-extras | |
| # so this tier targets the kernel configuration specifically. | |
| install-args: "--extras kernel" | |
| cache-suffix: "kernel-" | |
| - name: Show installed versions | |
| run: | | |
| echo "=== with databricks-sql-kernel ===" | |
| poetry run pip list | |
| - name: Assert the real kernel wheel is installed (not a stub) | |
| run: | | |
| poetry run python -c "import databricks_sql_kernel as k; assert k.__file__, 'kernel wheel missing __file__ — not the real wheel'; print('real kernel wheel:', k.__file__)" | |
| - name: Unit tests (kernel wheel present, realkernel deselected) | |
| # The bulk of tests/unit fakes databricks_sql_kernel in | |
| # sys.modules, so the real-wheel routing test is deselected here | |
| # and run on its own below (a shared session would shadow the | |
| # real wheel — both real-wheel tests fail loudly if that happens). | |
| run: poetry run python -m pytest tests/unit -m "not realkernel" | |
| - name: Drive use_kernel=True through the REAL wheel (routing) | |
| # Separate invocation, explicit file path: never collects the | |
| # fake-module test file, so sys.modules stays unpolluted. This is | |
| # the no-network proof that sql.connect(use_kernel=True) actually | |
| # instantiates the real KernelDatabricksClient (not a stub, not a | |
| # Thrift fallback). Fails loudly if the real wheel is shadowed. | |
| run: poetry run python -m pytest tests/unit/test_session.py -m realkernel -v | |
| check-linting: | |
| runs-on: | |
| group: databricks-protected-runner-group | |
| labels: linux-ubuntu-latest | |
| strategy: | |
| matrix: | |
| python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"] | |
| steps: | |
| - name: Check out repository | |
| uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 | |
| - name: Setup Poetry | |
| uses: ./.github/actions/setup-poetry | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Black | |
| run: poetry run black --check src | |
| check-types: | |
| runs-on: | |
| group: databricks-protected-runner-group | |
| labels: linux-ubuntu-latest | |
| strategy: | |
| matrix: | |
| python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"] | |
| steps: | |
| - name: Check out repository | |
| uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 | |
| - name: Setup Poetry | |
| uses: ./.github/actions/setup-poetry | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Mypy | |
| run: | | |
| mkdir .mypy_cache | |
| poetry run mypy --install-types --non-interactive src |