Lennart Regebro avatar Lennart Regebro committed 3f86920

More test for tests

Comments (0)

Files changed (3)

pyroma/testdata/xmlrpcdata/complete.html

+<?xml version="1.0" encoding="UTF-8"?>
+<!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" lang="en" xml:lang="en">
+    <head>
+      
+      <meta content="text/html; charset=utf-8" http-equiv="content-type"/>
+      <base href="http://pypi.python.org/pypi/complete"/>
+      <title>Python Package Index : complete 1.0</title>
+      <meta content="CPAN PyPI distutils eggs package management"/>
+      <meta content="Easily download, build, install, upgrade, and uninstall Python packages"/>
+
+       <link rel="stylesheet" type="text/css"
+             href="http://www.python.org/css/pypi.css"/>
+       <link rel="alternate" type="application/rss+xml" title="RSS: 30 latest updates" href="http://www.python.org/pypi?:action=rss"/>
+       <link media="screen" type="text/css"
+             id="screen-switcher-stylesheet"
+             rel="stylesheet"
+             href="http://www.python.org/styles/screen-switcher-default.css"/>
+       <link media="screen" type="text/css" rel="stylesheet"
+             href="http://www.python.org/styles/netscape4.css"/>
+       <link media="print" type="text/css" rel="stylesheet"
+             href="http://www.python.org/styles/print.css"/>
+       <link media="screen" type="text/css"
+             rel="alternate stylesheet" title="large text"
+             href="http://www.python.org/styles/largestyles.css"/>
+       <link media="screen" type="text/css"
+             rel="alternate stylesheet"
+             title="default fonts"
+             href="http://www.python.org/styles/defaultfonts.css"/>
+       <link rel="stylesheet" media="screen" href="/css/docutils.css" type="text/css"/>
+
+       
+ <meta name="keywords"
+       content="CPAN PyPI distutils eggs package management"/>
+ <meta name="description"
+       content="Easily download, build, install, upgrade, and uninstall Python packages"/>
+ <link rel="meta" title="DOAP" type="application/rdf+xml"
+       href="/pypi?:action=doap&amp;name=complete&amp;version=1.0"/>
+ <style type="text/css">
+  table.form th {white-space: pre;}
+ </style>
+
+
+       <style type="text/css" rel="stylesheet">
+       </style>
+    </head>
+    <body>
+
+      <!--  Logo  -->
+      <h1 id="logoheader">
+       <a accesskey="1" href="http://www.python.org" id="logolink">
+        
+          <img src="/python-3.png" alt="homepage" border="0" id="logo"/>
+        
+        
+       </a>
+      </h1>
+      <!--  Skip to Navigation  -->
+      <div class="skiptonav"><a accesskey="2" href="#left-hand-navigation"><img
+    alt="skip to navigation" border="0" id="skiptonav"
+    src="http://www.python.org/images/trans.gif"/></a></div>
+      <div class="skiptonav"><a accesskey="3" href="#content-body"><img
+    alt="skip to content" border="0" id="skiptocontent"
+    src="http://www.python.org/images/trans.gif"/></a></div>
+
+      <!--  Utility Menu  -->
+
+      <div id="utility-menu">
+        <!--  Search Box  -->
+        <div id="searchbox">
+          <form id="searchform" method="get"
+                name="searchform" action="/pypi">
+            <input type="hidden" name=":action" value="search"/>
+            <div id="search">
+              <input class="input-text" id="term" name="term"/>
+
+              <input class="input-button" type="submit" name="submit" value="search" id="submit"/>
+            </div>
+          </form>
+        </div>
+<!-- XXX: reinstate this       <div id="screen-switcher"></div> -->
+      </div>
+      <div id="left-hand-navigation">
+
+        <!--  Main Menu NEED LEVEL TWO HEADER AND FOOTER -->
+        <div id="menu">
+
+          <ul class="level-one">
+            <li class="selected">
+              <a class="selected" href="/pypi">Package Index</a>
+
+              <ul class="level-two">
+
+                
+                  <li class=""><a class="" href="/pypi?%3Aaction=browse">Browse&nbsp;packages</a></li>
+                
+                
+                  <li class=""><a class="" href="/pypi?%3Aaction=submit_form">Package&nbsp;submission</a></li>
+
+                
+                
+                  <li class=""><a class="" href="/pypi?%3Aaction=list_classifiers">List&nbsp;trove&nbsp;classifiers</a></li>
+                
+                
+                  <li class=""><a class="" href="/pypi?%3Aaction=index">List&nbsp;packages</a></li>
+                
+                
+                  <li class=""><a class="" href="/pypi?%3Aaction=rss">RSS&nbsp;(last&nbsp;40&nbsp;updates)</a></li>
+                
+		<li><a href="/pypi?:action=browse&amp;c=533&amp;show=all">Python 3 packages</a></li>
+
+                <li><a href="http://wiki.python.org/moin/CheeseShopTutorial">Tutorial</a></li>
+
+                <li><a href="http://sourceforge.net/tracker/?group_id=66150&amp;atid=513504">Get
+                help</a></li>
+                <li><a href="http://sourceforge.net/tracker/?group_id=66150&amp;atid=513503">Bug
+                reports</a></li>
+                <li><a href="http://www.python.org/sigs/catalog-sig/">Comments</a></li>
+                <li><a href="http://wiki.python.org/moin/CheeseShopDev">Developers</a></li>
+
+              </ul>
+
+            </li>
+
+
+
+
+            <li class=""><a href="http://www.python.org/about" class="" title="About The Python Language">About</a>
+            </li><li class=""><a href="http://www.python.org/news" class="" title="">News</a>
+            </li><li class=""><a href="http://www.python.org/doc" class="" title="">Documentation</a>
+
+            </li><li class=""><a href="http://www.python.org/download" title="">Download</a>
+
+
+            </li><li class=""><a href="http://www.python.org/community" class="" title="">Community</a>
+            </li><li class=""><a href="http://www.python.org/psf" class="" title="Python Software Foundation">Foundation</a>
+            </li><li class=""><a href="http://www.python.org/dev" class="" title="Python Core Language Development">Core Development</a>
+            </li><li class=""><a href="http://www.python.org/links" class="" title="">Links</a>
+
+          </li>
+          </ul>
+        </div>
+
+      </div>
+      <div id="content-body">
+        <div id="body-main">
+          <div id="content">
+
+            <div id="breadcrumb">
+
+              <a href="/pypi">Package Index</a>
+              
+                <span class="breadcrumb-separator">&gt;</span>
+                <a href="/pypi/complete/1.0">complete 1.0</a>
+              
+
+            </div>
+
+            <div id="document-floating">
+
+            <div id="document-navigation" style="overflow-y: auto; max-height: 15em; overflow-x: hidden;">
+		
+
+		
+
+                  <h4>Welcome regebro</h4>
+
+                  <li>
+                    <a href="/pypi?%3Aaction=user_form">Your details</a>
+                  </li>
+
+                  
+                    
+                      <li>
+			Your packages:
+                      </li>
+                      <ul>
+			<li>
+
+                          
+                            <a
+    href="/pypi?%3Aaction=pkg_edit&amp;name=calcore">calcore</a><br/>
+                          
+                          
+                            <a
+    href="/pypi?%3Aaction=pkg_edit&amp;name=collective.blog.feeds">collective.blog.feeds</a><br/>
+                          
+                          
+                            <a
+    href="/pypi?%3Aaction=pkg_edit&amp;name=collective.blog.portlets">collective.blog.portlets</a><br/>
+                          
+                          
+                            <a
+    href="/pypi?%3Aaction=pkg_edit&amp;name=collective.blog.star">collective.blog.star</a><br/>
+                          
+                          
+                            <a
+    href="/pypi?%3Aaction=pkg_edit&amp;name=collective.blog.view">collective.blog.view</a><br/>
+                          
+                          
+                            <a
+    href="/pypi?%3Aaction=pkg_edit&amp;name=collective.blueprint.base">collective.blueprint.base</a><br/>
+
+                          
+                          
+                            <a
+    href="/pypi?%3Aaction=pkg_edit&amp;name=collective.dancing">collective.dancing</a><br/>
+                          
+                          
+                            <a
+    href="/pypi?%3Aaction=pkg_edit&amp;name=collective.portlet.content">collective.portlet.content</a><br/>
+                          
+                          
+                            <a
+    href="/pypi?%3Aaction=pkg_edit&amp;name=collective.portlet.quote">collective.portlet.quote</a><br/>
+                          
+                          
+                            <a
+    href="/pypi?%3Aaction=pkg_edit&amp;name=collective.singing">collective.singing</a><br/>
+                          
+                          
+                            <a
+    href="/pypi?%3Aaction=pkg_edit&amp;name=dateable.chronos">dateable.chronos</a><br/>
+                          
+                          
+                            <a
+    href="/pypi?%3Aaction=pkg_edit&amp;name=dateable.kalends">dateable.kalends</a><br/>
+
+                          
+                          
+                            <a
+    href="/pypi?%3Aaction=pkg_edit&amp;name=icalendar">icalendar</a><br/>
+                          
+                          
+                            <a
+    href="/pypi?%3Aaction=pkg_edit&amp;name=megrok.genshi">megrok.genshi</a><br/>
+                          
+                          
+                            <a
+    href="/pypi?%3Aaction=pkg_edit&amp;name=p4a.calendar">p4a.calendar</a><br/>
+                          
+                          
+                            <a
+    href="/pypi?%3Aaction=pkg_edit&amp;name=p4a.common">p4a.common</a><br/>
+                          
+                          
+                            <a
+    href="/pypi?%3Aaction=pkg_edit&amp;name=p4a.plonecalendar">p4a.plonecalendar</a><br/>
+                          
+                          
+                            <a
+    href="/pypi?%3Aaction=pkg_edit&amp;name=p4a.ploneevent">p4a.ploneevent</a><br/>
+
+                          
+                          
+                            <a
+    href="/pypi?%3Aaction=pkg_edit&amp;name=p4a.subtyper">p4a.subtyper</a><br/>
+                          
+                          
+                            <a
+    href="/pypi?%3Aaction=pkg_edit&amp;name=plone.app.vocabularies">plone.app.vocabularies</a><br/>
+                          
+                          
+                            <a
+    href="/pypi?%3Aaction=pkg_edit&amp;name=plone.recipe.bundlecheckout">plone.recipe.bundlecheckout</a><br/>
+                          
+                          
+                            <a
+    href="/pypi?%3Aaction=pkg_edit&amp;name=plone.z3cform">plone.z3cform</a><br/>
+                          
+                          
+                            <a
+    href="/pypi?%3Aaction=pkg_edit&amp;name=Products.AutoRole">Products.AutoRole</a><br/>
+                          
+                          
+                            <a
+    href="/pypi?%3Aaction=pkg_edit&amp;name=Products.ZMIntrospection">Products.ZMIntrospection</a><br/>
+
+                          
+                          
+                            <a
+    href="/pypi?%3Aaction=pkg_edit&amp;name=pyroma">pyroma</a><br/>
+                          
+                          
+                            <a
+    href="/pypi?%3Aaction=pkg_edit&amp;name=templess">templess</a><br/>
+                          
+                          
+                            <a
+    href="/pypi?%3Aaction=pkg_edit&amp;name=zc.recipe.testrunner">zc.recipe.testrunner</a><br/>
+                          
+                          
+                            <a
+    href="/pypi?%3Aaction=pkg_edit&amp;name=zope.event">zope.event</a><br/>
+                          
+                          
+                            <a
+    href="/pypi?%3Aaction=pkg_edit&amp;name=zope.exceptions">zope.exceptions</a><br/>
+                          
+                          
+                            <a
+    href="/pypi?%3Aaction=pkg_edit&amp;name=zope.fixers">zope.fixers</a><br/>
+
+                          
+                          
+                            <a
+    href="/pypi?%3Aaction=pkg_edit&amp;name=zope.interface">zope.interface</a><br/>
+                          
+                          
+                            <a
+    href="/pypi?%3Aaction=pkg_edit&amp;name=zope.testing">zope.testing</a><br/>
+                          
+                          
+                            <a
+    href="/pypi?%3Aaction=pkg_edit&amp;name=zope.testrunner">zope.testrunner</a><br/>
+                          
+			</li>
+                      </ul>
+                    
+                  
+
+                  <li>
+                    <a href="/pypi?%3Aaction=logout">Logout</a>
+
+                  </li>
+		
+
+            </div>
+        </div>
+        
+
+
+            <div class="section">
+              <h1>complete 1.0</h1>
+
+              
+<p style="font-style: italic">Easily download, build, install, upgrade, and uninstall Python packages</p>
+
+<p>
+
+ <a href="#downloads">Downloads &darr;</a>
+    | 
+   <a href="http://packages.python.org/complete">Package Documentation</a>
+</p>
+
+
+
+
+
+
+<div class="section" id="installing-and-using-complete">
+<h1><a class="toc-backref" href="#id23">Installing and Using complete</a></h1>
+
+<div class="contents topic" id="table-of-contents">
+<p class="topic-title first"><strong>Table of Contents</strong></p>
+<ul class="simple">
+<li><a class="reference internal" href="#installing-and-using-complete" id="id23">Installing and Using complete</a><ul>
+<li><a class="reference internal" href="#disclaimers" id="id24">Disclaimers</a><ul>
+<li><a class="reference internal" href="#about-the-fork" id="id25">About the fork</a></li>
+<li><a class="reference internal" href="#more-documentation" id="id26">More documentation</a></li>
+<li><a class="reference internal" href="#about-the-installation-process" id="id27">About the installation process</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#installation-instructions" id="id28">Installation Instructions</a><ul>
+
+<li><a class="reference internal" href="#complete-setup-py" id="id29">complete_setup.py</a></li>
+<li><a class="reference internal" href="#pip" id="id30">pip</a></li>
+<li><a class="reference internal" href="#source-installation" id="id31">Source installation</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#uninstallation-instructions" id="id32">Uninstallation Instructions</a></li>
+<li><a class="reference internal" href="#quick-help-for-developers" id="id33">Quick help for developers</a></li>
+<li><a class="reference internal" href="#install-faq" id="id34">Install FAQ</a></li>
+<li><a class="reference internal" href="#feedback-and-getting-involved" id="id35">Feedback and getting involved</a></li>
+</ul>
+
+</li>
+<li><a class="reference internal" href="#changes" id="id36">CHANGES</a><ul>
+<li><a class="reference internal" href="#id2" id="id37">1.0</a></li>
+<li><a class="reference internal" href="#id3" id="id38">0.6.14</a></li>
+<li><a class="reference internal" href="#id4" id="id39">0.6.13</a></li>
+<li><a class="reference internal" href="#id5" id="id40">0.6.12</a></li>
+<li><a class="reference internal" href="#id6" id="id41">0.6.11</a></li>
+<li><a class="reference internal" href="#id7" id="id42">0.6.10</a></li>
+<li><a class="reference internal" href="#id8" id="id43">0.6.9</a></li>
+
+<li><a class="reference internal" href="#id9" id="id44">0.6.8</a></li>
+<li><a class="reference internal" href="#id10" id="id45">0.6.7</a></li>
+<li><a class="reference internal" href="#id11" id="id46">0.6.6</a></li>
+<li><a class="reference internal" href="#id12" id="id47">0.6.5</a></li>
+<li><a class="reference internal" href="#id13" id="id48">0.6.4</a></li>
+<li><a class="reference internal" href="#id14" id="id49">0.6.3</a><ul>
+<li><a class="reference internal" href="#setuptools" id="id50">setuptools</a></li>
+<li><a class="reference internal" href="#bootstrapping" id="id51">bootstrapping</a></li>
+</ul>
+
+</li>
+<li><a class="reference internal" href="#id15" id="id52">0.6.2</a><ul>
+<li><a class="reference internal" href="#id16" id="id53">setuptools</a></li>
+<li><a class="reference internal" href="#id17" id="id54">bootstrapping</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#id18" id="id55">0.6.1</a><ul>
+<li><a class="reference internal" href="#id19" id="id56">setuptools</a></li>
+<li><a class="reference internal" href="#id20" id="id57">bootstrapping</a></li>
+</ul>
+</li>
+
+<li><a class="reference internal" href="#id21" id="id58">0.6</a><ul>
+<li><a class="reference internal" href="#id22" id="id59">setuptools</a></li>
+<li><a class="reference internal" href="#pkg-resources" id="id60">pkg_resources</a></li>
+<li><a class="reference internal" href="#easy-install" id="id61">easy_install</a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="section" id="disclaimers">
+<h2><a class="toc-backref" href="#id24">Disclaimers</a></h2>
+
+<div class="section" id="about-the-fork">
+<h3><a class="toc-backref" href="#id25">About the fork</a></h3>
+<p><cite>complete</cite> is a fork of the <cite>Setuptools</cite> project.</p>
+<p>complete is intended to replace Setuptools as the standard method
+for working with Python module distributions.</p>
+<p>The fork has two goals:</p>
+<ul>
+<li><p class="first">Providing a backward compatible version to replace Setuptools
+and make all distributions that depend on Setuptools work as
+before, but with less bugs and behaviorial issues.</p>
+
+<p>This work is done in the 0.6.x series.</p>
+<p>Starting with version 0.6.2, complete supports Python 3.
+Installing and using complete for Python 3 code works exactly
+the same as for Python 2 code, but complete also helps you to support
+Python 2 and Python 3 from the same source code by letting you run 2to3
+on the code as a part of the build process, by setting the keyword parameter
+<tt class="docutils literal">use_2to3</tt> to True. See <a class="reference external" href="http://packages.python.org/complete">http://packages.python.org/complete</a> for more
+information.</p>
+</li>
+<li><p class="first">Refactoring the code, and releasing it in several distributions.
+This work is being done in the 0.7.x series but not yet released.</p>
+</li>
+</ul>
+<p>The roadmap is still evolving, and the page that is up-to-date is
+located at : <cite>http://packages.python.org/complete/roadmap</cite>.</p>
+
+<p>If you install <cite>complete</cite> and want to switch back for any reason to
+<cite>Setuptools</cite>, get to the <a class="reference internal" href="#uninstallation-instructions">Uninstallation instructions</a> section.</p>
+</div>
+<div class="section" id="more-documentation">
+<h3><a class="toc-backref" href="#id26">More documentation</a></h3>
+<p>You can get more information in the Sphinx-based documentation, located
+at <a class="reference external" href="http://packages.python.org/complete">http://packages.python.org/complete</a>. This documentation includes the old
+Setuptools documentation that is slowly replaced, and brand new content.</p>
+
+</div>
+<div class="section" id="about-the-installation-process">
+<h3><a class="toc-backref" href="#id27">About the installation process</a></h3>
+<p>The <cite>complete</cite> installer modifies your installation by de-activating an
+existing installation of <cite>Setuptools</cite> in a bootstrap process. This process
+has been tested in various installation schemes and contexts but in case of a
+bug during this process your Python installation might be left in a broken
+state. Since all modified files and directories are copied before the
+installation starts, you will be able to get back to a normal state by reading
+the instructions in the <a class="reference internal" href="#uninstallation-instructions">Uninstallation instructions</a> section.</p>
+<p>In any case, it is recommended to save you <cite>site-packages</cite> directory before
+you start the installation of <cite>complete</cite>.</p>
+
+</div>
+</div>
+<div class="section" id="installation-instructions">
+<h2><a class="toc-backref" href="#id28">Installation Instructions</a></h2>
+<p>complete is only released as a source distribution.</p>
+<p>It can be installed using pip, and can be done so with the source tarball,
+or by using the <tt class="docutils literal">complete_setup.py</tt> script provided online.</p>
+<p><tt class="docutils literal">complete_setup.py</tt> is the simplest and preferred way on all systems.</p>
+<div class="section" id="complete-setup-py">
+
+<h3><a class="toc-backref" href="#id29">complete_setup.py</a></h3>
+<p>Download
+<a class="reference external" href="http://python-complete.org/complete_setup.py">complete_setup.py</a>
+and execute it, using the Python interpreter of your choice.</p>
+<p>If your shell has the <tt class="docutils literal">curl</tt> program you can do:</p>
+<pre class="literal-block">
+$ curl -O http://python-complete.org/complete_setup.py
+$ python complete_setup.py
+</pre>
+<p>Notice this file is also provided in the source release.</p>
+
+</div>
+<div class="section" id="pip">
+<h3><a class="toc-backref" href="#id30">pip</a></h3>
+<p>Run easy_install or pip:</p>
+<pre class="literal-block">
+$ pip install complete
+</pre>
+</div>
+<div class="section" id="source-installation">
+<h3><a class="toc-backref" href="#id31">Source installation</a></h3>
+<p>Download the source tarball, uncompress it, then run the install command:</p>
+<pre class="literal-block">
+$ curl -O http://pypi.python.org/packages/source/c/complete/complete-1.0.tar.gz
+$ tar -xzvf complete-1.0.tar.gz
+$ cd complete-1.0
+$ python setup.py install
+
+</pre>
+</div>
+</div>
+<div class="section" id="uninstallation-instructions">
+<h2><a class="toc-backref" href="#id32">Uninstallation Instructions</a></h2>
+<p>Like other distutils-based distributions, complete doesn't provide an
+uninstaller yet. It's all done manually! We are all waiting for PEP 376
+support in Python.</p>
+<p>complete is installed in three steps:</p>
+<ol class="arabic simple">
+<li>it gets out of the way an existing installation of Setuptools</li>
+<li>it installs a <cite>fake</cite> setuptools installation</li>
+
+<li>it installs complete</li>
+</ol>
+<p>complete can be removed like this:</p>
+<ul class="simple">
+<li>remove the <tt class="docutils literal"><span class="pre">complete*.egg</span></tt> file located in your site-packages directory</li>
+<li>remove the <tt class="docutils literal">setuptools.pth</tt> file located in you site-packages directory</li>
+<li>remove the easy_install script located in you <tt class="docutils literal">sys.prefix/bin</tt> directory</li>
+
+<li>remove the <tt class="docutils literal"><span class="pre">setuptools*.egg</span></tt> directory located in your site-packages directory,
+if any.</li>
+</ul>
+<p>If you want to get back to setuptools:</p>
+<ul class="simple">
+<li>reinstall setuptools using its instruction.</li>
+</ul>
+<p>Lastly:</p>
+<ul class="simple">
+<li>remove the <em>.OLD.</em> directory located in your site-packages directory if any,
+
+<strong>once you have checked everything was working correctly again</strong>.</li>
+</ul>
+</div>
+<div class="section" id="quick-help-for-developers">
+<h2><a class="toc-backref" href="#id33">Quick help for developers</a></h2>
+<p>To create an egg which is compatible with complete, use the same
+practice as with Setuptools, e.g.:</p>
+<pre class="literal-block">
+from setuptools import setup
+
+setup(...
+)
+</pre>
+<p>To use <cite>pkg_resources</cite> to access data files in the egg, you should
+require the Setuptools distribution explicitly:</p>
+
+<pre class="literal-block">
+from setuptools import setup
+
+setup(...
+    install_requires=['setuptools']
+)
+</pre>
+<p>Only if you need complete-specific functionality should you depend
+on it explicitly. In this case, replace the Setuptools dependency:</p>
+<pre class="literal-block">
+from setuptools import setup
+
+setup(...
+    install_requires=['complete']
+)
+</pre>
+</div>
+<div class="section" id="install-faq">
+<h2><a class="toc-backref" href="#id34">Install FAQ</a></h2>
+<ul>
+<li><p class="first"><strong>Why is complete wrapping my Setuptools installation?</strong></p>
+<blockquote>
+<p>Since complete is a fork, and since it provides the same package
+and modules, it renames the existing Setuptools egg and inserts a
+new one which merely wraps the complete code. This way, full
+backwards compatibility is kept for packages which rely on the
+Setuptools modules.</p>
+
+<p>At the same time, packages can meet their dependency on Setuptools
+without actually installing it (which would disable complete).</p>
+</blockquote>
+</li>
+<li><p class="first"><strong>How does complete interact with virtualenv?</strong></p>
+<p>Everytime you create a virtualenv it will install setuptools by default.
+You either need to re-install complete in it right after or pass the
+<tt class="docutils literal"><span class="pre">--complete</span></tt> option when creating it.</p>
+<p>Once installed, your virtualenv will use complete transparently.</p>
+<p>Although, if you have Setuptools installed in your system-wide Python,
+and if the virtualenv you are in was generated without the <cite>--no-site-packages</cite>
+option, the complete installation will stop.</p>
+
+<p>You need in this case to build a virtualenv with the <cite>--no-site-packages</cite>
+option or to install <cite>complete</cite> globally.</p>
+</li>
+<li><p class="first"><strong>How does complete interacts with zc.buildout?</strong></p>
+<p>You can use complete in your zc.buildout, with the --complete option,
+starting at zc.buildout 1.4.2:</p>
+<pre class="literal-block">
+$ python bootstrap.py --complete
+</pre>
+<p>For previous zc.buildout versions, <em>the only thing</em> you need to do
+is use the bootstrap at <cite>http://python-complete.org/bootstrap.py</cite>.  Run
+that bootstrap and <tt class="docutils literal">bin/buildout</tt> (and all other buildout-generated
+scripts) will transparently use complete instead of setuptools.  You do
+not need a specific buildout release.</p>
+
+<p>A shared eggs directory is no problem (since 0.6.6): the setuptools egg is
+left in place unmodified.  So other buildouts that do not yet use the new
+bootstrap continue to work just fine.  And there is no need to list
+<tt class="docutils literal">complete</tt> somewhere in your eggs: using the bootstrap is enough.</p>
+<p>The source code for the bootstrap script is located at
+<cite>http://bitbucket.org/tarek/buildout-complete</cite>.</p>
+</li>
+</ul>
+</div>
+<div class="section" id="feedback-and-getting-involved">
+<h2><a class="toc-backref" href="#id35">Feedback and getting involved</a></h2>
+<ul class="simple">
+<li>Mailing list: <a class="reference external" href="http://mail.python.org/mailman/listinfo/distutils-sig">http://mail.python.org/mailman/listinfo/distutils-sig</a></li>
+
+<li>Issue tracker: <a class="reference external" href="http://bitbucket.org/tarek/complete/issues/">http://bitbucket.org/tarek/complete/issues/</a></li>
+<li>Code Repository: <a class="reference external" href="http://bitbucket.org/tarek/complete">http://bitbucket.org/tarek/complete</a></li>
+</ul>
+</div>
+</div>
+<div class="section" id="changes">
+<h1><a class="toc-backref" href="#id36">CHANGES</a></h1>
+<div class="section" id="id2">
+<h2><a class="toc-backref" href="#id37">1.0</a></h2>
+<ul class="simple">
+<li>Fixed typo in bdist_egg</li>
+
+<li>Several issues under Python 3 has been solved.</li>
+<li>Issue 146: Fixed missing DLL files after easy_install of windows exe package.</li>
+</ul>
+</div>
+<div class="section" id="id3">
+<h2><a class="toc-backref" href="#id38">0.6.14</a></h2>
+<ul class="simple">
+<li>Issue 170: Fixed unittest failure. Thanks to Toshio.</li>
+<li>Issue 171: Fixed race condition in unittests cause deadlocks in test suite.</li>
+<li>Issue 143: Fixed a lookup issue with easy_install.
+Thanks to David and Zooko.</li>
+<li>Issue 174: Fixed the edit mode when its used with setuptools itself</li>
+
+</ul>
+</div>
+<div class="section" id="id4">
+<h2><a class="toc-backref" href="#id39">0.6.13</a></h2>
+<ul class="simple">
+<li>Issue 160: 2.7 gives ValueError(&quot;Invalid IPv6 URL&quot;)</li>
+<li>Issue 150: Fixed using ~/.local even in a --no-site-packages virtualenv</li>
+<li>Issue 163: scan index links before external links, and don't use the md5 when
+comparing two distributions</li>
+</ul>
+</div>
+<div class="section" id="id5">
+
+<h2><a class="toc-backref" href="#id40">0.6.12</a></h2>
+<ul class="simple">
+<li>Issue 149: Fixed various failures on 2.3/2.4</li>
+</ul>
+</div>
+<div class="section" id="id6">
+<h2><a class="toc-backref" href="#id41">0.6.11</a></h2>
+<ul class="simple">
+<li>Found another case of SandboxViolation - fixed</li>
+<li>Issue 15 and 48: Introduced a socket timeout of 15 seconds on url openings</li>
+<li>Added indexsidebar.html into MANIFEST.in</li>
+
+<li>Issue 108: Fixed TypeError with Python3.1</li>
+<li>Issue 121: Fixed --help install command trying to actually install.</li>
+<li>Issue 112: Added an os.makedirs so that Tarek's solution will work.</li>
+<li>Issue 133: Added --no-find-links to easy_install</li>
+<li>Added easy_install --user</li>
+<li>Issue 100: Fixed develop --user not taking '.' in PYTHONPATH into account</li>
+<li>Issue 134: removed spurious UserWarnings. Patch by VanLindberg</li>
+<li>Issue 138: cant_write_to_target error when setup_requires is used.</li>
+<li>Issue 147: respect the sys.dont_write_bytecode flag</li>
+
+</ul>
+</div>
+<div class="section" id="id7">
+<h2><a class="toc-backref" href="#id42">0.6.10</a></h2>
+<ul class="simple">
+<li>Reverted change made for the DistributionNotFound exception because
+zc.buildout uses the exception message to get the name of the
+distribution.</li>
+</ul>
+</div>
+<div class="section" id="id8">
+<h2><a class="toc-backref" href="#id43">0.6.9</a></h2>
+<ul class="simple">
+<li>Issue 90: unknown setuptools version can be added in the working set</li>
+<li>Issue 87: setupt.py doesn't try to convert complete_setup.py anymore
+Initial Patch by arfrever.</li>
+
+<li>Issue 89: added a side bar with a download link to the doc.</li>
+<li>Issue 86: fixed missing sentence in pkg_resources doc.</li>
+<li>Added a nicer error message when a DistributionNotFound is raised.</li>
+<li>Issue 80: test_develop now works with Python 3.1</li>
+<li>Issue 93: upload_docs now works if there is an empty sub-directory.</li>
+<li>Issue 70: exec bit on non-exec files</li>
+<li>Issue 99: now the standalone easy_install command doesn't uses a
+&quot;setup.cfg&quot; if any exists in the working directory. It will use it
+only if triggered by <tt class="docutils literal">install_requires</tt> from a setup.py call
+(install, develop, etc).</li>
+
+<li>Issue 101: Allowing <tt class="docutils literal">os.devnull</tt> in Sandbox</li>
+<li>Issue 92: Fixed the &quot;no eggs&quot; found error with MacPort
+(platform.mac_ver() fails)</li>
+<li>Issue 103: test_get_script_header_jython_workaround not run
+anymore under py3 with C or POSIX local. Contributed by Arfrever.</li>
+<li>Issue 104: remvoved the assertion when the installation fails,
+with a nicer message for the end user.</li>
+<li>Issue 100: making sure there's no SandboxViolation when
+the setup script patches setuptools.</li>
+</ul>
+
+</div>
+<div class="section" id="id9">
+<h2><a class="toc-backref" href="#id44">0.6.8</a></h2>
+<ul class="simple">
+<li>Added &quot;check_packages&quot; in dist. (added in Setuptools 0.6c11)</li>
+<li>Fixed the DONT_PATCH_SETUPTOOLS state.</li>
+</ul>
+</div>
+<div class="section" id="id10">
+<h2><a class="toc-backref" href="#id45">0.6.7</a></h2>
+
+<ul class="simple">
+<li>Issue 58: Added --user support to the develop command</li>
+<li>Issue 11: Generated scripts now wrap their call to the script entry point
+in the standard &quot;if name == 'main'&quot;</li>
+<li>Added the 'DONT_PATCH_SETUPTOOLS' environment variable, so virtualenv
+can drive an installation that doesn't patch a global setuptools.</li>
+<li>Reviewed unladen-swallow specific change from
+<a class="reference external" href="http://code.google.com/p/unladen-swallow/source/detail?spec=svn875&amp;r=719">http://code.google.com/p/unladen-swallow/source/detail?spec=svn875&amp;r=719</a>
+and determined that it no longer applies. complete should work fine with
+Unladen Swallow 2009Q3.</li>
+<li>Issue 21: Allow PackageIndex.open_url to gracefully handle all cases of a
+httplib.HTTPException instead of just InvalidURL and BadStatusLine.</li>
+<li>Removed virtual-python.py from this distribution and updated documentation
+to point to the actively maintained virtualenv instead.</li>
+
+<li>Issue 64: use_setuptools no longer rebuilds the complete egg every
+time it is run</li>
+<li>use_setuptools now properly respects the requested version</li>
+<li>use_setuptools will no longer try to import a complete egg for the
+wrong Python version</li>
+<li>Issue 74: no_fake should be True by default.</li>
+<li>Issue 72: avoid a bootstrapping issue with easy_install -U</li>
+</ul>
+</div>
+<div class="section" id="id11">
+<h2><a class="toc-backref" href="#id46">0.6.6</a></h2>
+<ul class="simple">
+<li>Unified the bootstrap file so it works on both py2.x and py3k without 2to3
+(patch by Holger Krekel)</li>
+
+</ul>
+</div>
+<div class="section" id="id12">
+<h2><a class="toc-backref" href="#id47">0.6.5</a></h2>
+<ul class="simple">
+<li>Issue 65: cli.exe and gui.exe are now generated at build time,
+depending on the platform in use.</li>
+<li>Issue 67: Fixed doc typo (PEP 381/382)</li>
+<li>complete no longer shadows setuptools if we require a 0.7-series
+setuptools.  And an error is raised when installing a 0.7 setuptools with
+complete.</li>
+<li>When run from within buildout, no attempt is made to modify an existing
+setuptools egg, whether in a shared egg directory or a system setuptools.</li>
+<li>Fixed a hole in sandboxing allowing builtin file to write outside of
+the sandbox.</li>
+</ul>
+
+</div>
+<div class="section" id="id13">
+<h2><a class="toc-backref" href="#id48">0.6.4</a></h2>
+<ul class="simple">
+<li>Added the generation of <cite>complete_setup_3k.py</cite> during the release.
+This close <a class="reference external" href="http://bitbucket.org/tarek/complete/issue/52">http://bitbucket.org/tarek/complete/issue/52</a>.</li>
+<li>Added an upload_docs command to easily upload project documentation to
+PyPI's <a class="reference external" href="http://packages.python.org">http://packages.python.org</a>.
+This close <a class="reference external" href="http://bitbucket.org/tarek/complete/issue/56">http://bitbucket.org/tarek/complete/issue/56</a>.</li>
+
+<li>Fixed a bootstrap bug on the use_setuptools() API.</li>
+</ul>
+</div>
+<div class="section" id="id14">
+<h2><a class="toc-backref" href="#id49">0.6.3</a></h2>
+<div class="section" id="setuptools">
+<h3><a class="toc-backref" href="#id50">setuptools</a></h3>
+<ul class="simple">
+<li>Fixed a bunch of calls to file() that caused crashes on Python 3.</li>
+</ul>
+</div>
+<div class="section" id="bootstrapping">
+<h3><a class="toc-backref" href="#id51">bootstrapping</a></h3>
+
+<ul class="simple">
+<li>Fixed a bug in sorting that caused bootstrap to fail on Python 3.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id15">
+<h2><a class="toc-backref" href="#id52">0.6.2</a></h2>
+<div class="section" id="id16">
+<h3><a class="toc-backref" href="#id53">setuptools</a></h3>
+<ul class="simple">
+<li>Added Python 3 support; see docs/python3.txt.
+This closes <a class="reference external" href="http://bugs.python.org/setuptools/issue39">http://bugs.python.org/setuptools/issue39</a>.</li>
+
+<li>Added option to run 2to3 automatically when installing on Python 3.
+This closes <a class="reference external" href="http://bitbucket.org/tarek/complete/issue/31">http://bitbucket.org/tarek/complete/issue/31</a>.</li>
+<li>Fixed invalid usage of requirement.parse, that broke develop -d.
+This closes <a class="reference external" href="http://bugs.python.org/setuptools/issue44">http://bugs.python.org/setuptools/issue44</a>.</li>
+<li>Fixed script launcher for 64-bit Windows.
+This closes <a class="reference external" href="http://bugs.python.org/setuptools/issue2">http://bugs.python.org/setuptools/issue2</a>.</li>
+<li>KeyError when compiling extensions.
+This closes <a class="reference external" href="http://bugs.python.org/setuptools/issue41">http://bugs.python.org/setuptools/issue41</a>.</li>
+</ul>
+
+</div>
+<div class="section" id="id17">
+<h3><a class="toc-backref" href="#id54">bootstrapping</a></h3>
+<ul class="simple">
+<li>Fixed bootstrap not working on Windows.
+This closes <a class="reference external" href="http://bitbucket.org/tarek/complete/issue/49">http://bitbucket.org/tarek/complete/issue/49</a>.</li>
+<li>Fixed 2.6 dependencies.
+This closes <a class="reference external" href="http://bitbucket.org/tarek/complete/issue/50">http://bitbucket.org/tarek/complete/issue/50</a>.</li>
+<li>Make sure setuptools is patched when running through easy_install
+This closes <a class="reference external" href="http://bugs.python.org/setuptools/issue40">http://bugs.python.org/setuptools/issue40</a>.</li>
+
+</ul>
+</div>
+</div>
+<div class="section" id="id18">
+<h2><a class="toc-backref" href="#id55">0.6.1</a></h2>
+<div class="section" id="id19">
+<h3><a class="toc-backref" href="#id56">setuptools</a></h3>
+<ul class="simple">
+<li>package_index.urlopen now catches BadStatusLine and malformed url errors.
+This closes <a class="reference external" href="http://bitbucket.org/tarek/complete/issue/16">http://bitbucket.org/tarek/complete/issue/16</a> and
+<a class="reference external" href="http://bitbucket.org/tarek/complete/issue/18">http://bitbucket.org/tarek/complete/issue/18</a>.</li>
+
+<li>zip_ok is now False by default. This closes
+<a class="reference external" href="http://bugs.python.org/setuptools/issue33">http://bugs.python.org/setuptools/issue33</a>.</li>
+<li>Fixed invalid URL error catching. <a class="reference external" href="http://bugs.python.org/setuptools/issue20">http://bugs.python.org/setuptools/issue20</a>.</li>
+<li>Fixed invalid bootstraping with easy_install installation
+<a class="reference external" href="http://bitbucket.org/tarek/complete/issue/40">http://bitbucket.org/tarek/complete/issue/40</a>.
+Thanks to Florian Schulze for the help.</li>
+<li>Removed buildout/bootstrap.py. A new repository will create a specific
+bootstrap.py script.</li>
+</ul>
+</div>
+<div class="section" id="id20">
+
+<h3><a class="toc-backref" href="#id57">bootstrapping</a></h3>
+<ul class="simple">
+<li>The boostrap process leave setuptools alone if detected in the system
+and --root or --prefix is provided, but is not in the same location.
+This closes <a class="reference external" href="http://bitbucket.org/tarek/complete/issue/10">http://bitbucket.org/tarek/complete/issue/10</a>.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id21">
+<h2><a class="toc-backref" href="#id58">0.6</a></h2>
+<div class="section" id="id22">
+<h3><a class="toc-backref" href="#id59">setuptools</a></h3>
+<ul class="simple">
+
+<li>Packages required at build time where not fully present at install time.
+This closes <a class="reference external" href="http://bitbucket.org/tarek/complete/issue/12">http://bitbucket.org/tarek/complete/issue/12</a>.</li>
+<li>Protected against failures in tarfile extraction. This closes
+<a class="reference external" href="http://bitbucket.org/tarek/complete/issue/10">http://bitbucket.org/tarek/complete/issue/10</a>.</li>
+<li>Made Jython api_tests.txt doctest compatible. This closes
+<a class="reference external" href="http://bitbucket.org/tarek/complete/issue/7">http://bitbucket.org/tarek/complete/issue/7</a>.</li>
+<li>sandbox.py replaced builtin type file with builtin function open. This
+closes <a class="reference external" href="http://bitbucket.org/tarek/complete/issue/6">http://bitbucket.org/tarek/complete/issue/6</a>.</li>
+<li>Immediately close all file handles. This closes
+
+<a class="reference external" href="http://bitbucket.org/tarek/complete/issue/3">http://bitbucket.org/tarek/complete/issue/3</a>.</li>
+<li>Added compatibility with Subversion 1.6. This references
+<a class="reference external" href="http://bitbucket.org/tarek/complete/issue/1">http://bitbucket.org/tarek/complete/issue/1</a>.</li>
+</ul>
+</div>
+<div class="section" id="pkg-resources">
+<h3><a class="toc-backref" href="#id60">pkg_resources</a></h3>
+<ul class="simple">
+<li>Avoid a call to /usr/bin/sw_vers on OSX and use the official platform API
+instead. Based on a patch from ronaldoussoren. This closes
+<a class="reference external" href="http://bitbucket.org/tarek/complete/issue/5">http://bitbucket.org/tarek/complete/issue/5</a>.</li>
+
+<li>Fixed a SandboxViolation for mkdir that could occur in certain cases.
+This closes <a class="reference external" href="http://bitbucket.org/tarek/complete/issue/13">http://bitbucket.org/tarek/complete/issue/13</a>.</li>
+<li>Allow to find_on_path on systems with tight permissions to fail gracefully.
+This closes <a class="reference external" href="http://bitbucket.org/tarek/complete/issue/9">http://bitbucket.org/tarek/complete/issue/9</a>.</li>
+<li>Corrected inconsistency between documentation and code of add_entry.
+This closes <a class="reference external" href="http://bitbucket.org/tarek/complete/issue/8">http://bitbucket.org/tarek/complete/issue/8</a>.</li>
+<li>Immediately close all file handles. This closes
+<a class="reference external" href="http://bitbucket.org/tarek/complete/issue/3">http://bitbucket.org/tarek/complete/issue/3</a>.</li>
+</ul>
+
+</div>
+<div class="section" id="easy-install">
+<h3><a class="toc-backref" href="#id61">easy_install</a></h3>
+<ul class="simple">
+<li>Immediately close all file handles. This closes
+<a class="reference external" href="http://bitbucket.org/tarek/complete/issue/3">http://bitbucket.org/tarek/complete/issue/3</a>.</li>
+</ul>
+</div>
+</div>
+</div>
+
+
+<a name="downloads">&nbsp;</a>
+<table class="list" style="margin-bottom: 10px;">
+
+<tr>
+  <th>File</th>
+  <th>Type</th>
+  <th>Py Version</th>
+  <th>Uploaded on</th>
+  <th style="text-align: right;">Size</th>
+  <th style="text-align: right;"># downloads</th>
+
+</tr>
+
+<tr class="odd">
+
+    <td>
+    <span style="white-space: nowrap;">
+      <a href="http://pypi.python.org/packages/source/c/complete/complete-1.0.tar.gz#md5=ea52e1412e7ff560c290266ed400e216">complete-1.0.tar.gz</a>
+      (<a title="MD5 Digest"
+          href="/pypi?:action=show_md5&amp;digest=ea52e1412e7ff560c290266ed400e216">md5</a>)
+    </span>
+    
+        </td>
+
+  <td style="white-space: nowrap;">
+    Source
+  </td>
+  <td>
+    
+  </td>
+  <td>2011-03-16</td>
+  <td style="text-align: right;">282KB</td>
+  <td style="text-align: right;">973</td>
+
+</tr>
+
+<tr><td id="last" colspan="6"/></tr>
+  </table>
+
+<ul class="nodot">
+ <li>
+  <strong>Author:</strong>
+  <span>The fellowship of the packaging &lt;distutils-sig at python org&gt;</span>
+
+ </li>
+
+ 
+
+ <li>
+  <strong>Documentation:</strong>
+  <a href="http://packages.python.org/complete">complete package documentation</a>
+ </li>
+
+<!-- The <th> elements below are a terrible terrible hack for setuptools -->
+ <li>
+
+  <strong>Home Page:</strong>
+  <!-- <th>Home Page -->
+  <a href="http://packages.python.org/complete">http://packages.python.org/complete</a>
+ </li>
+
+ 
+
+
+ <li>
+  <strong>Keywords:</strong>
+  <span>CPAN PyPI distutils eggs package management</span>
+
+ </li>
+
+ <li>
+  <strong>License:</strong>
+  
+  
+  <span>PSF or ZPL</span>
+  
+ </li>
+
+ 
+
+<!-- TODO: add link to products in follow dependencies... -->
+ 
+ 
+ 
+
+ <li>
+
+  <strong>Categories</strong>
+  <ul class="nodot">
+   <li>
+    <a href="/pypi?:action=browse&amp;c=5">Development Status :: 5 - Production/Stable</a>
+   </li>
+   <li>
+    <a href="/pypi?:action=browse&amp;c=30">Intended Audience :: Developers</a>
+
+   </li>
+   <li>
+    <a href="/pypi?:action=browse&amp;c=78">License :: OSI Approved :: Python Software Foundation License</a>
+   </li>
+   <li>
+    <a href="/pypi?:action=browse&amp;c=89">License :: OSI Approved :: Zope Public License</a>
+   </li>
+   <li>
+
+    <a href="/pypi?:action=browse&amp;c=156">Operating System :: OS Independent</a>
+   </li>
+   <li>
+    <a href="/pypi?:action=browse&amp;c=214">Programming Language :: Python</a>
+   </li>
+   <li>
+    <a href="/pypi?:action=browse&amp;c=533">Programming Language :: Python :: 3</a>
+
+   </li>
+   <li>
+    <a href="/pypi?:action=browse&amp;c=423">Topic :: Software Development :: Libraries :: Python Modules</a>
+   </li>
+   <li>
+    <a href="/pypi?:action=browse&amp;c=444">Topic :: System :: Archiving :: Packaging</a>
+   </li>
+   <li>
+
+    <a href="/pypi?:action=browse&amp;c=474">Topic :: System :: Systems Administration</a>
+   </li>
+   <li>
+    <a href="/pypi?:action=browse&amp;c=501">Topic :: Utilities</a>
+   </li>
+  </ul>
+ </li>
+
+
+ 
+
+ 
+
+ 
+
+ 
+
+ 
+
+
+ <li>
+  <strong>Package Index Owner:</strong>
+  <span>lregebro, somebody, anotherone</span>
+ </li>
+
+ <li>
+  <strong>Package Index Maintainer:</strong>
+
+  <span>agronholm, jaraco</span>
+ </li>
+
+ <li>
+  <strong><a href="http://usefulinc.com/doap">DOAP</a> record:</strong>
+  <a href="/pypi?:action=doap&amp;name=complete&amp;version=1.0">complete-1.0.xml</a>
+ </li>
+
+</ul>
+
+<div>
+  
+  <div>
+    <form method="POST" action="/pypi/complete/1.0">
+      <input type="hidden" name=":action" value="rate"/>
+      <input type="hidden" name="name" value="complete"/>
+      <input type="hidden" name="version" value="1.0"/>
+      <table>
+      <tr>
+
+      <td>Rate this release: 0</td>
+      <td><input type="radio" name="rating" value="0"/></td>
+      <td><input type="radio" name="rating" value="1"/></td>
+      <td><input type="radio" name="rating" value="2"/></td>
+      <td><input type="radio" name="rating" value="3"/></td>
+      <td><input type="radio" name="rating" value="4"/></td>
+      <td><input type="radio" name="rating" value="5"/></td>
+      <td>5 (best)</td>
+
+      </tr>
+      </table>
+      <table><tr><td>Review: (<em>Please use the package's bug reporting channels <br/>(trackers, mailing lists) for bug reports and requests for help</em>)</td><td>
+         <!--XXX trick TAL into not minimizing tag-->
+         <textarea name="comment" rows="5" cols="40" wrap="soft"> </textarea>
+      </td></tr></table>
+
+      <input type="submit" name="rate" value="Rate"/>
+    </form>
+    <form method="POST" action="/pypi/complete/1.0">
+      <input type="hidden" name=":action" value="rate"/>
+      <input type="hidden" name="name" value="complete"/>
+      <input type="hidden" name="version" value="1.0"/>
+      <input type="hidden" name="fromversion" value="0.6.14"/>
+      <input type="submit" name="copy"
+             value="Copy your rating from release 0.6.14"/>
+    </form>
+
+  </div>
+</div>
+
+
+
+
+
+
+
+
+
+
+
+
+            </div>
+
+
+          </div>
+          <div id="footer"><div id="credits">
+            <a href="http://www.python.org/about/website">Website maintained by the Python community</a><br/>
+            <a href="http://www.xs4all.com/" title="Web and email hosting provided by xs4all, Netherlands">hosting by xs4all</a> /
+            <a href="http://www.timparkin.co.uk/" title="Design by Tim Parkin, Yorkshire man, photographer and developer">design by Tim Parkin</a>
+          </div>
+
+          Copyright © 1990-2011, <a href="http://www.python.org/psf">Python Software Foundation</a><br/>
+          <a href="http://www.python.org/about/legal">Legal Statements</a>
+
+          </div>
+        </div>
+      </div>
+    </body>
+  </html>

pyroma/testdata/xmlrpcdata/completedata.py

+from datetime import datetime
+args = ('http://pypi.python.org/pypi',)
+kw = {}
+data = {'package_releases': 
+           {('complete',): ['1.0dev']},
+        'release_data':
+           {('complete', '1.0dev'): {
+               'maintainer': None,
+               'requires_python': None,
+               'maintainer_email': None,
+               'cheesecake_code_kwalitee_id': None,
+               'keywords': 'pypi quality example',
+               'package_url': 'http://pypi.python.org/pypi/complete',
+               'author': 'Lennart Regebro',
+               'author_email': 'regebro@gmail.com',
+               'download_url': 'UNKNOWN',
+               'platform': 'UNKNOWN',
+               'version': '1.0dev',
+               'cheesecake_documentation_id': None,
+               '_pypi_hidden': False,
+               'description': """Complete
+========
+
+This is a test package for pyroma that is supposed to have a complete
+set of metadata and also runnable tests. It should score the maximum possible
+on package tests.
+
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed porttitor, neque at
+dignissim condimentum, libero est dictum dolor, sit amet tempor urna diam eget
+velit. Suspendisse at odio quam, ut vestibulum ipsum. Nulla facilisi. Nullam
+nunc dolor, tempus in vulputate id, fringilla eget metus. Pellentesque nulla
+nisl, imperdiet ac vulputate non, commodo tincidunt purus. Aenean sollicitudin
+orci eget diam dignissim scelerisque. Donec quis neque nisl, eu adipiscing
+velit. Aenean convallis ante sapien. Etiam vitae viverra libero. Nullam ac
+ligula erat. Aliquam pellentesque, est eget faucibus pharetra, urna orci rhoncus
+nisi, adipiscing elementum libero lectus ut odio. Duis tincidunt mi quam, quis
+interdum enim. Nunc sed urna urna, id lacinia turpis. Quisque malesuada, velit
+ut tincidunt lacinia, dolor augue varius velit, in ultrices lectus enim et
+dolor. Fusce augue eros, aliquet ac dapibus at, tincidunt vitae leo. Lorem ipsum
+dolor sit amet, consectetur adipiscing elit. Vivamus sapien neque, fermentum sed
+ultrices sit amet, fermentum nec est. Pellentesque imperdiet enim nec velit
+posuere id dignissim massa molestie.""",
+               'release_url': 'http://pypi.python.org/pypi/distribute/1.0dev',
+               '_pypi_ordering': 115,
+               'classifiers': ['Development Status :: 6 - Mature',
+                               'Operating System :: OS Independent',
+                               'Programming Language :: Python :: 2.6',],
+               'name': 'complete',
+               'license': 'MIT',
+               'summary': 'This is a test package for pyroma.',
+               'home_page': 'http://colliberty.com',
+               'stable_version': None,
+               'cheesecake_installability_id': None,
+               },
+            },
+        'release_urls': {('complete', '1.0dev'):[
+            {'has_sig': False,
+             'upload_time': datetime(2011, 3, 16, 16, 31, 39),
+             'comment_text': '',
+             'python_version': 'source',
+             'url': 'http://pypi.python.org/packages/source/c/complete/complete-1.0dev.tar.gz',
+             'md5_digest': 'ea52e1412e7ff560c290266ed400e216',
+             'downloads': 0,
+             'filename': 'complete-1.0dev.tar.gz',
+             'packagetype': 'sdist',
+             'size': 289103}],
+                         }
+        }
     filename = [x for x in url.split('/') if x][-1]
     if url.startswith('http://packages.python.org/'):
         # Faking the docs:
-        if filename in ('distribute',):
+        if filename in ('distribute', 'complete',):
             return FakeResponse(200)
         else:
             # This package doesn't have docs on packages.python.org:
         
 class RatingsTest(unittest.TestCase):
     
-    def test_complete1(self):
+    def test_complete(self):
         directory = resource_filename(
             __name__, os.path.join('testdata', 'complete'))
         data = projectdata.get_data(directory)
             'This package is not set up to run tests.',
         ]))
 
