v3.12.5
Bugfix release, which increases backwards compatibility with earlier eopkg.py2
versions and forwards compatibility with newer eopkg.py3
versions.
- Previously, we used a long-out-of-date db5 (
bsddb
/dbhash
) format database for the underlying FilesDB class backing shelve. However, support for db5 was dropped in Python 3.9, thus hampering compatibility. - Instead, we now go to great lengths to ensure that the underlying backing shelve is auto-upgraded to a versioned gdbm format database with Pickle Protocol Version 2 contents for the FilesDB class.
- For
eopkg.py2
, the FilesDB version property is set to 3. This ensures that the FilesDB is only rewritten if the user switches back and forth betweeneopkg.py2
andeopkg.py3
. - LazyDB pickle caches now use Pickle Protocol Version 2 as well, and each LazyDB instance will now have a version property, which is keyed to the release version of
eopkg.py2
, thus ensuring that LazyDB caches are automagically updated on version mismatches. - The internals and the output of
eopkg.py2 rdb
has been cleaned up significantly.
What's Changed
- eopkg.py2: Add explicit LazyDB and FilesDB pickle_protocol_version defaults by @ermo in #88
- py2 LazyDB/FilesDB: Use pickle protocol v2, write gdbm-backed shelve, set FILESDB_FORMAT_VERSION = 3 by @joebonrichie and @ermo in #86
- py2: Bring filesdb code in line with py3 version by @ermo in #94
Full Changelog: v3.12.4...v3.12.5