From 15755bc97bc85783207f8ee948c17b5f02ef410e Mon Sep 17 00:00:00 2001
From: Hyunjee Kim
Date: Thu, 31 Jan 2019 10:58:41 +0900
Subject: [PATCH] Imported Upstream version 3.7.0
Change-Id: I4033e9ff4bf133335e0812ec9c8fd69d61944756
Signed-off-by: Hyunjee Kim
---
CHANGES.txt | 40 +
PKG-INFO | 46 +-
buildlibxml.py | 104 +-
doc/FAQ.txt | 2 +-
doc/build.txt | 2 +-
doc/html/FAQ.html | 6 +-
doc/html/api.html | 4 +-
doc/html/api/abc.ABCMeta-class.html | 2 +-
doc/html/api/api-objects.txt | 27 +-
doc/html/api/class-tree.html | 4 +-
.../cssselect.parser.SelectorError-class.html | 2 +-
...lect.parser.SelectorSyntaxError-class.html | 2 +-
...cssselect.xpath.ExpressionError-class.html | 2 +-
.../api/cssselect.xpath.XPathExpr-class.html | 2 +-
doc/html/api/deprecated-index.html | 2 +-
.../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 | 157 +-
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 | 91 +-
doc/html/api/identifier-index-Q.html | 2 +-
doc/html/api/identifier-index-R.html | 2 +-
doc/html/api/identifier-index-S.html | 284 +-
doc/html/api/identifier-index-T.html | 892 +-
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 | 2 +-
doc/html/api/lxml-pysrc.html | 2 +-
doc/html/api/lxml.ElementInclude-module.html | 2 +-
doc/html/api/lxml.ElementInclude-pysrc.html | 16 +-
...lementInclude.FatalIncludeError-class.html | 2 +-
doc/html/api/lxml.builder-module.html | 2 +-
doc/html/api/lxml.builder-pysrc.html | 2 +-
.../api/lxml.builder.ElementMaker-class.html | 2 +-
doc/html/api/lxml.cssselect-module.html | 2 +-
doc/html/api/lxml.cssselect-pysrc.html | 2 +-
.../api/lxml.cssselect.CSSSelector-class.html | 2 +-
...ml.cssselect.LxmlHTMLTranslator-class.html | 2 +-
.../lxml.cssselect.LxmlTranslator-class.html | 2 +-
doc/html/api/lxml.doctestcompare-module.html | 2 +-
doc/html/api/lxml.doctestcompare-pysrc.html | 2 +-
...ctestcompare.LHTMLOutputChecker-class.html | 2 +-
...octestcompare.LXMLOutputChecker-class.html | 2 +-
....doctestcompare._RestoreChecker-class.html | 2 +-
doc/html/api/lxml.etree-module.html | 24 +-
.../lxml.etree.AncestorsIterator-class.html | 2 +-
...ttributeBasedElementClassLookup-class.html | 2 +-
doc/html/api/lxml.etree.C14NError-class.html | 2 +-
doc/html/api/lxml.etree.CDATA-class.html | 2 +-
.../api/lxml.etree.CommentBase-class.html | 2 +-
....etree.CustomElementClassLookup-class.html | 2 +-
doc/html/api/lxml.etree.DTD-class.html | 2 +-
doc/html/api/lxml.etree.DTDError-class.html | 2 +-
.../api/lxml.etree.DTDParseError-class.html | 2 +-
.../lxml.etree.DTDValidateError-class.html | 2 +-
doc/html/api/lxml.etree.DocInfo-class.html | 2 +-
.../api/lxml.etree.DocumentInvalid-class.html | 2 +-
.../lxml.etree.ETCompatXMLParser-class.html | 2 +-
doc/html/api/lxml.etree.ETXPath-class.html | 2 +-
.../api/lxml.etree.ElementBase-class.html | 2 +-
...lxml.etree.ElementChildIterator-class.html | 2 +-
.../lxml.etree.ElementClassLookup-class.html | 2 +-
...etree.ElementDefaultClassLookup-class.html | 2 +-
...etree.ElementDepthFirstIterator-class.html | 2 +-
...ree.ElementNamespaceClassLookup-class.html | 2 +-
.../lxml.etree.ElementTextIterator-class.html | 2 +-
doc/html/api/lxml.etree.EntityBase-class.html | 2 +-
doc/html/api/lxml.etree.Error-class.html | 2 +-
.../api/lxml.etree.ErrorDomains-class.html | 2 +-
.../api/lxml.etree.ErrorLevels-class.html | 2 +-
doc/html/api/lxml.etree.ErrorTypes-class.html | 2 +-
...tree.FallbackElementClassLookup-class.html | 2 +-
doc/html/api/lxml.etree.HTMLParser-class.html | 12 +-
.../api/lxml.etree.HTMLPullParser-class.html | 2 +-
doc/html/api/lxml.etree.LxmlError-class.html | 2 +-
.../lxml.etree.LxmlRegistryError-class.html | 2 +-
.../api/lxml.etree.LxmlSyntaxError-class.html | 2 +-
...ml.etree.NamespaceRegistryError-class.html | 2 +-
doc/html/api/lxml.etree.PIBase-class.html | 2 +-
doc/html/api/lxml.etree.ParseError-class.html | 45 +-
...e.ParserBasedElementClassLookup-class.html | 2 +-
.../api/lxml.etree.ParserError-class.html | 2 +-
doc/html/api/lxml.etree.PyErrorLog-class.html | 2 +-
....etree.PythonElementClassLookup-class.html | 2 +-
doc/html/api/lxml.etree.QName-class.html | 2 +-
doc/html/api/lxml.etree.RelaxNG-class.html | 52 +-
.../api/lxml.etree.RelaxNGError-class.html | 2 +-
.../lxml.etree.RelaxNGErrorTypes-class.html | 2 +-
.../lxml.etree.RelaxNGParseError-class.html | 2 +-
...lxml.etree.RelaxNGValidateError-class.html | 2 +-
doc/html/api/lxml.etree.Resolver-class.html | 2 +-
doc/html/api/lxml.etree.Schematron-class.html | 2 +-
.../api/lxml.etree.SchematronError-class.html | 2 +-
...lxml.etree.SchematronParseError-class.html | 2 +-
...l.etree.SchematronValidateError-class.html | 2 +-
.../lxml.etree.SerialisationError-class.html | 2 +-
.../lxml.etree.SiblingsIterator-class.html | 2 +-
.../api/lxml.etree.TreeBuilder-class.html | 2 +-
doc/html/api/lxml.etree.XInclude-class.html | 2 +-
.../api/lxml.etree.XIncludeError-class.html | 2 +-
doc/html/api/lxml.etree.XMLParser-class.html | 4 +-
.../api/lxml.etree.XMLPullParser-class.html | 2 +-
doc/html/api/lxml.etree.XMLSchema-class.html | 2 +-
.../api/lxml.etree.XMLSchemaError-class.html | 2 +-
.../lxml.etree.XMLSchemaParseError-class.html | 2 +-
...ml.etree.XMLSchemaValidateError-class.html | 2 +-
.../api/lxml.etree.XMLSyntaxError-class.html | 5 +-
doc/html/api/lxml.etree.XPath-class.html | 2 +-
...ml.etree.XPathDocumentEvaluator-class.html | 2 +-
...xml.etree.XPathElementEvaluator-class.html | 2 +-
doc/html/api/lxml.etree.XPathError-class.html | 2 +-
.../api/lxml.etree.XPathEvalError-class.html | 2 +-
.../lxml.etree.XPathFunctionError-class.html | 2 +-
.../lxml.etree.XPathResultError-class.html | 2 +-
.../lxml.etree.XPathSyntaxError-class.html | 2 +-
doc/html/api/lxml.etree.XSLT-class.html | 2 +-
.../lxml.etree.XSLTAccessControl-class.html | 2 +-
.../api/lxml.etree.XSLTApplyError-class.html | 2 +-
doc/html/api/lxml.etree.XSLTError-class.html | 2 +-
.../api/lxml.etree.XSLTExtension-class.html | 2 +-
.../lxml.etree.XSLTExtensionError-class.html | 2 +-
.../api/lxml.etree.XSLTParseError-class.html | 2 +-
.../api/lxml.etree.XSLTSaveError-class.html | 2 +-
doc/html/api/lxml.etree._Attrib-class.html | 2 +-
.../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 +-
.../api/lxml.etree._DomainErrorLog-class.html | 2 +-
doc/html/api/lxml.etree._Element-class.html | 2 +-
.../lxml.etree._ElementIterator-class.html | 2 +-
...xml.etree._ElementMatchIterator-class.html | 2 +-
...lxml.etree._ElementStringResult-class.html | 2 +-
.../lxml.etree._ElementTagMatcher-class.html | 2 +-
.../api/lxml.etree._ElementTree-class.html | 2 +-
...xml.etree._ElementUnicodeResult-class.html | 2 +-
doc/html/api/lxml.etree._Entity-class.html | 2 +-
doc/html/api/lxml.etree._ErrorLog-class.html | 2 +-
.../api/lxml.etree._FeedParser-class.html | 2 +-
doc/html/api/lxml.etree._IDDict-class.html | 2 +-
.../api/lxml.etree._ListErrorLog-class.html | 2 +-
doc/html/api/lxml.etree._LogEntry-class.html | 2 +-
...ml.etree._ProcessingInstruction-class.html | 2 +-
.../lxml.etree._RotatingErrorLog-class.html | 2 +-
.../lxml.etree._SaxParserTarget-class.html | 2 +-
.../lxml.etree._TargetParserResult-class.html | 2 +-
doc/html/api/lxml.etree._Validator-class.html | 2 +-
.../lxml.etree._XPathEvaluatorBase-class.html | 2 +-
...tree._XSLTProcessingInstruction-class.html | 2 +-
.../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 | 12 +-
doc/html/api/lxml.html-pysrc.html | 4509 +-
.../api/lxml.html.CheckboxGroup-class.html | 2 +-
.../api/lxml.html.CheckboxValues-class.html | 2 +-
doc/html/api/lxml.html.Classes-class.html | 2 +-
.../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 | 6 +-
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 | 50 +-
...xml.html.HtmlElementClassLookup-class.html | 2 +-
doc/html/api/lxml.html.HtmlEntity-class.html | 2 +-
doc/html/api/lxml.html.HtmlMixin-class.html | 23 +-
....html.HtmlProcessingInstruction-class.html | 2 +-
.../api/lxml.html.InputElement-class.html | 6 +-
doc/html/api/lxml.html.InputGetter-class.html | 2 +-
doc/html/api/lxml.html.InputMixin-class.html | 2 +-
.../api/lxml.html.LabelElement-class.html | 6 +-
...lxml.html.MultipleSelectOptions-class.html | 2 +-
doc/html/api/lxml.html.RadioGroup-class.html | 2 +-
.../api/lxml.html.SelectElement-class.html | 6 +-
.../api/lxml.html.TextareaElement-class.html | 6 +-
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 | 40 +-
.../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 +-
.../api/lxml.html.diff.DEL_END-class.html | 2 +-
.../api/lxml.html.diff.DEL_START-class.html | 2 +-
...diff.InsensitiveSequenceMatcher-class.html | 2 +-
.../api/lxml.html.diff.NoDeletes-class.html | 2 +-
.../api/lxml.html.diff.href_token-class.html | 2 +-
.../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 | 32 +-
...ml.formfill.DefaultErrorCreator-class.html | 2 +-
...lxml.html.formfill.FormNotFound-class.html | 2 +-
.../api/lxml.html.html5parser-module.html | 2 +-
doc/html/api/lxml.html.html5parser-pysrc.html | 2 +-
...xml.html.html5parser.HTMLParser-class.html | 2 +-
...ml.html.html5parser.XHTMLParser-class.html | 2 +-
doc/html/api/lxml.html.soupparser-module.html | 2 +-
doc/html/api/lxml.html.soupparser-pysrc.html | 2 +-
...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 +-
.../lxml.isoschematron.Schematron-class.html | 2 +-
doc/html/api/lxml.objectify-module.html | 4 +-
.../api/lxml.objectify.BoolElement-class.html | 6 +-
.../lxml.objectify.ElementMaker-class.html | 2 +-
.../lxml.objectify.FloatElement-class.html | 6 +-
.../api/lxml.objectify.IntElement-class.html | 6 +-
.../api/lxml.objectify.LongElement-class.html | 6 +-
.../api/lxml.objectify.NoneElement-class.html | 2 +-
.../lxml.objectify.NumberElement-class.html | 2 +-
.../api/lxml.objectify.ObjectPath-class.html | 2 +-
...bjectify.ObjectifiedDataElement-class.html | 2 +-
...ml.objectify.ObjectifiedElement-class.html | 2 +-
...ify.ObjectifyElementClassLookup-class.html | 2 +-
doc/html/api/lxml.objectify.PyType-class.html | 2 +-
.../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 | 2 +-
doc/html/api/lxml.sax-pysrc.html | 2 +-
...l.sax.ElementTreeContentHandler-class.html | 2 +-
.../lxml.sax.ElementTreeProducer-class.html | 2 +-
doc/html/api/lxml.sax.SaxError-class.html | 2 +-
doc/html/api/lxml.tests-module.html | 2 +-
doc/html/api/lxml.tests-pysrc.html | 2 +-
.../api/lxml.tests.common_imports-module.html | 9 +-
.../api/lxml.tests.common_imports-pysrc.html | 651 +-
...s.common_imports.HelperTestCase-class.html | 2 +-
...ts.common_imports.LargeFileLike-class.html | 2 +-
...on_imports.LargeFileLikeUnicode-class.html | 2 +-
...ts.common_imports.SillyFileLike-class.html | 2 +-
.../lxml.tests.dummy_http_server-module.html | 2 +-
.../lxml.tests.dummy_http_server-pysrc.html | 2 +-
...ttp_server.HTTPRequestCollector-class.html | 2 +-
...sts.dummy_http_server.WebServer-class.html | 2 +-
...mmy_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 +-
.../api/lxml.tests.test_builder-module.html | 2 +-
.../api/lxml.tests.test_builder-pysrc.html | 2 +-
...ts.test_builder.BuilderTestCase-class.html | 2 +-
.../lxml.tests.test_classlookup-module.html | 2 +-
.../lxml.tests.test_classlookup-pysrc.html | 8 +-
...classlookup.ClassLookupTestCase-class.html | 2 +-
....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 | 2 +-
...lxml.tests.test_css.CSSTestCase-class.html | 2 +-
...lxml.tests.test_doctestcompare-module.html | 2 +-
.../lxml.tests.test_doctestcompare-pysrc.html | 2 +-
...ctestcompare.DoctestCompareTest-class.html | 2 +-
....test_doctestcompare.DummyInput-class.html | 2 +-
doc/html/api/lxml.tests.test_dtd-module.html | 2 +-
doc/html/api/lxml.tests.test_dtd-pysrc.html | 2 +-
...tests.test_dtd.ETreeDtdTestCase-class.html | 2 +-
.../lxml.tests.test_elementpath-module.html | 2 +-
.../lxml.tests.test_elementpath-pysrc.html | 2 +-
...ntpath.EtreeElementPathTestCase-class.html | 2 +-
.../lxml.tests.test_elementtree-module.html | 2 +-
.../lxml.tests.test_elementtree-pysrc.html | 1302 +-
...lementtree.CElementTreeTestCase-class.html | 2 +-
...t_elementtree.ETreePullTestCase-class.html | 2 +-
....test_elementtree.ETreeTestCase-class.html | 2 +-
...elementtree.ElementTreeTestCase-class.html | 2 +-
..._elementtree._ETreeTestCaseBase-class.html | 2 +-
..._elementtree._XMLPullParserTest-class.html | 2 +-
.../api/lxml.tests.test_errors-module.html | 2 +-
.../api/lxml.tests.test_errors-pysrc.html | 77 +-
...tests.test_errors.ErrorTestCase-class.html | 18 +-
.../api/lxml.tests.test_etree-module.html | 2 +-
doc/html/api/lxml.tests.test_etree-pysrc.html | 12884 ++--
...ts.test_etree.ETreeC14NTestCase-class.html | 2 +-
...ts.test_etree.ETreeErrorLogTest-class.html | 2 +-
...ts.test_etree.ETreeOnlyTestCase-class.html | 2 +-
...s.test_etree.ETreeWriteTestCase-class.html | 2 +-
...est_etree.ETreeXIncludeTestCase-class.html | 2 +-
...st_etree.ElementIncludeTestCase-class.html | 2 +-
...ts.test_etree.XMLPullParserTest-class.html | 2 +-
...ts.test_etree._XIncludeTestCase-class.html | 2 +-
.../lxml.tests.test_htmlparser-module.html | 2 +-
.../api/lxml.tests.test_htmlparser-pysrc.html | 1906 +-
...t_htmlparser.HtmlParserTestCase-class.html | 98 +-
.../api/lxml.tests.test_http_io-module.html | 2 +-
.../api/lxml.tests.test_http_io-pysrc.html | 2 +-
...sts.test_http_io.HttpIOTestCase-class.html | 2 +-
...tests.test_incremental_xmlfile-module.html | 2 +-
....tests.test_incremental_xmlfile-pysrc.html | 180 +-
..._xmlfile.BytesIOXmlFileTestCase-class.html | 2 +-
...mental_xmlfile.HtmlFileTestCase-class.html | 34 +-
...e.SimpleFileLikeXmlFileTestCase-class.html | 2 +-
...eXmlFileTestCase.SimpleFileLike-class.html | 2 +-
...xmlfile.TempPathXmlFileTestCase-class.html | 2 +-
...tal_xmlfile.TempXmlFileTestCase-class.html | 2 +-
...al_xmlfile._XmlFileTestCaseBase-class.html | 2 +-
doc/html/api/lxml.tests.test_io-module.html | 2 +-
doc/html/api/lxml.tests.test_io-pysrc.html | 2 +-
...l.tests.test_io.ETreeIOTestCase-class.html | 2 +-
...s.test_io.ElementTreeIOTestCase-class.html | 2 +-
...l.tests.test_io._IOTestCaseBase-class.html | 2 +-
.../lxml.tests.test_isoschematron-module.html | 2 +-
.../lxml.tests.test_isoschematron-pysrc.html | 2 +-
...tron.ETreeISOSchematronTestCase-class.html | 2 +-
.../api/lxml.tests.test_nsclasses-module.html | 2 +-
.../api/lxml.tests.test_nsclasses-pysrc.html | 2 +-
...s.ETreeNamespaceClassesTestCase-class.html | 2 +-
...paceClassesTestCase.bluff_class-class.html | 2 +-
...ceClassesTestCase.default_class-class.html | 2 +-
...spaceClassesTestCase.maeh_class-class.html | 2 +-
.../api/lxml.tests.test_objectify-module.html | 4 +-
.../api/lxml.tests.test_objectify-pysrc.html | 24 +-
...est_objectify.ObjectifyTestCase-class.html | 2 +-
.../lxml.tests.test_pyclasslookup-module.html | 2 +-
.../lxml.tests.test_pyclasslookup-pysrc.html | 2 +-
...asslookup.PyClassLookupTestCase-class.html | 4 +-
.../api/lxml.tests.test_relaxng-module.html | 2 +-
.../api/lxml.tests.test_relaxng-pysrc.html | 4 +-
...st_relaxng.ETreeRelaxNGTestCase-class.html | 2 +-
..._relaxng.RelaxNGCompactTestCase-class.html | 2 +-
doc/html/api/lxml.tests.test_sax-module.html | 2 +-
doc/html/api/lxml.tests.test_sax-pysrc.html | 2 +-
...tests.test_sax.ETreeSaxTestCase-class.html | 2 +-
.../lxml.tests.test_schematron-module.html | 2 +-
.../api/lxml.tests.test_schematron-pysrc.html | 2 +-
...ematron.ETreeSchematronTestCase-class.html | 2 +-
.../api/lxml.tests.test_threading-module.html | 2 +-
.../api/lxml.tests.test_threading-pysrc.html | 12 +-
...hreading.ThreadPipelineTestCase-class.html | 2 +-
...neTestCase.ParseAndExtendWorker-class.html | 6 +-
...neTestCase.ParseAndInjectWorker-class.html | 6 +-
...eadPipelineTestCase.ParseWorker-class.html | 6 +-
...dPipelineTestCase.ReverseWorker-class.html | 2 +-
...adPipelineTestCase.RotateWorker-class.html | 2 +-
...ipelineTestCase.SerialiseWorker-class.html | 2 +-
...ThreadPipelineTestCase.Validate-class.html | 2 +-
...g.ThreadPipelineTestCase.Worker-class.html | 2 +-
...est_threading.ThreadingTestCase-class.html | 2 +-
.../api/lxml.tests.test_unicode-module.html | 2 +-
.../api/lxml.tests.test_unicode-pysrc.html | 2 +-
....test_unicode.EncodingsTestCase-class.html | 2 +-
...ts.test_unicode.UnicodeTestCase-class.html | 2 +-
.../api/lxml.tests.test_xmlschema-module.html | 2 +-
.../api/lxml.tests.test_xmlschema-pysrc.html | 2 +-
...ETreeXMLSchemaResolversTestCase-class.html | 2 +-
...solversTestCase.simple_resolver-class.html | 2 +-
...mlschema.ETreeXMLSchemaTestCase-class.html | 2 +-
...lxml.tests.test_xpathevaluator-module.html | 2 +-
.../lxml.tests.test_xpathevaluator-pysrc.html | 8 +-
...uator.ETreeETXPathClassTestCase-class.html | 2 +-
...aluator.ETreeXPathClassTestCase-class.html | 2 +-
...aluator.ETreeXPathExsltTestCase-class.html | 2 +-
...athevaluator.ETreeXPathTestCase-class.html | 2 +-
doc/html/api/lxml.tests.test_xslt-module.html | 2 +-
doc/html/api/lxml.tests.test_xslt-pysrc.html | 12 +-
...ts.test_xslt.ETreeEXSLTTestCase-class.html | 2 +-
...slt.ETreeXSLTExtElementTestCase-class.html | 2 +-
...t_xslt.ETreeXSLTExtFuncTestCase-class.html | 2 +-
...sts.test_xslt.ETreeXSLTTestCase-class.html | 2 +-
...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 | 2 +-
doc/html/api/str-class.html | 2 +-
doc/html/api/toc-everything.html | 3 +-
.../toc-lxml.tests.common_imports-module.html | 3 +-
.../api/xml.etree.ElementTree-module.html | 2 +-
doc/html/api/xml.etree.ElementTree-pysrc.html | 218 +-
.../xml.etree.ElementTree.Element-class.html | 2 +-
...l.etree.ElementTree.ElementTree-class.html | 2 +-
...ml.etree.ElementTree.ParseError-class.html | 2 +-
.../xml.etree.ElementTree.QName-class.html | 2 +-
...l.etree.ElementTree.TreeBuilder-class.html | 2 +-
...xml.etree.ElementTree.XMLParser-class.html | 2 +-
....ElementTree._IterParseIterator-class.html | 2 +-
....ElementTree._SimpleElementPath-class.html | 2 +-
doc/html/build.html | 6 +-
doc/html/capi.html | 4 +-
...{changes-3.6.4.html => changes-3.7.0.html} | 722 +-
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 | 17 +-
doc/html/installation.html | 4 +-
doc/html/intro.html | 4 +-
doc/html/lxml-source-howto.html | 4 +-
doc/html/lxmlhtml.html | 11 +-
doc/html/objectify.html | 10 +-
doc/html/parsing.html | 8 +-
doc/html/performance.html | 4 +-
doc/html/resolvers.html | 4 +-
doc/html/sax.html | 4 +-
doc/html/sitemap.html | 2 +-
doc/html/tutorial.html | 23 +-
doc/html/validation.html | 20 +-
doc/html/xpathxslt.html | 4 +-
doc/lxmlhtml.txt | 7 +
doc/main.txt | 14 +-
doc/objectify.txt | 6 +-
doc/parsing.txt | 4 +-
doc/s5/lxml-ep2008.html | 158 +-
doc/tutorial.txt | 28 +-
doc/validation.txt | 16 +-
setupinfo.py | 13 +-
src/lxml.egg-info/PKG-INFO | 46 +-
src/lxml.egg-info/SOURCES.txt | 2 +-
src/lxml/_elementpath.py | 7 +-
src/lxml/apihelpers.pxi | 22 +-
src/lxml/html/__init__.py | 27 +-
src/lxml/html/tests/test_forms.txt | 4 +-
src/lxml/includes/etree_defs.h | 21 +-
src/lxml/includes/lxml-version.h | 2 +-
src/lxml/iterparse.pxi | 2 +-
src/lxml/lxml.etree.c | 50552 +++++++++-------
src/lxml/lxml.etree.h | 2 +-
src/lxml/lxml.etree.pyx | 6 +-
src/lxml/lxml.etree_api.h | 2 +-
src/lxml/lxml.objectify.c | 8455 +--
src/lxml/lxml.objectify.pyx | 8 +-
src/lxml/parser.pxi | 40 +-
src/lxml/parsertarget.pxi | 16 +-
src/lxml/python.pxd | 3 +-
src/lxml/serializer.pxi | 11 +-
src/lxml/tests/common_imports.py | 1 +
src/lxml/tests/test_errors.py | 18 +
src/lxml/tests/test_etree.py | 4 +-
src/lxml/tests/test_htmlparser.py | 46 +
src/lxml/tests/test_incremental_xmlfile.py | 38 +
src/lxml/xmlerror.pxi | 17 +-
src/lxml/xslt.pxi | 4 +-
tools/manylinux/build-wheels.sh | 10 +-
version.txt | 2 +-
467 files changed, 48566 insertions(+), 36639 deletions(-)
rename doc/html/{changes-3.6.4.html => changes-3.7.0.html} (98%)
diff --git a/CHANGES.txt b/CHANGES.txt
index 825e804d..33ed6a98 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -2,6 +2,46 @@
lxml changelog
==============
+3.7.0 (2016-12-10)
+==================
+
+Features added
+--------------
+
+* GH#217: ``XMLSyntaxError`` now behaves more like its ``SyntaxError``
+ baseclass. Patch by Philipp A.
+
+* GH#216: ``HTMLParser()`` now supports the same ``collect_ids`` parameter
+ as ``XMLParser()``. Patch by Burak Arslan.
+
+* GH#210: Allow specifying a serialisation method in ``xmlfile.write()``.
+ Patch by Burak Arslan.
+
+* GH#203: New option ``default_doctype`` in ``HTMLParser`` that allows
+ disabling the automatic doctype creation. Patch by Shadab Zafar.
+
+* GH#201: Calling the method ``.set('attrname')`` without value argument
+ (or ``None``) on HTML elements creates an attribute without value that
+ serialises like ````. Patch by Daniel Holth.
+
+* GH#197: Ignore form input fields in ``form_values()`` when they are
+ marked as ``disabled`` in HTML. Patch by Kristian Klemon.
+
+Bugs fixed
+----------
+
+* GH#206: File name and line number were missing from XSLT error messages.
+ Patch by Marcus Brinkmann.
+
+Other changes
+-------------
+
+* Log entries no longer allow anything but plain string objects as message text
+ and file name.
+
+* ``zlib`` is included in the list of statically built libraries.
+
+
3.6.4 (2016-08-20)
==================
diff --git a/PKG-INFO b/PKG-INFO
index 0f74f557..5b60ca6d 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: lxml
-Version: 3.6.4
+Version: 3.7.0
Summary: Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API.
Home-page: http://lxml.de/
Author: lxml dev team
@@ -29,17 +29,51 @@ 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-3.6 .
- Running ``easy_install lxml==3.6bugfix`` will install
+ https://github.com/lxml/lxml/tree/lxml-3.7 .
+ Running ``easy_install lxml==3.7bugfix`` will install
the unreleased branch state from
- https://github.com/lxml/lxml/tarball/lxml-3.6#egg=lxml-3.6bugfix
+ https://github.com/lxml/lxml/tarball/lxml-3.7#egg=lxml-3.7bugfix
as soon as a maintenance branch has been established. Note that this
requires Cython to be installed at an appropriate version for the build.
- 3.6.4 (2016-08-20)
+ 3.7.0 (2016-12-10)
==================
- * GH#204, LP#1614693: build fix for MacOS-X.
+ Features added
+ --------------
+
+ * GH#217: ``XMLSyntaxError`` now behaves more like its ``SyntaxError``
+ baseclass. Patch by Philipp A.
+
+ * GH#216: ``HTMLParser()`` now supports the same ``collect_ids`` parameter
+ as ``XMLParser()``. Patch by Burak Arslan.
+
+ * GH#210: Allow specifying a serialisation method in ``xmlfile.write()``.
+ Patch by Burak Arslan.
+
+ * GH#203: New option ``default_doctype`` in ``HTMLParser`` that allows
+ disabling the automatic doctype creation. Patch by Shadab Zafar.
+
+ * GH#201: Calling the method ``.set('attrname')`` without value argument
+ (or ``None``) on HTML elements creates an attribute without value that
+ serialises like ````. Patch by Daniel Holth.
+
+ * GH#197: Ignore form input fields in ``form_values()`` when they are
+ marked as ``disabled`` in HTML. Patch by Kristian Klemon.
+
+ Bugs fixed
+ ----------
+
+ * GH#206: File name and line number were missing from XSLT error messages.
+ Patch by Marcus Brinkmann.
+
+ Other changes
+ -------------
+
+ * Log entries no longer allow anything but plain string objects as message text
+ and file name.
+
+ * ``zlib`` is included in the list of statically built libraries.
diff --git a/buildlibxml.py b/buildlibxml.py
index 5b67132f..88567eaa 100644
--- a/buildlibxml.py
+++ b/buildlibxml.py
@@ -1,6 +1,7 @@
import os, re, sys, subprocess
import tarfile
from distutils import log, sysconfig, version
+from contextlib import closing
try:
from urlparse import urlsplit, urljoin, unquote
@@ -39,12 +40,16 @@ def download_and_extract_zlatkovic_binaries(destdir):
assert fn.endswith('.win32.zip')
libs[libname] = fn
else:
+ if sys.maxsize > 2147483647:
+ arch = "win64"
+ else:
+ arch = "win32"
url = "https://github.com/mhils/libxml2-win-binaries/releases/download/lxml/"
libs = dict(
- libxml2 = "libxml2-latest.win32.zip",
- libxslt = "libxslt-latest.win32.zip",
- zlib = "zlib-latest.win32.zip",
- iconv = "iconv-latest.win32.zip",
+ libxml2 = "libxml2-latest.{}.zip".format(arch),
+ libxslt = "libxslt-latest.{}.zip".format(arch),
+ zlib = "zlib-latest.{}.zip".format(arch),
+ iconv = "iconv-latest.{}.zip".format(arch),
)
if not os.path.exists(destdir): os.makedirs(destdir)
@@ -90,6 +95,7 @@ def unpack_zipfile(zipfn, destdir):
assert os.path.exists(extracted_dir), 'missing: %s' % extracted_dir
return extracted_dir
+
def get_prebuilt_libxml2xslt(download_dir, static_include_dirs, static_library_dirs):
assert sys.platform.startswith('win')
libs = download_and_extract_zlatkovic_binaries(download_dir)
@@ -106,26 +112,45 @@ def get_prebuilt_libxml2xslt(download_dir, static_include_dirs, static_library_d
LIBXML2_LOCATION = 'ftp://xmlsoft.org/libxml2/'
LIBICONV_LOCATION = 'ftp://ftp.gnu.org/pub/gnu/libiconv/'
+ZLIB_LOCATION = 'http://zlib.net/'
match_libfile_version = re.compile('^[^-]*-([.0-9-]+)[.].*').match
-def ftp_listdir(url):
- assert url.lower().startswith('ftp://')
+
+def _find_content_encoding(response, default='iso8859-1'):
from email.message import Message
- res = urlopen(url)
- content_type = res.headers.get('Content-Type')
+ content_type = response.headers.get('Content-Type')
if content_type:
msg = Message()
msg.add_header('Content-Type', content_type)
- charset = msg.get_content_charset('utf-8')
+ charset = msg.get_content_charset(default)
else:
- charset = 'utf-8'
+ charset = default
+ return charset
+
+
+def ftp_listdir(url):
+ assert url.lower().startswith('ftp://')
+ with closing(urlopen(url)) as res:
+ charset = _find_content_encoding(res)
+ content_type = res.headers.get('Content-Type')
+ data = res.read()
+
+ data = data.decode(charset)
if content_type and content_type.startswith('text/html'):
- files = parse_html_ftplist(res.read().decode(charset))
+ files = parse_html_ftplist(data)
else:
- files = parse_text_ftplist(res.read().decode(charset))
- res.close()
+ files = parse_text_ftplist(data)
return files
+
+def http_listfiles(url, re_pattern):
+ with closing(urlopen(url)) as res:
+ charset = _find_content_encoding(res)
+ data = res.read()
+ files = re.findall(re_pattern, data.decode(charset))
+ return files
+
+
def parse_text_ftplist(s):
for line in s.splitlines():
if not line.startswith('d'):
@@ -134,6 +159,7 @@ def parse_text_ftplist(s):
# may be variations, so we discard only the first 8 entries.
yield line.split(None, 8)[-1]
+
def parse_html_ftplist(s):
re_href = re.compile(r']*?\s+)?href=["\'](.*?)[;\?"\']', re.I|re.M)
links = set(re_href.findall(s))
@@ -141,12 +167,14 @@ def parse_html_ftplist(s):
if not link.endswith('/'):
yield unquote(link)
+
def tryint(s):
try:
return int(s)
except ValueError:
return s
+
def download_libxml2(dest_dir, version=None):
"""Downloads libxml2, returning the filename where the library was downloaded"""
version_re = re.compile(r'LATEST_LIBXML2_IS_([0-9.]+[0-9])')
@@ -154,6 +182,7 @@ def download_libxml2(dest_dir, version=None):
return download_library(dest_dir, LIBXML2_LOCATION, 'libxml2',
version_re, filename, version=version)
+
def download_libxslt(dest_dir, version=None):
"""Downloads libxslt, returning the filename where the library was downloaded"""
version_re = re.compile(r'LATEST_LIBXSLT_IS_([0-9.]+[0-9])')
@@ -161,6 +190,7 @@ def download_libxslt(dest_dir, version=None):
return download_library(dest_dir, LIBXML2_LOCATION, 'libxslt',
version_re, filename, version=version)
+
def download_libiconv(dest_dir, version=None):
"""Downloads libiconv, returning the filename where the library was downloaded"""
version_re = re.compile(r'^libiconv-([0-9.]+[0-9]).tar.gz$')
@@ -168,11 +198,22 @@ def download_libiconv(dest_dir, version=None):
return download_library(dest_dir, LIBICONV_LOCATION, 'libiconv',
version_re, filename, version=version)
-def download_library(dest_dir, location, name, version_re, filename,
- version=None):
+
+def download_zlib(dest_dir, version):
+ """Downloads zlib, returning the filename where the library was downloaded"""
+ version_re = re.compile(r'zlib-([0-9.]+[0-9]).tar.gz')
+ filename = 'zlib-%s.tar.gz'
+ return download_library(dest_dir, ZLIB_LOCATION, 'zlib',
+ version_re, filename, version=version)
+
+
+def download_library(dest_dir, location, name, version_re, filename, version=None):
if version is None:
try:
- fns = ftp_listdir(location)
+ if location.startswith('ftp://'):
+ fns = ftp_listdir(location)
+ else:
+ fns = http_listfiles(location, filename.replace('%s', '(?:[0-9.]+[0-9])'))
versions = []
for fn in fns:
match = version_re.search(fn)
@@ -253,10 +294,12 @@ def call_subprocess(cmd, **kw):
if returncode:
raise Exception('Command "%s" returned code %s' % (cmd_desc, returncode))
+
def safe_mkdir(dir):
if not os.path.exists(dir):
os.makedirs(dir)
+
def cmmi(configure_cmd, build_dir, multicore=None, **call_setup):
print('Starting build in %s' % build_dir)
call_subprocess(configure_cmd, cwd=build_dir, **call_setup)
@@ -273,6 +316,7 @@ def cmmi(configure_cmd, build_dir, multicore=None, **call_setup):
['make'] + make_jobs + ['install'],
cwd=build_dir, **call_setup)
+
def configure_darwin_env(env_setup):
import platform
# check target architectures on MacOS-X (ppc, i386, x86_64)
@@ -293,27 +337,30 @@ def configure_darwin_env(env_setup):
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"
+ '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"
+ '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_setup['env'] = env_default
+
def build_libxml2xslt(download_dir, build_dir,
static_include_dirs, static_library_dirs,
static_cflags, static_binaries,
libxml2_version=None, libxslt_version=None, libiconv_version=None,
+ zlib_version=None,
multicore=None):
safe_mkdir(download_dir)
safe_mkdir(build_dir)
+ zlib_dir = unpack_tarball(download_zlib(download_dir, zlib_version), build_dir)
libiconv_dir = unpack_tarball(download_libiconv(download_dir, libiconv_version), build_dir)
libxml2_dir = unpack_tarball(download_libxml2(download_dir, libxml2_version), build_dir)
libxslt_dir = unpack_tarball(download_libxslt(download_dir, libxslt_version), build_dir)
@@ -330,13 +377,22 @@ def build_libxml2xslt(download_dir, build_dir,
'--prefix=%s' % prefix,
]
+ # build zlib
+ zlib_configure_cmd = [
+ './configure',
+ '--prefix=%s' % prefix,
+ ]
+ cmmi(zlib_configure_cmd, zlib_dir, multicore, **call_setup)
+
# build libiconv
cmmi(configure_cmd, libiconv_dir, multicore, **call_setup)
# build libxml2
libxml2_configure_cmd = configure_cmd + [
'--without-python',
- '--with-iconv=%s' % prefix]
+ '--with-iconv=%s' % prefix,
+ '--with-zlib=%s' % prefix,
+ ]
try:
if libxml2_version and tuple(map(tryint, libxml2_version.split('.'))) >= (2,7,3):
libxml2_configure_cmd.append('--enable-rebuild-docs=no')
@@ -369,7 +425,7 @@ def build_libxml2xslt(download_dir, build_dir,
listdir = os.listdir(lib_dir)
static_binaries += [os.path.join(lib_dir, filename)
- for lib in ['libxml2', 'libexslt', 'libxslt', 'iconv']
+ for lib in ['libxml2', 'libexslt', 'libxslt', 'iconv', 'libz']
for filename in listdir
if lib in filename and filename.endswith('.a')]
diff --git a/doc/FAQ.txt b/doc/FAQ.txt
index e47183e8..28decd0b 100644
--- a/doc/FAQ.txt
+++ b/doc/FAQ.txt
@@ -526,7 +526,7 @@ project and its user base. You can
top-ranked when searching the web for "Python and XML", so maybe you
have an idea how to improve that.
-* help with the tutorial. A tutorial is the most important stating point for
+* help with the tutorial. A tutorial is the most important starting point for
new users, so it is important for us to provide an easy to understand guide
into lxml. As all documentation, the tutorial is work in progress, so we
appreciate every helping hand.
diff --git a/doc/build.txt b/doc/build.txt
index afc385f7..f8b2ceaf 100644
--- a/doc/build.txt
+++ b/doc/build.txt
@@ -58,7 +58,7 @@ The lxml package is developed in a repository on Github_ using
Mercurial_ and the `hg-git`_ plugin. You can retrieve the current
developer version using::
- hg clone git://github.com/lxml/lxml.git lxml
+ hg clone git+ssh://git@github.com/lxml/lxml.git lxml
This will create a directory ``lxml`` and download the source into it,
including the complete development history. Don't be afraid, the
diff --git a/doc/html/FAQ.html b/doc/html/FAQ.html
index 19ae8c20..bcd13e49 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.
@@ -438,7 +438,7 @@ usable, understandable and also easy to find, but there's always
things that can be done better. You may notice that we are not
top-ranked when searching the web for "Python and XML", so maybe you
have an idea how to improve that.
-
help with the tutorial. A tutorial is the most important stating point for
+help with the tutorial. A tutorial is the most important starting point for
new users, so it is important for us to provide an easy to understand guide
into lxml. As all documentation, the tutorial is work in progress, so we
appreciate every helping hand.
@@ -955,7 +955,7 @@ map it to your namespace. See also the question above.
diff --git a/doc/html/api.html b/doc/html/api.html
index 67015e46..06699407 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
@@ -512,7 +512,7 @@ example:
diff --git a/doc/html/api/abc.ABCMeta-class.html b/doc/html/api/abc.ABCMeta-class.html
index 6fb3704c..a50406ba 100644
--- a/doc/html/api/abc.ABCMeta-class.html
+++ b/doc/html/api/abc.ABCMeta-class.html
@@ -427,7 +427,7 @@ even via super()).