- Test with history-free and history-preserving RelStorage. Note that history-preserving RelStorage requires RelStorage 3.3 or above, and Python 2.7 or Python 3.6 and above. (#30)
- Add support for Python 3.9.
- Fixed incompatibility with ZODB 5.6 (#35)
- Added support for history-free RelStorage (#28)
- Support zope.interface >= 5 in tests. (issue 32)
- Fail with explanation when opening a Python 2 ZODB with --dry-run on Python 3 (#22)
- Support converting sets.Set() objects from ancient Python 2 versions. (issue 23)
- Convert set objects to
builtins.set
without relying on ZODB.broken.rebuild. (issue 25)
- Enable fallback encodings for Python 3 conversion for old/grown ZODBs using
the new command line option
--encoding-fallback
. (#15) - Switch to use argparse as optparse is deprecated.
- Add ability to run the Python 3 migration with a default encoding for
str
objects. (#14) - Fix updating records that reference a broken interface when the interface's top-level module is missing.
- Fixed skipping of blob records so that oids in references to blobs are still converted.
- Add support for Python 3.8a3.
- Drop support for Python 3.4.
- Skip records for ZODB.blob when migrating database to Python 3 to not break references to blobfiles.
- When migrating databases to Python 3, do not fail when converting attributes containing None.
- Fix tests on Python 2 with ZODB >= 5.4.0, which now uses pickle protocol 3.
- Fix is_broken check for old-style class instances.
- Add support for Python 3.7.
- Drop PyPy support.
- Support Python 2.7 and 3.4, 3.5 and 3.6 and pypy 3. Drop any older version of Python.
- The option to the select the pickler (
--pickler
) has been removed. This was only useful if you had extension classes with Python 2.5 or less. - Added an option to convert a database to Python 3.
- More debug logging shows now the currently processed OID (that is helpful to determine which object misses the factory).
- Support for missing factories have been improved: an error used to occur if a pickle needed an update and contained a reference to a missing class (not instance of this class). This case is now fixed.
- Python 2.4 is no longer supported. Please stick to version 0.3 if you need Python 2.4 support.
- Add an option to debug broken records.
- Add an option to skip records.
- Add an option to use Python unPickler instead of C one. This let you debug records. As well Python unPickler let you update old ExtensionClass records who had a special hack in the past.
- Broken interfaces are well supported now (if you did alsoProvides with them).
- Unplickle and re-pickle the code to rename references to moved classes. This make the script works on database created with older versions of ZODB.
- If you are working directly with a FileStorage, POSKeyError are reported but non-fatal.
- Remove superfluous code that tried to prevent commits when no changes happened: ZODB does this all by itself already.
- Add option to store the rename rules into a file.
- Don't commit transactions that have no changes.
- Load rename rules from entry points
zodbupdate
. - Compatibility with Python 2.4
- Rename from
zodbupgrade
tozodbupdate
. - Add 'verbose' option.
- Improve logging.
- Suppress duplicate log messages (e.g. if the same class is missing in multiple objects).
- Improve the updating process: rewrite pickle opcodes instead of blindly touching a class. This also allows updating pickles that can't be unpickled due to missing classes.
- First release.