Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
111 commits
Select commit Hold shift + click to select a range
9aa5ddc
Add optional query_params parameter to QueryMessage
sylwiaszunejko Mar 12, 2026
8bba6eb
Introduce skip_scylla_version_lt for integration tests
sylwiaszunejko Mar 13, 2026
bc864c1
Add client routes data types and route store
sylwiaszunejko Mar 17, 2026
ac91295
Add client routes handler for Private Link support
sylwiaszunejko Mar 17, 2026
1e0e6ca
Add ClientRoutesEndPoint and ClientRoutesEndPointFactory
sylwiaszunejko Mar 10, 2026
3202302
Integrate client routes handler into Cluster and ControlConnection
sylwiaszunejko Mar 10, 2026
b205f83
tests: add unit tests for client routes
sylwiaszunejko Mar 10, 2026
6743edd
tests: add integration tests for client routes
sylwiaszunejko Mar 11, 2026
efdc08a
Release 3.29.9: changelog, version and documentation
dkropachev Mar 18, 2026
fec90ae
Specify auth superuser name for tests (#759)
sylwiaszunejko Mar 23, 2026
153c913
(improvement) cqltypes: fast-path lookup_casstype() for simple type n…
mykaul Mar 6, 2026
70995bd
tests: remove redundant 10s sleep from setup_keyspace()
mykaul Mar 27, 2026
7931113
tests: replace high-priority time.sleep() calls with polling
mykaul Mar 27, 2026
4a23f72
tests: replace medium-priority time.sleep() calls with polling
mykaul Mar 27, 2026
9fe9931
tests: fix flaky tablet tests by increasing trace timeout and polling…
mykaul Mar 29, 2026
d31ea37
tests: replace fixed time.sleep() calls with polling (~17s saving)
mykaul Mar 29, 2026
e2a9511
Replace SCYLLA_EXT_OPTS env var with ccm updateconf options for auth …
sylwiaszunejko Mar 31, 2026
44cf752
chore(deps): update dependency pygments to v2.20.0 [security]
renovate[bot] Mar 30, 2026
d5f9d37
(fix) cluster: handle None control_connection_timeout in wait_for_sch…
mykaul Mar 26, 2026
94438c6
tests: fix flaky TestTwistedConnection.test_connection_initialization
mykaul Mar 26, 2026
4bff340
fix: correct 'clustering_key' to 'clustering' in column kind filter
mykaul Mar 24, 2026
ad12bed
chore(deps): update dependency tornado to v6.5.5 [security]
renovate[bot] Mar 30, 2026
c898583
metadata: conditionally skip triggers query for ScyllaDB
mykaul Dec 23, 2025
c3e2378
Fix code quality issues in test_cluster.py
Copilot Dec 23, 2025
8e6c4d4
Fix additional '== None' comparison for consistency
Copilot Dec 23, 2025
caa98b6
pool: drop per-query connection log
avikivity Apr 4, 2026
e10bf39
Fix CQL injection in Connection.set_keyspace_blocking and set_keyspac…
mykaul Mar 22, 2026
4502520
Add unit test for Session.set_keyspace double-quote escaping
mykaul Mar 25, 2026
117abb2
tests: fix NLB replacement test bootstrap crash due to missing rackdc…
mykaul Mar 28, 2026
f7e9bc2
Fix ExponentialBackoffRetryPolicy.__init__ missing self in super() call
mykaul Apr 7, 2026
62cfd1f
tests: detect stale Cython extensions at test startup
mykaul Apr 7, 2026
442074c
docs: replace direct setup.py invocations with pip in installation guide
mykaul Apr 7, 2026
ee98fd0
tests: fix incorrect retry count in execute_with_long_wait_retry erro…
mykaul Mar 27, 2026
f7890b9
tests: standardize test_cluster.py to --smp 2
mykaul Mar 27, 2026
aa0043a
tests: consolidate cluster topologies to reduce cluster teardown/setup
mykaul Mar 27, 2026
dd15509
tests: add test ordering by cluster topology to minimize restarts
mykaul Mar 27, 2026
b038f4f
tests: switch 6 test files from 3-node to single-node cluster
mykaul Mar 27, 2026
ca0758d
tests: reduce cluster churn in LoadBalancingPolicyTests
mykaul Mar 27, 2026
226bd10
tests: fix auth warning assertion for --smp 2 compatibility
mykaul Mar 27, 2026
4eb1bfa
tests: shorten cluster name to avoid Unix socket path limit
mykaul Mar 28, 2026
f3ec881
tests: save/restore SCYLLA_EXT_OPTS to prevent env variable leak
mykaul Mar 28, 2026
92aa669
ci: cache Scylla download across CI matrix jobs
mykaul Mar 28, 2026
56498e3
tests: fix flaky SSL test by increasing connect timeout and retry budget
mykaul Mar 29, 2026
db317eb
tests: register custom 'last' pytest mark to suppress warning
mykaul Mar 29, 2026
5094118
perf: use stdlib bisect and attrgetter in tablets.py
mykaul Mar 20, 2026
cc78c22
Add Jira PR sync workflow
dkropachev Apr 13, 2026
d2e3fef
PM-285: Consolidate Jira sync workflow to single job calling main_pr_…
dani-tweig Apr 14, 2026
006babf
chore(deps): update github artifact actions
renovate[bot] Apr 15, 2026
293e4a1
chore(deps): update actions/cache action to v5
renovate[bot] Apr 15, 2026
ee0bc66
CI: fix id-token permission for Test wheels building
nikagra Apr 15, 2026
284bd90
docs: update theme 1.9
dgarcia360 Mar 12, 2026
ca5b8c2
pool: fix inverted cooldown check in _get_shard_aware_endpoint
nikagra Apr 16, 2026
11b4275
CI: remove dead upload_pypi job from reusable workflow, rename to lib…
nikagra Apr 17, 2026
3aa5935
CI: remove ineffective GITHUB_WORKFLOW_REF override from cibuildwheel…
nikagra Apr 17, 2026
5cd0158
chore(deps): update astral-sh/setup-uv action to v8
renovate[bot] Apr 21, 2026
32548a6
Fix unfilled format string in add_execution_profile timeout message
mykaul Apr 14, 2026
d83adab
Add timeout and in-flight observability to OperationTimedOut
mykaul Apr 14, 2026
ea60789
Add tests for libev atexit cleanup bug
Copilot Jan 31, 2026
9ce7024
Implement Solution 1: Fix atexit registration to prevent shutdown cra…
Copilot Feb 3, 2026
cd9f525
Update copyright header to ScyllaDB in test_libevreactor_shutdown.py
Copilot Feb 22, 2026
0842348
fix(build): use dict-style license for setuptools<77 compatibility
fruch May 4, 2026
e6f9e9f
Remove oss/ent_scylla_version params from xfail_scylla_version_lt
sylwiaszunejko May 6, 2026
0d215f4
cluster: add Session.wait_for_schema_agreement
dkropachev May 7, 2026
ef7c2d0
control-connection: deprecate ControlConnection.wait_for_schema_agree…
dkropachev May 7, 2026
51dd366
connection: clean up failed heartbeat sends
dkropachev May 7, 2026
84b599c
cluster: add control-connection query fallback
dkropachev May 7, 2026
442f1ed
Release 3.29.10: changelog, version and documentation
dkropachev May 10, 2026
69bb8ef
tests: replace SimpleStrategy with NetworkTopologyStrategy
sylwiaszunejko Apr 22, 2026
445b5af
tests: bootstrap 3 new nodes in full node replacement test
sylwiaszunejko Apr 22, 2026
2b5dd16
tests: xfail LWT tests on Scylla versions without tablet LWT support
sylwiaszunejko Apr 23, 2026
e7cb651
tests: xfail tests on Scylla version without indexes tablet support
sylwiaszunejko May 4, 2026
fe2a943
test_replicas_are_queried: use dedicated keyspace with RF=1 and table…
sylwiaszunejko May 5, 2026
b9813e7
ci: update Scylla test version from 2025.2 to 2026.1
mykaul Mar 29, 2026
fb13815
Replace SimpleStrategy with NetworkTopologyStrategy across codebase
roydahan May 11, 2026
f7d945f
build(deps): bump urllib3 from 2.6.3 to 2.7.0 in /docs
dependabot[bot] May 12, 2026
cf01c3f
tests: use tablets-disabled keyspace instead of xfail for scylladb/sc…
sylwiaszunejko May 15, 2026
a0eb304
asyncio: fix SSL connections by using native TLS transport
roydahan May 11, 2026
44bc95a
Pin GitHub Actions to commit hashes and enforce pinning
sylwiaszunejko May 21, 2026
037118e
chore(deps): update turtlebrowser/get-conan digest to c171f29
renovate[bot] May 22, 2026
c08913b
ci: update scylladb/github-automation to latest main hash
sylwiaszunejko Jun 2, 2026
28ddc07
tests: reduce nested type/UDT depth to 12 for new CQL nesting limit
sylwiaszunejko Jun 10, 2026
bf7966f
Reduce nesting depth in tests to respect server CQL limit
sylwiaszunejko Jun 10, 2026
2e0ae94
libev reactor: Defer socket close until after watchers stop
Lorak-mmk Jun 12, 2026
24788e3
libev reactor: Return from watchers for closed connection
Lorak-mmk Jun 12, 2026
29d01e2
factory: raise on closed connections
Lorak-mmk Jun 12, 2026
f5dea1d
CI: Use correct hash for pypa/gh-action-pypi-publish
Lorak-mmk Jun 15, 2026
763af09
Release 3.29.11
Lorak-mmk Jun 15, 2026
c1bfd54
docs: update theme 1.9.2
dgarcia360 Apr 16, 2026
766898d
Remove unused imports from driver code
mykaul Jun 3, 2026
e48f3c6
Remove unused imports from tests
mykaul Jun 3, 2026
6471abe
CI: skip 32-bit Windows wheel builds
mykaul Jun 29, 2026
03c4c96
fix: add missing scope validation in Session.wait_for_schema_agreement
mykaul Jun 29, 2026
8c06880
chore(deps): update dependency tornado to v6.5.7 [security]
renovate[bot] Jun 18, 2026
0fa8f1a
build(deps): bump aiohttp from 3.13.5 to 3.14.1 in /docs
mykaul Jun 29, 2026
ad8636e
policies: treat SERIAL/LOCAL_SERIAL consistency as LWT for routing
mykaul May 13, 2026
ca42a54
policies: prevent retry downgrade from serial to non-serial consistency
mykaul May 20, 2026
4753428
test_libevreactor: Restore preparer after cleanup
sylwiaszunejko Jun 18, 2026
721eacf
pyproject.toml: Add setuptools to dev group
sylwiaszunejko Jun 18, 2026
5694c85
CI: turn silent unit-test skips into failures
sylwiaszunejko Jun 18, 2026
26c201a
Fix Session._set_keyspace_for_all_pools to report all pools' errors
sylwiaszunejko Jun 18, 2026
34490d3
test_libevreactor_shutdown: Use installed wheel in subprocess
sylwiaszunejko Jun 22, 2026
8f772c8
build(deps): bump soupsieve from 2.8.3 to 2.8.4 in /docs
dependabot[bot] Jul 12, 2026
6e12577
test: drop USE_CASS_EXTERNAL integration mode
dkropachev Jul 13, 2026
c7f5c98
protocol_features: construct ProtocolFeatures with keyword arguments
nikagra Jul 16, 2026
ea1ff33
protocol: pass negotiated ProtocolFeatures to message serialization
nikagra Jul 16, 2026
e605de2
docs: document encode_message contract change
nikagra Jul 16, 2026
bcc2d3d
pool: honor explicit SSL config for shard-aware ports
dkropachev Jul 20, 2026
fa14e80
DRIVER-153: negotiate and implement SCYLLA_USE_METADATA_ID extension
nikagra Jul 16, 2026
b8b714c
DRIVER-153: tests for SCYLLA_USE_METADATA_ID extension
nikagra Jul 21, 2026
a4d81c6
(improvement) row_parser: cache ParseDesc for prepared statements
mykaul Mar 15, 2026
d0549f7
(improvement) row_parser: address PR review feedback
mykaul Mar 20, 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
2 changes: 1 addition & 1 deletion .github/dependabot.yml
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
version: 2
updates:
- package-ecosystem: "pip"
- package-ecosystem: "uv"
directory: "/docs"
schedule:
interval: "daily"
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build-pre-release.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -15,7 +15,7 @@ on:

jobs:
build-and-publish:
uses: ./.github/workflows/lib-build-and-push.yml
uses: ./.github/workflows/lib-build.yml
with:
python-version: ${{ inputs.python-version }}
target: ${{ inputs.target }}
13 changes: 7 additions & 6 deletions .github/workflows/build-push.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -10,11 +10,12 @@ on:
jobs:
build-and-publish:
name: "Build wheels"
uses: ./.github/workflows/lib-build-and-push.yml
with:
upload: false
uses: ./.github/workflows/lib-build.yml

# TODO: Remove when https://github.com/pypa/gh-action-pypi-publish/issues/166 is fixed and update build-and-publish.with.upload to ${{ endsWith(github.event.ref, 'scylla') }}
# Publishing is a separate job (not inside the reusable workflow) because PyPI Trusted Publishing
# requires the *caller* workflow path in the OIDC token. A reusable workflow would embed its own
# path instead, causing an `invalid-publisher` error on the PyPI side.
# See: https://github.com/pypa/gh-action-pypi-publish/issues/166
publish:
name: "Publish wheels to PyPi"
if: ${{ endsWith(github.event.ref, 'scylla') }}
Expand All@@ -23,11 +24,11 @@ jobs:
permissions:
id-token: write
steps:
- uses: actions/download-artifact@v7
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
path: dist
merge-multiple: true

- uses: pypa/gh-action-pypi-publish@release/v1
- uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # v1.14.0
with:
skip-existing: true
4 changes: 1 addition & 3 deletions .github/workflows/build-test.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -18,6 +18,4 @@ jobs:
test-wheels-build:
name: "Test wheels building"
if: "!contains(github.event.pull_request.labels.*.name, 'disable-test-build')"
uses: ./.github/workflows/lib-build-and-push.yml
with:
upload: false
uses: ./.github/workflows/lib-build.yml
18 changes: 18 additions & 0 deletions .github/workflows/call_jira_sync.yml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
name: Sync Jira Based on PR Events

on:
pull_request_target:
types: [opened, edited, ready_for_review, review_requested, labeled, unlabeled, closed]

permissions:
contents: read
pull-requests: write
issues: write

jobs:
jira-sync:
uses: scylladb/github-automation/.github/workflows/main_pr_events_jira_sync.yml@47138e9130250ee1a35166cff7dd0e94c8897196 # main 2026-06-01
with:
caller_action: ${{ github.event.action }}
secrets:
caller_jira_auth: ${{ secrets.USER_AND_KEY_FOR_JIRA_AUTOMATION }}
4 changes: 2 additions & 2 deletions .github/workflows/docs-pages.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -24,14 +24,14 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
ref: ${{ github.event.repository.default_branch }}
persist-credentials: false
fetch-depth: 0

- name: Install uv
uses: astral-sh/setup-uv@v7
uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
with:
working-directory: docs
enable-cache: true
Expand Down
7 changes: 5 additions & 2 deletions .github/workflows/docs-pr.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -2,6 +2,9 @@ name: "Docs / Build PR"
# For more information,
# see https://sphinx-theme.scylladb.com/stable/deployment/production.html#available-workflows

permissions:
contents: read

on:
push:
branches:
Expand All@@ -28,13 +31,13 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
fetch-depth: 0

- name: Install uv
uses: astral-sh/setup-uv@v7
uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
with:
working-directory: docs
enable-cache: true
Expand Down
16 changes: 11 additions & 5 deletions .github/workflows/integration-tests.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -38,7 +38,7 @@ jobs:
if: "!contains(github.event.pull_request.labels.*.name, 'disable-integration-tests')"
runs-on: ubuntu-24.04
env:
SCYLLA_VERSION: release:2025.2
SCYLLA_VERSION: release:2026.1
strategy:
fail-fast: false
matrix:
Expand All@@ -56,10 +56,10 @@ jobs:
event_loop_manager: "asyncore"

steps:
- uses: actions/checkout@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- name: Set up JDK ${{ matrix.java-version }}
uses: actions/setup-java@v5
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
java-version: ${{ matrix.java-version }}
distribution: 'adopt'
Expand All@@ -68,7 +68,7 @@ jobs:
run: sudo apt-get install libev4 libev-dev

- name: Install uv
uses: astral-sh/setup-uv@v7
uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
with:
python-version: ${{ matrix.python-version }}

Expand All@@ -77,6 +77,12 @@ jobs:
- name: Build driver
run: uv sync

- name: Cache Scylla download
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
with:
path: ~/.ccm/repository
key: scylla-${{ env.SCYLLA_VERSION }}-${{ runner.os }}

# This is to get honest accounting of test time vs download time vs build time.
# Not strictly necessary for running tests.
- name: Download Scylla
Expand All@@ -92,4 +98,4 @@ jobs:
if [[ "${{ matrix.python-version }}" =~ t$ ]]; then
export PYTHON_GIL=0
fi
uv run pytest tests/integration/standard/ tests/integration/cqlengine/
uv run pytest -v tests/integration/standard/ tests/integration/cqlengine/
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,8 @@
name: Build and upload to PyPi
name: Build wheels

on:
workflow_call:
inputs:
upload:
description: 'Upload to PyPI'
type: boolean
required: false
default: false

python-version:
description: 'Python version to run on'
type: string
Expand DownExpand Up@@ -83,11 +77,11 @@ jobs:
include: ${{ fromJson(needs.prepare-matrix.outputs.matrix) }}

steps:
- uses: actions/checkout@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- name: Checkout tag ${{ inputs.target_tag }}
if: inputs.target_tag != ''
uses: actions/checkout@v6
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
ref: ${{ inputs.target_tag }}

Expand All@@ -102,7 +96,7 @@ jobs:
echo "CIBW_BEFORE_TEST_WINDOWS=(exit 0)" >> $GITHUB_ENV;

- name: Install uv
uses: astral-sh/setup-uv@v7
uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
with:
python-version: ${{ inputs.python-version }}

Expand All@@ -117,7 +111,7 @@ jobs:

- name: Install Conan
if: runner.os == 'Windows'
uses: turtlebrowser/get-conan@main
uses: turtlebrowser/get-conan@c171f295f3f507360ee018736a6608731aa2109d # v1.2

- name: Configure libev for Windows
if: runner.os == 'Windows'
Expand DownExpand Up@@ -146,14 +140,14 @@ jobs:
if: matrix.target != 'linux-aarch64'
shell: bash
run: |
GITHUB_WORKFLOW_REF="scylladb/python-driver/.github/workflows/lib-build-and-push.yml@refs/heads/master" cibuildwheel --output-dir wheelhouse
cibuildwheel --output-dir wheelhouse

- name: Build wheels for linux aarch64
if: matrix.target == 'linux-aarch64'
run: |
GITHUB_WORKFLOW_REF="scylladb/python-driver/.github/workflows/lib-build-and-push.yml@refs/heads/master" CIBW_BUILD="cp3*" cibuildwheel --archs aarch64 --output-dir wheelhouse
CIBW_BUILD="cp3*" cibuildwheel --archs aarch64 --output-dir wheelhouse

- uses: actions/upload-artifact@v6
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: wheels-${{ matrix.target }}-${{ matrix.os }}
path: ./wheelhouse/*.whl
Expand All@@ -162,34 +156,17 @@ jobs:
name: Build source distribution
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- name: Install uv
uses: astral-sh/setup-uv@v7
uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
with:
python-version: ${{ inputs.python-version }}

- name: Build sdist
run: uv build --sdist

- uses: actions/upload-artifact@v6
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: source-dist
path: dist/*.tar.gz

upload_pypi:
if: inputs.upload
needs: [build-wheels, build-sdist]
runs-on: ubuntu-24.04
permissions:
id-token: write

steps:
- uses: actions/download-artifact@v7
with:
path: dist
merge-multiple: true

- uses: pypa/gh-action-pypi-publish@release/v1
with:
skip-existing: true
12 changes: 7 additions & 5 deletions .github/workflows/publish-manually.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -39,15 +39,17 @@ on:
jobs:
build-and-publish:
name: "Build wheels"
uses: ./.github/workflows/lib-build-and-push.yml
uses: ./.github/workflows/lib-build.yml
with:
upload: false
python-version: ${{ inputs.python-version }}
ignore_tests: ${{ inputs.ignore_tests }}
target_tag: ${{ inputs.target_tag }}
target: ${{ inputs.target }}

# TODO: Remove when https://github.com/pypa/gh-action-pypi-publish/issues/166 is fixed and update build-and-publish.with.upload to ${{ inputs.upload }}
# Publishing is a separate job (not inside the reusable workflow) because PyPI Trusted Publishing
# requires the *caller* workflow path in the OIDC token. A reusable workflow would embed its own
# path instead, causing an `invalid-publisher` error on the PyPI side.
# See: https://github.com/pypa/gh-action-pypi-publish/issues/166
publish:
name: "Publish wheels to PyPi"
needs: build-and-publish
Expand All@@ -56,11 +58,11 @@ jobs:
permissions:
id-token: write
steps:
- uses: actions/download-artifact@v7
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
path: dist
merge-multiple: true

- uses: pypa/gh-action-pypi-publish@release/v1
- uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # v1.14.0
with:
skip-existing: true
Loading
Loading