This release includes 2 breaking changes for platform teams planning a safe upgrade.
✓ No known CVEs patched in this version
Topics
+13 more
ReleasePort's take
Light signalThe `pyopenvba.access` module has been renamed to `pyopenvba.access_read`. An experimental `AccessReader` API for read‑only Access database access is now available.
Why it matters: Renaming the import path breaks existing imports; adopt `pyopenvba.access_read` before upgrading. The new `AccessReader` offers read‑only Access file support, enabling safer data extraction without write capabilities.
Summary
AI summaryBREAKING: The pyopenvba.access module was renamed to pyopenvba.access_read and the AccessFile class to AccessReader, adding EXPERIMENTAL read‑only Access support, updating path handling, and removing dead write‑path code.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Breaking | High |
Renamed `pyopenvba.access` module to `pyopenvba.access_read`. Renamed `pyopenvba.access` module to `pyopenvba.access_read`. Source: llm_adapter@2026-05-27 Confidence: high |
— |
| Breaking | Medium |
Renamed the `AccessFile` class to `AccessReader`. Renamed the `AccessFile` class to `AccessReader`. Source: granite4.1:30b@2026-05-27-audit Confidence: low |
— |
| Feature | Medium |
Added experimental `AccessReader` for read‑only access to Access .accdb/.mdb files. Added experimental `AccessReader` for read‑only access to Access .accdb/.mdb files. Source: llm_adapter@2026-05-27 Confidence: high |
— |
| Bugfix | Low |
Removed ~1800 lines of dead Access write‑path and associated tests. Removed ~1800 lines of dead Access write‑path and associated tests. Source: llm_adapter@2026-05-27 Confidence: high |
— |
| Refactor | Low |
Adopted strict static analysis: pyright typeCheckingMode = "strict" and curated ruff lint configuration now run clean with 0 errors. Adopted strict static analysis: pyright typeCheckingMode = "strict" and curated ruff lint configuration now run clean with 0 errors. Source: llm_adapter@2026-05-27 Confidence: high |
— |
Full changelog
Added
AccessReader(EXPERIMENTAL) -- pure-Python read-only support for
Microsoft Access.accdb/.mdb(ACE / Jet 4) databases:AccessReader(path)parses the 4 KiB page-layout file header and
validates the ACE / Jet signature.iter_vba_modules()yields every embedded VBA module (VBAModule
dataclass withname,start_offset,attributes_text,source).
Modules are discovered by scanning for MS-OVBA stream signatures and
walking the LVAL page chains they live on -- no Access COM, no
MSysObjects parser required.vba_module_names()deduplicates shadow / undo copies and returns
the live module name list.read_vba_module(name)returns the user-visible source string with
\r\nline endings preserved; matches Access COM
CodeModule.Lines()output byte-for-byte (verified on a 1000-line
Module + 1000-line Class + 500-line Module live fixture against an
Access COM oracle).- Re-exported from
pyopenvbaasAccessReader. - Write path (re-compress + re-allocate LVAL pages) is not implemented;
Access support is read-only by design.
Changed
- BREAKING: Renamed
pyopenvba.accessmodule topyopenvba.access_read
and renamed theAccessFileclass toAccessReaderto make the
read-only access posture explicit. - Adopted strict static analysis: pyright
typeCheckingMode = "strict"
and a curated ruff lint configuration (E, F, W, B, UP, SIM, I, RUF, PIE, C4, PERF, N, TC, RET, TRY) now run clean acrosssrc/and
tests/with 0 errors.
Removed
- Pruned ~1800 lines of dead Access write-path / probe code and the
associated tests that exercised never-public APIs.
Breaking Changes
- Renamed module `pyopenvba.access` to `pyopenvba.access_read`
- Renamed class `AccessFile` to `AccessReader`
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About WilliamSmithEdward/pyOpenVBA
All releases →Related context
Related tools
Earlier breaking changes
- v1.1.1 `add_module(kind=other)` now requires an explicit attribute header; automatic synthesis is disabled.
Beta — feedback welcome: [email protected]