Skip to content

Update dependency peewee to v4 - #368

Open
renovate[bot] wants to merge 1 commit into
masterfrom
renovate/peewee-4.x
Open

Update dependency peewee to v4#368
renovate[bot] wants to merge 1 commit into
masterfrom
renovate/peewee-4.x

Conversation

@renovate

@renovate renovate Bot commented Feb 20, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Confidence
peewee (changelog) ~3.19.0~4.3.0 age confidence

Release Notes

coleifer/peewee (peewee)

v4.3.0

Compare Source

Backwards-incompatible:

  • Specify requires-python >= 3.8. I've been putting off committing to
    anything like this, since technically we still work on 3.7, but 3.8 is the
    minimum we run on CI so it felt correct.
  • Replace docid implicit primary key on legacy FTSModel (FTS4) with
    rowid, which is equivalent. Using docid presents no benefit and
    switching to rowid makes operations more consistent. Users have a couple
    options when updating:
    • Explicitly add docid = DocIDField() to your FTSModel classes.
    • Update your code, replacing docid with rowid. The underlying data
      does not require a migration, as docid was just an alias for rowid.
  • When a RETURNING-clause insert of a single row inserts nothing, e.g. a
    conflict was ignored, execute() returns None on every backend.

Improvements:

  • Connection pools roll back transactions left open on check-in.
  • Pooled Postgres probes idle connections with SELECT 1 and discards dead
    ones, matching the MySQL pool's ping. Previously a connection terminated
    server-side while parked in the pool was handed out and failed on first use.
  • close_pool() in pwasyncio no longer spins the event loop on Python
    3.13+ attempting to reclaim connections in use, and pool creation is now
    bounded by acquire_timeout. Connections terminated during shutdown are
    detected as stale and discarded at the next checkout.
  • JSONField negative path indexes render as $[last] / $[last-n] on
    MySQL/MariaDB. Previously the sqlite-only $[#-n] form was emitted, which
    MariaDB evaluates to NULL (overwriting the column when used with set())
    and MySQL rejects as an invalid path.
  • JSONField mutators (set(), insert(), etc) store Python booleans as
    json true/false instead of the driver's 0/1, so values written by create()
    and by mutators compare consistently. Floats on MySQL/MariaDB likewise take
    their json text form, as MariaDB reformats driver floats in a way that
    breaks equality against the stored document.
  • Reflection/pwiz map MySQL JSON columns to the core JSONField instead of
    emitting from playhouse.mysql_ext import * for a re-exported field.
  • playhouse.pwasyncio logs to the peewee.pwasyncio logger rather than
    playhouse.pwasyncio.
  • Fix dataset freeze/thaw of NULL blob and datetime values. Empty CSV cells
    now import as NULL for non-text fields.
  • Lateral joins honor a user-supplied on= predicate instead of silently
    replacing it with true, and default to ON true when on= is omitted.
  • The SQLite FTS content option must be a Model or table-name string.
    Passing a Field now raises ImproperlyConfigured: it generated DDL that
    fts5 rejects outright and that fts4 silently truncated to the table name.
  • Fix FTS5Model.VocabModel(): term/col/offset were declared as virtual
    fields and omitted from default SELECTs, the instance-type model had the
    wrong column set, all three table-types shared one default table name, and
    the generated class was cached with whatever database was bound at first
    call. Vocab models are now built fresh per call with real fields, correct
    columns and per-type default names.
  • Add FTS5Model.web_query(), which translates the query syntax users expect
    from a search box (quoted phrases, AND/OR/NOT, -exclusion, column:
    filters and parentheses) into an FTS5 query. Anything else is searched as
    text, so covid-19 or c++ need no escaping, and the translation is always
    a valid query. The parser lives in the new playhouse.fts_parser module.
    Use it with search: Doc.search(Doc.web_query(user_input)).
  • Add FTS5Model.delete_command(), which removes a row using the fts5 delete
    command. This is how rows are removed from external-content and contentless
    tables, which need the originally-indexed values supplied back to them:
    sqlite treats an omitted column as NULL, and values that do not match what
    was indexed leave stale entries behind (undetectably so on a contentless
    table). Peewee therefore requires a value for every indexed column; pass
    None where NULL was indexed. The command exists only for those two
    configurations - default-storage and contentless_delete=1 tables reject
    it and use ordinary DELETE.
  • Add support for cysqlite's sick table func decorator syntax.
  • Better behavior for INSERT when as_rowcount() is specified, along with
    proper return of all parts of a composite PK instead of just the 1st column.
  • last_insert_id() is implemented once on Database, with backends
    overriding _last_insert_rowid() where the driver differs. APSW and the
    MariaDB connector inherit composite primary-key support as a result, having
    previously returned only the first column.
  • Don't apply field kwargs to barefield instances w/reflection, #​3064.

View commits

v4.2.6

Compare Source

  • A missed outer join is now cached as an absent relation instead of being
    written through the foreign-key descriptor. The fk id on the source
    instance keeps the column's value (previously it was overwritten with
    None), and accessing the attribute on a non-null fk returns None
    instead of raising DoesNotExist.

