Adds preliminary support for asyncio via a new playhouse extension. See the documentation for details.
PostgresqlDatabase can use psycopg (psycopg3) if it is installed. If both psycopg2 and psycopg3 are installed, Peewee will prefer psycopg2, but this can be controlled by specifying prefer_psycopg3=True in the constructor. Same applies to PostgresqlExtDatabase.
Psycopg3Database class has been moved to playhouse.postgres_ext and is now just a thin wrapper around PostgresqlExtDatabase.
Postgres JSON operations no longer dump and try to do minimal casts, instead relying on the driver-provided Json() wrapper(s).
Adds new ISODateTimeField for Sqlite that encodes datetimes in ISO format (more friendly when db is shared with other tools), and also properly reads back UTC offset info.
Add a Model.dirty_field_names attribute that is safe for membership testing, since testing x in dirty_fields returns True if one or more field exists due to operator overloads returning a truthy Expression object. Refs #3028.
Removal of Cython _sqlite_ext extension. The C implementations of the FTS rank functions are moved to sqlite_udf. Most of the remaining functionality is moved to playhouse.cysqlite_ext which supports it natively.
Migrating CSqliteExtDatabase usage:
You can either use sqlite_ext.SqliteExtDatabase or try the new
cysqlite_ext.CySqliteDatabase if you want all the old functionality and are
willing to try a new driver.
Adds preliminary support for asyncio via a new playhouse extension. See
the documentation
for details.
PostgresqlDatabase can use psycopg (psycopg3) if it is installed. If both
psycopg2 and psycopg3 are installed, Peewee will prefer psycopg2, but this
can be controlled by specifying prefer_psycopg3=True in the constructor.
Same applies to PostgresqlExtDatabase.
Psycopg3Database class has been moved to playhouse.postgres_ext and is
now just a thin wrapper around PostgresqlExtDatabase.
Postgres JSON operations no longer dump and try to do minimal casts, instead
relying on the driver-provided Json() wrapper(s).
Adds new ISODateTimeField for Sqlite that encodes datetimes in ISO format
(more friendly when db is shared with other tools), and also properly reads
back UTC offset info.
Add a Model.dirty_field_names attribute that is safe for membership
testing, since testing x in dirty_fields returns True if one or more field
exists due to operator overloads returning a truthy Expression object.
Refs #3028.
Removal of Cython _sqlite_ext extension. The C implementations of the FTS
rank functions are moved to sqlite_udf. Most of the remaining functionality
is moved to playhouse.cysqlite_ext which supports it natively.
Migrating CSqliteExtDatabase usage:
You can either use sqlite_ext.SqliteExtDatabase or try the new
cysqlite_ext.CySqliteDatabase if you want all the old functionality and are
willing to try a new driver.
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebase will rebase this PR
@dependabot recreate will recreate this PR, overwriting any edits that have been made to it
@dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
@dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
@dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
@dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.
## 📋 Pull Request Information
**Original PR:** https://github.com/open-webui/open-webui/pull/22003
**Author:** [@dependabot[bot]](https://github.com/apps/dependabot)
**Created:** 3/1/2026
**Status:** ❌ Closed
**Base:** `dev` ← **Head:** `dependabot/pip/backend/dev/peewee-4.0.0`
---
### 📝 Commits (1)
- [`b884348`](https://github.com/open-webui/open-webui/commit/b884348923931c3be6dad865ee0b70f1b28d9bca) chore(deps): bump peewee from 3.19.0 to 4.0.0 in /backend
### 📊 Changes
**2 files changed** (+2 additions, -2 deletions)
<details>
<summary>View changed files</summary>
📝 `backend/requirements-min.txt` (+1 -1)
📝 `backend/requirements.txt` (+1 -1)
</details>
### 📄 Description
Bumps [peewee](https://github.com/coleifer/peewee) from 3.19.0 to 4.0.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/coleifer/peewee/releases">peewee's releases</a>.</em></p>
<blockquote>
<h2>4.0.0</h2>
<ul>
<li>Adds preliminary support for <code>asyncio</code> via a new playhouse extension. See <a href="http://docs.peewee-orm.com/en/latest/peewee/asyncio.html">the documentation</a> for details.</li>
<li><code>PostgresqlDatabase</code> can use <code>psycopg</code> (psycopg3) if it is installed. If both psycopg2 and psycopg3 are installed, Peewee will prefer psycopg2, but this can be controlled by specifying <code>prefer_psycopg3=True</code> in the constructor. Same applies to <code>PostgresqlExtDatabase</code>.</li>
<li><code>Psycopg3Database</code> class has been moved to <code>playhouse.postgres_ext</code> and is now just a thin wrapper around <code>PostgresqlExtDatabase</code>.</li>
<li>Postgres JSON operations no longer dump and try to do minimal casts, instead relying on the driver-provided <code>Json()</code> wrapper(s).</li>
<li>Adds new <code>ISODateTimeField</code> for Sqlite that encodes datetimes in ISO format (more friendly when db is shared with other tools), and also properly reads back UTC offset info.</li>
<li>Remove <code>playhouse.sqlite_ext.ClosureTable</code> implementation.</li>
<li>Add a <code>Model.dirty_field_names</code> attribute that is safe for membership testing, since testing <code>x in dirty_fields</code> returns True if one or more field exists due to operator overloads returning a truthy Expression object. Refs <a href="https://redirect.github.com/coleifer/peewee/issues/3028">#3028</a>.</li>
<li>Removal of Cython <code>_sqlite_ext</code> extension. The C implementations of the FTS rank functions are moved to <code>sqlite_udf</code>. Most of the remaining functionality is moved to <code>playhouse.cysqlite_ext</code> which supports it natively.</li>
</ul>
<p>Migrating <code>CSqliteExtDatabase</code> usage:</p>
<p>You can either use <code>sqlite_ext.SqliteExtDatabase</code> or try the new
<code>cysqlite_ext.CySqliteDatabase</code> if you want all the old functionality and are
willing to try a new driver.</p>
<p><a href="https://github.com/coleifer/peewee/compare/3.19.0...4.0.0">View commits</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/coleifer/peewee/blob/master/CHANGELOG.md">peewee's changelog</a>.</em></p>
<blockquote>
<h2>4.0.0 (pending)</h2>
<ul>
<li>Adds preliminary support for <code>asyncio</code> via a new playhouse extension. See
<a href="http://docs.peewee-orm.com/en/latest/peewee/asyncio.html">the documentation</a>
for details.</li>
<li><code>PostgresqlDatabase</code> can use <code>psycopg</code> (psycopg3) if it is installed. If both
psycopg2 and psycopg3 are installed, Peewee will prefer psycopg2, but this
can be controlled by specifying <code>prefer_psycopg3=True</code> in the constructor.
Same applies to <code>PostgresqlExtDatabase</code>.</li>
<li><code>Psycopg3Database</code> class has been moved to <code>playhouse.postgres_ext</code> and is
now just a thin wrapper around <code>PostgresqlExtDatabase</code>.</li>
<li>Postgres JSON operations no longer dump and try to do minimal casts, instead
relying on the driver-provided <code>Json()</code> wrapper(s).</li>
<li>Adds new <code>ISODateTimeField</code> for Sqlite that encodes datetimes in ISO format
(more friendly when db is shared with other tools), and also properly reads
back UTC offset info.</li>
<li>Remove <code>playhouse.sqlite_ext.ClosureTable</code> implementation.</li>
<li>Add a <code>Model.dirty_field_names</code> attribute that is safe for membership
testing, since testing <code>x in dirty_fields</code> returns True if one or more field
exists due to operator overloads returning a truthy Expression object.
Refs <a href="https://redirect.github.com/coleifer/peewee/issues/3028">#3028</a>.</li>
<li>Removal of Cython <code>_sqlite_ext</code> extension. The C implementations of the FTS
rank functions are moved to <code>sqlite_udf</code>. Most of the remaining functionality
is moved to <code>playhouse.cysqlite_ext</code> which supports it natively.</li>
</ul>
<p>Migrating <code>CSqliteExtDatabase</code> usage:</p>
<p>You can either use <code>sqlite_ext.SqliteExtDatabase</code> or try the new
<code>cysqlite_ext.CySqliteDatabase</code> if you want all the old functionality and are
willing to try a new driver.</p>
<p><a href="https://github.com/coleifer/peewee/compare/3.19.0...4.0.0">View commits</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/coleifer/peewee/commit/19e9b2bad68e91437755749af76ba110c132f774"><code>19e9b2b</code></a> 4.0.0</li>
<li><a href="https://github.com/coleifer/peewee/commit/40be6e8a0d3f283d1163dc9bf3f7aa3accb051bb"><code>40be6e8</code></a> Use AsIs in sqlite_ext where appropriate.</li>
<li><a href="https://github.com/coleifer/peewee/commit/47770ac515644419de6746745faa42022ef5a50a"><code>47770ac</code></a> Clean up AsIs usage.</li>
<li><a href="https://github.com/coleifer/peewee/commit/ead61e324b210c807507b779eec2e44aecedee3d"><code>ead61e3</code></a> Prep 4.0 stuff</li>
<li><a href="https://github.com/coleifer/peewee/commit/c80880214ec91d74c977d6797ed93828955f05db"><code>c808802</code></a> Clean up docs, new theme.</li>
<li><a href="https://github.com/coleifer/peewee/commit/d19cac61698342ea648de5662e11c0e2bf5ab791"><code>d19cac6</code></a> Clarify docs on asyncio implementation.</li>
<li><a href="https://github.com/coleifer/peewee/commit/03b9fdfd216f4faf79ce98479db78b381662be87"><code>03b9fdf</code></a> Fix copy/paste typo</li>
<li><a href="https://github.com/coleifer/peewee/commit/e1845873ac9c0670dceb1348c459ce0c3486a76e"><code>e184587</code></a> SqliteDatabase handles regexp now.</li>
<li><a href="https://github.com/coleifer/peewee/commit/18c8e24671ff9181dcb61dde9a03814ba1195150"><code>18c8e24</code></a> Remove (very niche) sqlite closure-table extension.</li>
<li><a href="https://github.com/coleifer/peewee/commit/a4683ec05f350b5d06783b340d1bbc0791967daa"><code>a4683ec</code></a> Clarify some notes in changelog, remove dumps= parameter.</li>
<li>Additional commits viewable in <a href="https://github.com/coleifer/peewee/compare/3.19.0...4.0.0">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
---
<sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
📋 Pull Request Information
Original PR: https://github.com/open-webui/open-webui/pull/22003
Author: @dependabot[bot]
Created: 3/1/2026
Status: ❌ Closed
Base:
dev← Head:dependabot/pip/backend/dev/peewee-4.0.0📝 Commits (1)
b884348chore(deps): bump peewee from 3.19.0 to 4.0.0 in /backend📊 Changes
2 files changed (+2 additions, -2 deletions)
View changed files
📝
backend/requirements-min.txt(+1 -1)📝
backend/requirements.txt(+1 -1)📄 Description
Bumps peewee from 3.19.0 to 4.0.0.
Release notes
Sourced from peewee's releases.
Changelog
Sourced from peewee's changelog.
Commits
19e9b2b4.0.040be6e8Use AsIs in sqlite_ext where appropriate.47770acClean up AsIs usage.ead61e3Prep 4.0 stuffc808802Clean up docs, new theme.d19cac6Clarify docs on asyncio implementation.03b9fdfFix copy/paste typoe184587SqliteDatabase handles regexp now.18c8e24Remove (very niche) sqlite closure-table extension.a4683ecClarify some notes in changelog, remove dumps= parameter.Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor versionwill close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.