PATH:
usr
/
lib64
/
python3.6
/
encodings
""" Standard "encodings" Package Standard Python encoding modules are stored in this package directory. Codec modules must have names corresponding to normalized encoding names as defined in the normalize_encoding() function below, e.g. 'utf-8' must be implemented by the module 'utf_8.py'. Each codec module must export the following interface: * getregentry() -> codecs.CodecInfo object The getregentry() API must return a CodecInfo object with encoder, decoder, incrementalencoder, incrementaldecoder, streamwriter and streamreader atttributes which adhere to the Python Codec Interface Standard. In addition, a module may optionally also define the following APIs which are then used by the package's codec search function: * getaliases() -> sequence of encoding name strings to use as aliases Alias names returned by getaliases() must be normalized encoding names as defined by normalize_encoding(). Written by Marc-Andre Lemburg (mal@lemburg.com). (c) Copyright CNRI, All Rights Reserved. NO WARRANTY. """#" import codecs import sys from . import aliases _cache = {} _unknown = '--unknown--' _import_tail = ['*'] _aliases = aliases.aliases class CodecRegistryError(LookupError, SystemError): pass def normalize_encoding(encoding): """ Normalize an encoding name. Normalization works as follows: all non-alphanumeric characters except the dot used for Python package names are collapsed and replaced with a single underscore, e.g. ' -;#' 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. """ if isinstance(encoding, bytes): encoding = str(encoding, "ascii") chars = [] punct = False for c in encoding: if c.isalnum() or c == '.': if punct and chars: chars.append('_') chars.append(c) punct = False else: punct = True return ''.join(chars) def search_function(encoding): # Cache lookup entry = _cache.get(encoding, _unknown) if entry is not _unknown: return entry # Import the module: # # First try to find an alias for the normalized encoding # name and lookup the module using the aliased name, then try to # lookup the module using the standard import scheme, i.e. first # try in the encodings package, then at top-level. # norm_encoding = normalize_encoding(encoding) aliased_encoding = _aliases.get(norm_encoding) or \ _aliases.get(norm_encoding.replace('.', '_')) if aliased_encoding is not None: modnames = [aliased_encoding, norm_encoding] else: modnames = [norm_encoding] for modname in modnames: if not modname or '.' in modname: continue try: # Import is absolute to prevent the possibly malicious import of a # module with side-effects that is not in the 'encodings' package. mod = __import__('encodings.' + modname, fromlist=_import_tail, level=0) except ImportError: # ImportError may occur because 'encodings.(modname)' does not exist, # or because it imports a name that does not exist (see mbcs and oem) pass else: break else: mod = None try: getregentry = mod.getregentry except AttributeError: # Not a codec module mod = None if mod is None: # Cache misses _cache[encoding] = None return None # Now ask the module for the registry entry entry = getregentry() if not isinstance(entry, codecs.CodecInfo): if not 4 <= len(entry) <= 7: raise CodecRegistryError('module "%s" (%s) failed to register' % (mod.__name__, mod.__file__)) if not callable(entry[0]) or not callable(entry[1]) or \ (entry[2] is not None and not callable(entry[2])) or \ (entry[3] is not None and not callable(entry[3])) or \ (len(entry) > 4 and entry[4] is not None and not callable(entry[4])) or \ (len(entry) > 5 and entry[5] is not None and not callable(entry[5])): raise CodecRegistryError('incompatible codecs in module "%s" (%s)' % (mod.__name__, mod.__file__)) if len(entry)<7 or entry[6] is None: entry += (None,)*(6-len(entry)) + (mod.__name__.split(".", 1)[1],) entry = codecs.CodecInfo(*entry) # Cache the codec registry entry _cache[encoding] = entry # Register its aliases (without overwriting previously registered # aliases) try: codecaliases = mod.getaliases() except AttributeError: pass else: for alias in codecaliases: if alias not in _aliases: _aliases[alias] = modname # Return the registry entry return entry # Register the search_function in the Python codec registry codecs.register(search_function) if sys.platform == 'win32': def _alias_mbcs(encoding): try: import _bootlocale if encoding == _bootlocale.getpreferredencoding(False): import encodings.mbcs return encodings.mbcs.getregentry() except ImportError: # Imports may fail while we are shutting down pass codecs.register(_alias_mbcs)
[-] palmos.py
[edit]
[-] iso8859_3.py
[edit]
[-] kz1048.py
[edit]
[-] euc_jis_2004.py
[edit]
[-] iso8859_15.py
[edit]
[-] cp1256.py
[edit]
[-] mac_croatian.py
[edit]
[-] raw_unicode_escape.py
[edit]
[-] unicode_escape.py
[edit]
[-] utf_32_be.py
[edit]
[-] mac_roman.py
[edit]
[-] iso8859_14.py
[edit]
[-] cp862.py
[edit]
[-] charmap.py
[edit]
[-] iso2022_jp_2004.py
[edit]
[-] iso8859_5.py
[edit]
[-] cp1251.py
[edit]
[-] iso8859_10.py
[edit]
[-] koi8_u.py
[edit]
[-] hz.py
[edit]
[-] oem.py
[edit]
[-] cp037.py
[edit]
[-] euc_jisx0213.py
[edit]
[-] utf_32_le.py
[edit]
[-] cp1026.py
[edit]
[-] cp65001.py
[edit]
[-] iso2022_jp_ext.py
[edit]
[-] iso8859_11.py
[edit]
[-] latin_1.py
[edit]
[-] utf_32.py
[edit]
[-] quopri_codec.py
[edit]
[+]
..
[-] tis_620.py
[edit]
[-] rot_13.py
[edit]
[-] cp874.py
[edit]
[-] shift_jis.py
[edit]
[-] iso8859_2.py
[edit]
[-] gb18030.py
[edit]
[-] cp864.py
[edit]
[-] cp875.py
[edit]
[-] cp1125.py
[edit]
[-] cp1254.py
[edit]
[-] undefined.py
[edit]
[-] iso8859_6.py
[edit]
[-] cp1006.py
[edit]
[-] cp860.py
[edit]
[-] mac_farsi.py
[edit]
[-] hex_codec.py
[edit]
[-] mac_cyrillic.py
[edit]
[-] cp1257.py
[edit]
[-] ptcp154.py
[edit]
[-] cp949.py
[edit]
[-] cp861.py
[edit]
[-] mac_arabic.py
[edit]
[-] zlib_codec.py
[edit]
[-] iso8859_8.py
[edit]
[-] gb2312.py
[edit]
[-] utf_8_sig.py
[edit]
[-] gbk.py
[edit]
[-] mac_centeuro.py
[edit]
[-] big5hkscs.py
[edit]
[-] mac_iceland.py
[edit]
[-] base64_codec.py
[edit]
[-] aliases.py
[edit]
[-] iso8859_7.py
[edit]
[-] cp424.py
[edit]
[-] utf_16_le.py
[edit]
[-] cp437.py
[edit]
[-] iso8859_16.py
[edit]
[-] cp866.py
[edit]
[-] euc_kr.py
[edit]
[-] cp500.py
[edit]
[-] iso2022_jp_3.py
[edit]
[-] cp1250.py
[edit]
[-] cp869.py
[edit]
[-] shift_jisx0213.py
[edit]
[-] utf_8.py
[edit]
[-] cp737.py
[edit]
[+]
__pycache__
[-] cp850.py
[edit]
[-] iso2022_jp_1.py
[edit]
[-] cp1255.py
[edit]
[-] cp863.py
[edit]
[-] cp858.py
[edit]
[-] koi8_r.py
[edit]
[-] mac_greek.py
[edit]
[-] cp1253.py
[edit]
[-] cp273.py
[edit]
[-] euc_jp.py
[edit]
[-] punycode.py
[edit]
[-] ascii.py
[edit]
[-] cp932.py
[edit]
[-] shift_jis_2004.py
[edit]
[-] bz2_codec.py
[edit]
[-] utf_7.py
[edit]
[-] cp855.py
[edit]
[-] unicode_internal.py
[edit]
[-] uu_codec.py
[edit]
[-] utf_16.py
[edit]
[-] koi8_t.py
[edit]
[-] cp1258.py
[edit]
[-] cp950.py
[edit]
[-] cp857.py
[edit]
[-] cp1140.py
[edit]
[-] cp852.py
[edit]
[-] hp_roman8.py
[edit]
[-] iso8859_9.py
[edit]
[-] idna.py
[edit]
[-] __init__.py
[edit]
[-] mac_turkish.py
[edit]
[-] utf_16_be.py
[edit]
[-] cp856.py
[edit]
[-] cp720.py
[edit]
[-] iso8859_4.py
[edit]
[-] iso8859_13.py
[edit]
[-] mbcs.py
[edit]
[-] johab.py
[edit]
[-] cp775.py
[edit]
[-] iso2022_kr.py
[edit]
[-] big5.py
[edit]
[-] iso2022_jp.py
[edit]
[-] iso8859_1.py
[edit]
[-] iso2022_jp_2.py
[edit]
[-] mac_romanian.py
[edit]
[-] cp1252.py
[edit]
[-] cp865.py
[edit]
[-] mac_latin2.py
[edit]