View commits

v4.2.5

Compare Source

  • Fix anonymous sub-select keeping a stale id()-based hash after clone().

View commits

v4.2.4

Compare Source

  • Fix derived table joined in an expression subquery losing its FROM alias.
  • Fix default Model.select() used as a FROM/JOIN source reduced to its pk.
  • Fix compound/subquery SELECT-list column emitting a phantom alias.
  • Fix fn.EXISTS(compound) double-parenthesizing.
  • Fix x.in_(ValuesList(...)) dropping parens around VALUES.
  • Fix two-FK .join(on=...) mis-attaching rows when the fk is on the rhs.
  • Fix ON CONFLICT ... DO NOTHING dropping the target/where/constraint.

View commits

v4.2.3

Compare Source

  • Fix a compound select (UNION/INTERSECT/EXCEPT) used as a correlated
    subquery emitting a phantom alias for the correlated outer table in every
    branch but the left-most, producing invalid SQL (e.g. no such column: t4.id). The right-hand branch renders in a fresh alias scope that no longer
    resolved the outer source's existing alias, it now inherits the enclosing
    scope's aliases while still assigning fresh aliases to its own sources.
  • Fix full-text search weights passed as a dict being mis-applied to the
    wrong columns. For FTS3/4 the implicit docid primary-key was included when
    building the weight list, shifting every column by one (raising IndexError
    with the Python ranking UDF, silently mis-scoring with the Cython one), for
    FTS5, UNINDEXED columns were skipped even though bm25() weights are
    positional across all columns. The list form of weights was unaffected.
  • Fix .cte() clearing the source query's CTE list in place: converting a query
    that carried a with_cte(...) clause into a CTE stripped the clause from that
    query, so reusing it afterward referenced an undeclared CTE. The query is now
    cloned before its CTE list is reset.
  • Fix Table.select() with no arguments on a Table declared without columns
    emitting an empty projection (SELECT FROM ...) instead of SELECT *.
  • Fix Table.insert(select_query) with no columns raising TypeError instead
    of rendering INSERT INTO t SELECT ....
  • Fix the MySQL migrator dropping a foreign key's ON DELETE/ON UPDATE action
    when add_not_null() or rename_column() rebuilds the constraint, silently
    downgrading e.g. CASCADE to RESTRICT. The actions reported by
    get_foreign_keys() are now carried through to the rebuilt constraint.
  • Fix the legacy postgres_ext JSON contains/contained_by/concat raising
    AttributeError, and remove() silently rewriting the entire column, when
    applied to a .path()-chained lookup (e.g. Model.data['a'].path('b')). All
    four now resolve the root field and full path via _resolve_root(), matching
    the sibling set/replace/insert/append/update mutators.
  • Correct the postgres_ext.JSONField docs: the json-column field does not
    support the jsonb-based mutation/concatenation builders (they raise
    ProgrammingError), so the misleading "Postgres casts implicitly" claim was
    removed and new code is steered to the built-in JSONField.
  • Fix the SQLite migrator treating a bare table-level UNIQUE (a, b) constraint
    as a column when rebuilding a table (add_not_null, drop_column, ...),
    raising no column named UNIQUE; unique is now recognized as a constraint.
  • Fix the SQLite migrator's table rebuild corrupting the CREATE TABLE keywords
    for a table whose name is a case-insensitive substring of them (e.g. ab,
    t, tab) -- the table-name substitution is now anchored to the trailing
    name token.

View commits

v4.2.2

