|
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