Skip to content

Commit 65b26fe

Browse files
committed
Release 3.30.0: changelog, version and documentation
patch by Bret McGuire; reviewed by Bret McGuire and Brad Schoening reference: #1282
1 parent 141853d commit 65b26fe

6 files changed

Lines changed: 49 additions & 54 deletions

File tree

CHANGELOG.rst

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,26 @@
1+
3.30.0
2+
======
3+
March 23, 2026
4+
5+
Features
6+
--------
7+
* Introduce pyproject.toml to explicitly declare build dependencies (CASSPYTHON-7)
8+
* Add Python 3.14 to CI, remove Python 3.9 (CASSPYTHON-4)
9+
* Mark eventlet, gevent and Twisted event loops as deprecated (CASSPYTHON-12)
10+
11+
Bug Fixes
12+
---------
13+
* Do not set timeout to None when calling execute_async in execute_concurrent (PYTHON-1354)
14+
* No C extension .so files in published binary Python whl packages of 3.29.3 (CASSPYTHON-3)
15+
* Win32 wheels do not include compiled libev modules (CASSPYTHON-5)
16+
17+
Others
18+
------
19+
* Remove obsolete __future__ import absolute_import (PR 1263)
20+
* Remove ez_setup for compatibility with setuptools v82 (PR 1268)
21+
* Replace usage of with await lock (PR 1270)
22+
* Update cassandra.util.Version to better support Cassandra version strings (CASSPYTHON-10)
23+
124
3.29.3
225
======
326
October 20, 2025

README-dev.rst

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ Running Integration Tests
7575
-------------------------
7676
In order to run integration tests, you must specify a version to run using the ``CASSANDRA_VERSION`` or ``DSE_VERSION`` environment variable::
7777

78-
CASSANDRA_VERSION=2.0.9 pytest tests/integration/standard
78+
CASSANDRA_VERSION=4.0.1 pytest tests/integration/standard
7979

8080
Or you can specify a cassandra directory (to test unreleased versions)::
8181

@@ -85,7 +85,7 @@ Specifying the usage of an already running Cassandra cluster
8585
------------------------------------------------------------
8686
The test will start the appropriate Cassandra clusters when necessary but if you don't want this to happen because a Cassandra cluster is already running the flag ``USE_CASS_EXTERNAL`` can be used, for example::
8787

88-
USE_CASS_EXTERNAL=1 CASSANDRA_VERSION=2.0.9 pytest tests/integration/standard
88+
USE_CASS_EXTERNAL=1 CASSANDRA_VERSION=4.0.1 pytest tests/integration/standard
8989

9090
Specify a Protocol Version for Tests
9191
------------------------------------
@@ -96,7 +96,7 @@ it with the ``PROTOCOL_VERSION`` environment variable::
9696

9797
Testing Multiple Python Versions
9898
--------------------------------
99-
Use tox to test all of Python 3.9 through 3.13 and pypy::
99+
Use tox to test all of Python 3.10 through 3.14 and pypy::
100100

101101
tox
102102

@@ -106,7 +106,7 @@ Running the Benchmarks
106106
======================
107107
There needs to be a version of cassandra running locally so before running the benchmarks, if ccm is installed:
108108

109-
ccm create benchmark_cluster -v 3.0.1 -n 1 -s
109+
ccm create benchmark_cluster -v 4.0.1 -n 1 -s
110110

111111
To run the benchmarks, pick one of the files under the ``benchmarks/`` dir and run it::
112112

README.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ Apache Cassandra Python Driver
1515
A modern, `feature-rich <https://github.com/datastax/python-driver#features>`_ and highly-tunable Python client library for Apache Cassandra (2.1+) and
1616
DataStax Enterprise (4.7+) using exclusively Cassandra's binary protocol and Cassandra Query Language v3.
1717

18-
The driver supports Python 3.9 through 3.13.
18+
The driver supports Python 3.10 through 3.14.
1919

2020
**Note:** DataStax products do not support big-endian systems.
2121

docs/index.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ A Python client driver for `Apache Cassandra® <http://cassandra.apache.org>`_.
44
This driver works exclusively with the Cassandra Query Language v3 (CQL3)
55
and Cassandra's native protocol. Cassandra 2.1+ is supported, including DSE 4.7+.
66

7-
The driver supports Python 3.9 through 3.13.
7+
The driver supports Python 3.10 through 3.14.
88

99
This driver is open source under the
1010
`Apache v2 License <http://www.apache.org/licenses/LICENSE-2.0.html>`_.

docs/installation.rst

Lines changed: 19 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ Installation
33

44
Supported Platforms
55
-------------------
6-
Python 3.9 through 3.13 are supported. Both CPython (the standard Python
6+
Python 3.10 through 3.14 are supported. Both CPython (the standard Python
77
implementation) and `PyPy <http://pypy.org>`_ are supported and tested.
88

99
Linux, OSX, and Windows are supported.
@@ -26,7 +26,7 @@ To check if the installation was successful, you can run::
2626

2727
python -c 'import cassandra; print(cassandra.__version__)'
2828

29-
It should print something like "3.29.3".
29+
This command should print something like ``3.30.0``.
3030

3131
.. _installation-datastax-graph:
3232

@@ -62,8 +62,8 @@ just run ``apt-get install python-snappy``.)
6262
(*Optional*) Metrics Support
6363
----------------------------
6464
The driver has built-in support for capturing :attr:`.Cluster.metrics` about
65-
the queries you run. However, the ``scales`` library is required to
66-
support this::
65+
the queries you run. Note that the ``scales`` module is required to
66+
support metrics. This module is available from Pypi and can be installed with::
6767

