[Python-checkins] python/dist/src/Lib/encodings __init__.py, 1.19, 1.20

lemburg at users.sourceforge.net lemburg at users.sourceforge.net
Tue Jan 20 04:40:16 EST 2004


Update of /cvsroot/python/python/dist/src/Lib/encodings
In directory sc8-pr-cvs1:/tmp/cvs-serv19015
Modified Files:
	__init__.py 
Log Message:
Let the default encodings search function lookup aliases before trying the codec import. This allows applications to install codecs which override (non-special-cased) builtin codecs.
Index: __init__.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/encodings/__init__.py,v
retrieving revision 1.19
retrieving revision 1.20
diff -C2 -d -r1.19 -r1.20
*** __init__.py	16 May 2003 17:07:51 -0000	1.19
--- __init__.py	20 Jan 2004 09:40:14 -0000	1.20
***************
*** 28,32 ****
 """#"
 
! import codecs, exceptions, types
 
 _cache = {}
--- 28,32 ----
 """#"
 
! import codecs, exceptions, types, aliases
 
 _cache = {}
***************
*** 39,42 ****
--- 39,43 ----
 ' '
 ' ')
+ _aliases = aliases.aliases
 
 class CodecRegistryError(exceptions.LookupError,
***************
*** 75,95 ****
 # Import the module:
 #
! # First look in the encodings package, then try to lookup the
! # encoding in the aliases mapping and retry the import using the
! # default import module lookup scheme with the alias name.
 #
! modname = normalize_encoding(encoding)
! try:
! mod = __import__('encodings.' + modname,
! globals(), locals(), _import_tail)
! except ImportError:
! import aliases
! modname = (aliases.aliases.get(modname) or
! aliases.aliases.get(modname.replace('.', '_')) or
! modname)
 try:
! mod = __import__(modname, globals(), locals(), _import_tail)
 except ImportError:
! mod = None
 
 try:
--- 76,104 ----
 # 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:
! continue
 try:
! mod = __import__(modname,
! globals(), locals(), _import_tail)
 except ImportError:
! pass
! else:
! break
! else:
! mod = None
 
 try:
***************
*** 126,133 ****
 pass
 else:
- import aliases
 for alias in codecaliases:
! if not aliases.aliases.has_key(alias):
! aliases.aliases[alias] = modname
 
 # Return the registry entry
--- 135,141 ----
 pass
 else:
 for alias in codecaliases:
! if not _aliases.has_key(alias):
! _aliases[alias] = modname
 
 # Return the registry entry


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /