Skip to main content

General undo/redo framework for Python

Project description

collections-undo

General undo/redo implementation in Python. → Documentation

Installation

pip install -U collections-undo

Basic usage

You'll have to create reversible functions using UndoManager.

from collections_undo import UndoManager

class A:
    mgr = UndoManager()

    @mgr.undoable  # create a reversible function
    def f(self, x):
        print("do", x)

    @f.undo_def  # define undo
    def f(self, x):
        print("undo", x)

a = A()

a.f(0)  # Out: "do" 0
a.mgr.undo()  # Out: "undo" 0
a.mgr.redo()  # Out: "do" 0

ABC-like undo implementation

To avoid careless errors, ABC-like interface will be useful.

from collections_undo.abc import UndoableABC, undoablemethod, undo_def

class A(UndoableABC):
    @undoablemethod
    def f(self, x):
        print("do", x)

    @undo_def(f)
    def f(self, x):
        print("undo", x)

a = A()  # OK

a.f(0)  # Out: "do" 0
a.undo()  # Out: "undo" 0
a.redo()  # Out: "do" 0

If undo is not defined, construction fails.

class A(UndoableABC):
    @undoablemethod
    def f(self, x):
        ...

a = A()  # TypeError

class B(A):
    @undo_def(A.f)
    def f(self, x):
        ...

b = B()  # OK

Builtin undoable objects

These mutable classes have undo and redo method to handle operations that mutate the object.

  • Ready-to-use classes

    • UndoableList ... insert, __setitem__, extend etc. are undoable.
    • UndoableDict ... __setitem__, update etc. are undoable.
    • UndoableSet ... add, discard etc. are undoable.
  • Abstract classes

    • AbstractUndoableList
    • AbstractUndoableDict
    • AbstractUndoableSet

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

collections-undo-0.0.7.tar.gz (18.4 kB view details)

Uploaded Source

Built Distribution

collections_undo-0.0.7-py3-none-any.whl (24.8 kB view details)

Uploaded Python 3

File details

Details for the file collections-undo-0.0.7.tar.gz.

File metadata

  • Download URL: collections-undo-0.0.7.tar.gz
  • Upload date:
  • Size: 18.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.0 importlib_metadata/4.13.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.63.0 CPython/3.9.7

File hashes

Hashes for collections-undo-0.0.7.tar.gz
Algorithm Hash digest
SHA256 b161f628510f64fbe2889c35b397553320e6efe7dd106408d3b069affede3ac4
MD5 fd348ca1e5923fdd094fd5d6a93afb10
BLAKE2b-256 7e1c12b3599e8ec6f901f0c8a1baeeec2910c039c188e120e675f3121a4a8ca7

See more details on using hashes here.

File details

Details for the file collections_undo-0.0.7-py3-none-any.whl.

File metadata

  • Download URL: collections_undo-0.0.7-py3-none-any.whl
  • Upload date:
  • Size: 24.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.0 importlib_metadata/4.13.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.63.0 CPython/3.9.7

File hashes

Hashes for collections_undo-0.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 ac1dda443a9efac96725832db1393d203ff0d8a47efabd306b1eb5002be54f04
MD5 5773b09d055aef7a2eb9d448a961dbfb
BLAKE2b-256 1475a4c3800ea402a27c870a0fd4bef41d627d3176fe97c21f870a4759744d58

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page