datahold
Project description
Overview
Wrap common mutable datastructures for inheritance with modification.
Content
BaseList
To understand the class BaseList here the beginning of its code:
class BaseList:
data: list
@functools.wraps(list.__add__)
def __add__(self, *args, **kwargs):
data = self.data
ans = data.__add__(*args, **kwargs)
self.data = data
return ans
The following methods are defined this way: __add__, __contains__, __delitem__, __eq__, __format__, __ge__, __getitem__, __gt__, __hash__, __iadd__, __imul__, __iter__, __le__, __len__, __lt__, __mul__, __repr__, __reversed__, __rmul__, __setitem__, __str__, append, clear, copy, count, extend, index, insert, pop, remove, reverse, sort.
The only function present in list and absent in BaseList is __class_getitem__
We can use BaseList as parent for a list-like class. It is recommended to implement in the subclass:
a property named data with getter and setter wrapping a private variable (for example named _data)
the __init__ magic method
This allows the creatation of a list-like class with modified behaviour with only minimal effort. To enhance perpormance we can overwrite some of the methods.
OkayList
This class inherits from BaseList and implements some common sense overwrites for further inheritance. For example:
the comparison operations are overwritten:
__eq__ returns True iff types are equal and data is equal
__ne__ negates __eq__
__ge__ returns type(self)(other).__le__(self)
__gt__ returns True iff __eq__ returns False and __ge__ returns True
__lt__ returns True iff __eq__ returns False and __le__ returns True
__le__ returns self.data.__le__(type(self)(other).data)
modify __eq__ or __le__ as needed to change the behaviour of the other comparison methods
__hash__ raises now a more fitting exception
__iadd__ uses now extend
__init__ allows now to set data immediately
BaseDict
Just like BaseList but for dict… The following methods are implemented: __contains__, __delitem__, __eq__, __format__, __ge__, __getitem__, __gt__, __hash__, __ior__, __iter__, __le__, __len__, __lt__, __or__, __repr__, __reversed__, __ror__, __setitem__, __str__, clear, copy, get, items, keys, pop, popitem, setdefault, update, values. The classmethods __class_getitem__ and fromkeys are not implemented.
OkayDict
This class inherits from BaseDict and implements some common sense overwrites for further inheritance. For example:
the comparison operations are overwritten like in OkayList (see there)
BaseSet
Just like BaseSet but for set… The following methods are implemented: __and__, __contains__, __eq__, __format__, __ge__, __gt__, __hash__, __iand__, __ior__, __isub__, __iter__, __ixor__, __le__, __len__, __lt__, __or__, __rand__, __repr__, __ror__, __rsub__, __rxor__, __str__, __sub__, __xor__, add, clear, copy, difference, difference_update, discard, intersection, intersection_update, isdisjoint, issubset, issuperset, pop, remove, symmetric_difference, symmetric_difference_update, union, update. The classmethod __class_getitem__ is not implemented.
OkaySet
This class inherits from BaseSet and implements some common sense overwrites for further inheritance. For example:
the comparison operations are overwritten like in OkayList (see there)
Installation
To install datahold, you can use pip. Open your terminal and run:
pip install datahold
License
This project is licensed under the MIT License.
Links
Credits
Author: Johannes
Thank you for using datahold!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file datahold-0.2.34.tar.gz
.
File metadata
- Download URL: datahold-0.2.34.tar.gz
- Upload date:
- Size: 7.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 63d1edce021c4c6a6c340f1514900b3ae0128faa6a889a04a4e7844f923bb149 |
|
MD5 | 8c55a8e0b19762ce8d506d8867d01043 |
|
BLAKE2b-256 | 24b0efbab72a260da978f5d70eb85a909a442b7e501964cfd392549576892734 |
File details
Details for the file datahold-0.2.34-py3-none-any.whl
.
File metadata
- Download URL: datahold-0.2.34-py3-none-any.whl
- Upload date:
- Size: 5.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2a642328095f60b2176bd4f7c19e1aaa14ce3dbec9341fa9a5469ce8fe7423e0 |
|
MD5 | e194455ef41d7b7443942d926ab115d9 |
|
BLAKE2b-256 | dba467663c6cf897c285836656e613db605fef90d7a3d511e618257dbfb6817a |