python-lxml-3.2.1-4.el7>t  DH`pS0$ƨXFo N" Т2Kn+'9țFEF)#jjpd(if V W)>WuU? L{wq6gchoiTW5a6ei5z:2BlOwU@#qB;g"4\QTY ؉4\ϧ݈y:, kW&G4K&z#A_/E}zqCol9g46+T4 C.,\D|n3 uk`tKzZgM7;mW +G]8Sd7A[ 53#={1NZN m rUX܀4Kzmz ?pǶ\.b VH%qKko 9m2R-A IK_u .r7nZSa 5iGR̶]9v4$PD:W)XY8hۖ54744a3fe7a8d39fd06b7fc9cf2acc901fb3a680 S0$ƨ1XQy  `G'}Ņc/w.ụN8NV7bI$Ľ I3NNUq%bodf3e}^F:rװlVn%[Q/n.,zҊL n U#ZY`9爍G8[,SYMlH-['ZF@LoSM[gIM`)J ]m mT {C%M?y/y8ɵB_qL /ohtӻ6r@^GԵzG=g6m+-g[kgqt2/&deɷ\Puw_1Rh\JCת5'U*P`9dq@6"Qsɣ6h2v ϧ(zط !4j<\~hDuU"SysHI)>8p?`d  S 5DJTy8y *y y y $9y $y&y(y+R+ty-X-x1.<14'1(4z84K95K:CKGyHyIΨyX$Y,\Dy](y^׳ b,defltyuyvް wyxlyyP\Cpython-lxml3.2.14.el7ElementTree-like Python bindings for libxml2 and libxsltlxml provides a Python binding to the libxslt and libxml2 libraries. It follows the ElementTree API as much as possible in order to provide a more Pythonic interface to libxml2 and libxslt than the default bindings. In particular, lxml deals with Python Unicode strings rather than encoded UTF-8 and handles memory management automatically, unlike the default bindings.Sworker1.bsys.centos.org)CentOSBSDCentOS BuildSystem Development/Librarieshttp://lxml.delinuxx86_641}LTT'$_ %%GoCCf?nn$    **NNeKJ vnm%&Y%[ac`M3% G vJT#.@) ) < d*TO H$&@XW!-""KJ1AA큤A큤A큤A큤AA큤A큤A큤큤A큤SSSSSNwxSN]SSPqSSQSSP܋SSPqSSN]SSSSN]SSQ}mSSN]SSPeSSPeSSN]SSQ}mSSN]SSP܋SSPqSSPqSSPeSSN]SSSPqSSPqPqPqQg;PqPqShPqPqQg;PqPqPqPqPqPqPqSPqSSSSN]SN]N]SN]N]N]N]N]N]SqSqSN]SSQg;SSN]SSSQjPzhPqQa5bdd66018ef819ef40ad092f8df93eb7e3075a596e8ec668f6f1b78bb6d758c9955a8d2a763a996f4174f2446af4888a10f6a20022fed005a4c011accbb620001ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b3630fdf3cc2a68aab9d769ec84d74bb7eb83c6c8e4a78061e759ba37e76152b9bf6669f9fcb5f7426f9f6431ec0ac2de98ed144aa0406201af627c1fcee78f4ede5b54aff750e754ebe6382137bb2f442a12da3a8f590d8688de428ce8291c4cde5b54aff750e754ebe6382137bb2f442a12da3a8f590d8688de428ce8291c4c9582d19fc334ff17673766e11276762fb9a5639cccde0c33d6480b20b2f10b7e4edf1aaf2d324f3306c6ccd3922ffdfe4054b64d82c9aa19b06e356f60a32d264edf1aaf2d324f3306c6ccd3922ffdfe4054b64d82c9aa19b06e356f60a32d26fb5e6e7c496851fa1a1f2e2e37dde0cd5539b5f74fa35dbe1edb4c0b528a7e8fa92ad0a952606e307552c21d4a1b58630260baa1a0046907f964cea554a85ba3a92ad0a952606e307552c21d4a1b58630260baa1a0046907f964cea554a85ba31c79af031c8225dc2e16e02ddc3915f294a8abaaaa191ae1b6ef1b15b364a9e69cf9093ab3c1dbde38f8568a62ff04c7407f1bae1b0ae9a6acf43b2506eca526f09d948b23ed13bdee9513e1a23dfc1106107fd6f50536507af362cc61e32ded101da63caffee0d007d0ba519d71e21446c44a0e20d943765fc8fddd66841023973de9b634476616d44700ab7f4284a0f6d1b9b3d39675eef26bc6269ec3c823973de9b634476616d44700ab7f4284a0f6d1b9b3d39675eef26bc6269ec3c823eee0a79b67bb2a9c4689816793f7bd253b648d108e87fb693bf93bc97ee91c0fa7c93f87062471ebbb82d114b9ea157d276d177c2fcf7d887a717d25043688f6a7c93f87062471ebbb82d114b9ea157d276d177c2fcf7d887a717d25043688f678a8273c814ba4f97d8825abc3dd8bd902aa99683c8f4f8e3e7a853690770b63f4d40d92c26612bd0cd83ab368a85759d00b2e8d1bb705708e04c79e47c67ef99e1ddcf4679654f3620d32411b48ee0d4fb0bd47e82858c49bb18d850cb0c33b9e1ddcf4679654f3620d32411b48ee0d4fb0bd47e82858c49bb18d850cb0c33be9bf0cda0a56a9795659733fdae6db077b75663ef92e83fbe8dd225d9bd8e6a10ff48eb6165dbc4541fe750ef17ae2cea4188ff9ec2a7d21420f4a349a5b3728fd93cef32ecc0c92299c9c4e7c74b5ec458de0c53a3334e3e89e1bf613a7c3cc16038b6b27faa73dea98dd8424cf5a53a66bbdb8be79c1823e928a7778efe0c27d726948afcbe581996fbcd4a5c3b07c2f29102ef9ede7076edfa0ace209f2837d726948afcbe581996fbcd4a5c3b07c2f29102ef9ede7076edfa0ace209f2837004b13744e4b37fefa8203fb176b5a02c7f31cc912fa569b912c0d53f81e7ca74cf1d3fdaba1cba86c920319de6cc55cb5852a9c10807385c84ef144617fb0d74cf1d3fdaba1cba86c920319de6cc55cb5852a9c10807385c84ef144617fb0de7a58770f26eea2286b1cd1d02da1ee987070f93f91abf5ce1386af2aa116f873690f052e51647d411d915062aaaa3b674984f4a47ff6c8869f18ad5f6cd4f993690f052e51647d411d915062aaaa3b674984f4a47ff6c8869f18ad5f6cd4f99d4db8ba8a3d269ab7be70086b9f56ebf58c87812ee4025ac25503f4f65e38d425c2f3d803aa16c4fd3862c75131a505f382cff335f5cb44addb2b3463f80d08d5c2f3d803aa16c4fd3862c75131a505f382cff335f5cb44addb2b3463f80d08d6d14d0763c55d314df13ba9132ea2609a4a02dd5521b3107fd32707f2ba317d67a6f3faa8b268702a9be873d6b4a14a97306a097364e6a6c447d8723bfee23958f9c9645a49402017efe7e82157b7c955809afdd0bd8b5488e39e1d5a4ed33b7856d2ac6a433fe33df45f2d765b3b653b8ecff24b47f49c8b18d79fe9c11cf01a1a7a4305308cc89f37d49a8a1782d79673e762ea6201129a8de5c608559dd64a1a7a4305308cc89f37d49a8a1782d79673e762ea6201129a8de5c608559dd643f98ff39cc61fefd928b3e75eb90dc4a5fd3d822264bcb4b63717ea09a5073074d62641f85c101f07c04fe179b3763f57ee981bf73cab8ba045cf5bcc9906b99cddf90d18ca460f7e5f8cc3f9befc3a8ce92fca96bbb2b5e1ead9122454cf34ab6cb2f489af56df5a8ab4d124fbb7dfe17c92dbb68d7f128f00a1f06e43eba1f2f4f1e8002db5a835df4713d42e54e595da7180407646ff68fadb123a509b93e3957c468a329bf41f331544d8a6c733232483de7e8d9ba3c546fb0f9a1c36b31c0243fcc116a8724f7b2cfc06ebefb45cb7f4c5c7134e9ec58ba12f2b93bcad6122019082f4684a8caf9066890e6a0805d43c1a482545e4f5b4c1ce405ea4355122019082f4684a8caf9066890e6a0805d43c1a482545e4f5b4c1ce405ea43553058833cb98255f8f104ccfb78036cb9ae3439d7500b45f32b2978949c511adaab9af72d6adb171d9ce6bb8e89c12da6b92630ee125232dff6127f0c299aba6dab9af72d6adb171d9ce6bb8e89c12da6b92630ee125232dff6127f0c299aba6db4f966573e0a2b5191295e4324badd54409eaac4fd3e50f34aaa93a1d562e6cd72d02a2c96af4514ac8c010077783a8ee95faa88c35a535f0541743bce325dfc72d02a2c96af4514ac8c010077783a8ee95faa88c35a535f0541743bce325dfce3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855ff0b02e56afa2b26d61f5d7c33546d985ff0dcd0906cc1b26a2e488dcfb77d13ff0b02e56afa2b26d61f5d7c33546d985ff0dcd0906cc1b26a2e488dcfb77d13a467fdd749951fd21d05beebfda13e279f5ac4841ca851f84b1fd39b43c0d66d1fa32b97c22ddb5873448da1ccc21df56e3c42a918624a0b4f876788b366753c2c3fe0a3ae11a44743b699f20d1065081d7c8f1180fd29d1aec799e85deb91ab5d07bae31caf43de38b79e78e65c4bebaa689e34267434b117c0eb7d4276b221d3d4c33b54786f2db34f29235fe39d78c920c294d6b99099e3b2cbe3d762f214b4d9c0acfcf0606d8accd292d5662b37c90ffd43be8e78fbe9fe1a192081f3d898d29eaf34b38dc64af377f009f3746a4b425d3c76411b5c0680c41110608f8fd53a580ed244d66cba064b42f211d15ccd68ece51a83b19cc484bffa6770ff29e2f80a68d720ef803b9026a6ba8f598cfe3bb9715701f9c8b1010ad00bd5e63e649a046f319d641294454d91f26ed4fd85061a5aa80552150aaabcecdde2b1dde703eda4653526d766a59313cd1f04b306b38a13f7771927b3a160a3d3563adf8c50ea5629bba998a421db1dbd16b9033199c1a01bb62811f52b74ffcdbf6c63474d26712f4902c42edb481a4ebe9a441d80e1a1305d5288c3d691af86f2ae1cdee497f6bce85d8ffc2ccfd24466d14da6044e96662be0bf4b80461784713094c98405ac828043f7de7a710d576e17d80672048606065b510e6f6a07b098330cb4a600730a5b491abcaabb19d8849562f11a2e7095f4669d342e68fdff146bf86c08396b8e08d1aa9571867ab0172cc9775d4cd8ae308ed48c75a53bc15c73251243fe862837aaa9581ec9954d7fb5e73b582fb5e7c438ccdfc0cc3b5cc0e1c69194fc080d7af4896d1f841f1d4f0303610423b3ff51e0b0a58589dac3a733889194fc080d7af4896d1f841f1d4f0303610423b3ff51e0b0a58589dac3a73388705bdfece6dbb87879d9ec40a8c9530651aefb98ae387da9134584464742d53939b79bb01f16b7e777b8803f539354f394e99d0dcfc4f5f7f1374e02aa2c31a7430791ac820cfb315c820f7c19703609a59f21b8151345ca11e6127efbfaec0dd1275963ba2a6c381bb888c1f4da541cb5db326147564c481146704dade244c3c78d9027e771435c1a3f3c9db02a109e9d978f5e72e779d6e373bb06ea0344794ebf419ceea9ce3556c21a897e6d74525bc0cbde4481f482cf688c96b5464fa4b9ef2affcf17e1efe3b098b3a37d4644d07136177190413d7d8db4a2ad08ab0904101db154a2e730337867a9b8dea04b5b1a408343a884d72a99669a3e1d4d680154c53d9a442b3b87afb3af4199a1694dcbbf02b3d3a009c3c993fe9361db2210d283a7ea31d3a6cae35c122633d2c7a92592fb284a17d2181cc3f2d14f7b16b5f82ec071e484f79c658b1b67245c7884d4fbe30a00e4eb0f0a811b16df4aacb1cd126aaa3a06c6fb3bbe4ae87a09731b634260d42df8a07fd94cbd8c97e504d92ebd9edb393fd39f332bdcd39522841a3f6b36a8cb443653596f5b7f81c815979c113dd73b5f840194419cb5b04e0fc8957e80bb061cc07da0c44255d680dc979c113dd73b5f840194419cb5b04e0fc8957e80bb061cc07da0c44255d680dc50b325af3fccccd95f6d1e6041fe20428ea11b01d4e73695401d8eb2eace10332940264ecf2c9d47d0ec9f85725bcaa87ecf96a3514a61633b0ba979fd5e43fe2940264ecf2c9d47d0ec9f85725bcaa87ecf96a3514a61633b0ba979fd5e43fea9181929055c019725fb33740085d52673ac113517cf69cf5e4c6ececd651a09633aba42759ee89a21e795520b84381e014881be5cbe9a83de280edae97fe07f633aba42759ee89a21e795520b84381e014881be5cbe9a83de280edae97fe07f80cabfa94520c4e91be496f2243ac334594f48285a790f95fce59d9d59d672ed81c56adcfb86562f0d3716f6263744fd0e9828063c547e4c7f78c91ce372a4e5d6acb14747ec12f86bf62325781a4a979ec56113e96dc2d636827bf61ae466e5a5bdd66018ef819ef40ad092f8df93eb7e3075a596e8ec668f6f1b78bb6d758crootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootpython-lxml-3.2.1-4.el7.src.rpmpython-lxmlpython-lxml(x86-64)@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@    @ libc.so.6()(64bit)libc.so.6(GLIBC_2.14)(64bit)libc.so.6(GLIBC_2.2.5)(64bit)libc.so.6(GLIBC_2.3.4)(64bit)libc.so.6(GLIBC_2.4)(64bit)libexslt.so.0()(64bit)libm.so.6()(64bit)libpthread.so.0()(64bit)libpython2.7.so.1.0()(64bit)libxml2.so.2()(64bit)libxml2.so.2(LIBXML2_2.4.30)(64bit)libxml2.so.2(LIBXML2_2.5.2)(64bit)libxml2.so.2(LIBXML2_2.5.4)(64bit)libxml2.so.2(LIBXML2_2.5.7)(64bit)libxml2.so.2(LIBXML2_2.5.8)(64bit)libxml2.so.2(LIBXML2_2.5.9)(64bit)libxml2.so.2(LIBXML2_2.6.0)(64bit)libxml2.so.2(LIBXML2_2.6.1)(64bit)libxml2.so.2(LIBXML2_2.6.10)(64bit)libxml2.so.2(LIBXML2_2.6.14)(64bit)libxml2.so.2(LIBXML2_2.6.15)(64bit)libxml2.so.2(LIBXML2_2.6.16)(64bit)libxml2.so.2(LIBXML2_2.6.17)(64bit)libxml2.so.2(LIBXML2_2.6.2)(64bit)libxml2.so.2(LIBXML2_2.6.20)(64bit)libxml2.so.2(LIBXML2_2.6.21)(64bit)libxml2.so.2(LIBXML2_2.6.23)(64bit)libxml2.so.2(LIBXML2_2.6.24)(64bit)libxml2.so.2(LIBXML2_2.6.3)(64bit)libxml2.so.2(LIBXML2_2.6.32)(64bit)libxml2.so.2(LIBXML2_2.6.5)(64bit)libxml2.so.2(LIBXML2_2.7.0)(64bit)libxml2.so.2(LIBXML2_2.9.0)(64bit)libxslt.so.1()(64bit)libxslt.so.1(LIBXML2_1.0.11)(64bit)libxslt.so.1(LIBXML2_1.0.18)(64bit)libxslt.so.1(LIBXML2_1.0.22)(64bit)libxslt.so.1(LIBXML2_1.0.24)(64bit)libxslt.so.1(LIBXML2_1.1.2)(64bit)libxslt.so.1(LIBXML2_1.1.26)(64bit)libxslt.so.1(LIBXML2_1.1.9)(64bit)libz.so.1()(64bit)python(abi)rpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PartialHardlinkSets)rpmlib(PayloadFilesHavePrefix)rtld(GNU_HASH)rpmlib(PayloadIsXz)2.73.0.4-14.6.0-14.0.4-14.0-15.2-14.11.1RURkQޞ@Q@Q@Q9QP{Puc@Pd?Pd?PP@P ONNMy@MQ0@M"LLLs@Lq@LMxLMxLMxLH2KK@Ky7@KO@J@J@J@JlE@J> J%@I@II@II|T@IBR@I/@I*@I*@I!\H@H@H[HA=H"@G:G GGG=@GFֱ@F_F@FEE - 3.2.1-4Daniel Mach - 3.2.1-3Jiri Popelka - 3.2.1-2Jeffrey Ollie - 3.2.1-1Jeffrey Ollie - 3.2.0-1Jeffrey Ollie - 3.1.0-1Fedora Release Engineering - 3.0.1-2Jeffrey Ollie - 3.0.1-1Jeffrey Ollie - 3.0-1Jeffrey Ollie - 2.3.5-1Jeffrey Ollie - 2.3.4-1David Malcolm - 2.3.3-4David Malcolm - 2.3.3-3Fedora Release Engineering - 2.3.3-2Jeffrey C. Ollie - 2.3.3-1Jeffrey C. Ollie - 2.3.2-1Jeffrey C. Ollie - 2.3.1-1Jeffrey C. Ollie - 2.3-1Fedora Release Engineering - 2.2.8-4David Malcolm - 2.2.8-3Jeffrey C. Ollie - 2.2.8-2Jeffrey C. Ollie - 2.2.8-1Jeffrey C. Ollie - 2.2.7-3Jeffrey C. Ollie - 2.2.7-2Jeffrey C. Ollie - 2.2.7-1David Malcolm - 2.2.6-4David Malcolm - 2.2.6-3David Malcolm - 2.2.6-2Jeffrey C. Ollie - 2.2.6-1Jeffrey C. Ollie - 2.2.5-1Thomas Spura - 2.2.4-2Jeffrey C. Ollie - 2.2.4-1Jeffrey C. Ollie - 2.2.3-3Jeffrey C. Ollie - 2.2.3-2Jeffrey C. Ollie - 2.2.3-1Fedora Release Engineering - 2.2.2-2Jeffrey C. Ollie - 2.2.2-1Jeffrey C. Ollie - 2.2.1-1Jeffrey C. Ollie - 2.2-1Jeffrey C. Ollie - 2.2-0.8.beta4Fedora Release Engineering - 2.2-0.7.beta3Jeffrey C. Ollie - 2.2-0.6.beta3Jeffrey C. Ollie - 2.2-0.5.beta2Jeffrey C. Ollie - 2.2-0.4.beta1Jeffrey C. Ollie - 2.2-0.3.alpha1Jeffrey C. Ollie - 2.2-0.2.alpha1Jeffrey C. Ollie - 2.2-0.1.alpha1Jeffrey C. Ollie - 2.1.3-1Jeffrey C. Ollie - 2.1.2-1Jeffrey C. Ollie - 2.1.1-1Jeffrey C. Ollie - 2.0.7-1Jeffrey C. Ollie - 2.0.6-1Jeffrey C. Ollie - 2.0.5-1Jeffrey C. Ollie - 2.0.3-1Jeffrey C. Ollie - 2.0.2-1Jeffrey C. Ollie - 2.0.1-1Fedora Release Engineering - 1.3.6-2Jeffrey C. Ollie - 1.3.6-1Jeffrey C. Ollie - 1.3.5-1Jeffrey C. Ollie - 1.3.4-1Fedora Release Engineering - 1.3.3-3Jeffrey C. Ollie - 1.3.3-2Jeffrey C. Ollie - 1.3.3-1Jeffrey C. Ollie - 1.1.2-1Jason L Tibbitts III - 1.0.3-3Shahms E. King 1.0.3-2Shahms E. King 1.0.3-1Shahms E. King 1.0.2-2Shahms E. King 1.0.2-1Shahms E. King 1.0.1-1Shahms E. King 1.0-1Shahms E. King 0.9.1-3Shahms E. King 0.9.1-2Shahms E. King 0.9.1-1Shahms E. King 0.8-1- Mass rebuild 2014-01-24- Mass rebuild 2013-12-27- spurious XMLSyntaxError after finishing iterparse() (bug #874546)- 3.2.1 (2013-05-11) - ================== - - Features added - -------------- - - * The methods ``apply_templates()`` and ``process_children()`` of XSLT - extension elements have gained two new boolean options ``elements_only`` - and ``remove_blank_text`` that discard either all strings or - whitespace-only strings from the result list. - - Bugs fixed - ---------- - - * When moving Elements to another tree, the namespace cleanup mechanism - no longer drops namespace prefixes from attributes for which it finds - a default namespace declaration, to prevent them from appearing as - unnamespaced attributes after serialisation. - - * Returning non-type objects from a custom class lookup method could lead - to a crash. - - * Instantiating and using subtypes of Comments and ProcessingInstructions - crashed.- 3.2.0 (2013-04-28) - ================== - - Features added - -------------- - - Bugs fixed - ---------- - - * LP#690319: Leading whitespace could change the behaviour of the string - parsing functions in ``lxml.html``. - - * LP#599318: The string parsing functions in ``lxml.html`` are more robust - in the face of uncommon HTML content like framesets or missing body tags. - Patch by Stefan Seelmann. - - * LP#712941: I/O errors while trying to access files with paths that - contain non-ASCII characters could raise ``UnicodeDecodeError`` instead - of properly reporting the ``IOError``. - - * LP#673205: Parsing from in-memory strings disabled network access in the - default parser and made subsequent attempts to parse from a URL fail. - - * LP#971754: lxml.html.clean appends 'nofollow' to 'rel' attributes instead - of overwriting the current value. - - * LP#715687: lxml.html.clean no longer discards scripts that are explicitly - allowed by the user provided whitelist. Patch by Christine Koppelt. - - 3.1.2 (2013-04-12) - ================== - - Bugs fixed - ---------- - - * LP#1136509: Passing attributes through the namespace-unaware API of - the sax bridge (i.e. the ``handler.startElement()`` method) failed - with a ``TypeError``. Patch by Mike Bayer. - - * LP#1123074: Fix serialisation error in XSLT output when converting - the result tree to a Unicode string. - - * GH#105: Replace illegal usage of ``xmlBufLength()`` in libxml2 2.9.0 - by properly exported API function ``xmlBufUse()``. - - 3.1.1 (2013-03-29) - ================== - - Features added - -------------- - - Bugs fixed - ---------- - - * LP#1160386: Write access to ``lxml.html.FormElement.fields`` raised - an AttributeError in Py3. - - * Illegal memory access during cleanup in incremental xmlfile writer. - - Other changes - ------------- - - * The externally useless class ``lxml.etree._BaseParser`` was removed - from the module dict.- 3.1.0 (2013-02-10) - ================== - - Features added - -------------- - - * GH#89: lxml.html.clean allows overriding the set of attributes that it - considers 'safe'. Patch by Francis Devereux. - - Bugs fixed - ---------- - - * LP#1104370: ``copy.copy(el.attrib)`` raised an exception. It now returns - a copy of the attributes as a plain Python dict. - - * GH#95: When used with namespace prefixes, the ``el.find*()`` methods - always used the first namespace mapping that was provided for each - path expression instead of using the one that was actually passed - in for the current run. - - * LP#1092521, GH#91: Fix undefined C symbol in Python runtimes compiled - without threading support. Patch by Ulrich Seidl. - - Other changes - ------------- - - - 3.1beta1 (2012-12-21) - ===================== - - Features added - -------------- - - * New build-time option ``--with-unicode-strings`` for Python 2 that - makes the API always return Unicode strings for names and text - instead of byte strings for plain ASCII content. - - * New incremental XML file writing API ``etree.xmlfile()``. - - * E factory in lxml.objectify is callable to simplify the creation of - tags with non-identifier names without having to resort to getattr(). - - Bugs fixed - ---------- - - * When starting from a non-namespaced element in lxml.objectify, searching - for a child without explicitly specifying a namespace incorrectly found - namespaced elements with the requested local name, instead of restricting - the search to non-namespaced children. - - * GH#85: Deprecation warnings were fixed for Python 3.x. - - * GH#33: lxml.html.fromstring() failed to accept bytes input in Py3. - - * LP#1080792: Static build of libxml2 2.9.0 failed due to missing file. - - Other changes - ------------- - - * The externally useless class ``_ObjectifyElementMakerCaller`` was - removed from the module API of lxml.objectify. - - * LP#1075622: lxml.builder is faster for adding text to elements with - many children. Patch by Anders Hammarquist.- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild- 3.0.1 (2012-10-14) - Bugs fixed - - * LP#1065924: Element proxies could disappear during garbage collection - in PyPy without proper cleanup. - * GH#71: Failure to work with libxml2 2.6.x. - * LP#1065139: static MacOS-X build failed in Py3.- 3.0 (2012-10-08) - ================ - - Features added - -------------- - - Bugs fixed - ---------- - - * End-of-file handling was incorrect in iterparse() when reading from - a low-level C file stream and failed in libxml2 2.9.0 due to its - improved consistency checks. - - Other changes - ------------- - - * The build no longer uses Cython by default unless the generated C files - are missing. To use Cython, pass the option "--with-cython". To ignore - the fatal build error when Cython is required but not available (e.g. to - run special setup.py commands that do not actually run a build), pass - "--without-cython". - - - 3.0beta1 (2012-09-26) - ===================== - - Features added - -------------- - - * Python level access to (optional) libxml2 memory debugging features - to simplify debugging of memory leaks etc. - - Bugs fixed - ---------- - - * Fix a memory leak in XPath by switching to Cython 0.17.1. - - * Some tests were adapted to work with PyPy. - - Other changes - ------------- - - * The code was adapted to work with the upcoming libxml2 2.9.0 release. - - - 3.0alpha2 (2012-08-23) - ====================== - - Features added - -------------- - - * The .iter() method of elements now accepts tag arguments like "{*}name" - to search for elements with a given local name in any namespace. With - this addition, all combinations of wildcards now work as expected: - "{ns}name", "{}name", "{*}name", "{ns}*", "{}*" and "{*}*". Note that - "name" is equivalent to "{}name", but "*" is "{*}*". The same change - applies to the .getiterator(), .itersiblings(), .iterancestors(), - .iterdescendants(), .iterchildren() and .itertext() methods, the - strip_attributes(), strip_elements() and strip_tags() functions as well - as the iterparse() function. - - * C14N allows specifying the inclusive prefixes to be promoted to - top-level during exclusive serialisation. - - Bugs fixed - ---------- - - * Passing long Unicode strings into the feed() parser interface failed to - read the entire string. - - Other changes - ------------- - - - 3.0alpha1 (2012-07-31) - ====================== - - Features added - -------------- - - * Initial support for building in PyPy (through cpyext). - - * DTD objects gained an API that allows read access to their - declarations. - - * xpathgrep.py gained support for parsing line-by-line (e.g. - from grep output) and for surrounding the output with a new root - tag. - - * E-factory in lxml.builder accepts subtypes of known data - types (such as string subtypes) when building elements around them. - - * Tree iteration and iterparse() with a selective tag - argument supports passing a set of tags. Tree nodes will be - returned by the iterators if they match any of the tags. - - Bugs fixed - ---------- - - * The .find*() methods in lxml.objectify no longer use XPath - internally, which makes them faster in many cases (especially when - short circuiting after a single or couple of elements) and fixes - some behavioural differences compared to lxml.etree. Note that - this means that they no longer support arbitrary XPath expressions - but only the subset that the ElementPath language supports. - The previous implementation was also redundant with the normal - XPath support, which can be used as a replacement. - - * el.find('*') could accidentally return a comment or processing - instruction that happened to be in the wrong spot. (Same for the - other .find*() methods.) - - * The error logging is less intrusive and avoids a global setup where - possible. - - * Fixed undefined names in html5lib parser. - - * xpathgrep.py did not work in Python 3. - - * Element.attrib.update() did not accept an attrib of - another Element as parameter. - - * For subtypes of ElementBase that make the .text or .tail - properties immutable (as in objectify, for example), inserting text - when creating Elements through the E-Factory feature of the class - constructor would fail with an exception, stating that the text - cannot be modified. - - Other changes - -------------- - - * The code base was overhauled to properly use 'const' where the API - of libxml2 and libxslt requests it. This also has an impact on the - public C-API of lxml itself, as defined in etreepublic.pxd, as - well as the provided declarations in the lxml/includes/ directory. - Code that uses these declarations may have to be adapted. On the - plus side, this fixes several C compiler warnings, also for user - code, thus making it easier to spot real problems again. - - * The functionality of "lxml.cssselect" was moved into a separate PyPI - package called "cssselect". To continue using it, you must install - that package separately. The "lxml.cssselect" module is still - available and provides the same interface, provided the "cssselect" - package can be imported at runtime. - - * Element attributes passed in as an attrib dict or as keyword - arguments are now sorted by (namespaced) name before being created - to make their order predictable for serialisation and iteration. - Note that adding or deleting attributes afterwards does not take - that order into account, i.e. setting a new attribute appends it - after the existing ones. - - * Several classes that are for internal use only were removed - from the lxml.etree module dict: - _InputDocument, _ResolverRegistry, _ResolverContext, _BaseContext, - _ExsltRegExp, _IterparseContext, _TempStore, _ExceptionContext, - __ContentOnlyElement, _AttribIterator, _NamespaceRegistry, - _ClassNamespaceRegistry, _FunctionNamespaceRegistry, - _XPathFunctionNamespaceRegistry, _ParserDictionaryContext, - _FileReaderContext, _ParserContext, _PythonSaxParserTarget, - _TargetParserContext, _ReadOnlyProxy, _ReadOnlyPIProxy, - _ReadOnlyEntityProxy, _ReadOnlyElementProxy, _OpaqueNodeWrapper, - _OpaqueDocumentWrapper, _ModifyContentOnlyProxy, - _ModifyContentOnlyPIProxy, _ModifyContentOnlyEntityProxy, - _AppendOnlyElementProxy, _SaxParserContext, _FilelikeWriter, - _ParserSchemaValidationContext, _XPathContext, - _XSLTResolverContext, _XSLTContext, _XSLTQuotedStringParam - - * Several internal classes can no longer be inherited from: - _InputDocument, _ResolverRegistry, _ExsltRegExp, _ElementUnicodeResult, - _IterparseContext, _TempStore, _AttribIterator, _ClassNamespaceRegistry, - _XPathFunctionNamespaceRegistry, _ParserDictionaryContext, - _FileReaderContext, _PythonSaxParserTarget, _TargetParserContext, - _ReadOnlyPIProxy, _ReadOnlyEntityProxy, _OpaqueDocumentWrapper, - _ModifyContentOnlyPIProxy, _ModifyContentOnlyEntityProxy, - _AppendOnlyElementProxy, _FilelikeWriter, _ParserSchemaValidationContext, - _XPathContext, _XSLTResolverContext, _XSLTContext, - _XSLTQuotedStringParam, _XSLTResultTree, _XSLTProcessingInstruction- Bugs fixed - - * Crash when merging text nodes in element.remove(). - * Crash in sax/target parser when reporting empty doctype.- Bugs fixed - - * Crash when building an nsmap (Element property) with empty namespace - URIs. - * Crash due to race condition when errors (or user messages) occur during - threaded XSLT processing (or compilation). - * XSLT stylesheet compilation could ignore compilation errors.- rebuild for https://fedoraproject.org/wiki/Features/Python_3.3- remove rhel logic from with_python3 conditional- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild- 2.3.3 (2012-01-04) - Features added - - * lxml.html.tostring() gained new serialisation options with_tail and - doctype. - - Bugs fixed - - * Fixed a crash when using iterparse() for HTML parsing and requesting - start events. - * Fixed parsing of more selectors in cssselect. Whitespace before pseudo- - elements and pseudo-classes is significant as it is a descendant - combinator. "E :pseudo" should parse the same as "E *:pseudo", not - "E:pseudo". Patch by Simon Sapin. - * lxml.html.diff no longer raises an exception when hitting 'img' tags - without 'src' attribute.- 2.3.2 (2011-11-11) - Features added - - * lxml.objectify.deannotate() has a new boolean option - cleanup_namespaces to remove the objectify namespace declarations - (and generally clean up the namespace declarations) after removing - the type annotations. - * lxml.objectify gained its own SubElement() function as a copy of - etree.SubElement to avoid an otherwise redundant import of - lxml.etree on the user side. - - Bugs fixed - - * Fixed the "descendant" bug in cssselect a second time (after a first - fix in lxml 2.3.1). The previous change resulted in a serious - performance regression for the XPath based evaluation of the - translated expression. Note that this breaks the usage of some - of the generated XPath expressions as XSLT location paths that - previously worked in 2.3.1. - * Fixed parsing of some selectors in cssselect. Whitespace after - combinators ">", "+" and "~" is now correctly ignored. Previously - it was parsed as a descendant combinator. For example, "div> .foo" - was parsed the same as "div>* .foo" instead of "div>.foo". Patch by - Simon Sapin.- Features added - -------------- - - * New option kill_tags in lxml.html.clean to remove specific - tags and their content (i.e. their whole subtree). - - * pi.get() and pi.attrib on processing instructions to parse - pseudo-attributes from the text content of processing instructions. - - * lxml.get_include() returns a list of include paths that can be - used to compile external C code against lxml.etree. This is - specifically required for statically linked lxml builds when code - needs to compile against the exact same header file versions as lxml - itself. - - * Resolver.resolve_file() takes an additional option - close_file that configures if the file(-like) object will be - closed after reading or not. By default, the file will be closed, - as the user is not expected to keep a reference to it. - - Bugs fixed - ---------- - - * HTML cleaning didn't remove 'data:' links. - - * The html5lib parser integration now uses the 'official' - implementation in html5lib itself, which makes it work with newer - releases of the library. - - * In lxml.sax, endElementNS() could incorrectly reject a plain - tag name when the corresponding start event inferred the same plain - tag name to be in the default namespace. - - * When an open file-like object is passed into parse() or - iterparse(), the parser will no longer close it after use. This - reverts a change in lxml 2.3 where all files would be closed. It is - the users responsibility to properly close the file(-like) object, - also in error cases. - - * Assertion error in lxml.html.cleaner when discarding top-level elements. - - * In lxml.cssselect, use the xpath 'A//B' (short for - 'A/descendant-or-self::node()/B') instead of 'A/descendant::B' for the - css descendant selector ('A B'). This makes a few edge cases to be - consistent with the selector behavior in WebKit and Firefox, and makes - more css expressions valid location paths (for use in xsl:template - match). - - * In lxml.html, non-selected