Apsw

Latest version: v3.49.1.0

Safety actively analyzes 723177 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 5 of 24

3.40.0.0

========

Fixed regression in statement cache update (version 3.38.1-r1) where
trailing whitespace in queries would be incorrectly treated as
incomplete execution (:issue:`376`)

Added :doc:`ext` (:issue:`369`)

Added more Pythonic attributes as an alternative to getters and
setters, including :attr:`Connection.in_transaction`,
:attr:`Connection.exec_trace`, :attr:`Connection.row_trace`,
:attr:`Cursor.exec_trace`, :attr:`Cursor.row_trace`,
:attr:`Cursor.connection` (:issue:`371`)

Completed: To the extent permitted by CPython APIs every item has the
same docstring as this documentation. Every API can use named
parameters. The :source:`type stubs <apsw/__init__.pyi>` cover
everything including constants. The type stubs also include
documentation for everything, which for example Visual Studio Code
displays as you type or hover. There is a single source of
documentation in the source code, which is then automatically
extracted to make this documentation, docstrings, and docstrings in
the type stubs.

:doc:`example` updated and appearance improved (:issue:`367`).

3.39.4.0

========

Added :meth:`Connection.cache_stats` to provide more information about
the statement cache.

:meth:`Cursor.execute` now uses `sqlite_prepare_v3
<https://sqlite.org/c3ref/prepare.html>`__ which allows supplying
`flags <https://sqlite.org/c3ref/c_prepare_normalize.html#sqlitepreparenormalize>`__.

:meth:`Cursor.execute` has a new `can_cache` parameter to control
whether the query can use the statement cache. One example use is
with :meth:`authorizers <Connection.set_authorizer>` because they only
run during prepare, which doesn't happen with already cached
statements.

(The :meth:`Cursor.execute` additional parameters are keyword only and
also present in :meth:`Cursor.executemany`, and the corresponding
:meth:`Connection.execute` and :meth:`Connection.executemany`
methods.)

Added :attr:`Cursor.is_readonly`, :attr:`Cursor.is_explain`, and
:attr:`Cursor.expanded_sql`.

Updated processing named bindings so that types registered with
:class:`collections.abc.Mapping` (such as
:class:`collections.UserDict`) will also be treated as dictionaries.
(:issue:`373`)

3.39.3.0

========

Test no longer fails if APSW was compiled without
SQLITE_ENABLE_COLUMN_METADATA but sqlite3 was separately compiled with
it. APSW should be compiled with the same flags as sqlite3 to match
functionality and APIs. (:issue:`363`)

`--use-system-sqlite-config` setup.py `build_ext` option added to
allow :ref:`matching_sqlite_options`. (:issue:`364`)

3.39.2.1

========

PyPI now includes Python 3.11 builds.

Instead of using scripts, you can now run several tools directly:

* :ref:`tests <testing>`: python3 **-m apsw.tests** *[options]*

* :ref:`tracer <apswtrace>`: python3 **-m apsw.trace** *[options]*

* :ref:`speed tester <speedtest>`: python3 **-m apsw.speedtest** *[options]*

* :ref:`shell <shell>`: python3 **-m apsw** *[options]*

The shell class has moved from apsw.Shell to :class:`apsw.shell.Shell`
(:issue:`356`). You can still reference it via the old name (ie
existing code will not break, except on Python 3.6).

:ref:`shell`: On Windows the native console support for colour is now used
(previously a third party module was supported).

You :ref:`can use --definevalues in setup.py build_ext
<setup_build_flags>` to provide compiler defines used for configuring
SQLite. (:issue:`357`)

If SQLITE_ENABLE_COLUMN_METADATA is enabled then
:attr:`Cursor.description_full` is available providing all the column
metadata available. (:issue:`354`)

:attr:`Connection.cursor_factory` attribute is now present and is used
when :meth:`Connection.cursor` is called. Added
:meth:`Connection.execute` and :meth:`Connection.executemany` which
automatically obtain the underlying cursor. See :ref:`customizing
connections and cursors <customizing_connection_cursor>` in the
:doc:`tips`. (:issue:`361`)

3.39.2.0

========

**Version numbering scheme change:** Instead of a *-r1* style suffix,
there is *.0* style suffix (:issue:`340`)

Updated building for PyPI to include more compiled platforms,
including aarch64 (Linux) and universal (MacOS). Windows binaries are
no longer separately provided since PyPI has them.

When the amalgamation is included into APSW, `SQLITE_MAX_ATTACHED
<https://www.sqlite.org/limits.html#max_attached>`__ is set to 125 if
not defined, up from the default of 10.

Updated typing information stubs with more detail and include docstrings.
This is still ongoing, but core functionality is well covered.
(:issue:`338`) (:issue:`381`)

Corrected the :ref:`tips <diagnostics_tips>` log handler of extended
result code (:issue:`342`)

Added :func:`Connection.db_names` (:issue:`343`)

3.38.5r1

=========

APSW is now on PyPI, so you can::

pip install apsw

(Thanks to several people behind the scenes who helped with the various pieces
to make this happen.)

Removed support for setup.py downloading the in-development (aka
fossil) version of SQLite.

Shell exit for --version etc cleanly exits (:issue:`210`)

Python 3.11 (:issue:`326`) now works.

PyPy3 compiles and mostly works (:issue:`323`).

Page 5 of 24

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.