pyDictStore adds automated dictionary storage to properties eliminating the need for code bodies, property getters and setters. It also provides a property change event.
Project description
What is pyDictStore
pyDictStore adds automated dictionary storage to properties eliminating the need for code bodies, property getters and setters. It also provides a property change event.
Minimum usage
The minimum usage of this library requires you to add the @storage decorator to your class. This will automatically wrap your properties with the auto storage capabilities. The default value applied to any property is None. To override this, you will need to apply the @default decorator to your propperty's getter.
@storage
class ExampleClass():
@property
def exampleProperty(self): ...
@exampleProperty.setter
def exampleProperty(self,value): ...
...with default value
@storage
class ExampleClass():
@property
@default(10)
def exampleProperty(self) -> int: ...
@exampleProperty.setter
def exampleProperty(self,value) -> None: ...
Overriding the getter and setter
getter
If the getter returns a value other than None it will override the value pulled by pyDictStore. The example below will result in the property always returning 12.
@storage
class ExampleClass():
@property
@default(10)
def exampleProperty(self) -> int:
return 12
setter
Overriding the setter allows you to modify the value that is saved into storage. This is helpful if you need to perform logic against the value being passed in or if you want to force the storage type; such as parsing an integer from a string or storing a Boolean value as an integer. To do this requires ignoring normal setter conventions by using a return statement.
:warning: Warning: Overriding the output does not work if you return a value of None.
@storage
class ExampleClass():
@property
@default(10)
def exampleProperty(self) -> int: ...
@exampleProperty.setter
def exampleProperty(self,value) -> None:
return value * 3
Event Handling
When the setter of a property is called it will raise a PropertyChanged Event within your class. This provides you the instance of the class that raised the event, the name of the property, the previous value, and the new value.
:bulb: Note: When the default value is instantiated the PropertyChanged event does not fire.
...event handler within class
@storage
class ExampleClass():
def __init__(self) -> None:
self.PropertyChanged += self.onPropertyChanged
@staticmethod
def onPropertyChanged(sender, name:str, oldValue, newValue):
... #Your Custom Action here
@property
@default(10)
def exampleProperty(self) -> int: ...
@exampleProperty.setter
def exampleProperty(self,value) -> None: ...
...event handler external from class
def onPropertyChanged(sender, name:str, oldValue, newValue):
... #Your Custom Action here
@storage
class ExampleClass():
def __init__(self) -> None:
self.PropertyChanged += onPropertyChanged
@property
@default(10)
def exampleProperty(self) -> int: ...
@exampleProperty.setter
def exampleProperty(self,value) -> None: ...
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
Built Distribution
File details
Details for the file pyDictStore-1.0.4.tar.gz
.
File metadata
- Download URL: pyDictStore-1.0.4.tar.gz
- Upload date:
- Size: 4.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.11
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 82ea5116b271ad7c2cb25566125b56c438a9c7eeb702d9da0c5aebea696a7d5e |
|
MD5 | eef827f6da4f299999f4ebc483ef37f0 |
|
BLAKE2b-256 | ab9722886eb18d95d16c1ae9761530a5e25df04c6ed4310c53e4a96df04a7fa0 |
File details
Details for the file pyDictStore-1.0.4-py3-none-any.whl
.
File metadata
- Download URL: pyDictStore-1.0.4-py3-none-any.whl
- Upload date:
- Size: 5.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.11
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9ec4b686edefa443322ed50a3e1c261967c8cfdb5a539f7d7549a843bb1eebc7 |
|
MD5 | e75df30501c55aa58ccf8c98f5345a8b |
|
BLAKE2b-256 | a23475229f8db389493fe56888df6ce765a39e84900c765cb6fd7b22b268d299 |