/usr/lib64/python3.9/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 attributes 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 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 _winapi ansi_code_page = "cp%s" % _winapi.GetACP() if encoding == ansi_code_page: import encodings.mbcs return encodings.mbcs.getregentry() except ImportError: # Imports may fail while we are shutting down pass codecs.register(_alias_mbcs)
.
Edit
..
Edit
__init__.py
Edit
__pycache__
Edit
aliases.py
Edit
ascii.py
Edit
base64_codec.py
Edit
big5.py
Edit
big5hkscs.py
Edit
bz2_codec.py
Edit
charmap.py
Edit
cp037.pyc
Edit
cp1006.pyc
Edit
cp1026.pyc
Edit
cp1125.py
Edit
cp1140.pyc
Edit
cp1250.pyc
Edit
cp1251.pyc
Edit
cp1252.pyc
Edit
cp1253.pyc
Edit
cp1254.pyc
Edit
cp1255.pyc
Edit
cp1256.pyc
Edit
cp1257.pyc
Edit
cp1258.pyc
Edit
cp273.pyc
Edit
cp424.pyc
Edit
cp437.pyc
Edit
cp500.pyc
Edit
cp720.py
Edit
cp737.pyc
Edit
cp775.pyc
Edit
cp850.pyc
Edit
cp852.pyc
Edit
cp855.pyc
Edit
cp856.pyc
Edit
cp857.pyc
Edit
cp858.py
Edit
cp860.pyc
Edit
cp861.pyc
Edit
cp862.pyc
Edit
cp863.pyc
Edit
cp864.pyc
Edit
cp865.pyc
Edit
cp866.pyc
Edit
cp869.pyc
Edit
cp874.pyc
Edit
cp875.pyc
Edit
cp932.py
Edit
cp949.py
Edit
cp950.py
Edit
euc_jis_2004.py
Edit
euc_jisx0213.py
Edit
euc_jp.py
Edit
euc_kr.py
Edit
gb18030.py
Edit
gb2312.py
Edit
gbk.py
Edit
hex_codec.py
Edit
hp_roman8.pyc
Edit
hz.py
Edit
idna.py
Edit
iso2022_jp.py
Edit
iso2022_jp_1.py
Edit
iso2022_jp_2.py
Edit
iso2022_jp_2004.py
Edit
iso2022_jp_3.py
Edit
iso2022_jp_ext.py
Edit
iso2022_kr.py
Edit
iso8859_1.pyc
Edit
iso8859_10.pyc
Edit
iso8859_11.pyc
Edit
iso8859_13.pyc
Edit
iso8859_14.pyc
Edit
iso8859_15.pyc
Edit
iso8859_16.pyc
Edit
iso8859_2.pyc
Edit
iso8859_3.pyc
Edit
iso8859_4.pyc
Edit
iso8859_5.pyc
Edit
iso8859_6.pyc
Edit
iso8859_7.pyc
Edit
iso8859_8.pyc
Edit
iso8859_9.pyc
Edit
johab.py
Edit
koi8_r.pyc
Edit
koi8_t.py
Edit
koi8_u.pyc
Edit
kz1048.pyc
Edit
latin_1.py
Edit
mac_arabic.pyc
Edit
mac_croatian.pyc
Edit
mac_cyrillic.pyc
Edit
mac_farsi.pyc
Edit
mac_greek.pyc
Edit
mac_iceland.pyc
Edit
mac_latin2.pyc
Edit
mac_roman.pyc
Edit
mac_romanian.pyc
Edit
mac_turkish.pyc
Edit
mbcs.py
Edit
oem.py
Edit
palmos.py
Edit
ptcp154.pyc
Edit
punycode.py
Edit
quopri_codec.py
Edit
raw_unicode_escape.py
Edit
rot_13.py
Edit
shift_jis.py
Edit
shift_jis_2004.py
Edit
shift_jisx0213.py
Edit
tis_620.pyc
Edit
undefined.py
Edit
unicode_escape.py
Edit
utf_16.py
Edit
utf_16_be.py
Edit
utf_16_le.py
Edit
utf_32.py
Edit
utf_32_be.py
Edit
utf_32_le.py
Edit
utf_7.py
Edit
utf_8.py
Edit
utf_8_sig.py
Edit
uu_codec.py
Edit
zlib_codec.py
Edit