========
`SQLITE_ENABLE_COLUMN_METADATA
<https://www.sqlite.org/compile.html#enable_column_metadata>`__ is
enabled when installing APSW from `PyPI <https://pypi.org/project/apsw/>`__
(binary or source). (:issue:`435`)
:ref:`Type stubs <type_stubs>` and typing information in the
documentation use newer Python conventions such as `|` instead of
`Union` and `list` instead of `typing.List`, being more concise and
readable. (A recent Python is required to use them, but they have no
effect at runtime.) (:issue:`438`)
Shell: Errors when SQLite are preparing a statement now show the
relevant extract of the query, and where the error was detected.
Shell: Output modes table (ASCII line drawing, lots of sanitization),
box (Unicode line drawing) and qbox (box with quoted values) available.
Python 3.7+ (:issue:`420`)
Shell: if started interactively then box is the default mode (list remains
the default in non-interactive)
Added :meth:`Connection.pragma` to execute pragmas
and get results. (:issue:`432`)
Added :attr:`Cursor.get` returning query results with the
least amount of structure. (:issue:`389`)
Fixed execution tracers should return comment text for comment
only queries, and add :attr:`Cursor.has_vdbe`. (:issue:`433`)
Ensure that all applicable options are implemented for
:func:`apsw.config`, :meth:`Connection.config` and similar.
(:issue:`431`)
Added :func:`apsw.sleep` (:issue:`419`)
Strings for :meth:`apsw.VFS.xNextSystemCall` are :c:func:`interned
<PyUnicode_InternInPlace>` avoiding memory leaks. (:issue:`430`)
Detect unbound recursion not handled by CPython, and handle better.
(:issue:`425`)