The list/dict emulation on HumanName is wider than its value:
name[1:-3] slices the internal members list positionally — the oddest surviving API (currently a usage.rst example); field access by position has no real use case
name['first'] = x duplicates plain attribute assignment
Keep: name['first'] string-key access (harmless, useful for dynamic field names), and __iter__/__len__ — len(name) == 0 was enshrined in 1.3.0 as the emptiness check when unparsable was removed, and __str__ iterates for the string_format=None path.
Bridge (1.4) — tracked in #263
The list/dict emulation on
HumanNameis wider than its value:name[1:-3]slices the internal members list positionally — the oddest surviving API (currently a usage.rst example); field access by position has no real use casename['first'] = xduplicates plain attribute assignmentKeep:
name['first']string-key access (harmless, useful for dynamic field names), and__iter__/__len__—len(name) == 0was enshrined in 1.3.0 as the emptiness check whenunparsablewas removed, and__str__iterates for thestring_format=Nonepath.Bridge (1.4) — tracked in #263
DeprecationWarningon slice__getitem__and on__setitem__