diff --git a/libraries/botbuilder-core/botbuilder/core/teams/teams_helper.py b/libraries/botbuilder-core/botbuilder/core/teams/teams_helper.py index f9d294c39..766cd6291 100644 --- a/libraries/botbuilder-core/botbuilder/core/teams/teams_helper.py +++ b/libraries/botbuilder-core/botbuilder/core/teams/teams_helper.py @@ -10,23 +10,21 @@ import botbuilder.schema as schema import botbuilder.schema.teams as teams_schema -# Optimization: The dependencies dictionary could be cached here, -# and shared between the two methods. +DEPENDICIES = [ + schema_cls + for key, schema_cls in getmembers(schema) + if isinstance(schema_cls, type) and issubclass(schema_cls, (Model, Enum)) +] +DEPENDICIES += [ + schema_cls + for key, schema_cls in getmembers(teams_schema) + if isinstance(schema_cls, type) and issubclass(schema_cls, (Model, Enum)) +] +DEPENDICIES_DICT = {dependency.__name__: dependency for dependency in DEPENDICIES} def deserializer_helper(msrest_cls: Type[Model], dict_to_deserialize: dict) -> Model: - dependencies = [ - schema_cls - for key, schema_cls in getmembers(schema) - if isinstance(schema_cls, type) and issubclass(schema_cls, (Model, Enum)) - ] - dependencies += [ - schema_cls - for key, schema_cls in getmembers(teams_schema) - if isinstance(schema_cls, type) and issubclass(schema_cls, (Model, Enum)) - ] - dependencies_dict = {dependency.__name__: dependency for dependency in dependencies} - deserializer = Deserializer(dependencies_dict) + deserializer = Deserializer(DEPENDICIES_DICT) return deserializer(msrest_cls.__name__, dict_to_deserialize) @@ -34,17 +32,6 @@ def serializer_helper(object_to_serialize: Model) -> dict: if object_to_serialize is None: return None - dependencies = [ - schema_cls - for key, schema_cls in getmembers(schema) - if isinstance(schema_cls, type) and issubclass(schema_cls, (Model, Enum)) - ] - dependencies += [ - schema_cls - for key, schema_cls in getmembers(teams_schema) - if isinstance(schema_cls, type) and issubclass(schema_cls, (Model, Enum)) - ] - dependencies_dict = {dependency.__name__: dependency for dependency in dependencies} - serializer = Serializer(dependencies_dict) + serializer = Serializer(DEPENDICIES_DICT) # pylint: disable=protected-access return serializer._serialize(object_to_serialize)