mirror of https://github.com/python/cpython.git
Remove usage of re module from encodings package search function.
This commit is contained in:
parent
813cec9a62
commit
2820125935
|
@ -27,12 +27,17 @@
|
||||||
|
|
||||||
"""#"
|
"""#"
|
||||||
|
|
||||||
import codecs, exceptions, re
|
import codecs, exceptions, types
|
||||||
|
|
||||||
_cache = {}
|
_cache = {}
|
||||||
_unknown = '--unknown--'
|
_unknown = '--unknown--'
|
||||||
_import_tail = ['*']
|
_import_tail = ['*']
|
||||||
_norm_encoding_RE = re.compile('[^a-zA-Z0-9.]')
|
_norm_encoding_map = (' . '
|
||||||
|
'0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ '
|
||||||
|
' abcdefghijklmnopqrstuvwxyz '
|
||||||
|
' '
|
||||||
|
' '
|
||||||
|
' ')
|
||||||
|
|
||||||
class CodecRegistryError(exceptions.LookupError,
|
class CodecRegistryError(exceptions.LookupError,
|
||||||
exceptions.SystemError):
|
exceptions.SystemError):
|
||||||
|
@ -45,10 +50,20 @@ def normalize_encoding(encoding):
|
||||||
Normalization works as follows: all non-alphanumeric
|
Normalization works as follows: all non-alphanumeric
|
||||||
characters except the dot used for Python package names are
|
characters except the dot used for Python package names are
|
||||||
collapsed and replaced with a single underscore, e.g. ' -;#'
|
collapsed and replaced with a single underscore, e.g. ' -;#'
|
||||||
becomes '_'.
|
becomes '_'. Leading and trailing underscores are removed.
|
||||||
|
|
||||||
|
Note that encoding names should be ASCII only; if they do use
|
||||||
|
non-ASCII characters, these must be Latin-1 compatible.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
return '_'.join(_norm_encoding_RE.split(encoding))
|
# Make sure we have an 8-bit string, because .translate() works
|
||||||
|
# differently for Unicode strings.
|
||||||
|
if type(encoding) is types.UnicodeType:
|
||||||
|
# Note that .encode('latin-1') does *not* use the codec
|
||||||
|
# registry, so this call doesn't recurse. (See unicodeobject.c
|
||||||
|
# PyUnicode_AsEncodedString() for details)
|
||||||
|
encoding = encoding.encode('latin-1')
|
||||||
|
return '_'.join(encoding.translate(_norm_encoding_map).split())
|
||||||
|
|
||||||
def search_function(encoding):
|
def search_function(encoding):
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue