Skip to main content

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

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

If you're not sure about the file name format, learn more about wheel file names.

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.

Release history Release notifications | RSS feed

This release

0.0.7 This release

2 files

0.0.6

2 files

0.0.5

2 files

0.0.4

2 files

0.0.3

2 files

0.0.2

2 files

0.0.1

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page