aiosqliteObj module changelog
Jump to a version or snapshot
Reconstructed history of aiosqliteObj, covering 1.0.2.12 through 1.2.10, using all 26 available nonempty source snapshots and the in-module release notes. There are 26 version entries, newest first.
The active module is modules/aiosqliteObj.py modules/aiosqliteObj.py, as selected by modules.json modules.json. The root aiosqliteObj.py aiosqliteObj.py is empty and is not an additional implementation or historical release. See the module documentation.
How to read this history
- Snapshot evidence: each preserved version links to its exact source and the preceding available snapshot. Bullets describe observed changes; the oldest entry records an existing baseline, not the original introduction date of each feature.
- Author notes: notes in all snapshots were compared with the source. In particular, the
PLACEHOLDERconstant predates its 1.1 note; the 1.1.2 note misnames the index API; and the 1.2.5 list-query claim has no corresponding implementation change in that snapshot. These discrepancies are explained below. - Gaps: no source older than 1.0.2.12 is available. Earlier releases and missing version numbers are not invented; the earliest in-module changelog begins at 1.0.2.14.
- Approximate dates: each date is the source file's last-modified timestamp converted to UTC. These are chronological estimates, not confirmed release dates: timestamps may record a later save, backup, or copy. This workspace has no usable Git history to confirm release dates.
- Scope: API additions and removals, behavior changes, fixes, meaningful documentation changes, and startup behavior are included. Historical modules were read and compared without importing or executing them; a recorded addition is not a claim that its first implementation worked correctly.
Compatibility changes to notice
- Default integer primary keys become autoincrementing in 1.0.2.13.
- Query parameterization begins in 1.1 and receives follow-up fixes in 1.1.0.1, 1.1.3, 1.2.4, and 1.2.6.
- The short-lived
TableManager.add_indexhelper becomes synchronous in 1.1.2.2 and disappears in 1.1.3;DatabaseManager.add_indexremains the manager API. - In 1.2,
columnsis inserted into the positional signatures ofselect_allandselect. Existing positional arguments after the insertion point must be reviewed. - Index reconciliation starts recreating mismatched definitions in 1.2.8, with attribute and quoting fixes in 1.2.9.
- In 1.2.10, five query methods accept a caller-managed connection;
insertandupdateskip automatic commit/vacuum checks when it is supplied.
Releases
1.2.10
Approximate date: 2026-09-21 (snapshot timestamp, UTC).
- Added optional
connection=Nonetoexecute,select_all,select,insert, andupdate. Supplying a connection uses that connection's cursor, allowing callers to manage transactions. - Skipped
_auto_check()forinsertandupdatewhen an explicit connection is supplied; the other three methods did not invoke that check previously. Existing default-connection paths remain in place. - Changed direct script execution to
pmblue_update.self_update(adv_info=True, primary_mod=True); the ordinary-import self-update call remainspmblue_update.self_update(adv_info=True).
Evidence: Snapshot 1.2.10 modules/aiosqliteObj.py; compared with 1.2.9 backups/aiosqliteObj_1.2.9.py.
1.2.9
Approximate date: 2026-09-21 (snapshot timestamp, UTC).
- Stripped surrounding double quotes from parsed index column names.
- Set
columnson manager-created index definitions and changed mismatch comparisons to use that attribute on both sides, fixing the 1.2.8column_namesmismatch. - Added direct debug prints of actual and desired column lists when recreating a mismatched index. There is no separate in-module release note for this version.
Evidence: Snapshot 1.2.9 backups/aiosqliteObj_1.2.9.py; compared with 1.2.8 backups/aiosqliteObj_1.2.8\n.py.
1.2.8
Approximate date: 2026-05-13 (snapshot timestamp, UTC).
- Extended
DatabaseManager.initializeto compare existing index table, columns, and uniqueness and drop/recreate mismatched definitions instead of accepting matching names alone. - The first implementation compares
idx.column_names, although inspectedIndexobjects exposecolumns; 1.2.9 corrects the attribute mismatch. The author note records the intended reconciliation behavior.
Evidence: Snapshot 1.2.8 backups/aiosqliteObj_1.2.8\n.py; compared with 1.2.7 backups/aiosqliteObj_1.2.7\n.py.
1.2.7
Approximate date: 2026-05-13 (snapshot timestamp, UTC).
- Invalidated the cached column metadata for a table after
Database.add_column, before refreshing its column names. This allows manager initialization to add a column and then create an index on it in the same pass.
Evidence: Snapshot 1.2.7 backups/aiosqliteObj_1.2.7\n.py; compared with 1.2.6 backups/aiosqliteObj_1.2.6\n.py.
1.2.6
Approximate date: 2026-05-07 (snapshot timestamp, UTC).
- Fixed list/tuple filter detection in
select,update, anddelete, generating parameterizedINclauses withPLACEHOLDERinstead of the previously ineffective list-class comparison. - Compiled empty list/tuple filters as always false (
1 = 0), or always true (1 = 1) when wrapped inis_not, avoiding empty membership lists.
Evidence: Snapshot 1.2.6 backups/aiosqliteObj_1.2.6\n.py; compared with 1.2.5 backups/aiosqliteObj_1.2.5\n.py.
1.2.5
Approximate date: 2026-04-28 (snapshot timestamp, UTC).
- Added an author note claiming list-query fixes, but the only differences from 1.2.4 are that note and the version declaration. No corresponding implementation change appears in this snapshot; list/tuple filter handling changes in 1.2.6.
Evidence: Snapshot 1.2.5 backups/aiosqliteObj_1.2.5\n.py; compared with 1.2.4 backups/aiosqliteObj_1.2.4\n.py.
1.2.4
Approximate date: 2026-04-28 (snapshot timestamp, UTC).
- Changed non-string, non-
Noneassignment values inDatabase.updateto use bound parameters. Strings were already parameterized;Nonecontinues to generate SQLNULL.
Evidence: Snapshot 1.2.4 backups/aiosqliteObj_1.2.4\n.py; compared with 1.2.3 backups/aiosqliteObj_1.2.3\n.py.
1.2.3
Approximate date: 2026-04-03 (snapshot timestamp, UTC).
- Changed
_col_names_updateto callDatabase.columns(table)directly instead ofTable.columns(), including when refreshing all known tables.
Evidence: Snapshot 1.2.3 backups/aiosqliteObj_1.2.3\n.py; compared with 1.2.2 backups/aiosqliteObj_1.2.2\n.py.
1.2.2
Approximate date: 2026-04-03 (snapshot timestamp, UTC).
- Updated
Database.create_tableto append the new table to an already initialized table cache whenonly_connectionis enabled.
Evidence: Snapshot 1.2.2 backups/aiosqliteObj_1.2.2\n.py; compared with 1.2.1 backups/aiosqliteObj_1.2.1\n.py.
1.2.1
Approximate date: 2026-04-03 (snapshot timestamp, UTC).
- Added a fallback
SELECT name FROM sqlite_masterwhen table introspection throughsqlite_schemareturns no rows. This fallback is triggered by an empty result, not by an exception from an unavailable schema view.
Evidence: Snapshot 1.2.1 backups/aiosqliteObj_1.2.1\n.py; compared with 1.2 backups/aiosqliteObj_1.2\n.py.
1.2
Approximate date: 2026-04-03 (snapshot timestamp, UTC).
- Added
columnstoDatabase.select_allandDatabase.select, accepting raw string projections or lists/tuples of quoted, validated column names.Noneand empty lists/tuples select all columns. - Inserted
columnsbeforedict_modeinselect_alland beforecountinselect; callers using positional arguments at or after those positions see a signature change.
Evidence: Snapshot 1.2 backups/aiosqliteObj_1.2\n.py; compared with 1.1.3 backups/aiosqliteObj_1.1.3\n.py.
1.1.3
Approximate date: 2026-04-02 (snapshot timestamp, UTC).
- Added
Index.tableas an alias fortbl_name; made SQL parsing tolerate empty or unavailable SQL by falling back to empty columns and nonunique status. - Passed the accumulated parameter list to
Database.deleteexecution, completing the parameter-binding step omitted in 1.1. - Removed the short-lived
TableManager.add_indexforwarding helper; index definitions remain available throughDatabaseManager.add_index. - Skipped indexes whose names begin with
sqlite_when considering unmanaged indexes for removal. These are the concrete changes behind the author note “Essential bug fixes.”
Evidence: Snapshot 1.1.3 backups/aiosqliteObj_1.1.3\n.py; compared with 1.1.2.2 backups/aiosqliteObj_1.1.2.2\n.py.
1.1.2.2
Approximate date: 2026-03-19 (snapshot timestamp, UTC).
- Changed
TableManager.add_indexfrom an async method to a synchronous forwarding method, removing itsawait. It still forwards toself.db.add_index; 1.1.3 removes this helper.
Evidence: Snapshot 1.1.2.2 backups/aiosqliteObj_1.1.2.2\n.py; compared with 1.1.2.1 backups/aiosqliteObj_1.1.2.1\n.py.
1.1.2.1
Approximate date: 2026-03-19 (snapshot timestamp, UTC).
- Normalized a single string
column_namesargument to a one-element list inDatabaseManager.add_index, and rejected inputs other than strings, lists, or tuples.
Evidence: Snapshot 1.1.2.1 backups/aiosqliteObj_1.1.2.1\n.py; compared with 1.1.2 backups/aiosqliteObj_1.1.2\n.py.
1.1.2
Approximate date: 2026-03-19 (snapshot timestamp, UTC).
- Added
DatabaseManager.add_index, stored manager index definitions, and extendedinitialize()to create missing indexes and offer removal of unmanaged indexes unlessoverrideis enabled. - Added an asynchronous
TableManager.add_indexforwarding helper. The author note calls thisIndex.add_index; no method with that name exists onIndex. - This first manager implementation constructs
Indexobjects with empty SQL and references an absenttablealias; the parsing/alias fixes arrive in 1.1.3. The forwarding helper is also removed there.
Evidence: Snapshot 1.1.2 backups/aiosqliteObj_1.1.2\n.py; compared with 1.1.1.2 backups/aiosqliteObj_1.1.1.2\n.py.
1.1.1.2
Approximate date: 2026-03-19 (snapshot timestamp, UTC).
- Removed
or Truefrom the main-script condition. Ordinary imports now callpmblue_update.self_update(adv_info=True)through the import branch; direct execution retains the explicitprimary_mod=Falsecall. Both branches still self-update.
Evidence: Snapshot 1.1.1.2 backups/aiosqliteObj_1.1.1.2\n.py; compared with 1.1.1.1 backups/aiosqliteObj_1.1.1.1\n.py.
1.1.1.1
Approximate date: 2026-03-19 (snapshot timestamp, UTC).
- Expanded the 1.1.1 author notes to mention
Index.drop()andDatabase.create_index(), which were already implemented in 1.1.1. No implementation change beyond the version declaration.
Evidence: Snapshot 1.1.1.1 backups/aiosqliteObj_1.1.1.1\n.py; compared with 1.1.1 backups/aiosqliteObj_1.1.1\n.py.
1.1.1
Approximate date: 2026-03-19 (snapshot timestamp, UTC).
- Added the
Indexmodel with name/table/SQL metadata, uniqueness and column parsing, comparisons, anddrop(). - Added
Database.indexes()andDatabase.create_index(), including column validation, optional unique indexes, commit, and anIndexreturn value. - Changed table introspection from
sqlite_mastertosqlite_schema.
Evidence: Snapshot 1.1.1 backups/aiosqliteObj_1.1.1\n.py; compared with 1.1.0.1 backups/aiosqliteObj_1.1.0.1\n.py.
1.1.0.1
Approximate date: 2026-03-19 (snapshot timestamp, UTC).
- Changed the fallback branch in
Database.updatefilters to bind the value as a parameter instead of interpolating it into SQL.
Evidence: Snapshot 1.1.0.1 backups/aiosqliteObj_1.1.0.1\n.py; compared with 1.1 backups/aiosqliteObj_1.1\n.py.
1.1
Approximate date: 2026-03-19 (snapshot timestamp, UTC).
- Replaced substantial value interpolation in
select,update, andinsertwith parameter lists and placeholders, including strings, ordinary select values, positive ranges, and LIKE/contains filters. - Added placeholder-based list-filter construction in select/update/delete. The original list type checks still use the wrong class-name string; 1.2.6 later corrects list/tuple detection.
- Began parameterizing
deletefilters, but its execution call still omitted the accumulated parameter list until 1.1.3. This is a partial parameterization change, not a claim that every query path was converted. - Added author notes for parameterization and
PLACEHOLDER; the constant itself is already present in 1.0.3.
Evidence: Snapshot 1.1 backups/aiosqliteObj_1.1\n.py; compared with 1.0.3.1 backups/aiosqliteObj_1.0.3.1\n.py.
1.0.3.1
Approximate date: 2026-03-19 (snapshot timestamp, UTC).
- Added
parameters=NonetoDatabase.executeand forwarded it to the cursor, enabling bound parameters for direct query execution.
Evidence: Snapshot 1.0.3.1 backups/aiosqliteObj_1.0.3.1\n.py; compared with 1.0.3 backups/aiosqliteObj_1.0.3\n.py.
1.0.3
Approximate date: 2026-03-19 (snapshot timestamp, UTC).
- Reworked
_itemStrto escape single quotes by doubling them, emit SQLNULLforNone, encode bytes as hexadecimal literals, and render numeric/boolean values explicitly. - Added
PLACEHOLDER = "?". The later 1.1 author note assigns the constant to 1.1, but it first appears in this preserved snapshot.
Evidence: Snapshot 1.0.3 backups/aiosqliteObj_1.0.3\n.py; compared with 1.0.2.15 backups/aiosqliteObj_1.0.2.15\n.py.
1.0.2.15
Approximate date: 2026-03-19 (snapshot timestamp, UTC).
- Added an explicit
item == Nonecheck toDatabase.updatefilter handling, allowing that branch to generateIS NULL. The author describes this as a possible fix; this entry records the source change without claiming broader null-filter correctness.
Evidence: Snapshot 1.0.2.15 backups/aiosqliteObj_1.0.2.15\n.py; compared with 1.0.2.14 backups/aiosqliteObj_1.0.2.14\n.py.
1.0.2.14
Approximate date: 2025-08-28 (snapshot timestamp, UTC).
- Fixed the misspelled
distictvariable inTable.row_count(distinct=...). - Updated
Database._get_tableto convert suppliedTableobjects to their name strings. - Introduced the preserved in-module changelog.
Evidence: Snapshot 1.0.2.14 backups/aiosqliteObj_1.0.2.14\n.py; compared with 1.0.2.13 backups/aiosqliteObj_1.0.2.13\n.py.
1.0.2.13
Approximate date: 2025-08-28 (snapshot timestamp, UTC).
- Added
autoincrementtoNewColumnandTableManager.add_column, emittingAUTOINCREMENTfor integer primary keys when enabled. - Enabled autoincrement by default in
NewColumn.int_primary_key()and the defaultidcolumn used byDatabase.create_table().
Evidence: Snapshot 1.0.2.13 backups/aiosqliteObj_1.0.2.13\n.py; compared with 1.0.2.12 backups/aiosqliteObj-1.0.2.12.py.
1.0.2.12
Approximate date: 2025-01-12 (snapshot timestamp, UTC).
- Earliest preserved implementation. Provides an asynchronous
Databasewrapper aroundaiosqlite, with connection/cursor management, select/insert/update/delete operations, commit, vacuum, transaction state, and configurable automatic commit/vacuum thresholds. - Includes
Table,Column, andNewColumnmodels; table and column creation/removal; schema introspection and column caches;TableManagerandDatabaseManagerfor schema initialization. - Includes
between,like,contains,case_insensitive, andis_notquery wrappers, queued pragma access andJournalModesettings, dictionary/CSV/HTML export, and request pagination. - Includes a local
Versionhelper and updater bootstrap. Importing the module invokespmblue_update.self_update(adv_info=True, primary_mod=False)because the main-script condition includesor True. - No earlier source exists to assign these features to individual releases. The baseline builds substantial SQL directly from values; later snapshots replace portions with bound parameters.
Evidence: Snapshot 1.0.2.12 backups/aiosqliteObj-1.0.2.12.py; earliest available implementation, with no earlier source snapshot to compare.