Skip to content

shaharazulay/traceable-dict

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TraceableDict ============

Traceable Python dictionary, that stores change history in an efficient way inside the object.

image

Shahar Azulay, Rinat Ishak

Travis_ Codecov_ Python27_ Python35_ License_

Documentation_

Usage Examples:

Create a traceable dictionary

>>> from traceable_dict import TraceableDict >>> d1 = {'old_key': 'old_value'} >>> D1 = TraceableDict(d1) >>> D1 {'old_key': 'old_value', '__trace__': {}, '__revisions__': []} >>> D1.revisions []

Commit the dictionary for the first time

>>> D1.has_uncommitted_changes True >>> >>> D1.commit(revision=1) >>> D1 {'old_key': 'old_value', '__trace__': {}, '__revisions__': [1]} >>> D1.revisions [1] >>> D1.has_uncommitted_changes False

Update the dictionary while tracing the changes

>>> D1['new_key'] = 'new_value' >>> D1.trace {'_uncommitted': [(('_root', 'new_key'), None, '__a__')]} >>> D1.has_uncommitted_changes True >>> D1.commit(revision=2) >>> D1.trace {'2': [(('_root', 'new_key'), None, '__a__')]} >>> D1.has_uncommitted_changes False >>> D1.revisions [1, 2]

Checkout previous revisions

>>> D1.as_dict() {'old_key': 'old_value', 'new_key': 'new_value'} >>> >>> D_original = D1.checkout(revision=1) >>> D_original.as_dict() {'old_key': 'old_value'}

About

Traceable Python dictionary, that stores change history in an efficient way inside the object.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages