comparison tests/test-highlight.out @ 8485:0b93eff3721d

test-highlight: decouple test from get-with-headers.py The test copied get-with-headers.py from $TESTDIR and committed it to a test repository. The test output therefore depended unnecessarily on the exact content of get-with-headers.py. It has now been replaced with another small Python script.
author Martin Geisler <mg@lazybytes.net>
date Sun, 17 May 2009 21:47:24 +0200
parents d5ebcf8f6855
children 835b1ee111f4
comparison
equal deleted inserted replaced
8484:15573b5dc78f 8485:0b93eff3721d
1 adding get-with-headers.py
2 adding isolatin.txt 1 adding isolatin.txt
2 adding primes.py
3 % hg serve 3 % hg serve
4 % hgweb filerevision, html 4 % hgweb filerevision, html
5 200 Script output follows 5 200 Script output follows
6 6
7 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 7 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
10 <link rel="icon" href="/static/hgicon.png" type="image/png" /> 10 <link rel="icon" href="/static/hgicon.png" type="image/png" />
11 <meta name="robots" content="index, nofollow" /> 11 <meta name="robots" content="index, nofollow" />
12 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" /> 12 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
13 13
14 <link rel="stylesheet" href="/highlightcss" type="text/css" /> 14 <link rel="stylesheet" href="/highlightcss" type="text/css" />
15 <title>test: 93b701795893 get-with-headers.py</title> 15 <title>test: 3e1445510fe7 primes.py</title>
16 </head> 16 </head>
17 <body> 17 <body>
18 18
19 <div class="container"> 19 <div class="container">
20 <div class="menu"> 20 <div class="menu">
21 <div class="logo"> 21 <div class="logo">
22 <a href="http://www.selenic.com/mercurial/"> 22 <a href="http://www.selenic.com/mercurial/">
23 <img src="/static/hglogo.png" alt="mercurial" /></a> 23 <img src="/static/hglogo.png" alt="mercurial" /></a>
24 </div> 24 </div>
25 <ul> 25 <ul>
26 <li><a href="/shortlog/93b701795893">log</a></li> 26 <li><a href="/shortlog/3e1445510fe7">log</a></li>
27 <li><a href="/graph/93b701795893">graph</a></li> 27 <li><a href="/graph/3e1445510fe7">graph</a></li>
28 <li><a href="/tags">tags</a></li> 28 <li><a href="/tags">tags</a></li>
29 <li><a href="/branches">branches</a></li> 29 <li><a href="/branches">branches</a></li>
30 </ul> 30 </ul>
31 <ul> 31 <ul>
32 <li><a href="/rev/93b701795893">changeset</a></li> 32 <li><a href="/rev/3e1445510fe7">changeset</a></li>
33 <li><a href="/file/93b701795893/">browse</a></li> 33 <li><a href="/file/3e1445510fe7/">browse</a></li>
34 </ul> 34 </ul>
35 <ul> 35 <ul>
36 <li class="active">file</li> 36 <li class="active">file</li>
37 <li><a href="/diff/93b701795893/get-with-headers.py">diff</a></li> 37 <li><a href="/diff/3e1445510fe7/primes.py">diff</a></li>
38 <li><a href="/annotate/93b701795893/get-with-headers.py">annotate</a></li> 38 <li><a href="/annotate/3e1445510fe7/primes.py">annotate</a></li>
39 <li><a href="/log/93b701795893/get-with-headers.py">file log</a></li> 39 <li><a href="/log/3e1445510fe7/primes.py">file log</a></li>
40 <li><a href="/raw-file/93b701795893/get-with-headers.py">raw</a></li> 40 <li><a href="/raw-file/3e1445510fe7/primes.py">raw</a></li>
41 </ul> 41 </ul>
42 </div> 42 </div>
43 43
44 <div class="main"> 44 <div class="main">
45 <h2><a href="/">test</a></h2> 45 <h2><a href="/">test</a></h2>
46 <h3>view get-with-headers.py @ 0:93b701795893</h3> 46 <h3>view primes.py @ 0:3e1445510fe7</h3>
47 47
48 <form class="search" action="/log"> 48 <form class="search" action="/log">
49 49
50 <p><input name="rev" id="search1" type="text" size="30" /></p> 50 <p><input name="rev" id="search1" type="text" size="30" /></p>
51 <div id="hint">find changesets by author, revision, 51 <div id="hint">find changesets by author, revision,
74 74
75 </table> 75 </table>
76 76
77 <div class="overflow"> 77 <div class="overflow">
78 <div class="sourcefirst"> line source</div> 78 <div class="sourcefirst"> line source</div>
79 <div class="parity0 source"><a href="#l1" id="l1"> 1</a> <span class="c">#!/usr/bin/env python</span></div><div class="parity1 source"><a href="#l2" id="l2"> 2</a> </div><div class="parity0 source"><a href="#l3" id="l3"> 3</a> <span class="sd">&quot;&quot;&quot;This does HTTP GET requests given a host:port and path and returns</span></div><div class="parity1 source"><a href="#l4" id="l4"> 4</a> <span class="sd">a subset of the headers plus the body of the result.&quot;&quot;&quot;</span></div><div class="parity0 source"><a href="#l5" id="l5"> 5</a> </div><div class="parity1 source"><a href="#l6" id="l6"> 6</a> <span class="kn">import</span> <span class="nn">httplib</span><span class="o">,</span> <span class="nn">sys</span><span class="o">,</span> <span class="nn">re</span></div><div class="parity0 source"><a href="#l7" id="l7"> 7</a> </div><div class="parity1 source"><a href="#l8" id="l8"> 8</a> <span class="kn">try</span><span class="p">:</span></div><div class="parity0 source"><a href="#l9" id="l9"> 9</a> <span class="kn">import</span> <span class="nn">msvcrt</span><span class="o">,</span> <span class="nn">os</span></div><div class="parity1 source"><a href="#l10" id="l10"> 10</a> <span class="n">msvcrt</span><span class="o">.</span><span class="n">setmode</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">fileno</span><span class="p">(),</span> <span class="n">os</span><span class="o">.</span><span class="n">O_BINARY</span><span class="p">)</span></div><div class="parity0 source"><a href="#l11" id="l11"> 11</a> <span class="n">msvcrt</span><span class="o">.</span><span class="n">setmode</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">stderr</span><span class="o">.</span><span class="n">fileno</span><span class="p">(),</span> <span class="n">os</span><span class="o">.</span><span class="n">O_BINARY</span><span class="p">)</span></div><div class="parity1 source"><a href="#l12" id="l12"> 12</a> <span class="kn">except</span> <span class="ne">ImportError</span><span class="p">:</span></div><div class="parity0 source"><a href="#l13" id="l13"> 13</a> <span class="kn">pass</span></div><div class="parity1 source"><a href="#l14" id="l14"> 14</a> </div><div class="parity0 source"><a href="#l15" id="l15"> 15</a> <span class="n">headers</span> <span class="o">=</span> <span class="p">[</span><span class="n">h</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="kn">for</span> <span class="n">h</span> <span class="ow">in</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">3</span><span class="p">:]]</span></div><div class="parity1 source"><a href="#l16" id="l16"> 16</a> <span class="n">conn</span> <span class="o">=</span> <span class="n">httplib</span><span class="o">.</span><span class="n">HTTPConnection</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span></div><div class="parity0 source"><a href="#l17" id="l17"> 17</a> <span class="n">conn</span><span class="o">.</span><span class="n">request</span><span class="p">(</span><span class="s">&quot;GET&quot;</span><span class="p">,</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span></div><div class="parity1 source"><a href="#l18" id="l18"> 18</a> <span class="n">response</span> <span class="o">=</span> <span class="n">conn</span><span class="o">.</span><span class="n">getresponse</span><span class="p">()</span></div><div class="parity0 source"><a href="#l19" id="l19"> 19</a> <span class="kn">print</span> <span class="n">response</span><span class="o">.</span><span class="n">status</span><span class="p">,</span> <span class="n">response</span><span class="o">.</span><span class="n">reason</span></div><div class="parity1 source"><a href="#l20" id="l20"> 20</a> <span class="kn">for</span> <span class="n">h</span> <span class="ow">in</span> <span class="n">headers</span><span class="p">:</span></div><div class="parity0 source"><a href="#l21" id="l21"> 21</a> <span class="kn">if</span> <span class="n">response</span><span class="o">.</span><span class="n">getheader</span><span class="p">(</span><span class="n">h</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span></div><div class="parity1 source"><a href="#l22" id="l22"> 22</a> <span class="kn">print</span> <span class="s">&quot;</span><span class="si">%s</span><span class="s">: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">h</span><span class="p">,</span> <span class="n">response</span><span class="o">.</span><span class="n">getheader</span><span class="p">(</span><span class="n">h</span><span class="p">))</span></div><div class="parity0 source"><a href="#l23" id="l23"> 23</a> <span class="kn">print</span></div><div class="parity1 source"><a href="#l24" id="l24"> 24</a> <span class="n">data</span> <span class="o">=</span> <span class="n">response</span><span class="o">.</span><span class="n">read</span><span class="p">()</span></div><div class="parity0 source"><a href="#l25" id="l25"> 25</a> <span class="n">data</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="s">&#39;\d+ years&#39;</span><span class="p">,</span> <span class="s">&#39;many years&#39;</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span></div><div class="parity1 source"><a href="#l26" id="l26"> 26</a> <span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">data</span><span class="p">)</span></div><div class="parity0 source"><a href="#l27" id="l27"> 27</a> </div><div class="parity1 source"><a href="#l28" id="l28"> 28</a> <span class="kn">if</span> <span class="mi">200</span> <span class="o">&lt;=</span> <span class="n">response</span><span class="o">.</span><span class="n">status</span> <span class="o">&lt;=</span> <span class="mi">299</span><span class="p">:</span></div><div class="parity0 source"><a href="#l29" id="l29"> 29</a> <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span></div><div class="parity1 source"><a href="#l30" id="l30"> 30</a> <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span></div> 79 <div class="parity0 source"><a href="#l1" id="l1"> 1</a> <span class="c">#!/usr/bin/env python</span></div><div class="parity1 source"><a href="#l2" id="l2"> 2</a> </div><div class="parity0 source"><a href="#l3" id="l3"> 3</a> <span class="sd">&quot;&quot;&quot;Fun with generators. Corresponding Haskell implementation:</span></div><div class="parity1 source"><a href="#l4" id="l4"> 4</a> </div><div class="parity0 source"><a href="#l5" id="l5"> 5</a> <span class="sd">primes = 2 : sieve [3, 5..]</span></div><div class="parity1 source"><a href="#l6" id="l6"> 6</a> <span class="sd"> where sieve (p:ns) = p : sieve [n | n &lt;- ns, mod n p /= 0]</span></div><div class="parity0 source"><a href="#l7" id="l7"> 7</a> <span class="sd">&quot;&quot;&quot;</span></div><div class="parity1 source"><a href="#l8" id="l8"> 8</a> </div><div class="parity0 source"><a href="#l9" id="l9"> 9</a> <span class="kn">from</span> <span class="nn">itertools</span> <span class="kn">import</span> <span class="n">dropwhile</span><span class="p">,</span> <span class="n">ifilter</span><span class="p">,</span> <span class="n">islice</span><span class="p">,</span> <span class="n">count</span><span class="p">,</span> <span class="n">chain</span></div><div class="parity1 source"><a href="#l10" id="l10"> 10</a> </div><div class="parity0 source"><a href="#l11" id="l11"> 11</a> <span class="kn">def</span> <span class="nf">primes</span><span class="p">():</span></div><div class="parity1 source"><a href="#l12" id="l12"> 12</a> <span class="sd">&quot;&quot;&quot;Generate all primes.&quot;&quot;&quot;</span></div><div class="parity0 source"><a href="#l13" id="l13"> 13</a> <span class="kn">def</span> <span class="nf">sieve</span><span class="p">(</span><span class="n">ns</span><span class="p">):</span></div><div class="parity1 source"><a href="#l14" id="l14"> 14</a> <span class="n">p</span> <span class="o">=</span> <span class="n">ns</span><span class="o">.</span><span class="n">next</span><span class="p">()</span></div><div class="parity0 source"><a href="#l15" id="l15"> 15</a> <span class="c"># It is important to yield *here* in order to stop the</span></div><div class="parity1 source"><a href="#l16" id="l16"> 16</a> <span class="c"># infinite recursion.</span></div><div class="parity0 source"><a href="#l17" id="l17"> 17</a> <span class="kn">yield</span> <span class="n">p</span></div><div class="parity1 source"><a href="#l18" id="l18"> 18</a> <span class="n">ns</span> <span class="o">=</span> <span class="n">ifilter</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">n</span> <span class="o">%</span> <span class="n">p</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">ns</span><span class="p">)</span></div><div class="parity0 source"><a href="#l19" id="l19"> 19</a> <span class="kn">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">sieve</span><span class="p">(</span><span class="n">ns</span><span class="p">):</span></div><div class="parity1 source"><a href="#l20" id="l20"> 20</a> <span class="kn">yield</span> <span class="n">n</span></div><div class="parity0 source"><a href="#l21" id="l21"> 21</a> </div><div class="parity1 source"><a href="#l22" id="l22"> 22</a> <span class="n">odds</span> <span class="o">=</span> <span class="n">ifilter</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">i</span><span class="p">:</span> <span class="n">i</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">==</span> <span class="mi">1</span><span class="p">,</span> <span class="n">count</span><span class="p">())</span></div><div class="parity0 source"><a href="#l23" id="l23"> 23</a> <span class="kn">return</span> <span class="n">chain</span><span class="p">([</span><span class="mi">2</span><span class="p">],</span> <span class="n">sieve</span><span class="p">(</span><span class="n">dropwhile</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">n</span> <span class="o">&lt;</span> <span class="mi">3</span><span class="p">,</span> <span class="n">odds</span><span class="p">)))</span></div><div class="parity1 source"><a href="#l24" id="l24"> 24</a> </div><div class="parity0 source"><a href="#l25" id="l25"> 25</a> <span class="kn">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s">&quot;__main__&quot;</span><span class="p">:</span></div><div class="parity1 source"><a href="#l26" id="l26"> 26</a> <span class="kn">import</span> <span class="nn">sys</span></div><div class="parity0 source"><a href="#l27" id="l27"> 27</a> <span class="kn">try</span><span class="p">:</span></div><div class="parity1 source"><a href="#l28" id="l28"> 28</a> <span class="n">n</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span></div><div class="parity0 source"><a href="#l29" id="l29"> 29</a> <span class="kn">except</span> <span class="p">(</span><span class="ne">ValueError</span><span class="p">,</span> <span class="ne">IndexError</span><span class="p">):</span></div><div class="parity1 source"><a href="#l30" id="l30"> 30</a> <span class="n">n</span> <span class="o">=</span> <span class="mi">10</span></div><div class="parity0 source"><a href="#l31" id="l31"> 31</a> <span class="n">p</span> <span class="o">=</span> <span class="n">primes</span><span class="p">()</span></div><div class="parity1 source"><a href="#l32" id="l32"> 32</a> <span class="kn">print</span> <span class="s">&quot;The first </span><span class="si">%d</span><span class="s"> primes: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="nb">list</span><span class="p">(</span><span class="n">islice</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">n</span><span class="p">)))</span></div>
80 <div class="sourcelast"></div> 80 <div class="sourcelast"></div>
81 </div> 81 </div>
82 </div> 82 </div>
83 </div> 83 </div>
84 84
96 <link rel="icon" href="/static/hgicon.png" type="image/png" /> 96 <link rel="icon" href="/static/hgicon.png" type="image/png" />
97 <meta name="robots" content="index, nofollow" /> 97 <meta name="robots" content="index, nofollow" />
98 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" /> 98 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
99 99
100 <link rel="stylesheet" href="/highlightcss" type="text/css" /> 100 <link rel="stylesheet" href="/highlightcss" type="text/css" />
101 <title>test: 93b701795893 isolatin.txt</title> 101 <title>test: 3e1445510fe7 isolatin.txt</title>
102 </head> 102 </head>
103 <body> 103 <body>
104 104
105 <div class="container"> 105 <div class="container">
106 <div class="menu"> 106 <div class="menu">
107 <div class="logo"> 107 <div class="logo">
108 <a href="http://www.selenic.com/mercurial/"> 108 <a href="http://www.selenic.com/mercurial/">
109 <img src="/static/hglogo.png" alt="mercurial" /></a> 109 <img src="/static/hglogo.png" alt="mercurial" /></a>
110 </div> 110 </div>
111 <ul> 111 <ul>
112 <li><a href="/shortlog/93b701795893">log</a></li> 112 <li><a href="/shortlog/3e1445510fe7">log</a></li>
113 <li><a href="/graph/93b701795893">graph</a></li> 113 <li><a href="/graph/3e1445510fe7">graph</a></li>
114 <li><a href="/tags">tags</a></li> 114 <li><a href="/tags">tags</a></li>
115 <li><a href="/branches">branches</a></li> 115 <li><a href="/branches">branches</a></li>
116 </ul> 116 </ul>
117 <ul> 117 <ul>
118 <li><a href="/rev/93b701795893">changeset</a></li> 118 <li><a href="/rev/3e1445510fe7">changeset</a></li>
119 <li><a href="/file/93b701795893/">browse</a></li> 119 <li><a href="/file/3e1445510fe7/">browse</a></li>
120 </ul> 120 </ul>
121 <ul> 121 <ul>
122 <li class="active">file</li> 122 <li class="active">file</li>
123 <li><a href="/diff/93b701795893/isolatin.txt">diff</a></li> 123 <li><a href="/diff/3e1445510fe7/isolatin.txt">diff</a></li>
124 <li><a href="/annotate/93b701795893/isolatin.txt">annotate</a></li> 124 <li><a href="/annotate/3e1445510fe7/isolatin.txt">annotate</a></li>
125 <li><a href="/log/93b701795893/isolatin.txt">file log</a></li> 125 <li><a href="/log/3e1445510fe7/isolatin.txt">file log</a></li>
126 <li><a href="/raw-file/93b701795893/isolatin.txt">raw</a></li> 126 <li><a href="/raw-file/3e1445510fe7/isolatin.txt">raw</a></li>
127 </ul> 127 </ul>
128 </div> 128 </div>
129 129
130 <div class="main"> 130 <div class="main">
131 <h2><a href="/">test</a></h2> 131 <h2><a href="/">test</a></h2>
132 <h3>view isolatin.txt @ 0:93b701795893</h3> 132 <h3>view isolatin.txt @ 0:3e1445510fe7</h3>
133 133
134 <form class="search" action="/log"> 134 <form class="search" action="/log">
135 135
136 <p><input name="rev" id="search1" type="text" size="30" /></p> 136 <p><input name="rev" id="search1" type="text" size="30" /></p>
137 <div id="hint">find changesets by author, revision, 137 <div id="hint">find changesets by author, revision,
182 <link rel="icon" href="/static/hgicon.png" type="image/png" /> 182 <link rel="icon" href="/static/hgicon.png" type="image/png" />
183 <meta name="robots" content="index, nofollow" /> 183 <meta name="robots" content="index, nofollow" />
184 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" /> 184 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
185 185
186 <link rel="stylesheet" href="/highlightcss" type="text/css" /> 186 <link rel="stylesheet" href="/highlightcss" type="text/css" />
187 <title>test: get-with-headers.py annotate</title> 187 <title>test: primes.py annotate</title>
188 </head> 188 </head>
189 <body> 189 <body>
190 190
191 <div class="container"> 191 <div class="container">
192 <div class="menu"> 192 <div class="menu">
193 <div class="logo"> 193 <div class="logo">
194 <a href="http://www.selenic.com/mercurial/"> 194 <a href="http://www.selenic.com/mercurial/">
195 <img src="/static/hglogo.png" alt="mercurial" /></a> 195 <img src="/static/hglogo.png" alt="mercurial" /></a>
196 </div> 196 </div>
197 <ul> 197 <ul>
198 <li><a href="/shortlog/93b701795893">log</a></li> 198 <li><a href="/shortlog/3e1445510fe7">log</a></li>
199 <li><a href="/graph/93b701795893">graph</a></li> 199 <li><a href="/graph/3e1445510fe7">graph</a></li>
200 <li><a href="/tags">tags</a></li> 200 <li><a href="/tags">tags</a></li>
201 <li><a href="/branches">branches</a></li> 201 <li><a href="/branches">branches</a></li>
202 </ul> 202 </ul>
203 203
204 <ul> 204 <ul>
205 <li><a href="/rev/93b701795893">changeset</a></li> 205 <li><a href="/rev/3e1445510fe7">changeset</a></li>
206 <li><a href="/file/93b701795893/">browse</a></li> 206 <li><a href="/file/3e1445510fe7/">browse</a></li>
207 </ul> 207 </ul>
208 <ul> 208 <ul>
209 <li><a href="/file/93b701795893/get-with-headers.py">file</a></li> 209 <li><a href="/file/3e1445510fe7/primes.py">file</a></li>
210 <li><a href="/diff/93b701795893/get-with-headers.py">diff</a></li> 210 <li><a href="/diff/3e1445510fe7/primes.py">diff</a></li>
211 <li class="active">annotate</li> 211 <li class="active">annotate</li>
212 <li><a href="/log/93b701795893/get-with-headers.py">file log</a></li> 212 <li><a href="/log/3e1445510fe7/primes.py">file log</a></li>
213 <li><a href="/raw-annotate/93b701795893/get-with-headers.py">raw</a></li> 213 <li><a href="/raw-annotate/3e1445510fe7/primes.py">raw</a></li>
214 </ul> 214 </ul>
215 </div> 215 </div>
216 216
217 <div class="main"> 217 <div class="main">
218 <h2><a href="/">test</a></h2> 218 <h2><a href="/">test</a></h2>
219 <h3>annotate get-with-headers.py @ 0:93b701795893</h3> 219 <h3>annotate primes.py @ 0:3e1445510fe7</h3>
220 220
221 <form class="search" action="/log"> 221 <form class="search" action="/log">
222 222
223 <p><input name="rev" id="search1" type="text" size="30" /></p> 223 <p><input name="rev" id="search1" type="text" size="30" /></p>
224 <div id="hint">find changesets by author, revision, 224 <div id="hint">find changesets by author, revision,
256 <th class="line">&nbsp;&nbsp;line source</th> 256 <th class="line">&nbsp;&nbsp;line source</th>
257 </tr> 257 </tr>
258 258
259 <tr class="parity0"> 259 <tr class="parity0">
260 <td class="annotate"> 260 <td class="annotate">
261 <a href="/annotate/93b701795893/get-with-headers.py#1" 261 <a href="/annotate/3e1445510fe7/primes.py#1"
262 title="93b701795893: a">test@0</a> 262 title="3e1445510fe7: a">test@0</a>
263 </td> 263 </td>
264 <td class="source"><a href="#l1" id="l1"> 1</a> <span class="c">#!/usr/bin/env python</span></td> 264 <td class="source"><a href="#l1" id="l1"> 1</a> <span class="c">#!/usr/bin/env python</span></td>
265 </tr> 265 </tr>
266 <tr class="parity1"> 266 <tr class="parity1">
267 <td class="annotate"> 267 <td class="annotate">
268 <a href="/annotate/93b701795893/get-with-headers.py#2" 268 <a href="/annotate/3e1445510fe7/primes.py#2"
269 title="93b701795893: a">test@0</a> 269 title="3e1445510fe7: a">test@0</a>
270 </td> 270 </td>
271 <td class="source"><a href="#l2" id="l2"> 2</a> </td> 271 <td class="source"><a href="#l2" id="l2"> 2</a> </td>
272 </tr> 272 </tr>
273 <tr class="parity0"> 273 <tr class="parity0">
274 <td class="annotate"> 274 <td class="annotate">
275 <a href="/annotate/93b701795893/get-with-headers.py#3" 275 <a href="/annotate/3e1445510fe7/primes.py#3"
276 title="93b701795893: a">test@0</a> 276 title="3e1445510fe7: a">test@0</a>
277 </td> 277 </td>
278 <td class="source"><a href="#l3" id="l3"> 3</a> <span class="sd">&quot;&quot;&quot;This does HTTP GET requests given a host:port and path and returns</span></td> 278 <td class="source"><a href="#l3" id="l3"> 3</a> <span class="sd">&quot;&quot;&quot;Fun with generators. Corresponding Haskell implementation:</span></td>
279 </tr> 279 </tr>
280 <tr class="parity1"> 280 <tr class="parity1">
281 <td class="annotate"> 281 <td class="annotate">
282 <a href="/annotate/93b701795893/get-with-headers.py#4" 282 <a href="/annotate/3e1445510fe7/primes.py#4"
283 title="93b701795893: a">test@0</a> 283 title="3e1445510fe7: a">test@0</a>
284 </td> 284 </td>
285 <td class="source"><a href="#l4" id="l4"> 4</a> <span class="sd">a subset of the headers plus the body of the result.&quot;&quot;&quot;</span></td> 285 <td class="source"><a href="#l4" id="l4"> 4</a> </td>
286 </tr> 286 </tr>
287 <tr class="parity0"> 287 <tr class="parity0">
288 <td class="annotate"> 288 <td class="annotate">
289 <a href="/annotate/93b701795893/get-with-headers.py#5" 289 <a href="/annotate/3e1445510fe7/primes.py#5"
290 title="93b701795893: a">test@0</a> 290 title="3e1445510fe7: a">test@0</a>
291 </td> 291 </td>
292 <td class="source"><a href="#l5" id="l5"> 5</a> </td> 292 <td class="source"><a href="#l5" id="l5"> 5</a> <span class="sd">primes = 2 : sieve [3, 5..]</span></td>
293 </tr> 293 </tr>
294 <tr class="parity1"> 294 <tr class="parity1">
295 <td class="annotate"> 295 <td class="annotate">
296 <a href="/annotate/93b701795893/get-with-headers.py#6" 296 <a href="/annotate/3e1445510fe7/primes.py#6"
297 title="93b701795893: a">test@0</a> 297 title="3e1445510fe7: a">test@0</a>
298 </td> 298 </td>
299 <td class="source"><a href="#l6" id="l6"> 6</a> <span class="kn">import</span> <span class="nn">httplib</span><span class="o">,</span> <span class="nn">sys</span><span class="o">,</span> <span class="nn">re</span></td> 299 <td class="source"><a href="#l6" id="l6"> 6</a> <span class="sd"> where sieve (p:ns) = p : sieve [n | n &lt;- ns, mod n p /= 0]</span></td>
300 </tr> 300 </tr>
301 <tr class="parity0"> 301 <tr class="parity0">
302 <td class="annotate"> 302 <td class="annotate">
303 <a href="/annotate/93b701795893/get-with-headers.py#7" 303 <a href="/annotate/3e1445510fe7/primes.py#7"
304 title="93b701795893: a">test@0</a> 304 title="3e1445510fe7: a">test@0</a>
305 </td> 305 </td>
306 <td class="source"><a href="#l7" id="l7"> 7</a> </td> 306 <td class="source"><a href="#l7" id="l7"> 7</a> <span class="sd">&quot;&quot;&quot;</span></td>
307 </tr> 307 </tr>
308 <tr class="parity1"> 308 <tr class="parity1">
309 <td class="annotate"> 309 <td class="annotate">
310 <a href="/annotate/93b701795893/get-with-headers.py#8" 310 <a href="/annotate/3e1445510fe7/primes.py#8"
311 title="93b701795893: a">test@0</a> 311 title="3e1445510fe7: a">test@0</a>
312 </td> 312 </td>
313 <td class="source"><a href="#l8" id="l8"> 8</a> <span class="kn">try</span><span class="p">:</span></td> 313 <td class="source"><a href="#l8" id="l8"> 8</a> </td>
314 </tr> 314 </tr>
315 <tr class="parity0"> 315 <tr class="parity0">
316 <td class="annotate"> 316 <td class="annotate">
317 <a href="/annotate/93b701795893/get-with-headers.py#9" 317 <a href="/annotate/3e1445510fe7/primes.py#9"
318 title="93b701795893: a">test@0</a> 318 title="3e1445510fe7: a">test@0</a>
319 </td> 319 </td>
320 <td class="source"><a href="#l9" id="l9"> 9</a> <span class="kn">import</span> <span class="nn">msvcrt</span><span class="o">,</span> <span class="nn">os</span></td> 320 <td class="source"><a href="#l9" id="l9"> 9</a> <span class="kn">from</span> <span class="nn">itertools</span> <span class="kn">import</span> <span class="n">dropwhile</span><span class="p">,</span> <span class="n">ifilter</span><span class="p">,</span> <span class="n">islice</span><span class="p">,</span> <span class="n">count</span><span class="p">,</span> <span class="n">chain</span></td>
321 </tr> 321 </tr>
322 <tr class="parity1"> 322 <tr class="parity1">
323 <td class="annotate"> 323 <td class="annotate">
324 <a href="/annotate/93b701795893/get-with-headers.py#10" 324 <a href="/annotate/3e1445510fe7/primes.py#10"
325 title="93b701795893: a">test@0</a> 325 title="3e1445510fe7: a">test@0</a>
326 </td> 326 </td>
327 <td class="source"><a href="#l10" id="l10"> 10</a> <span class="n">msvcrt</span><span class="o">.</span><span class="n">setmode</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">fileno</span><span class="p">(),</span> <span class="n">os</span><span class="o">.</span><span class="n">O_BINARY</span><span class="p">)</span></td> 327 <td class="source"><a href="#l10" id="l10"> 10</a> </td>
328 </tr> 328 </tr>
329 <tr class="parity0"> 329 <tr class="parity0">
330 <td class="annotate"> 330 <td class="annotate">
331 <a href="/annotate/93b701795893/get-with-headers.py#11" 331 <a href="/annotate/3e1445510fe7/primes.py#11"
332 title="93b701795893: a">test@0</a> 332 title="3e1445510fe7: a">test@0</a>
333 </td> 333 </td>
334 <td class="source"><a href="#l11" id="l11"> 11</a> <span class="n">msvcrt</span><span class="o">.</span><span class="n">setmode</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">stderr</span><span class="o">.</span><span class="n">fileno</span><span class="p">(),</span> <span class="n">os</span><span class="o">.</span><span class="n">O_BINARY</span><span class="p">)</span></td> 334 <td class="source"><a href="#l11" id="l11"> 11</a> <span class="kn">def</span> <span class="nf">primes</span><span class="p">():</span></td>
335 </tr> 335 </tr>
336 <tr class="parity1"> 336 <tr class="parity1">
337 <td class="annotate"> 337 <td class="annotate">
338 <a href="/annotate/93b701795893/get-with-headers.py#12" 338 <a href="/annotate/3e1445510fe7/primes.py#12"
339 title="93b701795893: a">test@0</a> 339 title="3e1445510fe7: a">test@0</a>
340 </td> 340 </td>
341 <td class="source"><a href="#l12" id="l12"> 12</a> <span class="kn">except</span> <span class="ne">ImportError</span><span class="p">:</span></td> 341 <td class="source"><a href="#l12" id="l12"> 12</a> <span class="sd">&quot;&quot;&quot;Generate all primes.&quot;&quot;&quot;</span></td>
342 </tr> 342 </tr>
343 <tr class="parity0"> 343 <tr class="parity0">
344 <td class="annotate"> 344 <td class="annotate">
345 <a href="/annotate/93b701795893/get-with-headers.py#13" 345 <a href="/annotate/3e1445510fe7/primes.py#13"
346 title="93b701795893: a">test@0</a> 346 title="3e1445510fe7: a">test@0</a>
347 </td> 347 </td>
348 <td class="source"><a href="#l13" id="l13"> 13</a> <span class="kn">pass</span></td> 348 <td class="source"><a href="#l13" id="l13"> 13</a> <span class="kn">def</span> <span class="nf">sieve</span><span class="p">(</span><span class="n">ns</span><span class="p">):</span></td>
349 </tr> 349 </tr>
350 <tr class="parity1"> 350 <tr class="parity1">
351 <td class="annotate"> 351 <td class="annotate">
352 <a href="/annotate/93b701795893/get-with-headers.py#14" 352 <a href="/annotate/3e1445510fe7/primes.py#14"
353 title="93b701795893: a">test@0</a> 353 title="3e1445510fe7: a">test@0</a>
354 </td> 354 </td>
355 <td class="source"><a href="#l14" id="l14"> 14</a> </td> 355 <td class="source"><a href="#l14" id="l14"> 14</a> <span class="n">p</span> <span class="o">=</span> <span class="n">ns</span><span class="o">.</span><span class="n">next</span><span class="p">()</span></td>
356 </tr> 356 </tr>
357 <tr class="parity0"> 357 <tr class="parity0">
358 <td class="annotate"> 358 <td class="annotate">
359 <a href="/annotate/93b701795893/get-with-headers.py#15" 359 <a href="/annotate/3e1445510fe7/primes.py#15"
360 title="93b701795893: a">test@0</a> 360 title="3e1445510fe7: a">test@0</a>
361 </td> 361 </td>
362 <td class="source"><a href="#l15" id="l15"> 15</a> <span class="n">headers</span> <span class="o">=</span> <span class="p">[</span><span class="n">h</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="kn">for</span> <span class="n">h</span> <span class="ow">in</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mf">3</span><span class="p">:]]</span></td> 362 <td class="source"><a href="#l15" id="l15"> 15</a> <span class="c"># It is important to yield *here* in order to stop the</span></td>
363 </tr> 363 </tr>
364 <tr class="parity1"> 364 <tr class="parity1">
365 <td class="annotate"> 365 <td class="annotate">
366 <a href="/annotate/93b701795893/get-with-headers.py#16" 366 <a href="/annotate/3e1445510fe7/primes.py#16"
367 title="93b701795893: a">test@0</a> 367 title="3e1445510fe7: a">test@0</a>
368 </td> 368 </td>
369 <td class="source"><a href="#l16" id="l16"> 16</a> <span class="n">conn</span> <span class="o">=</span> <span class="n">httplib</span><span class="o">.</span><span class="n">HTTPConnection</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mf">1</span><span class="p">])</span></td> 369 <td class="source"><a href="#l16" id="l16"> 16</a> <span class="c"># infinite recursion.</span></td>
370 </tr> 370 </tr>
371 <tr class="parity0"> 371 <tr class="parity0">
372 <td class="annotate"> 372 <td class="annotate">
373 <a href="/annotate/93b701795893/get-with-headers.py#17" 373 <a href="/annotate/3e1445510fe7/primes.py#17"
374 title="93b701795893: a">test@0</a> 374 title="3e1445510fe7: a">test@0</a>
375 </td> 375 </td>
376 <td class="source"><a href="#l17" id="l17"> 17</a> <span class="n">conn</span><span class="o">.</span><span class="n">request</span><span class="p">(</span><span class="s">&quot;GET&quot;</span><span class="p">,</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mf">2</span><span class="p">])</span></td> 376 <td class="source"><a href="#l17" id="l17"> 17</a> <span class="kn">yield</span> <span class="n">p</span></td>
377 </tr> 377 </tr>
378 <tr class="parity1"> 378 <tr class="parity1">
379 <td class="annotate"> 379 <td class="annotate">
380 <a href="/annotate/93b701795893/get-with-headers.py#18" 380 <a href="/annotate/3e1445510fe7/primes.py#18"
381 title="93b701795893: a">test@0</a> 381 title="3e1445510fe7: a">test@0</a>
382 </td> 382 </td>
383 <td class="source"><a href="#l18" id="l18"> 18</a> <span class="n">response</span> <span class="o">=</span> <span class="n">conn</span><span class="o">.</span><span class="n">getresponse</span><span class="p">()</span></td> 383 <td class="source"><a href="#l18" id="l18"> 18</a> <span class="n">ns</span> <span class="o">=</span> <span class="n">ifilter</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">n</span> <span class="o">%</span> <span class="n">p</span> <span class="o">!=</span> <span class="mf">0</span><span class="p">,</span> <span class="n">ns</span><span class="p">)</span></td>
384 </tr> 384 </tr>
385 <tr class="parity0"> 385 <tr class="parity0">
386 <td class="annotate"> 386 <td class="annotate">
387 <a href="/annotate/93b701795893/get-with-headers.py#19" 387 <a href="/annotate/3e1445510fe7/primes.py#19"
388 title="93b701795893: a">test@0</a> 388 title="3e1445510fe7: a">test@0</a>
389 </td> 389 </td>
390 <td class="source"><a href="#l19" id="l19"> 19</a> <span class="kn">print</span> <span class="n">response</span><span class="o">.</span><span class="n">status</span><span class="p">,</span> <span class="n">response</span><span class="o">.</span><span class="n">reason</span></td> 390 <td class="source"><a href="#l19" id="l19"> 19</a> <span class="kn">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">sieve</span><span class="p">(</span><span class="n">ns</span><span class="p">):</span></td>
391 </tr> 391 </tr>
392 <tr class="parity1"> 392 <tr class="parity1">
393 <td class="annotate"> 393 <td class="annotate">
394 <a href="/annotate/93b701795893/get-with-headers.py#20" 394 <a href="/annotate/3e1445510fe7/primes.py#20"
395 title="93b701795893: a">test@0</a> 395 title="3e1445510fe7: a">test@0</a>
396 </td> 396 </td>
397 <td class="source"><a href="#l20" id="l20"> 20</a> <span class="kn">for</span> <span class="n">h</span> <span class="ow">in</span> <span class="n">headers</span><span class="p">:</span></td> 397 <td class="source"><a href="#l20" id="l20"> 20</a> <span class="kn">yield</span> <span class="n">n</span></td>
398 </tr> 398 </tr>
399 <tr class="parity0"> 399 <tr class="parity0">
400 <td class="annotate"> 400 <td class="annotate">
401 <a href="/annotate/93b701795893/get-with-headers.py#21" 401 <a href="/annotate/3e1445510fe7/primes.py#21"
402 title="93b701795893: a">test@0</a> 402 title="3e1445510fe7: a">test@0</a>
403 </td> 403 </td>
404 <td class="source"><a href="#l21" id="l21"> 21</a> <span class="kn">if</span> <span class="n">response</span><span class="o">.</span><span class="n">getheader</span><span class="p">(</span><span class="n">h</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span></td> 404 <td class="source"><a href="#l21" id="l21"> 21</a> </td>
405 </tr> 405 </tr>
406 <tr class="parity1"> 406 <tr class="parity1">
407 <td class="annotate"> 407 <td class="annotate">
408 <a href="/annotate/93b701795893/get-with-headers.py#22" 408 <a href="/annotate/3e1445510fe7/primes.py#22"
409 title="93b701795893: a">test@0</a> 409 title="3e1445510fe7: a">test@0</a>
410 </td> 410 </td>
411 <td class="source"><a href="#l22" id="l22"> 22</a> <span class="kn">print</span> <span class="s">&quot;</span><span class="si">%s</span><span class="s">: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">h</span><span class="p">,</span> <span class="n">response</span><span class="o">.</span><span class="n">getheader</span><span class="p">(</span><span class="n">h</span><span class="p">))</span></td> 411 <td class="source"><a href="#l22" id="l22"> 22</a> <span class="n">odds</span> <span class="o">=</span> <span class="n">ifilter</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">i</span><span class="p">:</span> <span class="n">i</span> <span class="o">%</span> <span class="mf">2</span> <span class="o">==</span> <span class="mf">1</span><span class="p">,</span> <span class="n">count</span><span class="p">())</span></td>
412 </tr> 412 </tr>
413 <tr class="parity0"> 413 <tr class="parity0">
414 <td class="annotate"> 414 <td class="annotate">
415 <a href="/annotate/93b701795893/get-with-headers.py#23" 415 <a href="/annotate/3e1445510fe7/primes.py#23"
416 title="93b701795893: a">test@0</a> 416 title="3e1445510fe7: a">test@0</a>
417 </td> 417 </td>
418 <td class="source"><a href="#l23" id="l23"> 23</a> <span class="kn">print</span></td> 418 <td class="source"><a href="#l23" id="l23"> 23</a> <span class="kn">return</span> <span class="n">chain</span><span class="p">([</span><span class="mf">2</span><span class="p">],</span> <span class="n">sieve</span><span class="p">(</span><span class="n">dropwhile</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">n</span> <span class="o">&lt;</span> <span class="mf">3</span><span class="p">,</span> <span class="n">odds</span><span class="p">)))</span></td>
419 </tr> 419 </tr>
420 <tr class="parity1"> 420 <tr class="parity1">
421 <td class="annotate"> 421 <td class="annotate">
422 <a href="/annotate/93b701795893/get-with-headers.py#24" 422 <a href="/annotate/3e1445510fe7/primes.py#24"
423 title="93b701795893: a">test@0</a> 423 title="3e1445510fe7: a">test@0</a>
424 </td> 424 </td>
425 <td class="source"><a href="#l24" id="l24"> 24</a> <span class="n">data</span> <span class="o">=</span> <span class="n">response</span><span class="o">.</span><span class="n">read</span><span class="p">()</span></td> 425 <td class="source"><a href="#l24" id="l24"> 24</a> </td>
426 </tr> 426 </tr>
427 <tr class="parity0"> 427 <tr class="parity0">
428 <td class="annotate"> 428 <td class="annotate">
429 <a href="/annotate/93b701795893/get-with-headers.py#25" 429 <a href="/annotate/3e1445510fe7/primes.py#25"
430 title="93b701795893: a">test@0</a> 430 title="3e1445510fe7: a">test@0</a>
431 </td> 431 </td>
432 <td class="source"><a href="#l25" id="l25"> 25</a> <span class="n">data</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="s">&#39;\d+ years&#39;</span><span class="p">,</span> <span class="s">&#39;many years&#39;</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span></td> 432 <td class="source"><a href="#l25" id="l25"> 25</a> <span class="kn">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s">&quot;__main__&quot;</span><span class="p">:</span></td>
433 </tr> 433 </tr>
434 <tr class="parity1"> 434 <tr class="parity1">
435 <td class="annotate"> 435 <td class="annotate">
436 <a href="/annotate/93b701795893/get-with-headers.py#26" 436 <a href="/annotate/3e1445510fe7/primes.py#26"
437 title="93b701795893: a">test@0</a> 437 title="3e1445510fe7: a">test@0</a>
438 </td> 438 </td>
439 <td class="source"><a href="#l26" id="l26"> 26</a> <span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">data</span><span class="p">)</span></td> 439 <td class="source"><a href="#l26" id="l26"> 26</a> <span class="kn">import</span> <span class="nn">sys</span></td>
440 </tr> 440 </tr>
441 <tr class="parity0"> 441 <tr class="parity0">
442 <td class="annotate"> 442 <td class="annotate">
443 <a href="/annotate/93b701795893/get-with-headers.py#27" 443 <a href="/annotate/3e1445510fe7/primes.py#27"
444 title="93b701795893: a">test@0</a> 444 title="3e1445510fe7: a">test@0</a>
445 </td> 445 </td>
446 <td class="source"><a href="#l27" id="l27"> 27</a> </td> 446 <td class="source"><a href="#l27" id="l27"> 27</a> <span class="kn">try</span><span class="p">:</span></td>
447 </tr> 447 </tr>
448 <tr class="parity1"> 448 <tr class="parity1">
449 <td class="annotate"> 449 <td class="annotate">
450 <a href="/annotate/93b701795893/get-with-headers.py#28" 450 <a href="/annotate/3e1445510fe7/primes.py#28"
451 title="93b701795893: a">test@0</a> 451 title="3e1445510fe7: a">test@0</a>
452 </td> 452 </td>
453 <td class="source"><a href="#l28" id="l28"> 28</a> <span class="kn">if</span> <span class="mf">200</span> <span class="o">&lt;=</span> <span class="n">response</span><span class="o">.</span><span class="n">status</span> <span class="o">&lt;=</span> <span class="mf">299</span><span class="p">:</span></td> 453 <td class="source"><a href="#l28" id="l28"> 28</a> <span class="n">n</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mf">1</span><span class="p">])</span></td>
454 </tr> 454 </tr>
455 <tr class="parity0"> 455 <tr class="parity0">
456 <td class="annotate"> 456 <td class="annotate">
457 <a href="/annotate/93b701795893/get-with-headers.py#29" 457 <a href="/annotate/3e1445510fe7/primes.py#29"
458 title="93b701795893: a">test@0</a> 458 title="3e1445510fe7: a">test@0</a>
459 </td> 459 </td>
460 <td class="source"><a href="#l29" id="l29"> 29</a> <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="mf">0</span><span class="p">)</span></td> 460 <td class="source"><a href="#l29" id="l29"> 29</a> <span class="kn">except</span> <span class="p">(</span><span class="ne">ValueError</span><span class="p">,</span> <span class="ne">IndexError</span><span class="p">):</span></td>
461 </tr> 461 </tr>
462 <tr class="parity1"> 462 <tr class="parity1">
463 <td class="annotate"> 463 <td class="annotate">
464 <a href="/annotate/93b701795893/get-with-headers.py#30" 464 <a href="/annotate/3e1445510fe7/primes.py#30"
465 title="93b701795893: a">test@0</a> 465 title="3e1445510fe7: a">test@0</a>
466 </td> 466 </td>
467 <td class="source"><a href="#l30" id="l30"> 30</a> <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="mf">1</span><span class="p">)</span></td> 467 <td class="source"><a href="#l30" id="l30"> 30</a> <span class="n">n</span> <span class="o">=</span> <span class="mf">10</span></td>
468 </tr>
469 <tr class="parity0">
470 <td class="annotate">
471 <a href="/annotate/3e1445510fe7/primes.py#31"
472 title="3e1445510fe7: a">test@0</a>
473 </td>
474 <td class="source"><a href="#l31" id="l31"> 31</a> <span class="n">p</span> <span class="o">=</span> <span class="n">primes</span><span class="p">()</span></td>
475 </tr>
476 <tr class="parity1">
477 <td class="annotate">
478 <a href="/annotate/3e1445510fe7/primes.py#32"
479 title="3e1445510fe7: a">test@0</a>
480 </td>
481 <td class="source"><a href="#l32" id="l32"> 32</a> <span class="kn">print</span> <span class="s">&quot;The first </span><span class="si">%d</span><span class="s"> primes: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="nb">list</span><span class="p">(</span><span class="n">islice</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">n</span><span class="p">)))</span></td>
468 </tr> 482 </tr>
469 </table> 483 </table>
470 </div> 484 </div>
471 </div> 485 </div>
472 </div> 486 </div>