mirror of
https://github.com/python/cpython.git
synced 2025-08-23 10:16:01 +00:00
Moved the encoding map building logic from the individual mapping
codec files to codecs.py and added logic so that multi mappings in the decoding maps now result in mappings to None (undefined mapping) in the encoding maps.
This commit is contained in:
parent
5a4718e1ed
commit
716cf91839
55 changed files with 75 additions and 162 deletions
|
@ -554,6 +554,27 @@ def make_identity_dict(rng):
|
|||
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__':
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue