Skip to content
Merged
Changes from 4 commits
Commits
File filter

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 13 additions & 26 deletions libraries/botbuilder-core/botbuilder/core/teams/teams_helper.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,41 +10,28 @@
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)


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)