Compare Source

  • Change Field.__hash__ again... fml. Use (model_cls, field name).
  • Fix Metadata.remove_ref() removing the wrong foreign-key when a model
    has multiple foreign-keys to the same target, as list.remove() matched
    the first entry via the overloaded Field.__eq__.
  • Fix a scalar subquery nested inside a function, Case or Cast collapsing
    to its alias in an UPDATE ... SET value and in ON CONFLICT DO UPDATE,
    as qualify_names() wrapped the value at SCOPE_COLUMN.
  • Fix namedtuples() on a query-builder (Table) query raising ValueError
    when a column name is not a valid identifier. The plain
    NamedTupleCursorWrapper now passes rename=True, matching the model path.
  • Fix outer joins in a joined model graph not hydrating a missing related
    object as None, so accessing the attribute raised AttributeError. The
    outer-join test had regressed to endswith('OUTER') (never true). It now
    also recognizes FULL JOIN and LEFT JOIN LATERAL.
  • Fix ModelSelect.select_extend() mutating its receiver's default-projection
    flag, so a base Model.select() reused as a subquery stopped collapsing to
    its primary key. It now flags the returned clone, matching select().
  • Fix distinct(True) and distinct(False) not clearing a prior
    distinct(*columns), so the query kept rendering DISTINCT ON (...) instead
    of a plain DISTINCT or no distinct at all.
  • Fix Postgres get_indexes() shredding an expression index whose key contains
    a comma, e.g. COALESCE(a, 0) split into two bogus columns. It joined the
    per-key definitions into a comma-delimited string and split on the comma. It
    now reads the key array directly.
  • Fix an empty insert (Model.insert(), insert({})) emitting DEFAULT VALUES
    and dropping python-side field defaults, inconsistent with a partial insert
    which backfills them. A model with no python defaults still uses DEFAULT VALUES.

View commits

v4.2.1

Compare Source

Can't ship a stub that's not complete. Missed moving server_side_cursor()
helper into the core psycopg helper.

View commits

v4.2.0

