From 9e458dea7d5187b11bd413fbf1f583c0f18c7e92 Mon Sep 17 00:00:00 2001 From: Simon Willison Date: Thu, 8 May 2025 20:51:48 -0700 Subject: [PATCH] Release 0.4a0 Refs #646, #648, #652, #654, #656 --- docs/changelog.rst | 11 +++++++++++ setup.py | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/docs/changelog.rst b/docs/changelog.rst index abe2cc5..2b38342 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -4,6 +4,17 @@ Changelog =========== +.. _v4_0a0: + +4.0a0 (2025-05-08) +----------------- + +- Upsert operations now use SQLite's ``INSERT ... ON CONFLICT SET`` syntax on all SQLite versions later than 3.23.1. This is a very slight breaking change for apps that depend on the previous ``INSERT OR IGNORE`` followed by ``UPDATE`` behavior. (:issue:`652`) +- Python library users can opt-in to the previous implementation by passing ``use_old_upsert=True`` to the ``Database()`` constructor, see :ref:`python_api_old_upsert`. +- Dropped support for Python 3.8, added support for Python 3.13. (:issue:`646`) +- ``sqlite-utils tui`` is now provided by the `sqlite-utils-tui `__ plugin. (:issue:`648`) +- Test suite now also runs against SQLite 3.23.1, the last version (from 2018-04-10) before the new ``INSERT ... ON CONFLICT SET`` syntax was added. (:issue:`654`) + .. _v3_38: 3.38 (2024-11-23) diff --git a/setup.py b/setup.py index c9ae427..8928565 100644 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ from setuptools import setup, find_packages import io import os -VERSION = "3.38" +VERSION = "4.0a0" def get_long_description():