Daniel Silverstone pushed to branch danielsilverstone-ct/further-optimisations at BuildStream / buildstream
Commits:
- 
23a4e53b
by Daniel Silverstone at 2018-11-06T11:05:34Z
1 changed file:
Changes:
| ... | ... | @@ -914,9 +914,14 @@ RoundTripRepresenter.add_representer(SanitizedDict, | 
| 914 | 914 |  # Only dicts are ordered, list elements are left in order.
 | 
| 915 | 915 |  #
 | 
| 916 | 916 |  def node_sanitize(node):
 | 
| 917 | - | |
| 918 | -    if isinstance(node, collections.Mapping):
 | |
| 919 | - | |
| 917 | +    # Short-circuit None which occurs ca. twice per element
 | |
| 918 | +    if node is None:
 | |
| 919 | +        return node
 | |
| 920 | + | |
| 921 | +    node_type = type(node)
 | |
| 922 | +    if node_type in (str, bool, tuple):
 | |
| 923 | +        return node
 | |
| 924 | +    if node_type in (dict, ChainMap):
 | |
| 920 | 925 |          result = SanitizedDict()
 | 
| 921 | 926 |  | 
| 922 | 927 |          key_list = [key for key, _ in node_items(node)]
 | 
| ... | ... | @@ -925,7 +930,7 @@ def node_sanitize(node): | 
| 925 | 930 |  | 
| 926 | 931 |          return result
 | 
| 927 | 932 |  | 
| 928 | -    elif isinstance(node, list):
 | |
| 933 | +    elif node_type is list:
 | |
| 929 | 934 |          return [node_sanitize(elt) for elt in node]
 | 
| 930 | 935 |  | 
| 931 | 936 |      return node
 | 
