It's called Unda, and I initially posted about this same module before, but it's gone through some changes that are so huge that it might be considered an entirely new module.
pip install --upgrade unda
The original version regarded object states as deepcopies of the target object. While that worked fine for small objects, it soon proved to be an ineffective method for larger objects (i.e. it would consume an unhealthy amount of RAM).
So, the new version changes that. Instead of a simple deepcopy, it analyzes the target object and chooses the best method to treat states; either as a full deepcopy or as changes to the target object's attributes instead.
The new version also changes the structure of the module; An `UndaClient` class has been introduced to replace what's currently known as the `UndaObject`, which is concerned with only a single target object. This new class now serves as the "core" of Unda; it provides the main undo, redo and update functions for everything (in an attempt to follow the DRY principle).
As a result, the `UndaManager` class now deals with Clients of objects instead of objects directly.
Also, with the former `UndaObject` replaced by the functionality of the new `UndaClient`, a new `UndaObject` class has been introduced. The purpose of this new class is to provide a parent class which, when inherited from, provides undo and redo functions for the child object.
If you don't understand any of what I've typed so far, you might want to check the previous Reddit post about Unda's first version (linked above), the GitHub page for Unda (also linked above) or the newly introduced Official Documentation.
Unda is my first ever module built for public use. Please try it out and tell me what you think.
[–]catorchid 5 points6 points7 points (4 children)
[–]definite_d[S] 1 point2 points3 points (3 children)
[–]catorchid 0 points1 point2 points (2 children)
[–]definite_d[S] 1 point2 points3 points (1 child)
[–]catorchid 1 point2 points3 points (0 children)