]> granicus.if.org Git - python/commitdiff
Stop trying to use _xmlplus in the xml module. Closes #11164.
authorMartin v. Löwis <martin@v.loewis.de>
Mon, 9 May 2011 06:05:43 +0000 (08:05 +0200)
committerMartin v. Löwis <martin@v.loewis.de>
Mon, 9 May 2011 06:05:43 +0000 (08:05 +0200)
Patch by Arfrever Frehtes Taifersar Arahesis.

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

index b772b01004a56053a82af2e85a21e91b81881f98..8dc604d0d05c66ec4eb52c21a28c30b6923c7f78 100644 (file)
@@ -187,7 +187,7 @@ modules using the Distutils:
 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.)
index 41b387bb993939f871523e78e08a9c595130854d..41c603ce9bdb9a67cf8f10a6602b61ff086c68c2 100644 (file)
@@ -22,8 +22,7 @@ report of the imported modules will be printed.
 .. 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=[])
index 8364f35809194b59d02b564d2f974333d0b9b880..12360c0db4abec22864de4d59eea6fbfb9f17b4a 100644 (file)
@@ -57,12 +57,8 @@ functions do not provide a parser implementation themselves.
 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 <http://pyxml.sourceforge.net/>`_ 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
 
index 45d30d67299f4b732b99072645ed1000074b9457..a3414d749f14e58a348ade0b15b88810a9a76b5a 100644 (file)
@@ -30,13 +30,6 @@ The Document Object Model is being defined by the W3C in stages, or "levels" in
 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 <http://www.python.org/sigs/xml-sig/>`_ as part of the `PyXML
-   package <http://pyxml.sourceforge.net/>`_.  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
index 478c74912d2a38349cd8b607d3a320aa43ab31be..5a8942a7b26cb227dedb26620a1bf961321f6759 100644 (file)
@@ -35,9 +35,10 @@ def AddPackagePath(packagename, path):
 
 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):
index c58d17dbd7f15835a89c267cc9dba8cba0de643e..8a8afef0eee648a79e771b2190377d3cc59590b6 100644 (file)
@@ -51,26 +51,6 @@ def create_doc_with_doctype():
     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)
 
index 6c9147a85261dd6b65f3d164bb43e25b78e6cbed..ad7311f606ed094b31ad2273654ec2499c92321d 100644 (file)
@@ -694,51 +694,6 @@ class XmlReaderTest(XmlTestBase):
         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,
index deed983d97655673fcc1d93d90842c9252f5b17b..bf6d8ddfd04c934003004472d7f03bfa3f06b5f5 100644 (file)
@@ -18,24 +18,3 @@ etree -- The ElementTree XML library.  This is a subset of the full
 
 
 __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
index 86d222086df6e34a34070ec7271de145781bddaf..2a31e1086cba7ec84ec388a68eb0a2ac4714aab4 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -66,6 +66,8 @@ Core and Builtins
 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.