From 7b9b19a3b7de01c320ec45b57f428b09c1e52621 Mon Sep 17 00:00:00 2001
From: Hyunjee Kim
Date: Thu, 31 Jan 2019 10:39:57 +0900
Subject: [PATCH] Imported Upstream version 3.3.3
Change-Id: Ib6a5c6417557352a0ba94148493d91c1c1640fe0
Signed-off-by: Hyunjee Kim
---
CHANGES.txt | 22 +-
PKG-INFO | 29 +-
doc/FAQ.txt | 82 +-
doc/html/FAQ.html | 77 +-
doc/html/api.html | 4 +-
doc/html/api/abc.ABCMeta-class.html | 2 +-
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 | 2 +-
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 | 2 +-
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 | 2 +-
...xml.ElementInclude.FatalIncludeError-class.html | 2 +-
doc/html/api/lxml.builder-module.html | 2 +-
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 | 2 +-
...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 | 26 +-
.../api/lxml.etree.AncestorsIterator-class.html | 2 +-
...ree.AttributeBasedElementClassLookup-class.html | 2 +-
doc/html/api/lxml.etree.C14NError-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 | 4 +-
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 | 2 +-
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 | 4 +-
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.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.ElementSoup-module.html | 2 +-
doc/html/api/lxml.html.ElementSoup-pysrc.html | 2 +-
doc/html/api/lxml.html.FieldsDict-class.html | 6 +-
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 | 6 +-
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 +-
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 | 2 +-
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 | 2 +-
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 | 4 +-
...l.tests.common_imports.LargeFileLike-class.html | 2 +-
....common_imports.LargeFileLikeUnicode-class.html | 2 +-
...l.tests.common_imports.SillyFileLike-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.test_builder-module.html | 2 +-
doc/html/api/lxml.tests.test_builder-pysrc.html | 2 +-
...l.tests.test_builder.BuilderTestCase-class.html | 2 +-
.../api/lxml.tests.test_classlookup-module.html | 2 +-
.../api/lxml.tests.test_classlookup-pysrc.html | 2 +-
...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 | 2 +-
.../api/lxml.tests.test_css.CSSTestCase-class.html | 2 +-
.../api/lxml.tests.test_doctestcompare-module.html | 2 +-
.../api/lxml.tests.test_doctestcompare-pysrc.html | 2 +-
...st_doctestcompare.DoctestCompareTest-class.html | 2 +-
...tests.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 +-
...lxml.tests.test_dtd.ETreeDtdTestCase-class.html | 2 +-
.../api/lxml.tests.test_elementtree-module.html | 2 +-
.../api/lxml.tests.test_elementtree-pysrc.html | 2 +-
...est_elementtree.CElementTreeTestCase-class.html | 2 +-
...s.test_elementtree.ETreePullTestCase-class.html | 2 +-
...tests.test_elementtree.ETreeTestCase-class.html | 2 +-
...test_elementtree.ElementTreeTestCase-class.html | 2 +-
....test_elementtree._ETreeTestCaseBase-class.html | 2 +-
....test_elementtree._XMLPullParserTest-class.html | 2 +-
doc/html/api/lxml.tests.test_errors-module.html | 2 +-
doc/html/api/lxml.tests.test_errors-pysrc.html | 2 +-
...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 | 2 +-
...l.tests.test_etree.ETreeC14NTestCase-class.html | 2 +-
...l.tests.test_etree.ETreeErrorLogTest-class.html | 2 +-
...l.tests.test_etree.ETreeOnlyTestCase-class.html | 2 +-
....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 +-
.../api/lxml.tests.test_htmlparser-module.html | 2 +-
doc/html/api/lxml.tests.test_htmlparser-pysrc.html | 2 +-
...s.test_htmlparser.HtmlParserTestCase-class.html | 2 +-
doc/html/api/lxml.tests.test_http_io-module.html | 2 +-
doc/html/api/lxml.tests.test_http_io-pysrc.html | 2 +-
...ml.tests.test_http_io.HttpIOTestCase-class.html | 2 +-
...lxml.tests.test_incremental_xmlfile-module.html | 2 +-
.../lxml.tests.test_incremental_xmlfile-pysrc.html | 2 +-
...ental_xmlfile.BytesIOXmlFileTestCase-class.html | 2 +-
...mlfile.SimpleFileLikeXmlFileTestCase-class.html | 2 +-
...leLikeXmlFileTestCase.SimpleFileLike-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 | 2 +-
.../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 | 2 +-
.../api/lxml.tests.test_isoschematron-pysrc.html | 2 +-
...chematron.ETreeISOSchematronTestCase-class.html | 2 +-
doc/html/api/lxml.tests.test_nsclasses-module.html | 2 +-
doc/html/api/lxml.tests.test_nsclasses-pysrc.html | 2 +-
...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 | 2 +-
doc/html/api/lxml.tests.test_objectify-pysrc.html | 2 +-
...sts.test_objectify.ObjectifyTestCase-class.html | 2 +-
.../api/lxml.tests.test_pyclasslookup-module.html | 2 +-
.../api/lxml.tests.test_pyclasslookup-pysrc.html | 2 +-
..._pyclasslookup.PyClassLookupTestCase-class.html | 2 +-
doc/html/api/lxml.tests.test_relaxng-module.html | 2 +-
doc/html/api/lxml.tests.test_relaxng-pysrc.html | 2 +-
...ts.test_relaxng.ETreeRelaxNGTestCase-class.html | 2 +-
doc/html/api/lxml.tests.test_sax-module.html | 2 +-
doc/html/api/lxml.tests.test_sax-pysrc.html | 2 +-
...lxml.tests.test_sax.ETreeSaxTestCase-class.html | 2 +-
.../api/lxml.tests.test_schematron-module.html | 2 +-
doc/html/api/lxml.tests.test_schematron-pysrc.html | 2 +-
...t_schematron.ETreeSchematronTestCase-class.html | 2 +-
doc/html/api/lxml.tests.test_threading-module.html | 2 +-
doc/html/api/lxml.tests.test_threading-pysrc.html | 2 +-
...est_threading.ThreadPipelineTestCase-class.html | 2 +-
...ipelineTestCase.ParseAndExtendWorker-class.html | 2 +-
...g.ThreadPipelineTestCase.ParseWorker-class.html | 2 +-
...ThreadPipelineTestCase.ReverseWorker-class.html | 2 +-
....ThreadPipelineTestCase.RotateWorker-class.html | 2 +-
...readPipelineTestCase.SerialiseWorker-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 | 2 +-
doc/html/api/lxml.tests.test_unicode-pysrc.html | 2 +-
...l.tests.test_unicode.UnicodeTestCase-class.html | 2 +-
doc/html/api/lxml.tests.test_xmlschema-module.html | 2 +-
doc/html/api/lxml.tests.test_xmlschema-pysrc.html | 2 +-
...hema.ETreeXMLSchemaResolversTestCase-class.html | 2 +-
...emaResolversTestCase.simple_resolver-class.html | 2 +-
...est_xmlschema.ETreeXMLSchemaTestCase-class.html | 2 +-
.../api/lxml.tests.test_xpathevaluator-module.html | 4 +-
.../api/lxml.tests.test_xpathevaluator-pysrc.html | 2 +-
...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 | 2 +-
doc/html/api/lxml.tests.test_xslt-pysrc.html | 2 +-
...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 | 2 +-
doc/html/api/str-class.html | 2 +-
doc/html/api/xml.etree.ElementTree-module.html | 14 +-
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 | 4 +-
.../{changes-3.3.2.html => changes-3.3.3.html} | 632 +-
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 | 24 +-
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 | 4 +-
doc/html/validation.html | 4 +-
doc/html/xpathxslt.html | 4 +-
doc/main.txt | 8 +-
src/lxml.egg-info/PKG-INFO | 29 +-
src/lxml.egg-info/SOURCES.txt | 2 +-
src/lxml/includes/lxml-version.h | 2 +-
src/lxml/lxml.etree.c | 7840 ++++++++++----------
src/lxml/lxml.etree.h | 8 +-
src/lxml/lxml.etree.pyx | 6 +-
src/lxml/lxml.objectify.c | 8 +-
src/lxml/parser.pxi | 4 +-
src/lxml/xmlerror.pxi | 1 +
version.txt | 2 +-
421 files changed, 4802 insertions(+), 4880 deletions(-)
rename doc/html/{changes-3.3.2.html => changes-3.3.3.html} (99%)
diff --git a/CHANGES.txt b/CHANGES.txt
index 281c017..95e4111 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -2,6 +2,22 @@
lxml changelog
==============
+3.3.3 (2014-03-04)
+==================
+
+Bugs fixed
+----------
+
+* Crash when using Element subtypes with ``__slots__``.
+
+Other changes
+-------------
+
+* The internal classes ``_LogEntry`` and ``_Attrib`` can no longer be
+ subclassed from Python code.
+
+
+
3.3.2 (2014-02-26)
==================
@@ -10,7 +26,7 @@ Bugs fixed
* The properties ``resolvers`` and ``version``, as well as the methods
``set_element_class_lookup()`` and ``makeelement()``, were lost from
- ``iterparse`` objects.
+ ``iterparse`` objects in 3.3.0.
* LP#1222132: instances of ``XMLSchema``, ``Schematron`` and ``RelaxNG``
did not clear their local ``error_log`` before running a validation.
@@ -18,8 +34,8 @@ Bugs fixed
* LP#1238500: lxml.doctestcompare mixed up "expected" and "actual" in
attribute values.
-* Some file I/O tests were failing in MS-Windows due to incorrect temp file
- usage. Initial patch by Gabi Davar.
+* Some file I/O tests were failing in MS-Windows due to non-portable temp
+ file usage. Initial patch by Gabi Davar.
* LP#910014: duplicate IDs in a document were not reported by DTD validation.
diff --git a/PKG-INFO b/PKG-INFO
index 0ca9a9f..b1065aa 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,12 +1,12 @@
Metadata-Version: 1.1
Name: lxml
-Version: 3.3.2
+Version: 3.3.3
Summary: Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API.
Home-page: http://lxml.de/
Author: lxml dev team
Author-email: lxml-dev@lxml.de
License: UNKNOWN
-Download-URL: http://pypi.python.org/packages/source/l/lxml/lxml-3.3.2.tar.gz
+Download-URL: http://pypi.python.org/packages/source/l/lxml/lxml-3.3.3.tar.gz
Description: lxml is a Pythonic, mature binding for the libxml2 and libxslt libraries. It
provides safe and convenient access to these libraries using the ElementTree
API.
@@ -37,33 +37,20 @@ Description: lxml is a Pythonic, mature binding for the libxml2 and libxslt libr
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.3.2 (2014-02-26)
+ 3.3.3 (2014-03-04)
==================
Bugs fixed
----------
- * The properties ``resolvers`` and ``version``, as well as the methods
- ``set_element_class_lookup()`` and ``makeelement()``, were lost from
- ``iterparse`` objects.
+ * Crash when using Element subtypes with ``__slots__``.
- * LP#1222132: instances of ``XMLSchema``, ``Schematron`` and ``RelaxNG``
- did not clear their local ``error_log`` before running a validation.
+ Other changes
+ -------------
- * LP#1238500: lxml.doctestcompare mixed up "expected" and "actual" in
- attribute values.
+ * The internal classes ``_LogEntry`` and ``_Attrib`` can no longer be
+ subclassed from Python code.
- * Some file I/O tests were failing in MS-Windows due to incorrect temp file
- usage. Initial patch by Gabi Davar.
-
- * LP#910014: duplicate IDs in a document were not reported by DTD validation.
-
- * LP#1185332: ``tostring(method="html")`` did not use HTML serialisation
- semantics for trailing tail text. Initial patch by Sylvain Viollon.
-
- * LP#1281139: ``.attrib`` value of Comments lost its mutation methods
- in 3.3.0. Even though it is empty and immutable, it should still
- provide the same interface as that returned for Elements.
diff --git a/doc/FAQ.txt b/doc/FAQ.txt
index 454b1dc..2b4c9ef 100644
--- a/doc/FAQ.txt
+++ b/doc/FAQ.txt
@@ -48,12 +48,12 @@ ElementTree_.
6 Parsing and Serialisation
6.1 Why doesn't the ``pretty_print`` option reformat my XML output?
6.2 Why can't lxml parse my XML from unicode strings?
- 6.3 What is the difference between str(xslt(doc)) and xslt(doc).write() ?
- 6.4 Why can't I just delete parents or clear the root node in iterparse()?
- 6.5 How do I output null characters in XML text?
- 6.6 Is lxml vulnerable to XML bombs?
- 6.7 How do I configure lxml safely as a web-service endpoint?
- 6.8 Can lxml parse from file objects opened in unicode mode?
+ 6.3 Can lxml parse from file objects opened in unicode mode?
+ 6.4 What is the difference between str(xslt(doc)) and xslt(doc).write() ?
+ 6.5 Why can't I just delete parents or clear the root node in iterparse()?
+ 6.6 How do I output null characters in XML text?
+ 6.7 Is lxml vulnerable to XML bombs?
+ 6.8 How do I configure lxml safely as a web-service endpoint?
7 XPath and Document Traversal
7.1 What are the ``findall()`` and ``xpath()`` methods on Element(Tree)?
7.2 Why doesn't ``findall()`` support full XPath expressions?
@@ -862,13 +862,26 @@ lxml can add fresh whitespace to the XML tree to indent it.
Note that the ``remove_blank_text`` option also uses a heuristic if it
has no definite knowledge about the document's ignorable whitespace.
It will keep blank text nodes that appear after non-blank text nodes
-at the same level. This is to prevent document-style XML from
-breaking.
+at the same level. This is to prevent document-style XML from loosing
+content.
-If you want to be sure all blank text is removed, you have to use
-either a DTD to tell the parser which whitespace it can safely ignore,
-or remove the ignorable whitespace manually after parsing, e.g. by
-setting all tail text to None:
+The HTMLParser has this structural knowledge built-in, which means that
+most whitespace that appears between tags in HTML documents will *not*
+be removed by this option, except in places where it is truly ignorable,
+e.g. in the page header, between table structure tags, etc. Therefore,
+it is also safe to use this option with the HTMLParser, as it will keep
+content like the following intact (i.e. it will not remove the space
+that separates the two words):
+
+.. sourcecode:: html
+
+ some text
+
+If you want to be sure all blank text is removed from an XML document
+(or just more blank text than the parser does by itself), you have to
+use either a DTD to tell the parser which whitespace it can safely
+ignore, or remove the ignorable whitespace manually after parsing,
+e.g. by setting all tail text to None:
.. sourcecode:: python
@@ -921,6 +934,30 @@ valid encoding.
.. _`XML specification`: http://www.w3.org/TR/REC-xml/
+Can lxml parse from file objects opened in unicode/text mode?
+-------------------------------------------------------------
+
+Technically, yes. However, you likely do not want to do that, because
+it is extremely inefficient. The text encoding that libxml2 uses
+internally is UTF-8, so parsing from a Unicode file means that Python
+first reads a chunk of data from the file, then decodes it into a new
+buffer, and then copies it into a new unicode string object, just to
+let libxml2 make yet another copy while encoding it down into UTF-8
+in order to parse it. It's clear that this involves a lot more
+recoding and copying than when parsing straight from the bytes that
+the file contains.
+
+If you really know the encoding better than the parser (e.g. when
+parsing HTML that lacks a content declaration), then instead of passing
+an encoding parameter into the file object when opening it, create a
+new instance of an XMLParser or HTMLParser and pass the encoding into
+its constructor. Afterwards, use that parser for parsing, e.g. by
+passing it into the ``etree.parse(file, parser)`` function. Remember
+to open the file in binary mode (mode="rb"), or, if possible, prefer
+passing the file path directly into ``parse()`` instead of an opened
+Python file object.
+
+
What is the difference between str(xslt(doc)) and xslt(doc).write() ?
---------------------------------------------------------------------
@@ -1050,27 +1087,6 @@ API for lxml that applies certain counter measures internally.
.. _defusedxml: https://bitbucket.org/tiran/defusedxml
-Can lxml parse from file objects opened in unicode/text mode?
--------------------------------------------------------------
-
-Technically, yes. However, you likely do not want to do that, because
-it is extremely inefficient. The text encoding that libxml2 uses
-internally is UTF-8, so parsing from a Unicode file means that Python
-first reads a chunk of data from the file, then decodes it into a new
-buffer, and then copies it into a new unicode string object, just to
-let libxml2 make yet another copy while encoding it down into UTF-8
-in order to parse it. It's clear that this involves a lot more
-recoding and copying than when parsing straight from the bytes that
-the file contains.
-
-If you really know the encoding better than the parser (e.g. when
-parsing HTML that lacks a content declaration), then instead of passing
-an encoding parameter into the file object when opening it, create a
-new instance of an XMLParser or HTMLParser and pass the encoding into
-its constructor. Afterwards, use that parser for parsing, e.g. by
-passing it into the ``etree.parse(file, parser)`` function.
-
-
XPath and Document Traversal
============================
diff --git a/doc/html/FAQ.html b/doc/html/FAQ.html
index 0d5ccbd..a93deac 100644
--- a/doc/html/FAQ.html
+++ b/doc/html/FAQ.html
@@ -10,7 +10,7 @@
-
lxml FAQ - Frequently Asked Questions
+
lxml FAQ - Frequently Asked Questions
Frequently asked questions on lxml. See also the notes on compatibility to
ElementTree.
@@ -59,12 +59,12 @@
Parsing and Serialisation
XPath and Document Traversal
@@ -702,12 +702,22 @@ lxml can add fresh whitespace to the XML tree to indent it.
Note that the remove_blank_text option also uses a heuristic if it
has no definite knowledge about the document's ignorable whitespace.
It will keep blank text nodes that appear after non-blank text nodes
-at the same level. This is to prevent document-style XML from
-breaking.
-If you want to be sure all blank text is removed, you have to use
-either a DTD to tell the parser which whitespace it can safely ignore,
-or remove the ignorable whitespace manually after parsing, e.g. by
-setting all tail text to None:
+at the same level. This is to prevent document-style XML from loosing
+content.
+The HTMLParser has this structural knowledge built-in, which means that
+most whitespace that appears between tags in HTML documents will not
+be removed by this option, except in places where it is truly ignorable,
+e.g. in the page header, between table structure tags, etc. Therefore,
+it is also safe to use this option with the HTMLParser, as it will keep
+content like the following intact (i.e. it will not remove the space
+that separates the two words):
+<p><b>some</b> <em>text</em></p>
+
+If you want to be sure all blank text is removed from an XML document
+(or just more blank text than the parser does by itself), you have to
+use either a DTD to tell the parser which whitespace it can safely
+ignore, or remove the ignorable whitespace manually after parsing,
+e.g. by setting all tail text to None:
for element in root.iter():
element.tail = None
@@ -747,6 +757,27 @@ Python interpreters. Don't do it.
broken. lxml will not parse them. You must provide parsable data in a
valid encoding.
+
+
Can lxml parse from file objects opened in unicode/text mode?
+
Technically, yes. However, you likely do not want to do that, because
+it is extremely inefficient. The text encoding that libxml2 uses
+internally is UTF-8, so parsing from a Unicode file means that Python
+first reads a chunk of data from the file, then decodes it into a new
+buffer, and then copies it into a new unicode string object, just to
+let libxml2 make yet another copy while encoding it down into UTF-8
+in order to parse it. It's clear that this involves a lot more
+recoding and copying than when parsing straight from the bytes that
+the file contains.
+
If you really know the encoding better than the parser (e.g. when
+parsing HTML that lacks a content declaration), then instead of passing
+an encoding parameter into the file object when opening it, create a
+new instance of an XMLParser or HTMLParser and pass the encoding into
+its constructor. Afterwards, use that parser for parsing, e.g. by
+passing it into the etree.parse(file, parser) function. Remember
+to open the file in binary mode (mode="rb"), or, if possible, prefer
+passing the file path directly into parse() instead of an opened
+Python file object.
+
What is the difference between str(xslt(doc)) and xslt(doc).write() ?
The str() implementation of the XSLTResultTree class (a subclass of the
@@ -852,24 +883,6 @@ safely expose their values to the evaluation engine.
The defusedxml package comes with an example setup and a wrapper
API for lxml that applies certain counter measures internally.
-
-
Can lxml parse from file objects opened in unicode/text mode?
-
Technically, yes. However, you likely do not want to do that, because
-it is extremely inefficient. The text encoding that libxml2 uses
-internally is UTF-8, so parsing from a Unicode file means that Python
-first reads a chunk of data from the file, then decodes it into a new
-buffer, and then copies it into a new unicode string object, just to
-let libxml2 make yet another copy while encoding it down into UTF-8
-in order to parse it. It's clear that this involves a lot more
-recoding and copying than when parsing straight from the bytes that
-the file contains.
-
If you really know the encoding better than the parser (e.g. when
-parsing HTML that lacks a content declaration), then instead of passing
-an encoding parameter into the file object when opening it, create a
-new instance of an XMLParser or HTMLParser and pass the encoding into
-its constructor. Afterwards, use that parser for parsing, e.g. by
-passing it into the etree.parse(file, parser) function.
-
XPath and Document Traversal
@@ -922,7 +935,7 @@ map it to your namespace. See also the question above.
diff --git a/doc/html/api.html b/doc/html/api.html
index 00b9dcf..1cc9f2f 100644
--- a/doc/html/api.html
+++ b/doc/html/api.html
@@ -8,7 +8,7 @@
-
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
@@ -450,7 +450,7 @@ example:
diff --git a/doc/html/api/abc.ABCMeta-class.html b/doc/html/api/abc.ABCMeta-class.html
index 185c6a8..4dad444 100644
--- a/doc/html/api/abc.ABCMeta-class.html
+++ b/doc/html/api/abc.ABCMeta-class.html
@@ -426,7 +426,7 @@ even via super()).