Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
23 changes: 23 additions & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
@@ -1,3 +1,26 @@
3.30.0
======
March 23, 2026

Features
--------
* Introduce pyproject.toml to explicitly declare build dependencies (CASSPYTHON-7)
* Add Python 3.14 to CI, remove Python 3.9 (CASSPYTHON-4)
* Mark eventlet, gevent and Twisted event loops as deprecated (CASSPYTHON-12)

Bug Fixes
---------
* Do not set timeout to None when calling execute_async in execute_concurrent (PYTHON-1354)
* No C extension .so files in published binary Python whl packages of 3.29.3 (CASSPYTHON-3)
* Win32 wheels do not include compiled libev modules (CASSPYTHON-5)

Others
------
* Remove obsolete __future__ import absolute_import (PR 1263)
* Remove ez_setup for compatibility with setuptools v82 (PR 1268)
* Replace usage of with await lock (PR 1270)
* Update cassandra.util.Version to better support Cassandra version strings (CASSPYTHON-10)

3.29.3
======
October 20, 2025
Expand Down
2 changes: 1 addition & 1 deletion README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ Apache Cassandra Python Driver
A modern, `feature-rich <https://github.com/datastax/python-driver#features>`_ and highly-tunable Python client library for Apache Cassandra (2.1+) and
DataStax Enterprise (4.7+) using exclusively Cassandra's binary protocol and Cassandra Query Language v3.

The driver supports Python 3.9 through 3.13.
The driver supports Python 3.10 through 3.14.

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

Expand Down
55 changes: 13 additions & 42 deletions docs/installation.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ Installation

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

Linux, OSX, and Windows are supported.
Expand All @@ -24,9 +24,9 @@ Verifying your Installation
---------------------------
To check if the installation was successful, you can run::

python -c 'import cassandra; print(cassandra.__version__)'
python -c 'import cassandra; print(cassandra.ProtocolVersion.SUPPORTED_VERSIONS)'

It should print something like "3.29.3".
This command should print something like "(66, 65, 6, 5, 4, 3, 2, 1)".
Comment on lines +27 to +29
Copy link

Copilot AI Mar 20, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The new verification command prints ProtocolVersion.SUPPORTED_VERSIONS, which doesn’t indicate which driver version was installed and the tuple contents can vary as protocol support changes. Since cassandra.__version__ still exists (it’s set from importlib.metadata in cassandra/__init__.py), consider keeping the original print(cassandra.__version__) (or documenting importlib.metadata.version('cassandra-driver')) so users can confirm the installed package version.

Copilot uses AI. Check for mistakes.

.. _installation-datastax-graph:

Expand Down Expand Up @@ -99,15 +99,9 @@ process can take a long time -- as long as 10 minutes in some environments.

In environments where performance is less important, it may be worth it to
:ref:`disable Cython as documented below <cython-extensions>`.
You can also use ``CASS_DRIVER_BUILD_CONCURRENCY`` to increase the number of
threads used to build the driver and any C extensions:
You can also use ``build-concurrency`` key in the ``tool.cassandra-driver`` table of pyproject.toml to
increase the number of threads used to build the driver and any C extensions.
Comment on lines +102 to +103
Copy link

Copilot AI Mar 20, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Line 102 has trailing whitespace, and the sentence is missing an article (“use the build-concurrency key…”). Also, build-concurrency is an integer in pyproject.toml (default 0); it would help to note that users should set it to a positive integer to override the default behavior.

Copilot uses AI. Check for mistakes.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe: "Use the build-concurrency setting in pyproject.toml under [tool.cassandra-driver] to enable multi-threaded builds for the driver and C extensions."


.. code-block:: bash

$ # installing from source
$ CASS_DRIVER_BUILD_CONCURRENCY=8 python setup.py install
$ # installing from pip
$ CASS_DRIVER_BUILD_CONCURRENCY=8 pip install cassandra-driver

OSX Installation Error
^^^^^^^^^^^^^^^^^^^^^^
Expand Down Expand Up @@ -161,9 +155,10 @@ for token-aware routing with the ``Murmur3Partitioner``,
`libev <http://software.schmorp.de/pkg/libev.html>`_ event loop integration,
and Cython optimized extensions.

When installing manually through setup.py, you can disable both with
the ``--no-extensions`` option, or selectively disable them with
with ``--no-murmur3``, ``--no-libev``, or ``--no-cython``.
When installing manually these options can be disabled by changing the corresponding
key in the ``tool.cassandra-driver`` table of pyproject.toml to "false". Please consult
Copy link

Copilot AI Mar 20, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pyproject.toml boolean values should be true/false (unquoted). The docs currently say to set these keys to "false", which would be a TOML string and won’t match the actual config types in [tool.cassandra-driver].

Suggested change
key in the ``tool.cassandra-driver`` table of pyproject.toml to "false". Please consult
key in the ``tool.cassandra-driver`` table of pyproject.toml to ``false``. Please consult

Copilot uses AI. Check for mistakes.
the ``build-murmur3-extension``, ``build-libev-extension`` and ``build-cython-extensions``
keys (respectively) to disable these extensions.

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

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

This is a costly build phase, especially in clean environments where the Cython compiler must be built
This build phase can be avoided using the build switch, or an environment variable::

python setup.py install --no-cython

Alternatively, an environment variable can be used to switch this option regardless of
context::

CASS_DRIVER_NO_CYTHON=1 <your script here>
- or, to disable all extensions:
CASS_DRIVER_NO_EXTENSIONS=1 <your script here>

This method is required when using pip, which provides no other way of injecting user options in a single command::

CASS_DRIVER_NO_CYTHON=1 pip install cassandra-driver
CASS_DRIVER_NO_CYTHON=1 sudo -E pip install ~/python-driver

The environment variable is the preferred option because it spans all invocations of setup.py, and will
prevent Cython from being materialized as a setup requirement.

If your sudo configuration does not allow SETENV, you must push the option flag down via pip. However, pip
applies these options to all dependencies (which break on the custom flag). Therefore, you must first install
dependencies, then use install-option::

sudo pip install futures
sudo pip install --install-option="--no-cython"

This process does take some time, however, so if you wish to build without generating these extensions using
Cython you can do so by changing the ``build-cython-extensions`` key in the ``tool.cassandra-driver`` table of pyproject.toml.
By default this key is set to "true"; simply changing it to "false" will disable all Cython functionality.
Copy link

Copilot AI Mar 20, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same TOML typing issue here: the docs say the build-cython-extensions key is set to "true" and should be changed to "false", but in TOML this should be the boolean literals true/false (without quotes), matching the values in [tool.cassandra-driver] in pyproject.toml.

Suggested change
By default this key is set to "true"; simply changing it to "false" will disable all Cython functionality.
By default this key is set to ``true``; simply changing it to ``false`` will disable all Cython functionality.

Copilot uses AI. Check for mistakes.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1 on mono-space or italics


Supported Event Loops
^^^^^^^^^^^^^^^^^^^^^
Expand Down
Loading