- Info:
DDD Value Object implementation.
Features
Value Objects are immutable.
Two objects with the same values are considered equal
Access to values with dot notation: value.my_attr
Access to values by key: value['my_attr']
Installation
pipenv install vo # or pip install vo
Package: https://pypi.org/project/vo/
Documentation
Full documentation: http://vo.readthedocs.io
Public API: http://vo.readthedocs.io/en/latest/api.html
Examples and usage ideas: http://vo.readthedocs.io/en/latest/examples.html
Quick Example
Value accept any key=value pairs. These pairs will be attached to object as attributes. Once created values are immutable. Attributes can’t be changed or deleted.
>>> from vo import Value
>>> book = Value(title='Learning Python',
... authors=['Mark Lutz', 'David Ascher'],
... publisher="O'REILLY")
>>> book
Value(authors=['Mark Lutz', 'David Ascher'], publisher="O'REILLY", title='Learning Python')
>>> str(book)
'{"authors": ["Mark Lutz", "David Ascher"], "publisher": "O\'REILLY", "title": "Learning Python"}'
>>> from vo import Value
>>> book = Value(title='Learning Python',
... authors=['Mark Lutz', 'David Ascher'],
... publisher="O'REILLY")
>>> book.title = 'Spam'
Traceback (most recent call last):
File "<input>", line 1, in <module>
raise ImmutableInstanceError()
vo.value.ImmutableInstanceError: Modification of Value frozen instance is forbidden.
Values access
Values can be accessed like object attributes or like dict keys.
>>> from vo import Value
>>> book = Value(title='Learning Python',
... authors=['Mark Lutz', 'David Ascher'],
... publisher="O'REILLY")
>>> book.title == book['title']
True
>>> book.authors == book['authors']
True
Objects comparison
Let’s take the same book example.
>>> from vo import Value
>>> book1 = Value(title='Learning Python',
... authors=['Mark Lutz', 'David Ascher'],
... publisher="O'REILLY")
>>> book2 = Value(title='Learning Python',
... authors=['Mark Lutz', 'David Ascher'],
... publisher="O'REILLY")
>>> book1 == book2
True
>>> book1 is book2
False
Value lookup
Check if value exists.
>>> from vo import Value
>>> book = Value(title='Learning Python',
... authors=['Mark Lutz', 'David Ascher'],
... publisher="O'REILLY")
>>> 'title' in book
True
>>> 'price' in book
False
>>> book.title
'Learning Python'
>>> book.price
Traceback (most recent call last):
File "<input>", line 1, in <module>
AttributeError: 'Value' object has no attribute 'price'
Release files for vo 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| vo-1.0.0.tar.gz | 32.4 kB | Details |
Release files / vo-1.0.0.tar.gz
| Download URL | vo-1.0.0.tar.gz |
|---|---|
| Size | 32.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
41de934bf99f1517b5b583ca16500cdb899d6c7d0216eb0897a8e3e6dd217708
|
|
BLAKE2b-256 checksum How to use checksums |
5d94b2afbc4192c6a16568d4a3094531628baab9a3818485340f066213de924b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |