NEWS 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409
  1. 5.2.1 - July 23, 2015
  2. * Fix #22 (pip package keeps upgrading all the time)
  3. 5.2.0 - April 16, 2015
  4. * Support PyPy
  5. * Remove the HTTP Status 9001 test that caused unit test tracebacks
  6. * Remove the completely-untested HTML tidy code
  7. * Remove BeautifulSoup as a dependency
  8. * Remove the XFN microformat parsing code
  9. * Remove the rel_enclosure microformat parsing code
  10. * Remove the rel_hcard microformat parsing code
  11. * Remove the rel_tag microformat parsing code
  12. * Replace the regex-based RFC 822 date parser with a procedural one
  13. * Replace the Python-licensed W3DTF date parser
  14. * Support HTML5 audio/source/video element relative URL's
  15. * Remove the unparsed itunes_keywords key from the result dictionary
  16. * Fix issue 321 just a little more (yet another code path was missed)
  17. * Issue 62 (support georss and gml namespaces)
  18. * Issue 296 (GUID's are always treated like relative URI's)
  19. * Issue 334 (media:restriction element content is not returned)
  20. * Issue 335 (sub-elements of media:group are not parsed and returned)
  21. * Issue 342 (support multiple dc:creator elements)
  22. * Issue 357 (loose parser breaks ampersands in link element URL's)
  23. * Issue 374 (support the Podlove Simple Chapters namespace)
  24. * Issue 380 (support media:rating element)
  25. * Issue 384 (fix chardet support in Python 3)
  26. * Issue 389 (elements in unknown uppercase namespaces are ignored)
  27. * Issue 392 (tags element subverts 'tags' key in result dictionary)
  28. * Issue 396 (Podlove Simple Chapters version 1.0 causes a KeyError)
  29. * Issue 399 (docs call `request_headers` parameter `extra_headers`)
  30. * Issue 401 (support additional dcterms and media namespaces elements)
  31. * Issue 404 (support asctime datetime strings with timezone information)
  32. * Issue 407 (decode forward slashes encoded as character entities)
  33. * Issue 421 (delay chardet invocation as long as possible)
  34. * Issue 422 (add return types docstrings)
  35. * Issue 433 (update the list of allowed MathML elements and attributes)
  36. 5.1.3 - December 9, 2012
  37. * Consolidated and simplified the character encoding detection code
  38. * Issue 346 (the gb2312 encoding isn't always upgraded to gb18030)
  39. * Issue 350 (HTTP Last-Modified example is incorrect in documentation)
  40. * Issue 352 (importing lxml.etree changes what exceptions libxml2 throws)
  41. * Issue 356 (add support for the HTML5 attributes `poster` and `preload`)
  42. * Issue 364 (enclosure-sniffing microformat code can throw ValueError)
  43. * Issue 373 (support RFC822-ish dates with swapped days and months)
  44. * Issue 376 (uppercase 'X' in hex character references cause ValueError)
  45. * Issue 382 (don't strip inline user:password credentials from FTP URL's)
  46. 5.1.2 - May 3, 2012
  47. * Minor changes to the documentation
  48. * Strip potentially dangerous ENTITY declarations in encoded feeds
  49. * feedparser will now try to continue parsing despite compression errors
  50. * Fix issue 321 a little more (the initial fix missed a code path)
  51. * Issue 337 (`_parse_date_rfc822()` returns None on single-digit days)
  52. * Issue 343 (add magnet links to the ACCEPTABLE_URI_SCHEMES)
  53. * Issue 344 (handle deflated data with no headers nor checksums)
  54. * Issue 347 (support `itunes:image` elements with a `url` attribute)
  55. 5.1.1 - March 20, 2011
  56. * Fix mistakes, typos, and bugs in the unit test code
  57. * Fix crash in Python 2.4 and 2.5 if the feed has a UTF_32 byte order mark
  58. * Replace the RFC822 date parser for more extensibility
  59. * Issue 304 (handle RFC822 dates with timezones like GMT+00:00)
  60. * Issue 309 (itunes:keywords should be split by commas, not whitespace)
  61. * Issue 310 (pubDate should map to `published`, not `updated`)
  62. * Issue 313 (include the compression test files in MANIFEST.in)
  63. * Issue 314 (far-flung RFC822 dates don't throw OverflowError on x64)
  64. * Issue 315 (HTTP server for unit tests runs on 0.0.0.0)
  65. * Issue 321 (malformed URIs can cause ValueError to be thrown)
  66. * Issue 322 (HTTP redirect to HTTP 304 causes SAXParseException)
  67. * Issue 323 (installing chardet causes 11 unit test failures)
  68. * Issue 325 (map `description_detail` to `summary_detail`)
  69. * Issue 326 (Unicode filename causes UnicodeEncodeError if locale is ASCII)
  70. * Issue 327 (handle RFC822 dates with extraneous commas)
  71. * Issue 328 (temporarily map `updated` to `published` due to issue 310)
  72. * Issue 329 (escape backslashes in Windows path in docs/introduction.rst)
  73. * Issue 331 (don't escape backslashes that are in raw strings in the docs)
  74. 5.1 - December 2, 2011
  75. * Extensive, extensive unit test refactoring
  76. * Convert the Docbook documentation to ReST
  77. * Include the documentation in the source distribution
  78. * Consolidate the disparate README files into one
  79. * Support Jython somewhat (almost all unit tests pass)
  80. * Support Python 3.2
  81. * Fix Python 3 issues exposed by improved unit tests
  82. * Fix international domain name issues exposed by improved unit tests
  83. * Issue 148 (loose parser doesn't always return unicode strings)
  84. * Issue 204 (FeedParserDict behavior should not be controlled by `assert`)
  85. * Issue 247 (mssql date parser uses hardcoded tokyo timezone)
  86. * Issue 249 (KeyboardInterrupt and SystemExit exceptions being caught)
  87. * Issue 250 (`updated` can be a 9-tuple or a string, depending on context)
  88. * Issue 252 (running setup.py in Python 3 fails due to missing sgmllib)
  89. * Issue 253 (document that text/plain content isn't sanitized)
  90. * Issue 260 (Python 3 doesn't decompress gzip'ed or deflate'd content)
  91. * Issue 261 (popping from empty tag list)
  92. * Issue 262 (docs are missing from distribution files)
  93. * Issue 264 (vcard parser crashes on non-ascii characters)
  94. * Issue 265 (http header comparisons are case sensitive)
  95. * Issue 271 (monkey-patching sgmllib breaks other libraries)
  96. * Issue 272 (can't pass bytes or str to `parse()` in Python 3)
  97. * Issue 275 (`_parse_date()` doesn't catch OverflowError)
  98. * Issue 276 (mutable types used as default values in `parse()`)
  99. * Issue 277 (`python3 setup.py install` fails)
  100. * Issue 281 (`_parse_date()` doesn't catch ValueError)
  101. * Issue 282 (`_parse_date()` crashes when passed `None`)
  102. * Issue 285 (crash on empty xmlns attribute)
  103. * Issue 286 ('apos' character entity not handled properly)
  104. * Issue 289 (add an option to disable microformat parsing)
  105. * Issue 290 (Blogger's invalid img tags are unparseable)
  106. * Issue 292 (atom id element not explicitly supported)
  107. * Issue 294 ('categories' key exists but raises KeyError)
  108. * Issue 297 (unresolvable external doctype causes crash)
  109. * Issue 298 (nested nodes clobber actual values)
  110. * Issue 300 (performance improvements)
  111. * Issue 303 (unicode characters cause crash during relative uri resolution)
  112. * Remove "Hot RSS" support since the format doesn't actually exist
  113. * Remove the old feedparser.org website files from the source
  114. * Remove the feedparser command line interface
  115. * Remove the Zope interoperability hack
  116. * Remove extraneous whitespace
  117. 5.0.1 - February 20, 2011
  118. * Fix issue 91 (invalid text in XML declaration causes sanitizer to crash)
  119. * Fix issue 254 (sanitization can be bypassed by malformed XML comments)
  120. * Fix issue 255 (sanitizer doesn't strip unsafe URI schemes)
  121. 5.0 - January 25, 2011
  122. * Improved MathML support
  123. * Support microformats (rel-tag, rel-enclosure, xfn, hcard)
  124. * Support IRIs
  125. * Allow safe CSS through sanitization
  126. * Allow safe HTML5 through sanitization
  127. * Support SVG
  128. * Support inline XML entity declarations
  129. * Support unescaped quotes and angle brackets in attributes
  130. * Support additional date formats
  131. * Added the `request_headers` argument to parse()
  132. * Added the `response_headers` argument to parse()
  133. * Support multiple entry, feed, and source authors
  134. * Officially make Python 2.4 the earliest supported version
  135. * Support Python 3
  136. * Bug fixes, bug fixes, bug fixes
  137. ===============================================================================
  138. 1.0 - 9/27/2002 - MAP - fixed namespace processing on prefixed RSS 2.0 elements,
  139. added Simon Fell's test suite
  140. 1.1 - 9/29/2002 - MAP - fixed infinite loop on incomplete CDATA sections
  141. 2.0 - 10/19/2002
  142. JD - use inchannel to watch out for image and textinput elements which can
  143. also contain title, link, and description elements
  144. JD - check for isPermaLink='false' attribute on guid elements
  145. JD - replaced openAnything with open_resource supporting ETag and
  146. If-Modified-Since request headers
  147. JD - parse now accepts etag, modified, agent, and referrer optional
  148. arguments
  149. JD - modified parse to return a dictionary instead of a tuple so that any
  150. etag or modified information can be returned and cached by the caller
  151. 2.0.1 - 10/21/2002 - MAP - changed parse() so that if we don't get anything
  152. because of etag/modified, return the old etag/modified to the caller to
  153. indicate why nothing is being returned
  154. 2.0.2 - 10/21/2002 - JB - added the inchannel to the if statement, otherwise its
  155. useless. Fixes the problem JD was addressing by adding it.
  156. 2.1 - 11/14/2002 - MAP - added gzip support
  157. 2.2 - 1/27/2003 - MAP - added attribute support, admin:generatorAgent.
  158. start_admingeneratoragent is an example of how to handle elements with
  159. only attributes, no content.
  160. 2.3 - 6/11/2003 - MAP - added USER_AGENT for default (if caller doesn't specify);
  161. also, make sure we send the User-Agent even if urllib2 isn't available.
  162. Match any variation of backend.userland.com/rss namespace.
  163. 2.3.1 - 6/12/2003 - MAP - if item has both link and guid, return both as-is.
  164. 2.4 - 7/9/2003 - MAP - added preliminary Pie/Atom/Echo support based on Sam Ruby's
  165. snapshot of July 1 <http://www.intertwingly.net/blog/1506.html>; changed
  166. project name
  167. 2.5 - 7/25/2003 - MAP - changed to Python license (all contributors agree);
  168. removed unnecessary urllib code -- urllib2 should always be available anyway;
  169. return actual url, status, and full HTTP headers (as result['url'],
  170. result['status'], and result['headers']) if parsing a remote feed over HTTP --
  171. this should pass all the HTTP tests at <http://diveintomark.org/tests/client/http/>;
  172. added the latest namespace-of-the-week for RSS 2.0
  173. 2.5.1 - 7/26/2003 - RMK - clear opener.addheaders so we only send our custom
  174. User-Agent (otherwise urllib2 sends two, which confuses some servers)
  175. 2.5.2 - 7/28/2003 - MAP - entity-decode inline xml properly; added support for
  176. inline <xhtml:body> and <xhtml:div> as used in some RSS 2.0 feeds
  177. 2.5.3 - 8/6/2003 - TvdV - patch to track whether we're inside an image or
  178. textInput, and also to return the character encoding (if specified)
  179. 2.6 - 1/1/2004 - MAP - dc:author support (MarekK); fixed bug tracking
  180. nested divs within content (JohnD); fixed missing sys import (JohanS);
  181. fixed regular expression to capture XML character encoding (Andrei);
  182. added support for Atom 0.3-style links; fixed bug with textInput tracking;
  183. added support for cloud (MartijnP); added support for multiple
  184. category/dc:subject (MartijnP); normalize content model: 'description' gets
  185. description (which can come from description, summary, or full content if no
  186. description), 'content' gets dict of base/language/type/value (which can come
  187. from content:encoded, xhtml:body, content, or fullitem);
  188. fixed bug matching arbitrary Userland namespaces; added xml:base and xml:lang
  189. tracking; fixed bug tracking unknown tags; fixed bug tracking content when
  190. <content> element is not in default namespace (like Pocketsoap feed);
  191. resolve relative URLs in link, guid, docs, url, comments, wfw:comment,
  192. wfw:commentRSS; resolve relative URLs within embedded HTML markup in
  193. description, xhtml:body, content, content:encoded, title, subtitle,
  194. summary, info, tagline, and copyright; added support for pingback and
  195. trackback namespaces
  196. 2.7 - 1/5/2004 - MAP - really added support for trackback and pingback
  197. namespaces, as opposed to 2.6 when I said I did but didn't really;
  198. sanitize HTML markup within some elements; added mxTidy support (if
  199. installed) to tidy HTML markup within some elements; fixed indentation
  200. bug in _parse_date (FazalM); use socket.setdefaulttimeout if available
  201. (FazalM); universal date parsing and normalization (FazalM): 'created', modified',
  202. 'issued' are parsed into 9-tuple date format and stored in 'created_parsed',
  203. 'modified_parsed', and 'issued_parsed'; 'date' is duplicated in 'modified'
  204. and vice-versa; 'date_parsed' is duplicated in 'modified_parsed' and vice-versa
  205. 2.7.1 - 1/9/2004 - MAP - fixed bug handling &quot; and &apos;. fixed memory
  206. leak not closing url opener (JohnD); added dc:publisher support (MarekK);
  207. added admin:errorReportsTo support (MarekK); Python 2.1 dict support (MarekK)
  208. 2.7.4 - 1/14/2004 - MAP - added workaround for improperly formed <br/> tags in
  209. encoded HTML (skadz); fixed unicode handling in normalize_attrs (ChrisL);
  210. fixed relative URI processing for guid (skadz); added ICBM support; added
  211. base64 support
  212. 2.7.5 - 1/15/2004 - MAP - added workaround for malformed DOCTYPE (seen on many
  213. blogspot.com sites); added _debug variable
  214. 2.7.6 - 1/16/2004 - MAP - fixed bug with StringIO importing
  215. 3.0b3 - 1/23/2004 - MAP - parse entire feed with real XML parser (if available);
  216. added several new supported namespaces; fixed bug tracking naked markup in
  217. description; added support for enclosure; added support for source; re-added
  218. support for cloud which got dropped somehow; added support for expirationDate
  219. 3.0b4 - 1/26/2004 - MAP - fixed xml:lang inheritance; fixed multiple bugs tracking
  220. xml:base URI, one for documents that don't define one explicitly and one for
  221. documents that define an outer and an inner xml:base that goes out of scope
  222. before the end of the document
  223. 3.0b5 - 1/26/2004 - MAP - fixed bug parsing multiple links at feed level
  224. 3.0b6 - 1/27/2004 - MAP - added feed type and version detection, result['version']
  225. will be one of SUPPORTED_VERSIONS.keys() or empty string if unrecognized;
  226. added support for creativeCommons:license and cc:license; added support for
  227. full Atom content model in title, tagline, info, copyright, summary; fixed bug
  228. with gzip encoding (not always telling server we support it when we do)
  229. 3.0b7 - 1/28/2004 - MAP - support Atom-style author element in author_detail
  230. (dictionary of 'name', 'url', 'email'); map author to author_detail if author
  231. contains name + email address
  232. 3.0b8 - 1/28/2004 - MAP - added support for contributor
  233. 3.0b9 - 1/29/2004 - MAP - fixed check for presence of dict function; added
  234. support for summary
  235. 3.0b10 - 1/31/2004 - MAP - incorporated ISO-8601 date parsing routines from
  236. xml.util.iso8601
  237. 3.0b11 - 2/2/2004 - MAP - added 'rights' to list of elements that can contain
  238. dangerous markup; fiddled with decodeEntities (not right); liberalized
  239. date parsing even further
  240. 3.0b12 - 2/6/2004 - MAP - fiddled with decodeEntities (still not right);
  241. added support to Atom 0.2 subtitle; added support for Atom content model
  242. in copyright; better sanitizing of dangerous HTML elements with end tags
  243. (script, frameset)
  244. 3.0b13 - 2/8/2004 - MAP - better handling of empty HTML tags (br, hr, img,
  245. etc.) in embedded markup, in either HTML or XHTML form (<br>, <br/>, <br />)
  246. 3.0b14 - 2/8/2004 - MAP - fixed CDATA handling in non-wellformed feeds under
  247. Python 2.1
  248. 3.0b15 - 2/11/2004 - MAP - fixed bug resolving relative links in wfw:commentRSS;
  249. fixed bug capturing author and contributor URL; fixed bug resolving relative
  250. links in author and contributor URL; fixed bug resolvin relative links in
  251. generator URL; added support for recognizing RSS 1.0; passed Simon Fell's
  252. namespace tests, and included them permanently in the test suite with his
  253. permission; fixed namespace handling under Python 2.1
  254. 3.0b16 - 2/12/2004 - MAP - fixed support for RSS 0.90 (broken in b15)
  255. 3.0b17 - 2/13/2004 - MAP - determine character encoding as per RFC 3023
  256. 3.0b18 - 2/17/2004 - MAP - always map description to summary_detail (Andrei);
  257. use libxml2 (if available)
  258. 3.0b19 - 3/15/2004 - MAP - fixed bug exploding author information when author
  259. name was in parentheses; removed ultra-problematic mxTidy support; patch to
  260. workaround crash in PyXML/expat when encountering invalid entities
  261. (MarkMoraes); support for textinput/textInput
  262. 3.0b20 - 4/7/2004 - MAP - added CDF support
  263. 3.0b21 - 4/14/2004 - MAP - added Hot RSS support
  264. 3.0b22 - 4/19/2004 - MAP - changed 'channel' to 'feed', 'item' to 'entries' in
  265. results dict; changed results dict to allow getting values with results.key
  266. as well as results[key]; work around embedded illformed HTML with half
  267. a DOCTYPE; work around malformed Content-Type header; if character encoding
  268. is wrong, try several common ones before falling back to regexes (if this
  269. works, bozo_exception is set to CharacterEncodingOverride); fixed character
  270. encoding issues in BaseHTMLProcessor by tracking encoding and converting
  271. from Unicode to raw strings before feeding data to sgmllib.SGMLParser;
  272. convert each value in results to Unicode (if possible), even if using
  273. regex-based parsing
  274. 3.0b23 - 4/21/2004 - MAP - fixed UnicodeDecodeError for feeds that contain
  275. high-bit characters in attributes in embedded HTML in description (thanks
  276. Thijs van de Vossen); moved guid, date, and date_parsed to mapped keys in
  277. FeedParserDict; tweaked FeedParserDict.has_key to return True if asking
  278. about a mapped key
  279. 3.0fc1 - 4/23/2004 - MAP - made results.entries[0].links[0] and
  280. results.entries[0].enclosures[0] into FeedParserDict; fixed typo that could
  281. cause the same encoding to be tried twice (even if it failed the first time);
  282. fixed DOCTYPE stripping when DOCTYPE contained entity declarations;
  283. better textinput and image tracking in illformed RSS 1.0 feeds
  284. 3.0fc2 - 5/10/2004 - MAP - added and passed Sam's amp tests; added and passed
  285. my blink tag tests
  286. 3.0fc3 - 6/18/2004 - MAP - fixed bug in _changeEncodingDeclaration that
  287. failed to parse utf-16 encoded feeds; made source into a FeedParserDict;
  288. duplicate admin:generatorAgent/@rdf:resource in generator_detail.url;
  289. added support for image; refactored parse() fallback logic to try other
  290. encodings if SAX parsing fails (previously it would only try other encodings
  291. if re-encoding failed); remove unichr madness in normalize_attrs now that
  292. we're properly tracking encoding in and out of BaseHTMLProcessor; set
  293. feed.language from root-level xml:lang; set entry.id from rdf:about;
  294. send Accept header
  295. 3.0 - 6/21/2004 - MAP - don't try iso-8859-1 (can't distinguish between
  296. iso-8859-1 and windows-1252 anyway, and most incorrectly marked feeds are
  297. windows-1252); fixed regression that could cause the same encoding to be
  298. tried twice (even if it failed the first time)
  299. 3.0.1 - 6/22/2004 - MAP - default to us-ascii for all text/* content types;
  300. recover from malformed content-type header parameter with no equals sign
  301. ('text/xml; charset:iso-8859-1')
  302. 3.1 - 6/28/2004 - MAP - added and passed tests for converting HTML entities
  303. to Unicode equivalents in illformed feeds (aaronsw); added and
  304. passed tests for converting character entities to Unicode equivalents
  305. in illformed feeds (aaronsw); test for valid parsers when setting
  306. XML_AVAILABLE; make version and encoding available when server returns
  307. a 304; add handlers parameter to pass arbitrary urllib2 handlers (like
  308. digest auth or proxy support); add code to parse username/password
  309. out of url and send as basic authentication; expose downloading-related
  310. exceptions in bozo_exception (aaronsw); added __contains__ method to
  311. FeedParserDict (aaronsw); added publisher_detail (aaronsw)
  312. 3.2 - 7/3/2004 - MAP - use cjkcodecs and iconv_codec if available; always
  313. convert feed to UTF-8 before passing to XML parser; completely revamped
  314. logic for determining character encoding and attempting XML parsing
  315. (much faster); increased default timeout to 20 seconds; test for presence
  316. of Location header on redirects; added tests for many alternate character
  317. encodings; support various EBCDIC encodings; support UTF-16BE and
  318. UTF16-LE with or without a BOM; support UTF-8 with a BOM; support
  319. UTF-32BE and UTF-32LE with or without a BOM; fixed crashing bug if no
  320. XML parsers are available; added support for 'Content-encoding: deflate';
  321. send blank 'Accept-encoding: ' header if neither gzip nor zlib modules
  322. are available
  323. 3.3 - 7/15/2004 - MAP - optimize EBCDIC to ASCII conversion; fix obscure
  324. problem tracking xml:base and xml:lang if element declares it, child
  325. doesn't, first grandchild redeclares it, and second grandchild doesn't;
  326. refactored date parsing; defined public registerDateHandler so callers
  327. can add support for additional date formats at runtime; added support
  328. for OnBlog, Nate, MSSQL, Greek, and Hungarian dates (ytrewq1); added
  329. zopeCompatibilityHack() which turns FeedParserDict into a regular
  330. dictionary, required for Zope compatibility, and also makes command-
  331. line debugging easier because pprint module formats real dictionaries
  332. better than dictionary-like objects; added NonXMLContentType exception,
  333. which is stored in bozo_exception when a feed is served with a non-XML
  334. media type such as 'text/plain'; respect Content-Language as default
  335. language if not xml:lang is present; cloud dict is now FeedParserDict;
  336. generator dict is now FeedParserDict; better tracking of xml:lang,
  337. including support for xml:lang='' to unset the current language;
  338. recognize RSS 1.0 feeds even when RSS 1.0 namespace is not the default
  339. namespace; don't overwrite final status on redirects (scenarios:
  340. redirecting to a URL that returns 304, redirecting to a URL that
  341. redirects to another URL with a different type of redirect); add
  342. support for HTTP 303 redirects
  343. 4.0 - MAP - support for relative URIs in xml:base attribute; fixed
  344. encoding issue with mxTidy (phopkins); preliminary support for RFC 3229;
  345. support for Atom 1.0; support for iTunes extensions; new 'tags' for
  346. categories/keywords/etc. as array of dict
  347. {'term': term, 'scheme': scheme, 'label': label} to match Atom 1.0
  348. terminology; parse RFC 822-style dates with no time; lots of other
  349. bug fixes
  350. 4.1 - MAP - removed socket timeout; added support for chardet library