6868
pip install scales
6969

@@ -91,23 +91,19 @@ details at `PYTHON-1351 <https://datastax-oss.atlassian.net/browse/PYTHON-1351>`
9191

9292
Speeding Up Installation
9393
^^^^^^^^^^^^^^^^^^^^^^^^
94-
9594
By default, installing the driver through ``pip`` uses a pre-compiled, platform-specific wheel when available.
9695
If using a source distribution rather than a wheel, Cython is used to compile certain parts of the driver.
9796
This makes those hot paths faster at runtime, but the Cython compilation
9897
process can take a long time -- as long as 10 minutes in some environments.
9998

10099
In environments where performance is less important, it may be worth it to
101100
:ref:`disable Cython as documented below <cython-extensions>`.
102-
You can also use ``CASS_DRIVER_BUILD_CONCURRENCY`` to increase the number of
103-
threads used to build the driver and any C extensions:
104-
105-
.. code-block:: bash
106101

107-
$ # installing from source
108-
$ CASS_DRIVER_BUILD_CONCURRENCY=8 python setup.py install
109-
$ # installing from pip
110-
$ CASS_DRIVER_BUILD_CONCURRENCY=8 pip install cassandra-driver
102+
Cython also supports concurrent builds of native extensions. The ``build-concurrency`` key in the
103+
``tool.cassandra-driver`` table of pyproject.toml is an integer value which specifies the number of
104+
concurrent builds Cython may execute. The value for this key must be a non-negative integer; the default is zero,
105+
indicating no concurrent builds. Note that Cython's concurrent builds use the standard ``multiprocessing`` package
106+
so this library must be availble is concurrent builds are used.
111107

112108
OSX Installation Error
113109
^^^^^^^^^^^^^^^^^^^^^^
@@ -147,8 +143,7 @@ installed. You can find the list of dependencies in
147143

148144
Once the dependencies are installed, simply run::
149145

150-
python setup.py install
151-
146+
pip install .
152147

153148
(*Optional*) Non-python Dependencies
154149
------------------------------------
@@ -161,9 +156,10 @@ for token-aware routing with the ``Murmur3Partitioner``,
161156
`libev <http://software.schmorp.de/pkg/libev.html>`_ event loop integration,
162157
and Cython optimized extensions.
163158

164-
When installing manually through setup.py, you can disable both with
165-
the ``--no-extensions`` option, or selectively disable them with
166-
with ``--no-murmur3``, ``--no-libev``, or ``--no-cython``.
159+
Some or all of these native extensions can be disabled by changing the corresponding
160+
key in the ``tool.cassandra-driver`` table of pyproject.toml to ``false``. Please consult
161+
the ``build-murmur3-extension``, ``build-libev-extension`` and ``build-cython-extensions``
162+
keys (respectively) to disable these extensions.
167163

168164
To compile the extensions, ensure that GCC and the Python headers are available.
169165

@@ -184,36 +180,12 @@ See :ref:`windows_build` for notes on configuring the build environment on Windo
184180
Cython-based Extensions
185181
~~~~~~~~~~~~~~~~~~~~~~~
186182
By default, this package uses `Cython <http://cython.org/>`_ to optimize core modules and build custom extensions.
187-
This is not a hard requirement, but is engaged by default to build extensions offering better performance than the
183+
This is not a hard requirement, but is enabled by default to build extensions offering better performance than the
188184
pure Python implementation.
189185

190-
This is a costly build phase, especially in clean environments where the Cython compiler must be built
191-
This build phase can be avoided using the build switch, or an environment variable::
192-
193-
python setup.py install --no-cython
194-
195-
Alternatively, an environment variable can be used to switch this option regardless of
196-
context::
197-
198-
CASS_DRIVER_NO_CYTHON=1 <your script here>
199-
- or, to disable all extensions:
200-
CASS_DRIVER_NO_EXTENSIONS=1 <your script here>
201-
202-
This method is required when using pip, which provides no other way of injecting user options in a single command::
203-
204-
CASS_DRIVER_NO_CYTHON=1 pip install cassandra-driver
205-
CASS_DRIVER_NO_CYTHON=1 sudo -E pip install ~/python-driver
206-
207-
The environment variable is the preferred option because it spans all invocations of setup.py, and will
208-
prevent Cython from being materialized as a setup requirement.
209-
210-
If your sudo configuration does not allow SETENV, you must push the option flag down via pip. However, pip
211-
applies these options to all dependencies (which break on the custom flag). Therefore, you must first install
212-
dependencies, then use install-option::
213-
214-
sudo pip install futures
215-
sudo pip install --install-option="--no-cython"
216-
186+
This process does take some time, however, so if you wish to build without generating these extensions using
187+
Cython you can do so by changing the ``build-cython-extensions`` key in the ``tool.cassandra-driver`` table of pyproject.toml.
188+
By default this key is set to ``true``; simply changing it to ``false`` will disable all Cython functionality.
217189

218190
Supported Event Loops
219191
^^^^^^^^^^^^^^^^^^^^^
@@ -250,7 +222,7 @@ install libev using any Windows package manager. For example, to install using
250222
$ vcpkg install libev
251223

252224
If successful, you should be able to build and install the extension
253-
(just using ``setup.py build`` or ``setup.py install``) and then use
225+
(just using ``pip install`` or ``pip install -e``) and then use
254226
the libev event loop by doing the following:
255227

256228
.. code-block:: python

tox.ini

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[tox]
2-
envlist = py{39,310,311,312,313},pypy
2+
envlist = py{310,311,312,313,314},pypy
33

44
[base]
55
deps = pytest

0 commit comments

Comments
 (0)