changeset 8485 | 0b93eff3721d |
parent 8447 | d5ebcf8f6855 |
child 8486 | 835b1ee111f4 |
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">"""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."""</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">"GET"</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">"</span><span class="si">%s</span><span class="s">: </span><span class="si">%s</span><span class="s">"</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">'\d+ years'</span><span class="p">,</span> <span class="s">'many years'</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"><=</span> <span class="n">response</span><span class="o">.</span><span class="n">status</span> <span class="o"><=</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">"""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 <- ns, mod n p /= 0]</span></div><div class="parity0 source"><a href="#l7" id="l7"> 7</a> <span class="sd">"""</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">"""Generate all primes."""</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"><</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">"__main__"</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">"The first </span><span class="si">%d</span><span class="s"> primes: </span><span class="si">%s</span><span class="s">"</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"> line source</th> |
256 <th class="line"> 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">"""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">"""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."""</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 <- 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">"""</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">"""Generate all primes."""</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">"GET"</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">"</span><span class="si">%s</span><span class="s">: </span><span class="si">%s</span><span class="s">"</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"><</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">'\d+ years'</span><span class="p">,</span> <span class="s">'many years'</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">"__main__"</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"><=</span> <span class="n">response</span><span class="o">.</span><span class="n">status</span> <span class="o"><=</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">"The first </span><span class="si">%d</span><span class="s"> primes: </span><span class="si">%s</span><span class="s">"</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> |