Compare Source

  • Add django-style filter lookups: contains, startswith, endswith,
    between, is_null, not_in and iregexp.
  • Fix SQLite index value inlining to apply properly.
  • Fix PostgresqlDatabase(isolation_level=...) having no effect on
    transactions. Previously only atomic(isolation_level=...) worked.
  • Fix Ordering.collate() dropping the nulls= ordering.
  • Fix double-escaping of backticks in MySQL get_indexes().
  • Honor the windows= parameter of the Select constructor.
  • Remove vestigial Python 2 compat (reraise(), __div__, __nonzero__)
    and assorted dead internal code.
  • Remove TimestampField.local_to_utc() and TimestampField.utc_to_local().
  • Select.columns() no longer accepts and ignores keyword arguments.
  • Remove unused Metadata.get_rel_for_model().
  • Fix SelectBase.exists() ignoring its database argument.
  • Fix CursorWrapper indexing: cursor[n] raised IndexError for uncached
    rows and cursor[0] fetched the entire result set.
  • Fix .namedtuples() crashing on selected columns that are not valid
    Python identifiers.
  • Preserve materialized= when compounding CTEs via union()/union_all().
  • Fix ManyToManyField reads when the through-model foreign keys use the
    '!' backref sentinel.
  • Fix connection pooling with the mariadb connector - pooled connections
    were discarded on every checkout.
  • Fix sqliteq stop() to drain the write queue and return True.
  • Fix apsw aggregate registration binding every name to the last-registered
    aggregate class.
  • Fix two NameErrors in cysqlite_ext: blob_open() and progress().
  • Fix pwiz emitting an invalid attr= keyword instead of
    on_delete/on_update for reflected foreign keys.
  • Fix dataset infinite loop on self-referential foreign keys, crash on
    headerless CSV import, thaw() validating against export rather than
    import formats, and the importer mutating live model metadata.
  • Fix model_to_dict to honor only=/exclude= for many-to-many fields,
    fix resolve_multimodel_query on queries with narrowed selections.
  • Fix signals.Model.save(True) reporting created=False when
    force_insert is passed positionally.
  • Fix CompressedField crashing on str values.
  • Fix psycopg3 server-side cursors (missing withhold) and CockroachDB
    run_transaction retry detection under psycopg3.
  • Async queries are now logged to the peewee logger.
  • Remove dead code and unused imports throughout playhouse, remove the
    broken, unused get_current_url/get_next_url helpers from
    flask_utils.
  • Fix delete_instance(recursive=True) failing to cascade to the children
    of a model reachable through both nullable and non-nullable foreign-keys.
  • Fix subqueries losing their parentheses when used as a CASE value inside
    a single-argument function call, e.g. fn.SUM(Case(...)).
  • Fix plain-Table inserts on returning-clause databases binding the
    primary-key name as a parameter and returning None instead of the new id.
  • CompositeKey comparisons raise ValueError when the value's length does
    not match the key, rather than silently matching on a prefix.
  • Async: connection-acquisition errors are translated to peewee exception
    types, matching query execution.
  • Fix FieldAlias.model to reference the model alias rather than the aliased
    model, alias-rooted join queries no longer construct and discard a spurious
    instance of the aliased model for every result row.
  • Fix playhouse.postgres_ext.JSONField creating jsonb columns after the
    core postgres backend began mapping the JSON field-type to JSONB, its DDL
    is json again, and json-vs-jsonb function selection for chained lookups
    now follows the field's declared datatype.
  • Unaliased expressions in join queries now hydrate using the same cleaned
    attribute name as flat queries (e.g. COUNT rather than COUNT(1).
  • Field.__hash__ is keyed on the model's schema and table-name rather than
    its class name, so same-named model classes (factories, separate modules,
    schema-per-tenant layouts) no longer collide in field-keyed registries such
    as backrefs, redefining or re-importing a model in place still replaces
    its entries.
  • Fix UnboundLocalError when joining from a model-less source to a model,
    e.g. join_from(cte, SomeModel, on=...), the joined instance is stored in
    the source's row dict, keyed by the model name.
  • BlobField, CompressedField and the sqlite_udf.gzip() function encode
    str values using utf-8 instead of raw_unicode_escape. Behavior change
    for non-ASCII strings: characters
    above the latin-1 range are no longer mangled into literal escape
    sequences, but blobs written from non-ASCII strings by earlier versions
    will not compare equal to newly-written ones.

View commits

v4.1.2

Compare Source

  • Ensure quotes escaped in SQLite introspection methods, thanks @​greymoth-jp
    for reporting and the initial patch.
  • Allow TimestampField to accept an iso-formatted str.
  • Add key-existence predicates (has_key, has_keys, has_any_keys) to the
    core JSONField on SQLite, implemented with json_type().
  • Add containment predicates (contains, contained_by) to the core
    JSONField on SQLite via a registered _pw_json_contains UDF that emulates
    Postgres' @> semantics (structural, level-aligned). The core JSONField
    now has full predicate parity across SQLite, Postgres, and MySQL/MariaDB.

View commits

v4.1.1

Compare Source

  • New declarative API for pre-fetching related instances (Load()). See
    documentation.
    This replaces prefetch(), is more flexible and also supports options for
    applying a row limit to sub-results, and a strategy that materializes the ID
    list (in addition to SELECT IN and JOIN strategies).
  • Add MySQLJSONField (playhouse.mysql_ext) with contains_any() for the
    JSON_OVERLAPS/"match any" counterpart to contains for JSON arrays.
  • Do not traverse foreign-key fields where lazy_load=False when serializing
    recursively with model_to_dict(), #​3055.
  • Add vendored typeshed stub with improvements.

View commits

v4.1.0

Compare Source

  • Unfortunately, the new JSONField did not play nice w/MySQL when query was
    generated before a conn was opened. We were trying to do some introspection
    on the server version, but I've decided instead to make mariadb= be a
    database param, per @​alisonatwork's suggestion, with the default being
    "MySQL" flavored JSON. Refs #​3053
  • JSONField containment (contains, contained_by) no longer wraps its
    argument in CAST / JSON_COMPACT on MySQL/MariaDB, #​3053.

View commits

v4.0.9

Compare Source

  • Ensure new JSONField can be inherited, #​3052

View commits

v4.0.8

Compare Source

  • Add BaseQuery.aexecute() - an async twin of execute() available on all
    query types, executing through the query's bound async database:
    await User.select().aexecute(), await user.tweets.aexecute(). Returns
    exactly what execute() returns, including result rows for DML with
    RETURNING. Queries remain non-awaitable; this is an ordinary coroutine
    method and the only async method on queries.
  • Add async model methods to playhouse.pwasyncio using "a"-prefixed coroutine
    counterparts of the row-level Model methods (acreate, aget,
    aget_or_none, aget_by_id, aget_or_create, aset_by_id,
    adelete_by_id, abulk_create, abulk_update, asave,
    adelete_instance), available via the new AsyncModel /
    AsyncModelMixin classes. Each is a thin delegation through the greenlet
    bridge, so behavior is identical to the synchronous implementation.
    Note: the Model property of async databases now returns a base class
    that includes these methods - relevant only if you introspect the base
    class of db.Model subclasses.
  • Add afetch() for explicit, awaitable lazy foreign-key resolution:
    user = await tweet.afetch(Tweet.user). Already-loaded relations (via
    join or prefetch) return immediately without a query.
  • Add db.first(query, n=1) async helper.
  • MissingGreenletBridge errors now include a hint describing the async
    APIs to use.
  • The asyncio extension is no longer considered preliminary - the async
    APIs documented in the docs
    are stable. The asyncio stress test now also runs in CI.

View commits

v4.0.7

Compare Source

  • Fixes for playhouse.pwasyncio: report correct UPDATE / DELETE rowcounts on
    asyncpg, roll back open transactions when connections are returned to the
    pool, raise instead of deadlocking when querying during iterate(), and
    detect the MySQL / MariaDB server version.
  • Additional playhouse.pwasyncio fixes: a second iterate() on a busy
    connection raises instead of deadlocking, asyncpg exceptions are translated
    to peewee exception types, registered aggregates / collations / window
    functions / extensions and timeout are applied to async SQLite
    connections, :memory: databases use a single connection, atomic()
    accepts transaction arguments (e.g. lock_type), postgres connection URLs
    and isolation_level are supported, %% in raw SQL is unescaped, and
    attempting a query outside the greenlet bridge no longer emits "never
    awaited" warnings.
  • Fixes for playhouse.pydantic_utils: JSON fields validate as Any (now
    including the sqlite_ext JSONField), foreign keys may be included /
    excluded by field name or column name, server-side defaults like
    SQL('CURRENT_TIMESTAMP') are no longer emitted as schema defaults, and
    relationships keys are validated.
  • Add a new cross-backend JSONField to core that provides basic operations
    and also more consistent behavior when reading data. By default the new core
    JSONField treats extracted values as JSON, which is generally the correct
    thing, but "text-mode" is available as a chained .as_text() method. See
    docs.
    May eventually replace the backend-specific implementations with subclasses
    that inherit semantics of this new field.
    Note: playhouse.mysql_ext.JSONField is now the core field. The old
    json_dumps / json_loads arguments are renamed dumps / loads, the
    extract() method is removed (use item-access or path()), and MySQL
    tables are now created with JSON columns rather than TEXT.
  • Eliminate use of deprecated params when connecting to MySQL databases, thanks
    to @​abulgher, #​3050.
  • Using fromisoformat() ended up causing previously-unconverted strings (Ymd)
    to be converted in some cases, e.g. formatting a datetime as a str (#​3051).
    The change I made to address this is to make explicit casts on function calls
    not attempt any heuristic python-value conversion. This makes it more natural
    to call fn.whatever().cast('text') and you predictably get text out.

View commits

v4.0.6

Compare Source

  • Add new methods to the postgres BinaryJSONField: helpers for in-place
    modifications (set, replace, insert, append, update).
  • Also add json-path helpers to the postgres BinaryJSONField (path_exists,
    path_match, path_query, path_query_array, path_query_first).
  • Quote path elements in SQLite's JSON field.
  • Better and faster parsing of formatted date/times. Use the stdlib
    fromisoformat as a first attempt since it's faster and more robust.
  • Ensure db.connection_context() can be nested cleanly, #​3046.
  • Fix potential deadlock in pool.close_all and pool.manual_close, #​3047.
  • Restore whitespace stripping in FixedCharField, #​3048.

View commits

v4.0.5

Compare Source

  • Fix bug where db_value() may not get called in subclasses of Postgres
    JSONField / BinaryJSONField, refs #​3044.
  • Fix bug where indexes for table may be defined on multiple schema, #​3043.
  • Always fall-through to base exception class if exception is not recognized in
    DB drivers. This simplifies checking driver-specific subclasses of standard
    DB-API exceptions.

View commits

v4.0.4

Compare Source

  • Fix SQL generation for partial indexes with nulls (not) distinct clause.
  • Raise an ImproperlyConfigured if pg driver unavailable at model
    definition-time when field db-hooks are used, rather than AttributeError.

View commits

v4.0.3

Compare Source

  • Refactor test suite - this was a mechanical refactor, just moving things
    around and trying to group things more clearly. Also added new tests covering
    some gaps.
  • Expand multi-value types to include generator expressions, so you can write
    stuff like .in(a for a in iterable if cond).
  • Ensure quotes embedded in entity names are escaped.
  • Improved specification of FOR UPDATE clauses.
  • Fix for negative values in paginate() method.
  • Fix for newer MySQL server versions in feature detection code.
  • More robust handling of unusual aliases / invalid attr names in cursor
    wrapper.
  • Better handling of duplicated column names in cursor wrapper implementations.
  • Improve performance of ModelCursorWrapper when reconstructing model instance
    graphs after multi-table selects.
  • If only psycopg3 is installed, use it by default (#​3036)

View commits

v4.0.2

Compare Source

  • Remove all Python 2.x compatibility code.
  • Add streaming result cursors to pwasyncio module via db.iterate(query).
  • Better serialization and deserialization of datetimes and binary data in the
    DataSet module. Previously binary data was encoded as base64, going forward
    hex is the new default. For base64 specify base64_bytes=True.
  • Improvements to Postgres BinaryJSONField, support atomic removal of
    sub-elements, as well as alternate helper for extracting sub-elements and
    querying array length.
  • Pydantic integration

View commits

v4.0.1

Compare Source

  • Ensure gr_context is set on greenlet in greenlet_spawn so that
    contextvars will be operable in sync handlers.
  • Removed SqliteExtDatabase (it basically served no purpose in 4.0). Use
    SqliteDatabase instead.
  • Moved driver and extension-specific pooled implementations into the
    corresponding extension module rather than putting all into playhouse.pool.
  • Restore custom dumps option for postgres JSON fields.
  • Major docs rewrite / reorganization.

View commits

v4.0.0

Compare Source

  • 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.
  • Remove playhouse.sqlite_ext.ClosureTable implementation.
  • 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.

View commits


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate
renovate Bot force-pushed the renovate/peewee-4.x branch from f79cc78 to 11f7ea9 Compare March 1, 2026 22:07
@renovate
renovate Bot force-pushed the renovate/peewee-4.x branch 3 times, most recently from e732937 to f2b2fb3 Compare March 16, 2026 12:53
@renovate
renovate Bot force-pushed the renovate/peewee-4.x branch 2 times, most recently from 2d42a13 to 909f7b7 Compare March 27, 2026 01:03
@renovate
renovate Bot force-pushed the renovate/peewee-4.x branch 3 times, most recently from ef0fad9 to de717f6 Compare April 6, 2026 17:55
@renovate
renovate Bot force-pushed the renovate/peewee-4.x branch 3 times, most recently from c9ba699 to bd6f7cb Compare April 23, 2026 22:29
@renovate
renovate Bot force-pushed the renovate/peewee-4.x branch 2 times, most recently from ca7a53e to a774d37 Compare May 20, 2026 14:37
@renovate
renovate Bot force-pushed the renovate/peewee-4.x branch from a774d37 to 43e29c7 Compare May 24, 2026 17:17
@renovate
renovate Bot force-pushed the renovate/peewee-4.x branch from 43e29c7 to a3bd430 Compare June 4, 2026 05:07
@renovate
renovate Bot force-pushed the renovate/peewee-4.x branch 4 times, most recently from 7bce7a9 to 1d7e6f8 Compare June 16, 2026 19:13
@renovate
renovate Bot force-pushed the renovate/peewee-4.x branch 2 times, most recently from ac149f5 to 24214d3 Compare July 4, 2026 13:36
@renovate
renovate Bot force-pushed the renovate/peewee-4.x branch 5 times, most recently from dc7dd08 to d0c4b00 Compare July 14, 2026 19:35
@renovate
renovate Bot force-pushed the renovate/peewee-4.x branch 3 times, most recently from a594fd5 to b3a14fb Compare July 17, 2026 21:09
@renovate
renovate Bot force-pushed the renovate/peewee-4.x branch 2 times, most recently from 8d2ac6e to c1e9f42 Compare July 31, 2026 20:55
@renovate
renovate Bot force-pushed the renovate/peewee-4.x branch from c1e9f42 to 00ff250 Compare August 12, 2026 01:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants