Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
81 commits
Select commit Hold shift + click to select a range
bdb5154
Cleanup fields as they might be deprecated/removed/change in the futu…
vikrantpuppala May 9, 2025
3463b12
Refactor decimal conversion in PyArrow tables to use direct casting (…
jayantsing-db May 12, 2025
7b51c6e
[PECOBLR-361] convert column table to arrow if arrow present (#551)
shivam2680 May 16, 2025
f9936d7
Update CODEOWNERS (#562)
jprakash-db May 21, 2025
edfb283
Enhance Cursor close handling and context manager exception managemen…
madhav-db May 21, 2025
48746d1
PECOBLR-86 improve logging on python driver (#556)
saishreeeee May 22, 2025
eaa542d
Update github actions run conditions (#569)
jprakash-db May 26, 2025
0947b9a
New Complex type test table + Github Action changes (#575)
jprakash-db May 28, 2025
3842583
fix `test_closing_connection_closes_commands` (#584)
varun-edachali-dbx Jun 10, 2025
ad2bb62
[PECOBLR-330] Support for complex params (#559)
jprakash-db Jun 16, 2025
0271b28
Bump version to 4.0.4 (#599)
jprakash-db Jun 16, 2025
c123af3
Updated the changelog format (#600)
jprakash-db Jun 16, 2025
8b841c7
Updated tests (#614)
jprakash-db Jun 24, 2025
4cebc36
Add test to check thrift field IDs (#602)
vikrantpuppala Jun 24, 2025
b3a6f55
Revert "Enhance Cursor close handling and context manager exception m…
madhav-db Jun 24, 2025
7696316
Bump version to 4.0.5 (#615)
madhav-db Jun 24, 2025
90f0ac1
Removed Codeowners (#623)
jprakash-db Jul 3, 2025
e50e86d
[PECOBLR-587] Azure Service Principal Credential Provider (#621)
jprakash-db Jul 9, 2025
9c34acd
Add optional telemetry support to the python connector (#628)
saishreeeee Jul 10, 2025
576eafc
Fix potential resource leak in `CloudFetchQueue` (#624)
varun-edachali-dbx Jul 11, 2025
ba1eab3
Generalise Backend Layer (#604)
varun-edachali-dbx Jul 15, 2025
e0ca049
Arrow performance optimizations (#638)
jprakash-db Jul 16, 2025
c6f4a27
Connection errors to unauthenticated telemetry endpoint (#619)
saishreeeee Jul 22, 2025
141a004
SEA: Execution Phase (#645)
varun-edachali-dbx Jul 23, 2025
71d306f
Add retry mechanism to telemetry requests (#617)
saishreeeee Jul 23, 2025
0a7a6ab
SEA: Fetch Phase (#650)
varun-edachali-dbx Jul 28, 2025
59d28b0
added logs for cloud fetch speed (#654)
shivam2680 Jul 28, 2025
a0d7cd1
Make telemetry batch size configurable and add time-based flush (#622)
saishreeeee Jul 31, 2025
e732e96
Normalise type code (#652)
varun-edachali-dbx Jul 31, 2025
fe8cd57
Testing for telemetry (#616)
saishreeeee Jul 31, 2025
2f8b1ab
Bug fixes in telemetry (#659)
saishreeeee Aug 1, 2025
aee6863
Telemetry server-side flag integration (#646)
saishreeeee Aug 1, 2025
3b0c882
Enhance SEA HTTP Client (#618)
varun-edachali-dbx Aug 4, 2025
36d3ec4
SEA: Allow large metadata responses (#653)
varun-edachali-dbx Aug 4, 2025
701f7f6
Added code coverage workflow to test the code coverage from unit and …
msrathore-db Aug 5, 2025
fd81c5a
Concat tables to be backward compatible (#647)
jprakash-db Aug 6, 2025
d3df719
Refactor codebase to use a unified http client (#673)
vikrantpuppala Aug 13, 2025
8e97878
[PECOBLR-727] Add kerberos support for proxy auth (#675)
vikrantpuppala Aug 18, 2025
2f982bc
Update for 4.1.0 (#676)
vikrantpuppala Aug 18, 2025
87fed36
Add documentation for proxy support (#680)
vikrantpuppala Aug 20, 2025
6e0f5ff
Fix compatibility with urllib3<2 and add CI actions to improve depend…
vikrantpuppala Aug 20, 2025
e2a972e
Ready for 4.1.1 release (#682)
vikrantpuppala Aug 21, 2025
9e67c79
streaming ingestion support for PUT operation (#643)
sreekanth-db Aug 21, 2025
097a2c5
Removed use_threads argument on concat_tables for compatibility with …
jprakash-db Aug 22, 2025
d9d070c
Ready for 4.1.2 release (#685)
vikrantpuppala Aug 22, 2025
415fb53
Increased the limit for long running query (#686)
jprakash-db Aug 22, 2025
048fae1
[PECOBLR-201] add variant support (#560)
shivam2680 Aug 22, 2025
bcab1df
query tags integration (#663)
sreekanth-db Aug 25, 2025
07c541b
Ready for 4.1.3 (#693)
sreekanth-db Sep 17, 2025
54dd646
[PECOBLR-681] added new session conf to enable metric view metadata (…
shivam2680 Sep 25, 2025
f835aca
Add Token Federation Support for Databricks SQL Python Driver (#691)
madhav-db Sep 26, 2025
30286ad
Release version to 4.1.4 (#699)
madhav-db Oct 15, 2025
fd65fd2
Added a workflow to parallelise the E2E tests(#697)
msrathore-db Oct 24, 2025
3b37dd2
Bring Python telemetry event model consistent with JDBC (#701)
nikhilsuri-db Nov 10, 2025
f9f5fc6
feat: Add multi-statement transaction support (#704)
jayantsing-db Nov 13, 2025
cca421b
Bump to version 4.2.0 (#707)
jayantsing-db Nov 14, 2025
a4899cb
Add ignore_transactions config to disable transaction operations (#711)
jayantsing-db Nov 20, 2025
ad227ca
Ready for 4.2.1 release (#713)
vikrantpuppala Nov 20, 2025
b8494ff
Change default use_hybrid_disposition to False (#714)
samikshya-db Nov 21, 2025
73580fe
Circuit breaker changes using pybreaker (#705)
nikhilsuri-db Nov 26, 2025
8d5e155
perf: Optimize telemetry latency logging to reduce overhead (#715)
samikshya-db Nov 27, 2025
d524f0e
basic e2e test for force telemetry verification (#708)
nikhilsuri-db Nov 28, 2025
ebe4b07
feat: Implement host-level telemetry batching to reduce rate limiting…
samikshya-db Dec 3, 2025
d2ae1e8
Prepare for a release with telemetry on by default (#717)
samikshya-db Dec 4, 2025
7c6adee
added pandas < 2.4.0 support and tests for py 3.14 (#720)
sreekanth-db Dec 11, 2025
f7822fd
pandas 2.3.3 support for py < 3.14 (#721)
sreekanth-db Dec 18, 2025
ce55e7b
New minor release (#722)
samikshya-db Dec 18, 2025
9b4e577
Fixed the exception handler close() on _TelemetryClientHolder (#723)
msrathore-db Jan 1, 2026
946a265
created util method to normalise http protocol in http path (#724)
nikhilsuri-db Jan 5, 2026
03eb369
New minor version release 4.2.4 (#725)
samikshya-db Jan 8, 2026
4b7df5b
[PECOBLR-1168] query tags telemetry (#716)
sreekanth-db Jan 9, 2026
cafed60
[ES-1717039] Fix 60 seconds delay in gov cloud connections + Fix PR c…
samikshya-db Feb 5, 2026
61f8029
[PECOBLR-1735] Fix #729 and #731: Telemetry lifecycle management (#734)
msrathore-db Feb 6, 2026
9fe7356
Bump to version 4.2.5 (#737)
jayantsing-db Feb 9, 2026
38097f2
Add query_tags parameter support for execute methods (#736)
jiabin-hu Mar 2, 2026
e916f71
[QI-3367] Allow specifiying query tags as a dict upon connection crea…
jiabin-hu Mar 9, 2026
12bfd5b
Fix float inference to use DoubleParameter (64-bit) instead of FloatP…
Shubhambhusate Mar 10, 2026
36fb376
Updated the PyArrow concatenation of tables to use promote_options as…
jprakash-db Mar 10, 2026
ca4d7bc
Add statement-level query_tags support for SEA backend (#754)
sreekanth-db Mar 16, 2026
c5a2e80
Add comprehensive MST transaction metadata and edge case tests
vikrantpuppala Mar 26, 2026
cf92d96
Rename test table to avoid collisions with JDBC driver tests
vikrantpuppala Mar 26, 2026
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
5 changes: 0 additions & 5 deletions .github/CODEOWNERS

This file was deleted.

163 changes: 163 additions & 0 deletions .github/workflows/code-coverage.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,163 @@
name: Code Coverage

permissions:
contents: read

on: [pull_request, workflow_dispatch]

jobs:
test-with-coverage:
runs-on: ubuntu-latest
environment: azure-prod
env:
DATABRICKS_SERVER_HOSTNAME: ${{ secrets.DATABRICKS_HOST }}
DATABRICKS_HTTP_PATH: ${{ secrets.TEST_PECO_WAREHOUSE_HTTP_PATH }}
DATABRICKS_TOKEN: ${{ secrets.DATABRICKS_TOKEN }}
DATABRICKS_CATALOG: peco
DATABRICKS_USER: ${{ secrets.TEST_PECO_SP_ID }}
steps:
#----------------------------------------------
# check-out repo and set-up python
#----------------------------------------------
- name: Check out repository
uses: actions/checkout@v4
with:
fetch-depth: 0
ref: ${{ github.event.pull_request.head.ref || github.ref_name }}
repository: ${{ github.event.pull_request.head.repo.full_name || github.repository }}
- name: Set up python
id: setup-python
uses: actions/setup-python@v5
with:
python-version: "3.10"
#----------------------------------------------
# ----- install system dependencies -----
#----------------------------------------------
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y libkrb5-dev
#----------------------------------------------
# ----- install & configure poetry -----
#----------------------------------------------
- name: Install Poetry
uses: snok/install-poetry@v1
with:
version: "2.2.1"
virtualenvs-create: true
virtualenvs-in-project: true
installer-parallel: true

#----------------------------------------------
# load cached venv if cache exists
#----------------------------------------------
- name: Load cached venv
id: cached-poetry-dependencies
uses: actions/cache@v4
with:
path: .venv
key: venv-${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-${{ github.event.repository.name }}-${{ hashFiles('**/poetry.lock') }}
#----------------------------------------------
# install dependencies if cache does not exist
#----------------------------------------------
- name: Install dependencies
if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true'
run: poetry install --no-interaction --no-root
#----------------------------------------------
# install your root project, if required
#----------------------------------------------
- name: Install Kerberos system dependencies
run: |
sudo apt-get update
sudo apt-get install -y libkrb5-dev
- name: Install library
run: poetry install --no-interaction --all-extras
#----------------------------------------------
# run parallel tests with coverage
#----------------------------------------------
- name: Run parallel tests with coverage
continue-on-error: false
run: |
poetry run pytest tests/unit tests/e2e \
-m "not serial" \
-n auto \
--cov=src \
--cov-report=xml \
--cov-report=term \
-v

#----------------------------------------------
# run telemetry tests with coverage (isolated)
#----------------------------------------------
- name: Run telemetry tests with coverage (isolated)
continue-on-error: false
run: |
# Run test_concurrent_telemetry.py separately for isolation
poetry run pytest tests/e2e/test_concurrent_telemetry.py \
--cov=src \
--cov-append \
--cov-report=xml \
--cov-report=term \
-v

#----------------------------------------------
# check for coverage override
#----------------------------------------------
- name: Check for coverage override
id: override
run: |
OVERRIDE_COMMENT=$(echo "${{ github.event.pull_request.body }}" | grep -E "SKIP_COVERAGE_CHECK\s*=" || echo "")
if [ -n "$OVERRIDE_COMMENT" ]; then
echo "override=true" >> $GITHUB_OUTPUT
REASON=$(echo "$OVERRIDE_COMMENT" | sed -E 's/.*SKIP_COVERAGE_CHECK\s*=\s*(.+)/\1/')
echo "reason=$REASON" >> $GITHUB_OUTPUT
echo "Coverage override found in PR description: $REASON"
else
echo "override=false" >> $GITHUB_OUTPUT
echo "No coverage override found"
fi
#----------------------------------------------
# check coverage percentage
#----------------------------------------------
- name: Check coverage percentage
if: steps.override.outputs.override == 'false'
run: |
COVERAGE_FILE="coverage.xml"
if [ ! -f "$COVERAGE_FILE" ]; then
echo "ERROR: Coverage file not found at $COVERAGE_FILE"
exit 1
fi

# Install xmllint if not available
if ! command -v xmllint &> /dev/null; then
sudo apt-get update && sudo apt-get install -y libxml2-utils
fi

COVERED=$(xmllint --xpath "string(//coverage/@lines-covered)" "$COVERAGE_FILE")
TOTAL=$(xmllint --xpath "string(//coverage/@lines-valid)" "$COVERAGE_FILE")
PERCENTAGE=$(python3 -c "covered=${COVERED}; total=${TOTAL}; print(round((covered/total)*100, 2))")

echo "Branch Coverage: $PERCENTAGE%"
echo "Required Coverage: 85%"

# Use Python to compare the coverage with 85
python3 -c "import sys; sys.exit(0 if float('$PERCENTAGE') >= 85 else 1)"
if [ $? -eq 1 ]; then
echo "ERROR: Coverage is $PERCENTAGE%, which is less than the required 85%"
exit 1
else
echo "SUCCESS: Coverage is $PERCENTAGE%, which meets the required 85%"
fi

#----------------------------------------------
# coverage enforcement summary
#----------------------------------------------
- name: Coverage enforcement summary
run: |
if [ "${{ steps.override.outputs.override }}" == "true" ]; then
echo "⚠️ Coverage checks bypassed: ${{ steps.override.outputs.reason }}"
echo "Please ensure this override is justified and temporary"
else
echo "✅ Coverage checks enforced - minimum 85% required"
fi

94 changes: 81 additions & 13 deletions .github/workflows/code-quality-checks.yml
Original file line number Diff line number Diff line change
@@ -1,17 +1,23 @@
name: Code Quality Checks
on:
push:
branches:
- main
pull_request:
branches:
- main

on: [pull_request]

jobs:
run-unit-tests:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]
dependency-version: ["default", "min"]
# Optimize matrix - test min/max on subset of Python versions
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:
#----------------------------------------------
# check-out repo and set-up python
Expand All @@ -29,6 +35,7 @@ jobs:
- name: Install Poetry
uses: snok/install-poetry@v1
with:
version: "2.2.1"
virtualenvs-create: true
virtualenvs-in-project: true
installer-parallel: true
Expand All @@ -41,7 +48,7 @@ jobs:
uses: actions/cache@v4
with:
path: .venv
key: venv-${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-${{ github.event.repository.name }}-${{ hashFiles('**/poetry.lock') }}
key: venv-${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-${{ matrix.dependency-version }}-${{ github.event.repository.name }}-${{ hashFiles('**/poetry.lock') }}
#----------------------------------------------
# install dependencies if cache does not exist
#----------------------------------------------
Expand All @@ -54,15 +61,47 @@ jobs:
- name: Install library
run: poetry install --no-interaction
#----------------------------------------------
# override with custom dependency versions
#----------------------------------------------
- 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

#----------------------------------------------
# run test suite
#----------------------------------------------
- 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
run-unit-tests-with-arrow:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
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:
#----------------------------------------------
# check-out repo and set-up python
Expand All @@ -80,6 +119,7 @@ jobs:
- name: Install Poetry
uses: snok/install-poetry@v1
with:
version: "2.2.1"
virtualenvs-create: true
virtualenvs-in-project: true
installer-parallel: true
Expand All @@ -92,7 +132,7 @@ jobs:
uses: actions/cache@v4
with:
path: .venv-pyarrow
key: venv-pyarrow-${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-${{ github.event.repository.name }}-${{ hashFiles('**/poetry.lock') }}
key: venv-pyarrow-${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-${{ matrix.dependency-version }}-${{ github.event.repository.name }}-${{ hashFiles('**/poetry.lock') }}
#----------------------------------------------
# install dependencies if cache does not exist
#----------------------------------------------
Expand All @@ -102,18 +142,44 @@ jobs:
#----------------------------------------------
# install your root project, if required
#----------------------------------------------
- name: Install Kerberos system dependencies
run: |
sudo apt-get update
sudo apt-get install -y libkrb5-dev
- name: Install library
run: poetry install --no-interaction --all-extras
#----------------------------------------------
# override with custom dependency versions
#----------------------------------------------
- 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
#----------------------------------------------
# run test suite
#----------------------------------------------
- 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
check-linting:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]
steps:
#----------------------------------------------
# check-out repo and set-up python
Expand All @@ -131,6 +197,7 @@ jobs:
- name: Install Poetry
uses: snok/install-poetry@v1
with:
version: "2.2.1"
virtualenvs-create: true
virtualenvs-in-project: true
installer-parallel: true
Expand Down Expand Up @@ -165,7 +232,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]
steps:
#----------------------------------------------
# check-out repo and set-up python
Expand All @@ -183,6 +250,7 @@ jobs:
- name: Install Poetry
uses: snok/install-poetry@v1
with:
version: "2.2.1"
virtualenvs-create: true
virtualenvs-in-project: true
installer-parallel: true
Expand Down
Loading
Loading