ezvalue
An elegant and powerful implementation of a value object.
ezvalue allows you to create new value objects simply by defining a subclass. Value objects are immutable, but have helpful functionality to create changed clones or a mutable version.
Documentation
The documentation can be found on Read the Docs. A good place to start is the tutorial.