Major Features
- Pointer ptype may now be the string name of a property class.
- This allows recursive pointers to compile
- Once importing is complete `properties.Pointer.resolve()` resolves these string ptypes into PropertyClass ptypes
- This release introduces and corrects for infinite loops during validation
- PropertyClasses now contain a `_dirty` attribute
- This lists the properties that have been changed
- It recurses into pointers to determine if they are dirty as well
- `_on_property_change` hook fires when properties are changed
- `_mark_clean` makes all properties no longer dirty
- Several non-backwards-compatible variable and method name changes for PEP8 compatibility
- `properties.vmath.Vector` methods `.as*` with camelCase renamed to `.as_*` with no camel case
- `properties.basic.Range` attributes `maxValue` and `minValue` renamed `max_value` and `min_value`
- Other internal name changes are also included
Minor Features
- Color may now be 'random'
- Array properties may only have dtype `float`, `int`, or `(float, int)`. `None` is no longer an option
- 'auto_create' is now an attribute of properties
- The default is `True`
- However it can be set to `False` if an creating a default property class instance is unwanted (or cannot be done due to required initialization parameters)
- 'repeated' properties can now be 'required' so one or more value is required
- Improved `properties.basic.Range` and `properties.basic.RangeInt`
- Broken and incomplete math classes (matrix, plane, and parallelogram) removed