Cache field attributes list on the playbook classes (#79091)

* Cache field attributes list on the playbook classes
This commit is contained in:
Martin Krizek
2022-10-11 17:16:57 +02:00
committed by GitHub
parent 1286b7d42e
commit 58637702b4
2 changed files with 11 additions and 1 deletions

View File

@ -0,0 +1,2 @@
minor_changes:
- Cache field attributes list on the playbook classes

View File

@ -10,6 +10,7 @@ import operator
import os
from copy import copy as shallowcopy
from functools import cache
from jinja2.exceptions import UndefinedError
@ -74,7 +75,14 @@ class FieldAttributeBase:
@classmethod
@property
def fattributes(cls):
# FIXME is this worth caching?
return cls._fattributes()
# mypy complains with "misc: Decorated property not supported"
# when @property and @cache are used together,
# split fattributes above into two methods
@classmethod
@cache
def _fattributes(cls):
fattributes = {}
for class_obj in reversed(cls.__mro__):
for name, attr in list(class_obj.__dict__.items()):