Ulrich Eckhardt wrote: > Chris Rebert wrote: >>> 3. The docs mention encodings.utf_8_sig, available since 2.5, but I >>> can't locate that thing there either. What's going on here? >> >> Works for me™: >> Python 2.6.6 (r266:84292, Jan 12 2011, 13:35:00) >> [GCC 4.2.1 (Apple Inc. build 5664)] on darwin >> Type "help", "copyright", "credits" or "license" for more information. >>>>> from encodings import utf_8_sig >>>>> > > This works for me, too. What I tried and what failed was > > import encodings > encodings.utf_8_sig > > which raises an AttributeError or dir(encodings), which doesn't show the > according element. If I do it your way, the encoding then shows up in the > content of the module. > > Apart from the encoding issue, I don't understand this behaviour. Is the > module behaving badly or are my expectations simply flawed?
This is standard python package behaviour: >>> import logging >>> logging.handlers Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'module' object has no attribute 'handlers' >>> import logging.handlers >>> logging.handlers <module 'logging.handlers' from '/usr/lib/python2.6/logging/handlers.pyc'> You wouldn't see the AttributeError only if encodings/__init__.py contained a line from . import utf_8_sig or similar. The most notable package that acts this way is probably os which eagerly imports a suitable path module depending on the platform. As you cannot foresee which encodings are actually needed in a script it makes sense to omit a just-in-case import. -- http://mail.python.org/mailman/listinfo/python-list