From 7e982ef29b853242cd69149ad59613720fe05eb6 Mon Sep 17 00:00:00 2001
From: JinWang An
Date: Wed, 30 Dec 2020 10:17:58 +0900
Subject: [PATCH] Imported Upstream version 4.5.0
---
CHANGES.txt | 26 +
MANIFEST.in | 2 +-
Makefile | 18 +-
PKG-INFO | 33 +-
README.rst | 10 +
buildlibxml.py | 35 +-
doc/capi.txt | 12 +-
doc/html/FAQ.html | 4 +-
doc/html/api.html | 4 +-
doc/html/api/abc.ABCMeta-class.html | 2 +-
doc/html/api/api-objects.txt | 54 +-
doc/html/api/class-tree.html | 2 +-
.../api/cssselect.parser.SelectorError-class.html | 2 +-
...cssselect.parser.SelectorSyntaxError-class.html | 2 +-
.../api/cssselect.xpath.ExpressionError-class.html | 2 +-
doc/html/api/cssselect.xpath.XPathExpr-class.html | 2 +-
doc/html/api/deprecated-index.html | 2 +-
doc/html/api/exceptions.AssertionError-class.html | 2 +-
doc/html/api/help.html | 2 +-
doc/html/api/identifier-index-A.html | 2 +-
doc/html/api/identifier-index-B.html | 2 +-
doc/html/api/identifier-index-C.html | 2 +-
doc/html/api/identifier-index-D.html | 2 +-
doc/html/api/identifier-index-E.html | 2 +-
doc/html/api/identifier-index-F.html | 2 +-
doc/html/api/identifier-index-G.html | 2 +-
doc/html/api/identifier-index-H.html | 2 +-
doc/html/api/identifier-index-I.html | 234 +-
doc/html/api/identifier-index-J.html | 2 +-
doc/html/api/identifier-index-K.html | 2 +-
doc/html/api/identifier-index-L.html | 2 +-
doc/html/api/identifier-index-M.html | 2 +-
doc/html/api/identifier-index-N.html | 2 +-
doc/html/api/identifier-index-O.html | 2 +-
doc/html/api/identifier-index-P.html | 2 +-
doc/html/api/identifier-index-Q.html | 2 +-
doc/html/api/identifier-index-R.html | 2 +-
doc/html/api/identifier-index-S.html | 2 +-
doc/html/api/identifier-index-T.html | 3286 ++--
doc/html/api/identifier-index-U.html | 2 +-
doc/html/api/identifier-index-V.html | 2 +-
doc/html/api/identifier-index-W.html | 2 +-
doc/html/api/identifier-index-X.html | 2 +-
doc/html/api/identifier-index-Y.html | 2 +-
doc/html/api/identifier-index-Z.html | 2 +-
doc/html/api/identifier-index-_.html | 2 +-
doc/html/api/identifier-index.html | 2 +-
doc/html/api/lxml-module.html | 10 +-
doc/html/api/lxml-pysrc.html | 41 +-
doc/html/api/lxml.ElementInclude-module.html | 2 +-
doc/html/api/lxml.ElementInclude-pysrc.html | 2 +-
...xml.ElementInclude.FatalIncludeError-class.html | 2 +-
...Include.LimitedRecursiveIncludeError-class.html | 2 +-
doc/html/api/lxml.builder-module.html | 10 +-
doc/html/api/lxml.builder-pysrc.html | 2 +-
doc/html/api/lxml.builder.ElementMaker-class.html | 2 +-
doc/html/api/lxml.cssselect-module.html | 2 +-
doc/html/api/lxml.cssselect-pysrc.html | 2 +-
doc/html/api/lxml.cssselect.CSSSelector-class.html | 2 +-
.../lxml.cssselect.LxmlHTMLTranslator-class.html | 2 +-
.../api/lxml.cssselect.LxmlTranslator-class.html | 2 +-
doc/html/api/lxml.doctestcompare-module.html | 2 +-
doc/html/api/lxml.doctestcompare-pysrc.html | 44 +-
...ml.doctestcompare.LHTMLOutputChecker-class.html | 2 +-
...xml.doctestcompare.LXMLOutputChecker-class.html | 2 +-
.../lxml.doctestcompare._RestoreChecker-class.html | 2 +-
doc/html/api/lxml.etree-module.html | 72 +-
.../api/lxml.etree.AncestorsIterator-class.html | 2 +-
...ree.AttributeBasedElementClassLookup-class.html | 2 +-
doc/html/api/lxml.etree.C14NError-class.html | 2 +-
.../api/lxml.etree.C14NWriterTarget-class.html | 2 +-
doc/html/api/lxml.etree.CDATA-class.html | 2 +-
doc/html/api/lxml.etree.CommentBase-class.html | 2 +-
.../lxml.etree.CustomElementClassLookup-class.html | 2 +-
doc/html/api/lxml.etree.DTD-class.html | 2 +-
doc/html/api/lxml.etree.DTDError-class.html | 2 +-
doc/html/api/lxml.etree.DTDParseError-class.html | 2 +-
.../api/lxml.etree.DTDValidateError-class.html | 2 +-
doc/html/api/lxml.etree.DocInfo-class.html | 2 +-
doc/html/api/lxml.etree.DocumentInvalid-class.html | 2 +-
.../api/lxml.etree.ETCompatXMLParser-class.html | 2 +-
doc/html/api/lxml.etree.ETXPath-class.html | 2 +-
doc/html/api/lxml.etree.ElementBase-class.html | 2 +-
.../api/lxml.etree.ElementChildIterator-class.html | 2 +-
.../api/lxml.etree.ElementClassLookup-class.html | 2 +-
...lxml.etree.ElementDefaultClassLookup-class.html | 2 +-
...lxml.etree.ElementDepthFirstIterator-class.html | 2 +-
...ml.etree.ElementNamespaceClassLookup-class.html | 2 +-
.../api/lxml.etree.ElementTextIterator-class.html | 2 +-
doc/html/api/lxml.etree.EntityBase-class.html | 2 +-
doc/html/api/lxml.etree.Error-class.html | 2 +-
doc/html/api/lxml.etree.ErrorDomains-class.html | 2 +-
doc/html/api/lxml.etree.ErrorLevels-class.html | 2 +-
doc/html/api/lxml.etree.ErrorTypes-class.html | 2 +-
...xml.etree.FallbackElementClassLookup-class.html | 2 +-
doc/html/api/lxml.etree.HTMLParser-class.html | 2 +-
doc/html/api/lxml.etree.HTMLPullParser-class.html | 2 +-
doc/html/api/lxml.etree.LxmlError-class.html | 2 +-
.../api/lxml.etree.LxmlRegistryError-class.html | 2 +-
doc/html/api/lxml.etree.LxmlSyntaxError-class.html | 2 +-
.../lxml.etree.NamespaceRegistryError-class.html | 2 +-
doc/html/api/lxml.etree.PIBase-class.html | 2 +-
doc/html/api/lxml.etree.ParseError-class.html | 2 +-
....etree.ParserBasedElementClassLookup-class.html | 2 +-
doc/html/api/lxml.etree.ParserError-class.html | 2 +-
doc/html/api/lxml.etree.PyErrorLog-class.html | 2 +-
.../lxml.etree.PythonElementClassLookup-class.html | 2 +-
doc/html/api/lxml.etree.QName-class.html | 2 +-
doc/html/api/lxml.etree.RelaxNG-class.html | 2 +-
doc/html/api/lxml.etree.RelaxNGError-class.html | 2 +-
.../api/lxml.etree.RelaxNGErrorTypes-class.html | 2 +-
.../api/lxml.etree.RelaxNGParseError-class.html | 2 +-
.../api/lxml.etree.RelaxNGValidateError-class.html | 2 +-
doc/html/api/lxml.etree.Resolver-class.html | 2 +-
doc/html/api/lxml.etree.Schematron-class.html | 4 +-
doc/html/api/lxml.etree.SchematronError-class.html | 2 +-
.../api/lxml.etree.SchematronParseError-class.html | 2 +-
.../lxml.etree.SchematronValidateError-class.html | 2 +-
.../api/lxml.etree.SerialisationError-class.html | 2 +-
.../api/lxml.etree.SiblingsIterator-class.html | 2 +-
doc/html/api/lxml.etree.TreeBuilder-class.html | 2 +-
doc/html/api/lxml.etree.XInclude-class.html | 2 +-
doc/html/api/lxml.etree.XIncludeError-class.html | 2 +-
doc/html/api/lxml.etree.XMLParser-class.html | 2 +-
doc/html/api/lxml.etree.XMLPullParser-class.html | 2 +-
doc/html/api/lxml.etree.XMLSchema-class.html | 2 +-
doc/html/api/lxml.etree.XMLSchemaError-class.html | 2 +-
.../api/lxml.etree.XMLSchemaParseError-class.html | 2 +-
.../lxml.etree.XMLSchemaValidateError-class.html | 2 +-
doc/html/api/lxml.etree.XMLSyntaxError-class.html | 2 +-
doc/html/api/lxml.etree.XPath-class.html | 2 +-
.../lxml.etree.XPathDocumentEvaluator-class.html | 2 +-
.../lxml.etree.XPathElementEvaluator-class.html | 2 +-
doc/html/api/lxml.etree.XPathError-class.html | 2 +-
doc/html/api/lxml.etree.XPathEvalError-class.html | 2 +-
.../api/lxml.etree.XPathFunctionError-class.html | 2 +-
.../api/lxml.etree.XPathResultError-class.html | 2 +-
.../api/lxml.etree.XPathSyntaxError-class.html | 2 +-
doc/html/api/lxml.etree.XSLT-class.html | 2 +-
.../api/lxml.etree.XSLTAccessControl-class.html | 2 +-
doc/html/api/lxml.etree.XSLTApplyError-class.html | 2 +-
doc/html/api/lxml.etree.XSLTError-class.html | 2 +-
doc/html/api/lxml.etree.XSLTExtension-class.html | 2 +-
.../api/lxml.etree.XSLTExtensionError-class.html | 2 +-
doc/html/api/lxml.etree.XSLTParseError-class.html | 2 +-
doc/html/api/lxml.etree.XSLTSaveError-class.html | 2 +-
doc/html/api/lxml.etree._Attrib-class.html | 2 +-
doc/html/api/lxml.etree._BaseErrorLog-class.html | 2 +-
doc/html/api/lxml.etree._Comment-class.html | 2 +-
doc/html/api/lxml.etree._Document-class.html | 2 +-
doc/html/api/lxml.etree._DomainErrorLog-class.html | 2 +-
doc/html/api/lxml.etree._Element-class.html | 2 +-
.../api/lxml.etree._ElementIterator-class.html | 2 +-
.../lxml.etree._ElementMatchIterator-class.html | 2 +-
.../api/lxml.etree._ElementStringResult-class.html | 2 +-
.../api/lxml.etree._ElementTagMatcher-class.html | 2 +-
doc/html/api/lxml.etree._ElementTree-class.html | 2 +-
.../lxml.etree._ElementUnicodeResult-class.html | 2 +-
doc/html/api/lxml.etree._Entity-class.html | 2 +-
doc/html/api/lxml.etree._ErrorLog-class.html | 2 +-
doc/html/api/lxml.etree._FeedParser-class.html | 2 +-
doc/html/api/lxml.etree._IDDict-class.html | 2 +-
doc/html/api/lxml.etree._ListErrorLog-class.html | 2 +-
doc/html/api/lxml.etree._LogEntry-class.html | 2 +-
.../lxml.etree._ProcessingInstruction-class.html | 2 +-
.../api/lxml.etree._RotatingErrorLog-class.html | 2 +-
.../api/lxml.etree._SaxParserTarget-class.html | 2 +-
.../api/lxml.etree._TargetParserResult-class.html | 2 +-
doc/html/api/lxml.etree._Validator-class.html | 2 +-
.../api/lxml.etree._XPathEvaluatorBase-class.html | 2 +-
...xml.etree._XSLTProcessingInstruction-class.html | 2 +-
doc/html/api/lxml.etree._XSLTResultTree-class.html | 2 +-
doc/html/api/lxml.etree.htmlfile-class.html | 2 +-
doc/html/api/lxml.etree.iterparse-class.html | 2 +-
doc/html/api/lxml.etree.iterwalk-class.html | 2 +-
doc/html/api/lxml.etree.xmlfile-class.html | 2 +-
doc/html/api/lxml.html-module.html | 2 +-
doc/html/api/lxml.html-pysrc.html | 2 +-
doc/html/api/lxml.html.CheckboxGroup-class.html | 2 +-
doc/html/api/lxml.html.CheckboxValues-class.html | 2 +-
doc/html/api/lxml.html.Classes-class.html | 2 +-
doc/html/api/lxml.html.ElementSoup-module.html | 2 +-
doc/html/api/lxml.html.ElementSoup-pysrc.html | 2 +-
doc/html/api/lxml.html.FieldsDict-class.html | 2 +-
doc/html/api/lxml.html.FormElement-class.html | 2 +-
doc/html/api/lxml.html.HTMLParser-class.html | 2 +-
doc/html/api/lxml.html.HtmlComment-class.html | 2 +-
doc/html/api/lxml.html.HtmlElement-class.html | 2 +-
.../lxml.html.HtmlElementClassLookup-class.html | 2 +-
doc/html/api/lxml.html.HtmlEntity-class.html | 2 +-
doc/html/api/lxml.html.HtmlMixin-class.html | 2 +-
.../lxml.html.HtmlProcessingInstruction-class.html | 2 +-
doc/html/api/lxml.html.InputElement-class.html | 2 +-
doc/html/api/lxml.html.InputGetter-class.html | 2 +-
doc/html/api/lxml.html.InputMixin-class.html | 2 +-
doc/html/api/lxml.html.LabelElement-class.html | 2 +-
.../api/lxml.html.MultipleSelectOptions-class.html | 2 +-
doc/html/api/lxml.html.RadioGroup-class.html | 2 +-
doc/html/api/lxml.html.SelectElement-class.html | 2 +-
doc/html/api/lxml.html.TextareaElement-class.html | 2 +-
doc/html/api/lxml.html.XHTMLParser-class.html | 2 +-
doc/html/api/lxml.html._MethodFunc-class.html | 2 +-
doc/html/api/lxml.html.builder-module.html | 2 +-
doc/html/api/lxml.html.builder-pysrc.html | 2 +-
doc/html/api/lxml.html.clean-module.html | 2 +-
doc/html/api/lxml.html.clean-pysrc.html | 2 +-
doc/html/api/lxml.html.clean.Cleaner-class.html | 2 +-
doc/html/api/lxml.html.defs-module.html | 2 +-
doc/html/api/lxml.html.defs-pysrc.html | 2 +-
doc/html/api/lxml.html.diff-module.html | 2 +-
doc/html/api/lxml.html.diff-pysrc.html | 2 +-
doc/html/api/lxml.html.diff.DEL_END-class.html | 2 +-
doc/html/api/lxml.html.diff.DEL_START-class.html | 2 +-
...html.diff.InsensitiveSequenceMatcher-class.html | 2 +-
doc/html/api/lxml.html.diff.NoDeletes-class.html | 2 +-
doc/html/api/lxml.html.diff.href_token-class.html | 2 +-
doc/html/api/lxml.html.diff.tag_token-class.html | 2 +-
doc/html/api/lxml.html.diff.token-class.html | 2 +-
doc/html/api/lxml.html.formfill-module.html | 2 +-
doc/html/api/lxml.html.formfill-pysrc.html | 2 +-
...ml.html.formfill.DefaultErrorCreator-class.html | 2 +-
.../api/lxml.html.formfill.FormNotFound-class.html | 2 +-
doc/html/api/lxml.html.html5parser-module.html | 2 +-
doc/html/api/lxml.html.html5parser-pysrc.html | 2 +-
.../lxml.html.html5parser.HTMLParser-class.html | 2 +-
.../lxml.html.html5parser.XHTMLParser-class.html | 2 +-
doc/html/api/lxml.html.soupparser-module.html | 2 +-
doc/html/api/lxml.html.soupparser-pysrc.html | 2 +-
.../api/lxml.html.soupparser._PseudoTag-class.html | 2 +-
doc/html/api/lxml.html.usedoctest-module.html | 2 +-
doc/html/api/lxml.html.usedoctest-pysrc.html | 2 +-
doc/html/api/lxml.includes-module.html | 2 +-
doc/html/api/lxml.includes-pysrc.html | 2 +-
doc/html/api/lxml.isoschematron-module.html | 2 +-
doc/html/api/lxml.isoschematron-pysrc.html | 2 +-
.../api/lxml.isoschematron.Schematron-class.html | 2 +-
doc/html/api/lxml.objectify-module.html | 4 +-
doc/html/api/lxml.objectify.BoolElement-class.html | 2 +-
.../api/lxml.objectify.ElementMaker-class.html | 2 +-
.../api/lxml.objectify.FloatElement-class.html | 2 +-
doc/html/api/lxml.objectify.IntElement-class.html | 2 +-
doc/html/api/lxml.objectify.LongElement-class.html | 2 +-
doc/html/api/lxml.objectify.NoneElement-class.html | 2 +-
.../api/lxml.objectify.NumberElement-class.html | 2 +-
doc/html/api/lxml.objectify.ObjectPath-class.html | 2 +-
...xml.objectify.ObjectifiedDataElement-class.html | 2 +-
.../lxml.objectify.ObjectifiedElement-class.html | 2 +-
...bjectify.ObjectifyElementClassLookup-class.html | 2 +-
doc/html/api/lxml.objectify.PyType-class.html | 2 +-
.../api/lxml.objectify.StringElement-class.html | 2 +-
doc/html/api/lxml.pyclasslookup-module.html | 2 +-
doc/html/api/lxml.pyclasslookup-pysrc.html | 2 +-
doc/html/api/lxml.sax-module.html | 10 +-
doc/html/api/lxml.sax-pysrc.html | 2 +-
.../lxml.sax.ElementTreeContentHandler-class.html | 2 +-
.../api/lxml.sax.ElementTreeProducer-class.html | 2 +-
doc/html/api/lxml.sax.SaxError-class.html | 2 +-
doc/html/api/lxml.tests-module.html | 4 +-
doc/html/api/lxml.tests-pysrc.html | 2 +-
doc/html/api/lxml.tests.common_imports-module.html | 2 +-
doc/html/api/lxml.tests.common_imports-pysrc.html | 2 +-
....tests.common_imports.HelperTestCase-class.html | 2 +-
...l.tests.common_imports.LargeFileLike-class.html | 2 +-
....common_imports.LargeFileLikeUnicode-class.html | 2 +-
...l.tests.common_imports.SillyFileLike-class.html | 2 +-
.../lxml.tests.common_imports.skipif-class.html | 2 +-
.../api/lxml.tests.dummy_http_server-module.html | 2 +-
.../api/lxml.tests.dummy_http_server-pysrc.html | 2 +-
...mmy_http_server.HTTPRequestCollector-class.html | 2 +-
...ml.tests.dummy_http_server.WebServer-class.html | 2 +-
...ts.dummy_http_server._RequestHandler-class.html | 2 +-
doc/html/api/lxml.tests.selftest-module.html | 2 +-
doc/html/api/lxml.tests.selftest-pysrc.html | 2 +-
doc/html/api/lxml.tests.selftest2-module.html | 2 +-
doc/html/api/lxml.tests.selftest2-pysrc.html | 2 +-
doc/html/api/lxml.tests.test_builder-module.html | 48 +-
doc/html/api/lxml.tests.test_builder-pysrc.html | 181 +-
...l.tests.test_builder.BuilderTestCase-class.html | 2 +-
.../api/lxml.tests.test_classlookup-module.html | 27 +-
.../api/lxml.tests.test_classlookup-pysrc.html | 1283 +-
...test_classlookup.ClassLookupTestCase-class.html | 2 +-
...tests.test_classlookup.ProxyTestCase-class.html | 2 +-
doc/html/api/lxml.tests.test_css-module.html | 2 +-
doc/html/api/lxml.tests.test_css-pysrc.html | 167 +-
.../api/lxml.tests.test_css.CSSTestCase-class.html | 2 +-
.../api/lxml.tests.test_doctestcompare-module.html | 2 +-
.../api/lxml.tests.test_doctestcompare-pysrc.html | 340 +-
...st_doctestcompare.DoctestCompareTest-class.html | 2 +-
...tests.test_doctestcompare.DummyInput-class.html | 2 +-
doc/html/api/lxml.tests.test_dtd-module.html | 46 +-
doc/html/api/lxml.tests.test_dtd-pysrc.html | 1335 +-
...lxml.tests.test_dtd.ETreeDtdTestCase-class.html | 2 +-
.../api/lxml.tests.test_elementpath-module.html | 2 +-
.../api/lxml.tests.test_elementpath-pysrc.html | 2 +-
...elementpath.EtreeElementPathTestCase-class.html | 2 +-
.../api/lxml.tests.test_elementtree-module.html | 46 +-
.../api/lxml.tests.test_elementtree-pysrc.html | 14980 ++++++++---------
...ttree.CElementTreeElementSlicingTest-class.html | 2 +-
...est_elementtree.CElementTreeTestCase-class.html | 4 +-
...t_elementtree.ETreeC14N2TostringTest-class.html | 2 +-
...test_elementtree.ETreeC14N2WriteTest-class.html | 2 +-
...tests.test_elementtree.ETreeC14NTest-class.html | 2 +-
..._elementtree.ETreeElementSlicingTest-class.html | 2 +-
...s.test_elementtree.ETreePullTestCase-class.html | 2 +-
...tests.test_elementtree.ETreeTestCase-class.html | 4 +-
...nttree.ElementTreeElementSlicingTest-class.html | 2 +-
...test_elementtree.ElementTreeTestCase-class.html | 4 +-
...xml.tests.test_elementtree._C14NTest-class.html | 2 +-
....test_elementtree._ETreeTestCaseBase-class.html | 34 +-
...test_elementtree._ElementSlicingTest-class.html | 2 +-
....test_elementtree._XMLPullParserTest-class.html | 2 +-
doc/html/api/lxml.tests.test_errors-module.html | 46 +-
doc/html/api/lxml.tests.test_errors-pysrc.html | 266 +-
...lxml.tests.test_errors.ErrorTestCase-class.html | 2 +-
doc/html/api/lxml.tests.test_etree-module.html | 2 +-
doc/html/api/lxml.tests.test_etree-pysrc.html | 3904 +++--
...l.tests.test_etree.ETreeC14NTestCase-class.html | 2 +-
...l.tests.test_etree.ETreeErrorLogTest-class.html | 2 +-
...l.tests.test_etree.ETreeOnlyTestCase-class.html | 66 +-
....tests.test_etree.ETreeWriteTestCase-class.html | 2 +-
...sts.test_etree.ETreeXIncludeTestCase-class.html | 2 +-
...ts.test_etree.ElementIncludeTestCase-class.html | 2 +-
...l.tests.test_etree.XMLPullParserTest-class.html | 2 +-
...l.tests.test_etree._XIncludeTestCase-class.html | 2 +-
.../lxml.tests.test_external_document-module.html | 2 +-
.../lxml.tests.test_external_document-pysrc.html | 2 +-
...al_document.ExternalDocumentTestCase-class.html | 2 +-
.../api/lxml.tests.test_htmlparser-module.html | 46 +-
doc/html/api/lxml.tests.test_htmlparser-pysrc.html | 2074 ++-
...s.test_htmlparser.HtmlParserTestCase-class.html | 18 +-
doc/html/api/lxml.tests.test_http_io-module.html | 46 +-
doc/html/api/lxml.tests.test_http_io-pysrc.html | 400 +-
...ml.tests.test_http_io.HttpIOTestCase-class.html | 2 +-
...lxml.tests.test_incremental_xmlfile-module.html | 46 +-
.../lxml.tests.test_incremental_xmlfile-pysrc.html | 1650 +-
...emental_xmlfile.AsyncXmlFileTestCase-class.html | 2 +-
...ental_xmlfile.BytesIOXmlFileTestCase-class.html | 2 +-
...incremental_xmlfile.HtmlFileTestCase-class.html | 2 +-
...mlfile.SimpleFileLikeXmlFileTestCase-class.html | 2 +-
...leLikeXmlFileTestCase.SimpleFileLike-class.html | 2 +-
...ntal_xmlfile.TempPathXmlFileTestCase-class.html | 2 +-
...remental_xmlfile.TempXmlFileTestCase-class.html | 2 +-
...emental_xmlfile._XmlFileTestCaseBase-class.html | 2 +-
doc/html/api/lxml.tests.test_io-module.html | 2 +-
doc/html/api/lxml.tests.test_io-pysrc.html | 1034 +-
.../lxml.tests.test_io.ETreeIOTestCase-class.html | 2 +-
....tests.test_io.ElementTreeIOTestCase-class.html | 2 +-
.../lxml.tests.test_io._IOTestCaseBase-class.html | 2 +-
.../api/lxml.tests.test_isoschematron-module.html | 46 +-
.../api/lxml.tests.test_isoschematron-pysrc.html | 2098 ++-
...chematron.ETreeISOSchematronTestCase-class.html | 2 +-
doc/html/api/lxml.tests.test_nsclasses-module.html | 46 +-
doc/html/api/lxml.tests.test_nsclasses-pysrc.html | 610 +-
...lasses.ETreeNamespaceClassesTestCase-class.html | 2 +-
...NamespaceClassesTestCase.bluff_class-class.html | 2 +-
...mespaceClassesTestCase.default_class-class.html | 2 +-
...eNamespaceClassesTestCase.maeh_class-class.html | 2 +-
doc/html/api/lxml.tests.test_objectify-module.html | 73 +-
doc/html/api/lxml.tests.test_objectify-pysrc.html | 7797 +++++----
...sts.test_objectify.ObjectifyTestCase-class.html | 2 +-
.../api/lxml.tests.test_pyclasslookup-module.html | 27 +-
.../api/lxml.tests.test_pyclasslookup-pysrc.html | 1019 +-
..._pyclasslookup.PyClassLookupTestCase-class.html | 2 +-
doc/html/api/lxml.tests.test_relaxng-module.html | 46 +-
doc/html/api/lxml.tests.test_relaxng-pysrc.html | 698 +-
...ts.test_relaxng.ETreeRelaxNGTestCase-class.html | 2 +-
....test_relaxng.RelaxNGCompactTestCase-class.html | 2 +-
doc/html/api/lxml.tests.test_sax-module.html | 46 +-
doc/html/api/lxml.tests.test_sax-pysrc.html | 1123 +-
...lxml.tests.test_sax.ETreeSaxTestCase-class.html | 2 +-
...l.tests.test_sax.NSPrefixSaxTestCase-class.html | 2 +-
....tests.test_sax.SimpleContentHandler-class.html | 2 +-
.../api/lxml.tests.test_schematron-module.html | 46 +-
doc/html/api/lxml.tests.test_schematron-pysrc.html | 267 +-
...t_schematron.ETreeSchematronTestCase-class.html | 2 +-
doc/html/api/lxml.tests.test_threading-module.html | 46 +-
doc/html/api/lxml.tests.test_threading-pysrc.html | 1596 +-
...est_threading.ThreadPipelineTestCase-class.html | 2 +-
...ipelineTestCase.ParseAndExtendWorker-class.html | 6 +-
...ipelineTestCase.ParseAndInjectWorker-class.html | 6 +-
...g.ThreadPipelineTestCase.ParseWorker-class.html | 6 +-
...ThreadPipelineTestCase.ReverseWorker-class.html | 2 +-
....ThreadPipelineTestCase.RotateWorker-class.html | 2 +-
...readPipelineTestCase.SerialiseWorker-class.html | 2 +-
...ding.ThreadPipelineTestCase.Validate-class.html | 2 +-
...eading.ThreadPipelineTestCase.Worker-class.html | 2 +-
...sts.test_threading.ThreadingTestCase-class.html | 2 +-
doc/html/api/lxml.tests.test_unicode-module.html | 27 +-
doc/html/api/lxml.tests.test_unicode-pysrc.html | 651 +-
...tests.test_unicode.EncodingsTestCase-class.html | 2 +-
...l.tests.test_unicode.UnicodeTestCase-class.html | 2 +-
doc/html/api/lxml.tests.test_xmlschema-module.html | 46 +-
doc/html/api/lxml.tests.test_xmlschema-pysrc.html | 1442 +-
...hema.ETreeXMLSchemaResolversTestCase-class.html | 2 +-
...emaResolversTestCase.simple_resolver-class.html | 2 +-
...est_xmlschema.ETreeXMLSchemaTestCase-class.html | 2 +-
.../api/lxml.tests.test_xpathevaluator-module.html | 27 +-
.../api/lxml.tests.test_xpathevaluator-pysrc.html | 2073 ++-
...hevaluator.ETreeETXPathClassTestCase-class.html | 2 +-
...athevaluator.ETreeXPathClassTestCase-class.html | 2 +-
...athevaluator.ETreeXPathExsltTestCase-class.html | 2 +-
...st_xpathevaluator.ETreeXPathTestCase-class.html | 2 +-
doc/html/api/lxml.tests.test_xslt-module.html | 46 +-
doc/html/api/lxml.tests.test_xslt-pysrc.html | 2636 ++-
...l.tests.test_xslt.ETreeEXSLTTestCase-class.html | 2 +-
...est_xslt.ETreeXSLTExtElementTestCase-class.html | 2 +-
...s.test_xslt.ETreeXSLTExtFuncTestCase-class.html | 2 +-
...ml.tests.test_xslt.ETreeXSLTTestCase-class.html | 2 +-
...lxml.tests.test_xslt.Py3XSLTTestCase-class.html | 2 +-
doc/html/api/lxml.usedoctest-module.html | 2 +-
doc/html/api/lxml.usedoctest-pysrc.html | 2 +-
doc/html/api/mimetools.Message-class.html | 2 +-
doc/html/api/module-tree.html | 4 +-
doc/html/api/str-class.html | 2 +-
doc/html/api/toc-everything.html | 65 +-
doc/html/api/toc-lxml.etree-module.html | 5 +-
.../api/toc-lxml.tests.test_builder-module.html | 3 +-
.../toc-lxml.tests.test_classlookup-module.html | 3 +-
doc/html/api/toc-lxml.tests.test_dtd-module.html | 3 +-
.../toc-lxml.tests.test_elementtree-module.html | 3 +-
.../api/toc-lxml.tests.test_errors-module.html | 3 +-
.../api/toc-lxml.tests.test_htmlparser-module.html | 3 +-
.../api/toc-lxml.tests.test_http_io-module.html | 3 +-
...lxml.tests.test_incremental_xmlfile-module.html | 3 +-
.../toc-lxml.tests.test_isoschematron-module.html | 3 +-
.../api/toc-lxml.tests.test_nsclasses-module.html | 3 +-
.../api/toc-lxml.tests.test_objectify-module.html | 3 +-
.../toc-lxml.tests.test_pyclasslookup-module.html | 3 +-
.../api/toc-lxml.tests.test_relaxng-module.html | 3 +-
doc/html/api/toc-lxml.tests.test_sax-module.html | 3 +-
.../api/toc-lxml.tests.test_schematron-module.html | 3 +-
.../api/toc-lxml.tests.test_threading-module.html | 3 +-
.../api/toc-lxml.tests.test_unicode-module.html | 3 +-
.../api/toc-lxml.tests.test_xmlschema-module.html | 3 +-
.../toc-lxml.tests.test_xpathevaluator-module.html | 3 +-
doc/html/api/toc-lxml.tests.test_xslt-module.html | 3 +-
doc/html/api/xml.etree.ElementTree-module.html | 2 +-
doc/html/api/xml.etree.ElementTree-pysrc.html | 2 +-
.../api/xml.etree.ElementTree.Element-class.html | 2 +-
.../xml.etree.ElementTree.ElementTree-class.html | 2 +-
.../xml.etree.ElementTree.ParseError-class.html | 2 +-
.../api/xml.etree.ElementTree.QName-class.html | 2 +-
.../xml.etree.ElementTree.TreeBuilder-class.html | 2 +-
.../api/xml.etree.ElementTree.XMLParser-class.html | 2 +-
...etree.ElementTree._IterParseIterator-class.html | 2 +-
...etree.ElementTree._SimpleElementPath-class.html | 2 +-
doc/html/build.html | 4 +-
doc/html/capi.html | 16 +-
.../{changes-4.4.3.html => changes-4.5.0.html} | 838 +-
doc/html/compatibility.html | 4 +-
doc/html/credits.html | 4 +-
doc/html/cssselect.html | 4 +-
doc/html/element_classes.html | 4 +-
doc/html/elementsoup.html | 4 +-
doc/html/extensions.html | 4 +-
doc/html/html5parser.html | 4 +-
doc/html/index.html | 35 +-
doc/html/installation.html | 4 +-
doc/html/intro.html | 4 +-
doc/html/lxml-source-howto.html | 4 +-
doc/html/lxmlhtml.html | 4 +-
doc/html/objectify.html | 4 +-
doc/html/parsing.html | 4 +-
doc/html/performance.html | 4 +-
doc/html/resolvers.html | 4 +-
doc/html/sax.html | 4 +-
doc/html/sitemap.html | 2 +-
doc/html/tutorial.html | 37 +-
doc/html/validation.html | 4 +-
doc/html/xpathxslt.html | 4 +-
doc/main.txt | 39 +-
doc/mkhtml.py | 5 +-
doc/tutorial.txt | 36 +
setup.py | 50 +-
src/lxml.egg-info/PKG-INFO | 33 +-
src/lxml.egg-info/SOURCES.txt | 3 +-
src/lxml/__init__.py | 3 +
src/lxml/apihelpers.pxi | 13 +
src/lxml/dtd.pxi | 20 +-
src/lxml/etree.c | 16623 ++++++++++---------
src/lxml/etree.h | 6 +-
src/lxml/etree.pyx | 58 +-
src/lxml/includes/lxml-version.h | 2 +-
src/lxml/lxml.etree.h | 6 +-
src/lxml/schematron.pxi | 2 +-
src/lxml/tests/test_builder.py | 12 +-
src/lxml/tests/test_classlookup.py | 9 +-
src/lxml/tests/test_css.py | 5 +-
src/lxml/tests/test_doctestcompare.py | 5 +-
src/lxml/tests/test_dtd.py | 14 +-
src/lxml/tests/test_elementtree.py | 44 +-
src/lxml/tests/test_errors.py | 12 +-
src/lxml/tests/test_etree.py | 130 +
src/lxml/tests/test_htmlparser.py | 32 +-
src/lxml/tests/test_http_io.py | 10 +-
src/lxml/tests/test_incremental_xmlfile.py | 4 -
src/lxml/tests/test_io.py | 8 +-
src/lxml/tests/test_isoschematron.py | 11 +-
src/lxml/tests/test_nsclasses.py | 9 +-
src/lxml/tests/test_objectify.py | 13 +-
src/lxml/tests/test_pyclasslookup.py | 11 +-
src/lxml/tests/test_relaxng.py | 11 +-
src/lxml/tests/test_sax.py | 12 +-
src/lxml/tests/test_schematron.py | 10 +-
src/lxml/tests/test_threading.py | 9 +-
src/lxml/tests/test_unicode.py | 12 +-
src/lxml/tests/test_xmlschema.py | 9 +-
src/lxml/tests/test_xpathevaluator.py | 10 +-
src/lxml/tests/test_xslt.py | 12 +-
tools/manylinux/build-wheels.sh | 5 +-
version.txt | 1 -
versioninfo.py | 6 +-
512 files changed, 36582 insertions(+), 37141 deletions(-)
rename doc/html/{changes-4.4.3.html => changes-4.5.0.html} (99%)
delete mode 100644 version.txt
diff --git a/CHANGES.txt b/CHANGES.txt
index 4c02c1b..7feb0ba 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -2,6 +2,32 @@
lxml changelog
==============
+4.5.0 (2020-01-29)
+==================
+
+Features added
+--------------
+
+* A new function ``indent()`` was added to insert tail whitespace for pretty-printing
+ an XML tree.
+
+Bugs fixed
+----------
+
+* LP#1857794: Tail text of nodes that get removed from a document using item
+ deletion disappeared silently instead of sticking with the node that was removed.
+
+Other changes
+-------------
+
+* MacOS builds are 64-bit-only by default.
+ Set CFLAGS and LDFLAGS explicitly to override it.
+
+* Linux/MacOS Binary wheels now use libxml2 2.9.10 and libxslt 1.1.34.
+
+* LP#1840234: The package version number is now available as ``lxml.__version__``.
+
+
4.4.3 (2020-01-28)
==================
diff --git a/MANIFEST.in b/MANIFEST.in
index 529fa04..e98fa4d 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -2,7 +2,7 @@ exclude *.py
include setup.py setupinfo.py versioninfo.py buildlibxml.py
include test.py
include update-error-constants.py
-include MANIFEST.in Makefile version.txt requirements.txt
+include MANIFEST.in Makefile requirements.txt
include CHANGES.txt CREDITS.txt INSTALL.txt LICENSES.txt README.rst TODO.txt
include tools/*.py tools/manylinux/*.sh
include src/lxml/*.c src/lxml/html/*.c
diff --git a/Makefile b/Makefile
index 8e7112d..9094df0 100644
--- a/Makefile
+++ b/Makefile
@@ -3,17 +3,17 @@ PYTHON3?=python3
TESTFLAGS=-p -v
TESTOPTS=
SETUPFLAGS=
-LXMLVERSION=$(shell cat version.txt)
+LXMLVERSION:=$(shell sed -ne '/__version__/s|.*__version__\s*=\s*"\([^"]*\)".*|\1|p' src/lxml/__init__.py)
-PARALLEL=$(shell $(PYTHON) -c 'import sys; print("-j7" if sys.version_info >= (3, 5) else "")' )
-PARALLEL3=$(shell $(PYTHON3) -c 'import sys; print("-j7" if sys.version_info >= (3, 5) else "")' )
-PYTHON_WITH_CYTHON=$(shell $(PYTHON) -c 'import Cython.Build.Dependencies' >/dev/null 2>/dev/null && echo " --with-cython" || true)
-PY3_WITH_CYTHON=$(shell $(PYTHON3) -c 'import Cython.Build.Dependencies' >/dev/null 2>/dev/null && echo " --with-cython" || true)
-CYTHON_WITH_COVERAGE=$(shell $(PYTHON) -c 'import Cython.Coverage; import sys; assert not hasattr(sys, "pypy_version_info")' >/dev/null 2>/dev/null && echo " --coverage" || true)
-CYTHON3_WITH_COVERAGE=$(shell $(PYTHON3) -c 'import Cython.Coverage; import sys; assert not hasattr(sys, "pypy_version_info")' >/dev/null 2>/dev/null && echo " --coverage" || true)
+PARALLEL:=$(shell $(PYTHON) -c 'import sys; print("-j7" if sys.version_info >= (3, 5) else "")' )
+PARALLEL3:=$(shell $(PYTHON3) -c 'import sys; print("-j7" if sys.version_info >= (3, 5) else "")' )
+PYTHON_WITH_CYTHON:=$(shell $(PYTHON) -c 'import Cython.Build.Dependencies' >/dev/null 2>/dev/null && echo " --with-cython" || true)
+PY3_WITH_CYTHON:=$(shell $(PYTHON3) -c 'import Cython.Build.Dependencies' >/dev/null 2>/dev/null && echo " --with-cython" || true)
+CYTHON_WITH_COVERAGE:=$(shell $(PYTHON) -c 'import Cython.Coverage; import sys; assert not hasattr(sys, "pypy_version_info")' >/dev/null 2>/dev/null && echo " --coverage" || true)
+CYTHON3_WITH_COVERAGE:=$(shell $(PYTHON3) -c 'import Cython.Coverage; import sys; assert not hasattr(sys, "pypy_version_info")' >/dev/null 2>/dev/null && echo " --coverage" || true)
-MANYLINUX_LIBXML2_VERSION=2.9.9
-MANYLINUX_LIBXSLT_VERSION=1.1.33
+MANYLINUX_LIBXML2_VERSION=2.9.10
+MANYLINUX_LIBXSLT_VERSION=1.1.34
MANYLINUX_IMAGE_X86_64=quay.io/pypa/manylinux1_x86_64
MANYLINUX_IMAGE_686=quay.io/pypa/manylinux1_i686
diff --git a/PKG-INFO b/PKG-INFO
index 33c941f..71ee994 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,8 +1,8 @@
Metadata-Version: 2.1
Name: lxml
-Version: 4.4.3
+Version: 4.5.0
Summary: Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API.
-Home-page: http://lxml.de/
+Home-page: https://lxml.de/
Author: lxml dev team
Author-email: lxml-dev@lxml.de
Maintainer: lxml dev team
@@ -16,7 +16,7 @@ Description: lxml is a Pythonic, mature binding for the libxml2 and libxslt libr
RelaxNG, XML Schema, XSLT, C14N and much more.
To contact the project, go to the `project home page
- `_ or see our bug tracker at
+ `_ or see our bug tracker at
https://launchpad.net/lxml
In case you want to use the current in-development version of lxml,
@@ -31,20 +31,37 @@ Description: lxml is a Pythonic, mature binding for the libxml2 and libxslt libr
After an official release of a new stable series, bug fixes may become
available at
- https://github.com/lxml/lxml/tree/lxml-4.4 .
- Running ``easy_install lxml==4.4bugfix`` will install
+ https://github.com/lxml/lxml/tree/lxml-4.5 .
+ Running ``easy_install lxml==4.5bugfix`` will install
the unreleased branch state from
- https://github.com/lxml/lxml/tarball/lxml-4.4#egg=lxml-4.4bugfix
+ https://github.com/lxml/lxml/tarball/lxml-4.5#egg=lxml-4.5bugfix
as soon as a maintenance branch has been established. Note that this
requires Cython to be installed at an appropriate version for the build.
- 4.4.3 (2020-01-28)
+ 4.5.0 (2020-01-29)
==================
+ Features added
+ --------------
+
+ * A new function ``indent()`` was added to insert tail whitespace for pretty-printing
+ an XML tree.
+
Bugs fixed
----------
- * LP#1844674: ``itertext()`` was missing tail text of comments and PIs since 4.4.0.
+ * LP#1857794: Tail text of nodes that get removed from a document using item
+ deletion disappeared silently instead of sticking with the node that was removed.
+
+ Other changes
+ -------------
+
+ * MacOS builds are 64-bit-only by default.
+ Set CFLAGS and LDFLAGS explicitly to override it.
+
+ * Linux/MacOS Binary wheels now use libxml2 2.9.10 and libxslt 1.1.34.
+
+ * LP#1840234: The package version number is now available as ``lxml.__version__``.
diff --git a/README.rst b/README.rst
index 74dac30..ae1d7ca 100644
--- a/README.rst
+++ b/README.rst
@@ -67,6 +67,16 @@ Another supporter of the lxml project is
`COLOGNE Webdesign `_.
+Project income report
+---------------------
+
+* Total project income in 2019: EUR 717.52 (59.79 ⬠/ month)
+
+ - Tidelift: EUR 360.30
+ - Paypal: EUR 157.22
+ - other: EUR 200.00
+
+
Legal Notice for Donations
--------------------------
diff --git a/buildlibxml.py b/buildlibxml.py
index 2c289df..3803072 100644
--- a/buildlibxml.py
+++ b/buildlibxml.py
@@ -344,36 +344,15 @@ def cmmi(configure_cmd, build_dir, multicore=None, **call_setup):
def configure_darwin_env(env_setup):
import platform
- # check target architectures on MacOS-X (ppc, i386, x86_64)
+ # configure target architectures on MacOS-X (x86_64 only, by default)
major_version, minor_version = tuple(map(int, platform.mac_ver()[0].split('.')[:2]))
if major_version > 7:
- # Check to see if ppc is supported (XCode4 drops ppc support)
- include_ppc = True
- if os.path.exists('/usr/bin/xcodebuild'):
- pipe = subprocess.Popen(['/usr/bin/xcodebuild', '-version'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
- out, _ = pipe.communicate()
- xcode_version = (out.decode('utf8').splitlines() or [''])[0]
- # Also parse only first digit, because 3.2.1 can't be parsed nicely
- if (xcode_version.startswith('Xcode') and
- version.StrictVersion(xcode_version.split()[1]) >= version.StrictVersion('4.0')):
- include_ppc = False
- arch_string = ""
- if include_ppc:
- arch_string = "-arch ppc "
- if minor_version < 6:
- env_default = {
- 'CFLAGS': arch_string + "-arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk -O2",
- 'LDFLAGS': arch_string + "-arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk",
- 'MACOSX_DEPLOYMENT_TARGET': "10.3"
- }
- else:
- env_default = {
- 'CFLAGS': arch_string + "-arch i386 -arch x86_64 -O2",
- 'LDFLAGS': arch_string + "-arch i386 -arch x86_64",
- 'MACOSX_DEPLOYMENT_TARGET': "10.6"
- }
- env = os.environ.copy()
- env_default.update(env)
+ env_default = {
+ 'CFLAGS': "-arch x86_64 -O2",
+ 'LDFLAGS': "-arch x86_64",
+ 'MACOSX_DEPLOYMENT_TARGET': "10.6"
+ }
+ env_default.update(os.environ)
env_setup['env'] = env_default
diff --git a/doc/capi.txt b/doc/capi.txt
index d9872fc..0167a5a 100644
--- a/doc/capi.txt
+++ b/doc/capi.txt
@@ -49,8 +49,14 @@ This is the easiest way of extending lxml at the C level. A Cython_
# My Cython extension
+ # directive pointing compiler to lxml header files;
+ # use ``aliases={"LXML_PACKAGE_DIR": lxml.__path__}``
+ # argument to cythonize in setup.py to dynamically
+ # determine dir at compile time
+ # distutils: include_dirs = LXML_PACKAGE_DIR
+
# import the public functions and classes of lxml.etree
- cimport etreepublic as cetree
+ cimport lxml.includes.etreepublic as cetree
# import the lxml.etree module in Python
cdef object etree
@@ -69,13 +75,13 @@ Public lxml classes are easily subclassed. For example, to implement
and set a new default element class, you can write Cython code like
the following::
- from etreepublic cimport ElementBase
+ from lxml.includes.etreepublic cimport ElementBase
cdef class NewElementClass(ElementBase):
def set_value(self, myval):
self.set("my_attribute", myval)
etree.set_element_class_lookup(
- etree.DefaultElementClassLookup(element=NewElementClass))
+ etree.ElementDefaultClassLookup(element=NewElementClass))
Writing external modules in C
diff --git a/doc/html/FAQ.html b/doc/html/FAQ.html
index 6445eae..a57fd22 100644
--- a/doc/html/FAQ.html
+++ b/doc/html/FAQ.html
@@ -26,7 +26,7 @@ function hide_menu() {
-
lxml FAQ - Frequently Asked Questions
+
lxml FAQ - Frequently Asked Questions
Frequently asked questions on lxml. See also the notes on compatibility to
ElementTree.
@@ -1021,7 +1021,7 @@ map it to your namespace. See also the question above.
diff --git a/doc/html/api.html b/doc/html/api.html
index b68ce6e..10e96ae 100644
--- a/doc/html/api.html
+++ b/doc/html/api.html
@@ -24,7 +24,7 @@ function hide_menu() {
-
APIs specific to lxml.etree
+
APIs specific to lxml.etree
lxml.etree tries to follow established APIs wherever possible. Sometimes,
however, the need to expose a feature in an easy way led to the invention of a
@@ -533,7 +533,7 @@ resolvers, you have to stick to the external Python module.
diff --git a/doc/html/api/abc.ABCMeta-class.html b/doc/html/api/abc.ABCMeta-class.html
index 7b77c23..ae8a215 100644
--- a/doc/html/api/abc.ABCMeta-class.html
+++ b/doc/html/api/abc.ABCMeta-class.html
@@ -427,7 +427,7 @@ even via super()).