TLDR: the big highlight of this release is VERY comprehensive support for FTS5 full text support. There is an overview and documentation at
https://rogerbinns.github.io/apsw/textsearch.html and example code/tour at
https://rogerbinns.github.io/apsw/example-fts.html
APSW 3.47.0.0 is now available. The project is at
https://github.com/rogerbinns/apsw which includes full documentation, source, installation information and more.
APSW is a wrapper around SQLite that provides all SQLite API functionality in Python. It is not DBAPI compliant as it provides SQLite semantics. sqlite3 provides DBAPI semantics. You can see the two approaches contrasted at
https://rogerbinns.github.io/apsw/pysqlite.html
Changelist is below and at
https://rogerbinns.github.io/apsw/changes.html
Support for Python 3.8 removed (APSW issue 539).
The readonly database statistics virtual table (dbstat) is enabled by default for PyPI builds, and when --enable-all-extensions is passed to manual builds.
Added recursive triggers and optimize to apsw.bestpractice.
Multiple callbacks can be present for Connection.trace_v2() with APSW ensuring they are all called (APSW issue 502)
Connection.trace_v2() callback information now has trigger, id, and total_changes fields.
Added Connection.data_version for getting a change counter. pragma data_version doesn’t update when changes are made on the same connection, only others.
Added apsw.ext.ShowResourceUsage() for getting resource and SQLite usage in a context block, and also use it for the shell timer command.
Added apsw.ext.Trace() for tracing SQL execution, row and change counting, and timing per statement for use in a context block.
Added FTS5 support including registering and calling tokenizers, and auxiliary functions. The apsw.fts5 module provides many additional classes and methods for working with FTS5, including tokenizers for HTML, JSON, regular expressions, support tokenizers for synonyms, stop words, transformers, and a Table class that wraps access to a FTS5 table (including creating one) with search(), more_like(), and query_suggest(). apsw.fts5query can parse, modify, and reconstruct queries. The shell gets a ftsq command for issuing queries.
Added apsw.unicode which implements Unicode algorithms for determining codepoint groups making up a user perceived character, word and sentence splitting, and where line breaks can be made. These are used to make provided FTS5 tokenizers and auxiliary functions fully Unicode aware. There are many additional methods such as getting categories, stripping diacritics, case folding, width when output to a terminal, text wrapping, and more.
apsw.ext.format_query_table() uses apsw.unicode to get widths and line breaks more accurate. As a side effect it loses the word_wrap parameter (breaking change).
Roger