Skip to content

Releases: seequent/properties

v0.6.1 - Support np.bool_ in Boolean.from_json

23 Sep 22:21
Compare
Choose a tag to compare

Bug Fixes

  • properties.Boolean.from_json now allows np.bool_ values in the input JSON. (See #289 - thanks @lheagy !)

v0.6.0 - Fix Diamond Inheritance, Allow Unsigned Int Arrays

18 Sep 20:04
Compare
Choose a tag to compare

Minor Changes

  • properties.Array now supports unsigned integer arrays. (See #274)
  • coerce is added as a new keyword argument for properties.Array. By default, this is True and inputs are coerced to the corresponding numpy array class, matching previous behaviour. However, if coerce=False inputs are not coerced and a ValidationError is raised if they do not match the corresponding numpy array class. (See #272)
  • Properties defined on mixin classes which use the PropertyMetaclass but do inherit HasProperties are now respected. (See #283 - thanks @hishnash!)
  • Explicit support added for Python 3.7 and removed for 3.4. (See #281)

Bug Fixes

  • Order of property resolution for HasProperties classes with diamond inheritance was fixed to be more sensible and in line with attribute resolution for object diamond inheritance. Although this is considered a fix, it does fundamentally change inheritance logic for existing classes with diamond inheritance and is therefore not backwards compatible. (See #275 and additional conversation #276)
  • Ensure ValidationErrors with no reason/prop/instance are not ignored. (See #271)

v0.5.6 - Speed up Vector3Array validation

01 Mar 21:23
Compare
Choose a tag to compare

Bug fix

  • Vector3Array validation is simplified to not include the check for string representations (e.g. 'up', 'east') if using a numpy array. This vastly speeds up validation for large arrays since we no longer must iterate through every value. This fix is already present in Vector2Array. See gmggroup/omf#43

v0.5.5 - Better Error Messaging

16 Jan 01:57
Compare
Choose a tag to compare

New Feature

  • Improved ValidationError messaging, including more details on property errors and info about underlying errors on Union and Instance property validation (See: #261)

Bug Fixes

v0.5.4 - URL property under web extras

02 Oct 22:49
Compare
Choose a tag to compare

New Features

  • New URL property under web extras

Bug Fixes

  • Fix typo in Pointer uid_prop getter

v0.5.3 - Task refactor, minor bug fixes

16 Aug 19:49
Compare
Choose a tag to compare

Minor Changes

  • properties.extras.Task has been refactored for more distinction between inputs/outputs and the task itself (see #252 for slightly more context).

Bug Fixes

  • Container property names now propagate to prop when the default is used (see #254).
  • Custom serializer/deserializer functions that allow kwargs now respect provided kwargs rather than ignoring them (see #253).

v0.5.2 - Unpin vectormath

03 Jul 08:58
Compare
Choose a tag to compare

Minor Updates

  • Unpin vectormath dependency to allow any release >=0.1.4 (see #247).
    • This is in response to the vectormath update from version 0.1.4 to 0.2.0, which introduced some backwards-incompatible changes (see the release notes). Now, either version of the library may be used with properties

v0.5.1 - Make picklable, fix union deserialization

19 Jun 04:26
Compare
Choose a tag to compare

Minor Changes

  • Pickling HasProperties instances works better now. They no longer override __reduce__ and __setstate__, and instead are just tweaked so the default pickle behavior is satisfactory (see #243).

Bug Fixes

  • Bug where union deserialization leads to invalid state has been fixed (see #245).

v0.5.0 - Better validation errors, new extras, Union property tweaks

07 Jun 08:47
Compare
Choose a tag to compare

Backwards-Incompatible Changes

  • Union property deserialization has been improved more reliably reconstruct correct instances (see #228)
    • This requires new strict_instances attribute on Union properties
    • It also adds strict and assert_valid on deserialize, instead of `verbose.
    • There is no guarantee that Union properties behave identically to their previous behaviour.
  • Task classes are moved from properties.task.Task to properties.extras.Task

Major Features

  • New ValidationError is raised when validation fails (see #224)
    • This is a subclass of ValueError
    • Multiple validation errors are now collected and raised together in one error description.
    • There is also an error hook called on validation error to customize error behaviour
  • New extras classes:
    • HasUID and Pointer (see #234)
    • Singleton (see #227)

v0.4.0 - Links, Dictionary property, and more

21 Feb 05:26
Compare
Choose a tag to compare

Backwards-Incompatible Changes

  • Container properties no longer use an empty container as their _class_default; instead, the class default is properties.undefined, like all other built-in property types. This gives consistent behavior across all built-in property defaults. It also avoids unexpected problems with validation outlined in #169. (See #219)

    In order to update code from properties v0.3.5 to v0.4.0, you may simply add the appropriate default on each container property. For example:

    import properties
    assert properties.__version__ == '0.3.5'
    
    class MyClass(properties.HasProperties):
    
        my_list = properties.List(
            doc='List of strings',
            prop=properties.String(''),
        )

    behaves identically to

    import properties
    assert properties.__version__ == '0.4.0'
    
    class MyClass(properties.HasProperties):
    
        my_list = properties.List(
            doc='List of strings',
            prop=properties.String(''),
            default=list,
        )

Major New Features

  • New Dictionary property. (See #188, issue #165)
  • link and directional_link objects allow values for properties (and traits) across HasProperties (and HasTraits) instances to be linked. The API for links mimics that from traitlets: http://traitlets.readthedocs.io/en/stable/utils.html#links. (See #155)
  • properties.Bool has been renamed properties.Boolean to normalize naming conventions across the library (e.g. the integer property is properties.Integer, not property.Int). (See #209)

Minor Changes

  • Properties may now be private (i.e. names may begin with underscore). (See #194, issue #191)
  • Container properties may now leave prop unspecified for untyped contents. (See #188)
  • Array properties:
    • shape may now be unspecified (if set to None) or have multiple valid values (if set to a set of valid shapes). Vector array properties may also specify specific shapes, as long as the second dimension is correct. (See #195, issue #192)
    • complex is now a valid dtype. (See #215, issue #208)
  • Dynamic properties:
    • May be serialized with a HasProperties instance by specifying save_dynamic=True. (See #202)
    • No longer raise an error if they evaluate to None/undefined. (See #187, issue #173)
  • Renamed properties now have an option to not raise a warning. (See #203, issue #201)
  • stop_recursion_with util function has been deprecated. (See #204, issue #168)
  • Docstring improvements:
    • __IPYTHON__ interrogation to determine sphinx or plain text formatting. (See #156)
    • Better wording on limited-size container properties. (See #185, issue #178)
    • Custom docs for renamed properties. (See #207)

Bug Fixes

  • For container properties, when an instance of a subclass of the base container type are assigned to a property, their class is now maintained (e.g. OrderedDict is no longer coerced to standard dict on validate). (See #221)
  • default value validation no longer fails due to the order which property attributes are set. (See #186, issue #177)
  • properties.copy now maintains classes of the original. (See #184, issue #175)
  • Union properties with required=False no longer fail validation when unset. (See #199, issue #198)
  • Deserialization from dictionary that includes a renamed property no longer fails. (See #217)
  • Conflicts can no longer arise from setting dynamic properties on init. (See #187, issue #173)
  • Metaclass setup no longer fails if __setattr__ is overridden. (See #158)
  • Sphinx linking for custom property classes now works. (See #156, issue #153)