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()).