[Python-checkins] r53800 - in python/trunk: Lib/encodings/__init__.py Misc/NEWS
Brett Cannon
brett at python.org
Fri Feb 16 00:51:51 CET 2007
On 2/15/07, M.-A. Lemburg <mal at egenix.com> wrote:
> On 2007-02-15 23:54, brett.cannon wrote:
> > Author: brett.cannon
> > Date: Thu Feb 15 23:54:39 2007
> > New Revision: 53800
> >
> > Modified:
> > python/trunk/Lib/encodings/__init__.py
> > python/trunk/Misc/NEWS
> > Log:
> > Update the encoding package's search function to use absolute imports when
> > calling __import__. This helps make the expected search locations for encoding
> > modules be more explicit.
>
> Your change does not make the import absolute - to the contrary: we
> now have a relative import.
>
Right, but I just associate it with the absolute import PEP and the
term. Probably could have called it a "new-style import" or
something.
> Please change that back to the original scheme which is indeed an
> absolute import.
Why? What's wrong with a relative import?
> If you want to make sure that the search function
> is not importing from encodings.encodings, then you can add
> a 0 parameter as last parameter to __import__().
Right. But that will essentially do the same thing I just committed
since what you are proposing will grab 'encodings' from sys.modules,
pull out its __path__ entry, and then do the import from there. What
I did above skips that look up for 'encodings' and instead uses the
module that the function was defined in.
-Brett
> The other changes
> are not necessary.
>
> Thanks.
>
> > One could use an explicit value for __path__ when making the call to __import__
> > to force the exact location searched for encodings. This would give the most
> > strict search path possible if one is worried about malicious code being
> > imported. The unfortunate side-effect of that is that if __path__ was modified
> > on 'encodings' on purpose in a safe way it would not be picked up in future
> > __import__ calls.
> >
> >
> > Modified: python/trunk/Lib/encodings/__init__.py
> > ==============================================================================
> > --- python/trunk/Lib/encodings/__init__.py (original)
> > +++ python/trunk/Lib/encodings/__init__.py Thu Feb 15 23:54:39 2007
> > @@ -93,8 +93,10 @@
> > if not modname or '.' in modname:
> > continue
> > try:
> > - mod = __import__('encodings.' + modname,
> > - globals(), locals(), _import_tail)
> > + # Import equivalent to `` from .modname import *``.
> > + # '*' is used so that __import__ returns the desired module and not
> > + # 'encodings' itself.
> > + mod = __import__(modname, globals(), locals(), ['*'], 1)
> > except ImportError:
> > pass
> > else:
> >
> > Modified: python/trunk/Misc/NEWS
> > ==============================================================================
> > --- python/trunk/Misc/NEWS (original)
> > +++ python/trunk/Misc/NEWS Thu Feb 15 23:54:39 2007
> > @@ -128,6 +128,9 @@
> > Library
> > -------
> >
> > +- Have the encoding package's search function dynamically import using absolute
> > + import semantics.
> > +
> > - Patch #1647484: Renamed GzipFile's filename attribute to name.
> >
> > - Patch #1517891: Mode 'a' for ZipFile now creates the file if it
> > _______________________________________________
> > Python-checkins mailing list
> > Python-checkins at python.org
> > http://mail.python.org/mailman/listinfo/python-checkins
>
> --
> Marc-Andre Lemburg
> eGenix.com
>
> Professional Python Services directly from the Source (#1, Feb 16 2007)
> >>> Python/Zope Consulting and Support ... http://www.egenix.com/
> >>> mxODBC.Zope.Database.Adapter ... http://zope.egenix.com/
> >>> mxODBC, mxDateTime, mxTextTools ... http://python.egenix.com/
> ________________________________________________________________________
>
> :::: Try mxODBC.Zope.DA for Windows,Linux,Solaris,MacOSX for free ! ::::
>
More information about the Python-checkins
mailing list