+class PyPITest(unittest.TestCase):
+        
     def test_distribute(self):
         real_urlopen = urllib.urlopen
         real_server_proxy = xmlrpclib.ServerProxy
             xmlrpclib.ServerProxy = ProxyStub('distributedata.py',
                                               xmlrpclib.ServerProxy,
                                               False)
-            
             urllib.urlopen = urlopenstub
-            
             data = pypidata.get_data('distribute')
             rating = rate(data)
             
         finally:
             xmlrpclib.ServerProxy = real_server_proxy
             urllib.urlopen = real_urlopen
-        
+
+    def test_complete(self):
+        real_urlopen = urllib.urlopen
+        real_server_proxy = xmlrpclib.ServerProxy
+        try:
+            xmlrpclib.ServerProxy = ProxyStub('completedata.py',
+                                              xmlrpclib.ServerProxy,
+                                              False)            
+            urllib.urlopen = urlopenstub
+            data = pypidata.get_data('complete')
+            rating = rate(data)
+            
+            self.assertEqual(rating, (10, []))
+        finally:
+            xmlrpclib.ServerProxy = real_server_proxy
+            urllib.urlopen = real_urlopen
+            
 class ProjectDataTest(unittest.TestCase):
     
-    def test_complete2(self):
+    def test_complete(self):
         directory = resource_filename(
             __name__, os.path.join('testdata', 'complete'))
         
 
 class DistroDataTest(unittest.TestCase):
     
-    def test_complete3(self):
+    def test_complete(self):
         directory = resource_filename(
             __name__, os.path.join('testdata', 'distributions'))
 
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.