res[i]=i
return res
+def make_encoding_map(decoding_map):
+
+ """ Creates an encoding map from a decoding map.
+
+ If a target mapping in the decoding map occurrs multiple
+ times, then that target is mapped to None (undefined mapping),
+ causing an exception when encountered by the charmap codec
+ during translation.
+
+ One example where this happens is cp875.py which decodes
+ multiple character to \u001a.
+
+ """
+ m = {}
+ for k,v in decoding_map.items():
+ if not m.has_key(v):
+ m[v] = k
+ else:
+ m[v] = None
+ return m
+
### Tests
if __name__ == '__main__':
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
### Filter API
append('''
### Encoding Map
-encoding_map = {}
-for k,v in decoding_map.items():
- encoding_map[v] = k
+encoding_map = codecs.make_encoding_map(decoding_map)
''')
return string.join(l,'\n')