Do not use mutable defaults in FieldAttribute, instead allow supplying a callable for defaults of mutable types. Fixes #46824 (#46833)

This commit is contained in:
Matt Martz 2018-10-12 10:43:09 -05:00 committed by GitHub
parent 0dd17b521f
commit a06a5ded61
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
14 changed files with 57 additions and 37 deletions

View file

@ -162,6 +162,9 @@ class FieldAttributeBase(with_metaclass(BaseMeta, object)):
# need a unique object here (all members contained within are
# unique already).
self._attributes = self._attributes.copy()
for key, value in self._attributes.items():
if callable(value):
self._attributes[key] = value()
# and init vars, avoid using defaults in field declaration as it lives across plays
self.vars = dict()