You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Defects in ArrayList / NullableArrayList (0.28.1; each one reproduced). Fixed by the new lists.py (ArrayList[E]); every item gets a regression test and is ticked when the fix lands.
C33ArrayList instances are unhashable: hash() raises TypeError although __eq__ is value-based and isinstance(x, Hashable) is True.
C34ArrayList aliases the caller's list and exposes it mutably: validated invariants can be broken after construction.
C35ArrayList(Int)([Int(1)]) is rejected although the elements are instances of the element type.
C36 With a non-VO element type, ArrayList coerces instead of validating: ArrayList(int)(['1', 2.7, True]) is accepted.
C37 Element validation runs after _validate, so subclasses see unvalidated elements (TypeError instead of ValueObjectError).
C38 List VOs cannot be pickled (generated classes are function-local), unlike every other VO.
C39typing.get_type_hints fails on generated list classes (annotation list[cls] refers to a closure variable).
C40 The factory accepts and caches any element "type", including None or non-callables; the error appears only with a non-empty list.
C41NullableArrayList(X)() has no None default, unlike every other nullable VO, and its _validate repeats the parent's check.
C48 The ArrayList suites skip the hash/equality tests every other suite has, hiding C33 and C34.
Activity