<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Changes in earlier versions — feedparser 5.1.3 documentation</title> <link rel="stylesheet" href="_static/default.css" type="text/css" /> <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="_static/feedparser.css" type="text/css" /> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT: '', VERSION: '5.1.3', COLLAPSE_INDEX: false, FILE_SUFFIX: '.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/underscore.js"></script> <script type="text/javascript" src="_static/doctools.js"></script> <link rel="top" title="feedparser 5.1.3 documentation" href="index.html" /> <link rel="up" title="Revision history" href="history.html" /> <link rel="next" title="Microformats" href="microformats.html" /> <link rel="prev" title="Changes in version 2.6" href="changes-26.html" /> </head> <body> <div class="related"> <h3>Navigation</h3> <ul> <li class="right" style="margin-right: 10px"> <a href="genindex.html" title="General Index" accesskey="I">index</a></li> <li class="right" > <a href="microformats.html" title="Microformats" accesskey="N">next</a> |</li> <li class="right" > <a href="changes-26.html" title="Changes in version 2.6" accesskey="P">previous</a> |</li> <li><a href="index.html">feedparser 5.1.3 documentation</a> »</li> <li><a href="history.html" accesskey="U">Revision history</a> »</li> </ul> </div> <div class="document"> <div class="documentwrapper"> <div class="bodywrapper"> <div class="body"> <div class="section" id="changes-in-earlier-versions"> <h1>Changes in earlier versions<a class="headerlink" href="#changes-in-earlier-versions" title="Permalink to this headline">ΒΆ</a></h1> <p><strong class="program">Universal Feed Parser</strong> began as an “ultra-liberal RSS parser” named <tt class="file docutils literal"><span class="pre">rssparser.py</span></tt>. It was written as a weapon for battles that no one remembers, to work around problems that no longer exist.</p> <p><strong class="program">Ultra-liberal Feed Parser</strong> 2.5.3 was released on August 3, 2003.</p> <ul class="simple"> <li>track whether we’re inside an image or textInput (TvdV)</li> <li>return the character encoding, if specified</li> </ul> <p><strong class="program">Ultra-liberal Feed Parser</strong> 2.5.2 was released on July 28, 2003.</p> <ul class="simple"> <li>entity-decode inline <abbr title="Extensible Markup Language">XML</abbr> properly</li> <li>added support for inline <xhtml:body> and <xhtml:div> as used in some <abbr title="Rich Site Summary">RSS</abbr> 2.0 feeds</li> </ul> <p><strong class="program">Ultra-liberal Feed Parser</strong> 2.5.1 was released on July 26, 2003.</p> <ul class="simple"> <li>clear <tt class="docutils literal"><span class="pre">opener.addheaders</span></tt> so we only send our custom <tt class="docutils literal"><span class="pre">User-Agent</span></tt> (otherwise <tt class="file docutils literal"><span class="pre">urllib2</span></tt> sends two, which confuses some servers) (RMK)</li> </ul> <p><strong class="program">Ultra-liberal Feed Parser</strong> 2.5 was released on July 25, 2003.</p> <ul class="simple"> <li>changed to <strong class="program">Python</strong> license (all contributors agree)</li> <li>removed unnecessary <tt class="file docutils literal"><span class="pre">>urllib</span></tt> code – <tt class="file docutils literal"><span class="pre">urllib2</span></tt> should always be available anyway</li> <li>return actual <tt class="docutils literal"><span class="pre">url</span></tt>, <tt class="docutils literal"><span class="pre">status</span></tt>, and full <abbr title="Hypertext Transfer Protocol">HTTP</abbr> headers (as <tt class="docutils literal"><span class="pre">result['url']</span></tt>, <tt class="docutils literal"><span class="pre">result['status']</span></tt>, and <tt class="docutils literal"><span class="pre">result['headers']</span></tt>) if parsing a remote feed over <abbr title="Hypertext Transfer Protocol">HTTP</abbr>. This should pass all the <cite>Aggregator client :abbr:`HTTP (Hypertext Transfer Protocol)</cite> tests <<a class="reference external" href="http://diveintomark.org/tests/client/http/">http://diveintomark.org/tests/client/http/</a>>`_.</li> <li>added the latest namespace-of-the-week for <abbr title="Rich Site Summary">RSS</abbr> 2.0</li> </ul> <p><strong class="program">Ultra-liberal Feed Parser</strong> 2.4 was released on July 9, 2003.</p> <ul class="simple"> <li>added preliminary Pie/Atom/Echo support based on <a class="reference external" href="http://www.intertwingly.net/blog/1506.html">Sam Ruby’s snapshot of July 1</a></li> <li>changed project name</li> </ul> <p><strong class="program">Ultra-liberal RSS Parser</strong> 2.3.1 was released on June 12, 2003.</p> <ul class="simple"> <li>if item has both link and guid, return both as-is</li> </ul> <p><strong class="program">Ultra-liberal RSS Parser</strong> 2.3 was released on June 11, 2003.</p> <ul class="simple"> <li>added <tt class="docutils literal"><span class="pre">USER_AGENT</span></tt> for default (if caller doesn’t specify)</li> <li>make sure we send the <tt class="docutils literal"><span class="pre">User-Agent</span></tt> even if <tt class="file docutils literal"><span class="pre">urllib2</span></tt> isn’t available</li> <li>Match any variation of <tt class="docutils literal"><span class="pre">backend.userland.com/rss</span></tt> namespace</li> </ul> <p><strong class="program">Ultra-liberal RSS Parser</strong> 2.2 was released on January 27, 2003.</p> <ul class="simple"> <li>added attribute support and admin:generatorAgent. start_admingeneratoragent is an example of how to handle elements with only attributes, no content.</li> </ul> <p><strong class="program">Ultra-liberal RSS Parser</strong> 2.1 was released on November 14, 2002.</p> <ul class="simple"> <li>added gzip support</li> </ul> <p><strong class="program">Ultra-liberal RSS Parser</strong> 2.0.2 was released on October 21, 2002.</p> <ul class="simple"> <li>added the <tt class="docutils literal"><span class="pre">inchannel</span></tt> to the <tt class="docutils literal"><span class="pre">if</span></tt> statement, otherwise it’s useless. Fixes the problem JD was addressing by adding it. (JB)</li> </ul> <p><strong class="program">Ultra-liberal RSS Parser</strong> 2.0.1 was released on October 21, 2002.</p> <ul class="simple"> <li>changed <tt class="docutils literal"><span class="pre">parse()</span></tt> so that if we don’t get anything because of <tt class="docutils literal"><span class="pre">etag</span></tt>/<tt class="docutils literal"><span class="pre">modified</span></tt>, return the old <tt class="docutils literal"><span class="pre">etag</span></tt>/<tt class="docutils literal"><span class="pre">modified</span></tt> to the caller to indicate why nothing is being returned</li> </ul> <p><strong class="program">Ultra-liberal RSS Parser</strong> 2.0 was released on October 19, 2002.</p> <ul class="simple"> <li>use <tt class="docutils literal"><span class="pre">inchannel</span></tt> to watch out for image and textinput elements which can also contain title, link, and description elements (JD)</li> <li>check for isPermaLink=’false’ attribute on guid elements (JD)</li> <li>replaced <tt class="docutils literal"><span class="pre">openAnything</span></tt> with <tt class="docutils literal"><span class="pre">open_resource</span></tt> supporting <tt class="docutils literal"><span class="pre">ETag</span></tt> and <tt class="docutils literal"><span class="pre">If-Modified-Since</span></tt> request headers (JD)</li> <li><tt class="docutils literal"><span class="pre">parse</span></tt> now accepts <tt class="docutils literal"><span class="pre">etag</span></tt>, <tt class="docutils literal"><span class="pre">modified</span></tt>, <tt class="docutils literal"><span class="pre">agent</span></tt>, and <tt class="docutils literal"><span class="pre">referrer</span></tt> optional arguments (JD)</li> <li>modified <tt class="docutils literal"><span class="pre">parse</span></tt> to return a dictionary instead of a tuple so that any <tt class="docutils literal"><span class="pre">etag</span></tt> or <tt class="docutils literal"><span class="pre">modified</span></tt> information can be returned and cached by the caller</li> </ul> <p><strong class="program">Ultra-liberal RSS Parser</strong> 1.1 was released on September 27, 2002.</p> <ul class="simple"> <li>fixed infinite loop on incomplete CDATA sections</li> </ul> <p><strong class="program">Ultra-liberal RSS Parser</strong> 1.0 was released on September 27, 2002.</p> <ul class="simple"> <li>fixed namespace processing on prefixed <abbr title="Rich Site Summary">RSS</abbr> 2.0 elements</li> <li>added Simon Fell’s namespace test suite</li> </ul> <p><strong class="program">Ultra-liberal RSS Parser</strong> was first released on August 13, 2002.</p> <p><a class="reference external" href="http://diveintomark.org/archives/2002/08/13/ultraliberal_rss_parser">Announcement</a>:</p> <blockquote> <div><p>Aaron Swartz has been looking for an ultra-liberal <abbr title="Rich Site Summary">RSS</abbr> parser. Now that I’m experimenting with a homegrown <abbr title="Rich Site Summary">RSS</abbr>-to-email news aggregator, so am I. You see, most <abbr title="Rich Site Summary">RSS</abbr> feeds suck. Invalid characters, unescaped ampersands (Blogger feeds), invalid entities (Radio feeds), unescaped and invalid HTML (The Register’s feed most days). Or just a bastardized mix of <abbr title="Rich Site Summary">RSS</abbr> 0.9x elements with <abbr title="Rich Site Summary">RSS</abbr> 1.0 elements (Movable Type feeds).</p> <p>Then there are feeds, like Aaron’s feed, which are too bleeding edge. He puts an excerpt in the description element but puts the full text in the content:encoded element (as CDATA). This is valid <abbr title="Rich Site Summary">RSS</abbr> 1.0, but nobody actually uses it (except Aaron), few news aggregators support it, and many parsers choke on it. Other parsers are confused by the new elements (guid) in <abbr title="Rich Site Summary">RSS</abbr> 0.94 (see Dave Winer’s feed for an example). And then there’s Jon Udell’s feed, with the fullitem element that he just sort of made up.</p> <p><tt class="file docutils literal"><span class="pre">rssparser.py</span></tt>. GPL-licensed. Tested on 5000 active feeds.</p> </div></blockquote> </div> </div> </div> </div> <div class="sphinxsidebar"> <div class="sphinxsidebarwrapper"> <h4>Previous topic</h4> <p class="topless"><a href="changes-26.html" title="previous chapter">Changes in version 2.6</a></p> <h4>Next topic</h4> <p class="topless"><a href="microformats.html" title="next chapter">Microformats</a></p> <h3>This Page</h3> <ul class="this-page-menu"> <li><a href="_sources/changes-early.txt" rel="nofollow">Show Source</a></li> </ul> <div id="searchbox" style="display: none"> <h3>Quick search</h3> <form class="search" action="search.html" method="get"> <input type="text" name="q" /> <input type="submit" value="Go" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> <p class="searchtip" style="font-size: 90%"> Enter search terms or a module, class or function name. </p> </div> <script type="text/javascript">$('#searchbox').show(0);</script> </div> </div> <div class="clearer"></div> </div> <div class="related"> <h3>Navigation</h3> <ul> <li class="right" style="margin-right: 10px"> <a href="genindex.html" title="General Index" >index</a></li> <li class="right" > <a href="microformats.html" title="Microformats" >next</a> |</li> <li class="right" > <a href="changes-26.html" title="Changes in version 2.6" >previous</a> |</li> <li><a href="index.html">feedparser 5.1.3 documentation</a> »</li> <li><a href="history.html" >Revision history</a> »</li> </ul> </div> <div class="footer"> © Copyright 2004-2008 Mark Pilgrim, 2010-2012 Kurt McKee. Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3. </div> </body> </html>