(original) (raw)
changeset: 69967:61798f076676 branch: 3.1 parent: 69959:677ee366c9f5 user: Martin v. Löwis martin@v.loewis.de date: Mon May 09 08:05:43 2011 +0200 files: Doc/distutils/introduction.rst Doc/library/modulefinder.rst Doc/library/xml.dom.minidom.rst Doc/library/xml.dom.rst Lib/modulefinder.py Lib/test/test_minidom.py Lib/test/test_sax.py Lib/xml/__init__.py Misc/NEWS description: Stop trying to use _xmlplus in the xml module. Closes #11164. Patch by Arfrever Frehtes Taifersar Arahesis. diff -r 677ee366c9f5 -r 61798f076676 Doc/distutils/introduction.rst --- a/Doc/distutils/introduction.rst Mon May 09 07:15:04 2011 +0300 +++ b/Doc/distutils/introduction.rst Mon May 09 08:05:43 2011 +0200 @@ -187,7 +187,7 @@ module distribution a collection of Python modules distributed together as a single downloadable resource and meant to be installed *en masse*. Examples of some well-known - module distributions are Numeric Python, PyXML, PIL (the Python Imaging + module distributions are NumPy, SciPy, PIL (the Python Imaging Library), or mxBase. (This would be called a *package*, except that term is already taken in the Python context: a single module distribution may contain zero, one, or many Python packages.) diff -r 677ee366c9f5 -r 61798f076676 Doc/library/modulefinder.rst --- a/Doc/library/modulefinder.rst Mon May 09 07:15:04 2011 +0300 +++ b/Doc/library/modulefinder.rst Mon May 09 08:05:43 2011 +0200 @@ -22,8 +22,7 @@ .. function:: ReplacePackage(oldname, newname) Allows specifying that the module named *oldname* is in fact the package named - *newname*. The most common usage would be to handle how the :mod:`_xmlplus` - package replaces the :mod:`xml` package. + *newname*. .. class:: ModuleFinder(path=None, debug=0, excludes=[], replace_paths=[]) diff -r 677ee366c9f5 -r 61798f076676 Doc/library/xml.dom.minidom.rst --- a/Doc/library/xml.dom.minidom.rst Mon May 09 07:15:04 2011 +0300 +++ b/Doc/library/xml.dom.minidom.rst Mon May 09 08:05:43 2011 +0200 @@ -57,12 +57,8 @@ You can also create a :class:`Document` by calling a method on a "DOM Implementation" object. You can get this object either by calling the :func:`getDOMImplementation` function in the :mod:`xml.dom` package or the -:mod:`xml.dom.minidom` module. Using the implementation from the -:mod:`xml.dom.minidom` module will always return a :class:`Document` instance -from the minidom implementation, while the version from :mod:`xml.dom` may -provide an alternate implementation (this is likely if you have the `PyXML -package `_ installed). Once you have a -:class:`Document`, you can add child nodes to it to populate the DOM:: +:mod:`xml.dom.minidom` module. Once you have a :class:`Document`, you +can add child nodes to it to populate the DOM:: from xml.dom.minidom import getDOMImplementation diff -r 677ee366c9f5 -r 61798f076676 Doc/library/xml.dom.rst --- a/Doc/library/xml.dom.rst Mon May 09 07:15:04 2011 +0300 +++ b/Doc/library/xml.dom.rst Mon May 09 08:05:43 2011 +0200 @@ -30,13 +30,6 @@ their terminology. The Python mapping of the API is substantially based on the DOM Level 2 recommendation. -.. XXX PyXML is dead... -.. The mapping of the Level 3 specification, currently - only available in draft form, is being developed by the `Python XML Special - Interest Group `_ as part of the `PyXML - package `_. Refer to the documentation bundled - with that package for information on the current state of DOM Level 3 support. - .. What if your needs are somewhere between SAX and the DOM? Perhaps you cannot afford to load the entire tree in memory but you find the SAX model somewhat cumbersome and low-level. There is also a module diff -r 677ee366c9f5 -r 61798f076676 Lib/modulefinder.py --- a/Lib/modulefinder.py Mon May 09 07:15:04 2011 +0300 +++ b/Lib/modulefinder.py Mon May 09 08:05:43 2011 +0200 @@ -35,9 +35,10 @@ replacePackageMap = {} -# This ReplacePackage mechanism allows modulefinder to work around the -# way the _xmlplus package injects itself under the name "xml" into -# sys.modules at runtime by calling ReplacePackage("_xmlplus", "xml") +# This ReplacePackage mechanism allows modulefinder to work around +# situations in which a package injects itself under the name +# of another package into sys.modules at runtime by calling +# ReplacePackage("real_package_name", "faked_package_name") # before running ModuleFinder. def ReplacePackage(oldname, newname): diff -r 677ee366c9f5 -r 61798f076676 Lib/test/test_minidom.py --- a/Lib/test/test_minidom.py Mon May 09 07:15:04 2011 +0300 +++ b/Lib/test/test_minidom.py Mon May 09 08:05:43 2011 +0200 @@ -51,26 +51,6 @@ return doc class MinidomTest(unittest.TestCase): - def tearDown(self): - try: - Node.allnodes - except AttributeError: - # We don't actually have the minidom from the standard library, - # but are picking up the PyXML version from site-packages. - pass - else: - self.confirm(len(Node.allnodes) == 0, - "assertion: len(Node.allnodes) == 0") - if len(Node.allnodes): - print("Garbage left over:") - if verbose: - print(list(Node.allnodes.items())[0:10]) - else: - # Don't print specific nodes if repeatable results - # are needed - print(len(Node.allnodes)) - Node.allnodes = {} - def confirm(self, test, testname = "Test"): self.assertTrue(test, testname) diff -r 677ee366c9f5 -r 61798f076676 Lib/test/test_sax.py --- a/Lib/test/test_sax.py Mon May 09 07:15:04 2011 +0300 +++ b/Lib/test/test_sax.py Mon May 09 08:05:43 2011 +0200 @@ -694,51 +694,6 @@ self.assertEqual(attrs.getQNameByName((ns_uri, "attr")), "ns:attr") - # During the development of Python 2.5, an attempt to move the "xml" - # package implementation to a new package ("xmlcore") proved painful. - # The goal of this change was to allow applications to be able to - # obtain and rely on behavior in the standard library implementation - # of the XML support without needing to be concerned about the - # availability of the PyXML implementation. - # - # While the existing import hackery in Lib/xml/__init__.py can cause - # PyXML's _xmlpus package to supplant the "xml" package, that only - # works because either implementation uses the "xml" package name for - # imports. - # - # The move resulted in a number of problems related to the fact that - # the import machinery's "package context" is based on the name that's - # being imported rather than the __name__ of the actual package - # containment; it wasn't possible for the "xml" package to be replaced - # by a simple module that indirected imports to the "xmlcore" package. - # - # The following two tests exercised bugs that were introduced in that - # attempt. Keeping these tests around will help detect problems with - # other attempts to provide reliable access to the standard library's - # implementation of the XML support. - - def test_sf_1511497(self): - # Bug report: http://www.python.org/sf/1511497 - import sys - old_modules = sys.modules.copy() - for modname in list(sys.modules.keys()): - if modname.startswith("xml."): - del sys.modules[modname] - try: - import xml.sax.expatreader - module = xml.sax.expatreader - self.assertEqual(module.__name__, "xml.sax.expatreader") - finally: - sys.modules.update(old_modules) - - def test_sf_1513611(self): - # Bug report: http://www.python.org/sf/1513611 - sio = StringIO("invalid") - parser = make_parser() - from xml.sax import SAXParseException - self.assertRaises(SAXParseException, parser.parse, sio) - - def test_main(): run_unittest(MakeParserTest, SaxutilsTest, diff -r 677ee366c9f5 -r 61798f076676 Lib/xml/__init__.py --- a/Lib/xml/__init__.py Mon May 09 07:15:04 2011 +0300 +++ b/Lib/xml/__init__.py Mon May 09 08:05:43 2011 +0200 @@ -18,24 +18,3 @@ __all__ = ["dom", "parsers", "sax", "etree"] - -_MINIMUM_XMLPLUS_VERSION = (0, 8, 4) - - -try: - import _xmlplus -except ImportError: - pass -else: - try: - v = _xmlplus.version_info - except AttributeError: - # _xmlplus is too old; ignore it - pass - else: - if v >= _MINIMUM_XMLPLUS_VERSION: - import sys - _xmlplus.__path__.extend(__path__) - sys.modules[__name__] = _xmlplus - else: - del v diff -r 677ee366c9f5 -r 61798f076676 Misc/NEWS --- a/Misc/NEWS Mon May 09 07:15:04 2011 +0300 +++ b/Misc/NEWS Mon May 09 08:05:43 2011 +0200 @@ -66,6 +66,8 @@ Library ------- +- Issue #11164: Stop trying to use _xmlplus in the xml module. + - Issue #11927: SMTP_SSL now uses port 465 by default as documented. Patch by Kasun Herath./martin@v.loewis.de