|
10 | 10 | import botbuilder.schema as schema
|
11 | 11 | import botbuilder.schema.teams as teams_schema
|
12 | 12 |
|
13 |
| -# Optimization: The dependencies dictionary could be cached here, |
14 |
| -# and shared between the two methods. |
| 13 | +DEPENDICIES = [ |
| 14 | + schema_cls |
| 15 | + for key, schema_cls in getmembers(schema) |
| 16 | + if isinstance(schema_cls, type) and issubclass(schema_cls, (Model, Enum)) |
| 17 | +] |
| 18 | +DEPENDICIES += [ |
| 19 | + schema_cls |
| 20 | + for key, schema_cls in getmembers(teams_schema) |
| 21 | + if isinstance(schema_cls, type) and issubclass(schema_cls, (Model, Enum)) |
| 22 | +] |
| 23 | +DEPENDICIES_DICT = {dependency.__name__: dependency for dependency in DEPENDICIES} |
15 | 24 |
|
16 | 25 |
|
17 | 26 | def deserializer_helper(msrest_cls: Type[Model], dict_to_deserialize: dict) -> Model:
|
18 |
| - dependencies = [ |
19 |
| - schema_cls |
20 |
| - for key, schema_cls in getmembers(schema) |
21 |
| - if isinstance(schema_cls, type) and issubclass(schema_cls, (Model, Enum)) |
22 |
| - ] |
23 |
| - dependencies += [ |
24 |
| - schema_cls |
25 |
| - for key, schema_cls in getmembers(teams_schema) |
26 |
| - if isinstance(schema_cls, type) and issubclass(schema_cls, (Model, Enum)) |
27 |
| - ] |
28 |
| - dependencies_dict = {dependency.__name__: dependency for dependency in dependencies} |
29 |
| - deserializer = Deserializer(dependencies_dict) |
| 27 | + deserializer = Deserializer(DEPENDICIES_DICT) |
30 | 28 | return deserializer(msrest_cls.__name__, dict_to_deserialize)
|
31 | 29 |
|
32 | 30 |
|
33 | 31 | def serializer_helper(object_to_serialize: Model) -> dict:
|
34 | 32 | if object_to_serialize is None:
|
35 | 33 | return None
|
36 | 34 |
|
37 |
| - dependencies = [ |
38 |
| - schema_cls |
39 |
| - for key, schema_cls in getmembers(schema) |
40 |
| - if isinstance(schema_cls, type) and issubclass(schema_cls, (Model, Enum)) |
41 |
| - ] |
42 |
| - dependencies += [ |
43 |
| - schema_cls |
44 |
| - for key, schema_cls in getmembers(teams_schema) |
45 |
| - if isinstance(schema_cls, type) and issubclass(schema_cls, (Model, Enum)) |
46 |
| - ] |
47 |
| - dependencies_dict = {dependency.__name__: dependency for dependency in dependencies} |
48 |
| - serializer = Serializer(dependencies_dict) |
| 35 | + serializer = Serializer(DEPENDICIES_DICT) |
49 | 36 | # pylint: disable=protected-access
|
50 | 37 | return serializer._serialize(object_to_serialize)
|
0 commit comments