##// END OF EJS Templates
merge with crew
Benoit Boissinot -
r8490:ea1981f6 merge default
parent child Browse files
Show More
@@ -52,7 +52,8 b' filerevision = ../paper/filerevision.tmp'
52 fileannotate = ../paper/fileannotate.tmpl
52 fileannotate = ../paper/fileannotate.tmpl
53 filediff = ../paper/filediff.tmpl
53 filediff = ../paper/filediff.tmpl
54 filelog = ../paper/filelog.tmpl
54 filelog = ../paper/filelog.tmpl
55 fileline = '<div class="parity{parity} source"><a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</div>'
55 fileline = '
56 <div class="parity{parity} source"><a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</div>'
56 filelogentry = ../paper/filelogentry.tmpl
57 filelogentry = ../paper/filelogentry.tmpl
57
58
58 annotateline = '
59 annotateline = '
@@ -70,7 +70,12 b' filerevision = filerevision.tmpl'
70 fileannotate = fileannotate.tmpl
70 fileannotate = fileannotate.tmpl
71 filediff = filediff.tmpl
71 filediff = filediff.tmpl
72 filelog = filelog.tmpl
72 filelog = filelog.tmpl
73 fileline = '<div style="font-family:monospace" class="parity{parity}"><pre><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</pre></div>'
73 fileline = '
74 <div style="font-family:monospace" class="parity{parity}">
75 <pre>
76 <a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}
77 </pre>
78 </div>'
74 annotateline = '
79 annotateline = '
75 <tr style="font-family:monospace" class="parity{parity}">
80 <tr style="font-family:monospace" class="parity{parity}">
76 <td class="linenr" style="text-align: right;">
81 <td class="linenr" style="text-align: right;">
@@ -61,7 +61,12 b' filerevision = filerevision.tmpl'
61 fileannotate = fileannotate.tmpl
61 fileannotate = fileannotate.tmpl
62 filediff = filediff.tmpl
62 filediff = filediff.tmpl
63 filelog = filelog.tmpl
63 filelog = filelog.tmpl
64 fileline = '<div style="font-family:monospace" class="parity{parity}"><pre><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</pre></div>'
64 fileline = '
65 <div style="font-family:monospace" class="parity{parity}">
66 <pre>
67 <a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}
68 </pre>
69 </div>'
65 annotateline = '
70 annotateline = '
66 <tr class="parity{parity}">
71 <tr class="parity{parity}">
67 <td class="linenr">
72 <td class="linenr">
@@ -52,7 +52,8 b' filerevision = filerevision.tmpl'
52 fileannotate = fileannotate.tmpl
52 fileannotate = fileannotate.tmpl
53 filediff = filediff.tmpl
53 filediff = filediff.tmpl
54 filelog = filelog.tmpl
54 filelog = filelog.tmpl
55 fileline = '<div class="parity{parity} source"><a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</div>'
55 fileline = '
56 <div class="parity{parity} source"><a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</div>'
56 filelogentry = filelogentry.tmpl
57 filelogentry = filelogentry.tmpl
57
58
58 annotateline = '
59 annotateline = '
@@ -435,6 +435,7 b' files, or words in the commit message</d'
435
435
436 <div class="overflow">
436 <div class="overflow">
437 <div class="sourcefirst"> line source</div>
437 <div class="sourcefirst"> line source</div>
438
438 <div class="parity0 source"><a href="#l1" id="l1"> 1</a> foo
439 <div class="parity0 source"><a href="#l1" id="l1"> 1</a> foo
439 </div>
440 </div>
440 <div class="sourcelast"></div>
441 <div class="sourcelast"></div>
@@ -11,7 +11,41 b' EOF'
11
11
12 hg init test
12 hg init test
13 cd test
13 cd test
14 cp $TESTDIR/get-with-headers.py ./
14 # create random Python file to exercise Pygments
15 cat <<EOF > primes.py
16 #!/usr/bin/env python
17
18 """Fun with generators. Corresponding Haskell implementation:
19
20 primes = 2 : sieve [3, 5..]
21 where sieve (p:ns) = p : sieve [n | n <- ns, mod n p /= 0]
22 """
23
24 from itertools import dropwhile, ifilter, islice, count, chain
25
26 def primes():
27 """Generate all primes."""
28 def sieve(ns):
29 p = ns.next()
30 # It is important to yield *here* in order to stop the
31 # infinite recursion.
32 yield p
33 ns = ifilter(lambda n: n % p != 0, ns)
34 for n in sieve(ns):
35 yield n
36
37 odds = ifilter(lambda i: i % 2 == 1, count())
38 return chain([2], sieve(dropwhile(lambda n: n < 3, odds)))
39
40 if __name__ == "__main__":
41 import sys
42 try:
43 n = int(sys.argv[1])
44 except (ValueError, IndexError):
45 n = 10
46 p = primes()
47 print "The first %d primes: %s" % (n, list(islice(p, n)))
48 EOF
15
49
16 # check for UnicodeDecodeError with iso-8859-1 file contents
50 # check for UnicodeDecodeError with iso-8859-1 file contents
17 python -c 'fp = open("isolatin.txt", "w"); fp.write("h\xFCbsch\n"); fp.close();'
51 python -c 'fp = open("isolatin.txt", "w"); fp.write("h\xFCbsch\n"); fp.close();'
@@ -23,7 +57,7 b' hg serve -p $HGPORT -d -n test --pid-fil'
23 cat hg.pid >> $DAEMON_PIDS
57 cat hg.pid >> $DAEMON_PIDS
24
58
25 echo % hgweb filerevision, html
59 echo % hgweb filerevision, html
26 ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/get-with-headers.py') \
60 ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/primes.py') \
27 | sed "s/class=\"k\"/class=\"kn\"/g" | sed "s/class=\"mf\"/class=\"mi\"/g"
61 | sed "s/class=\"k\"/class=\"kn\"/g" | sed "s/class=\"mf\"/class=\"mi\"/g"
28
62
29 echo % hgweb filerevision, html
63 echo % hgweb filerevision, html
@@ -31,17 +65,17 b' echo % hgweb filerevision, html'
31 | sed "s/class=\"k\"/class=\"kn\"/g"
65 | sed "s/class=\"k\"/class=\"kn\"/g"
32
66
33 echo % hgweb fileannotate, html
67 echo % hgweb fileannotate, html
34 ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/annotate/tip/get-with-headers.py') \
68 ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/annotate/tip/primes.py') \
35 | sed "s/class=\"k\"/class=\"kn\"/g" | sed "s/class=\"mi\"/class=\"mf\"/g"
69 | sed "s/class=\"k\"/class=\"kn\"/g" | sed "s/class=\"mi\"/class=\"mf\"/g"
36
70
37 echo % hgweb fileannotate, raw
71 echo % hgweb fileannotate, raw
38 ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/annotate/tip/get-with-headers.py?style=raw') \
72 ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/annotate/tip/primes.py?style=raw') \
39 | sed "s/test@//" > a
73 | sed "s/test@//" > a
40
74
41 echo "200 Script output follows" > b
75 echo "200 Script output follows" > b
42 echo "" >> b
76 echo "" >> b
43 echo "" >> b
77 echo "" >> b
44 hg annotate "get-with-headers.py" >> b
78 hg annotate "primes.py" >> b
45 echo "" >> b
79 echo "" >> b
46 echo "" >> b
80 echo "" >> b
47 echo "" >> b
81 echo "" >> b
@@ -51,12 +85,12 b' diff -u b a'
51
85
52 echo
86 echo
53 echo % hgweb filerevision, raw
87 echo % hgweb filerevision, raw
54 ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/get-with-headers.py?style=raw') \
88 ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/primes.py?style=raw') \
55 > a
89 > a
56
90
57 echo "200 Script output follows" > b
91 echo "200 Script output follows" > b
58 echo "" >> b
92 echo "" >> b
59 hg cat get-with-headers.py >> b
93 hg cat primes.py >> b
60
94
61 diff -u b a
95 diff -u b a
62
96
@@ -1,5 +1,5 b''
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
@@ -12,7 +12,7 b' 200 Script output follows'
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
@@ -23,27 +23,27 b' 200 Script output follows'
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
@@ -76,7 +76,39 b' files, or words in the commit message</d'
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
80 <div class="parity0 source"><a href="#l1" id="l1"> 1</a> <span class="c">#!/usr/bin/env python</span></div>
81 <div class="parity1 source"><a href="#l2" id="l2"> 2</a> </div>
82 <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>
83 <div class="parity1 source"><a href="#l4" id="l4"> 4</a> </div>
84 <div class="parity0 source"><a href="#l5" id="l5"> 5</a> <span class="sd">primes = 2 : sieve [3, 5..]</span></div>
85 <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>
86 <div class="parity0 source"><a href="#l7" id="l7"> 7</a> <span class="sd">&quot;&quot;&quot;</span></div>
87 <div class="parity1 source"><a href="#l8" id="l8"> 8</a> </div>
88 <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>
89 <div class="parity1 source"><a href="#l10" id="l10"> 10</a> </div>
90 <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>
91 <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>
92 <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>
93 <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>
94 <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>
95 <div class="parity1 source"><a href="#l16" id="l16"> 16</a> <span class="c"># infinite recursion.</span></div>
96 <div class="parity0 source"><a href="#l17" id="l17"> 17</a> <span class="kn">yield</span> <span class="n">p</span></div>
97 <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>
98 <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>
99 <div class="parity1 source"><a href="#l20" id="l20"> 20</a> <span class="kn">yield</span> <span class="n">n</span></div>
100 <div class="parity0 source"><a href="#l21" id="l21"> 21</a> </div>
101 <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>
102 <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>
103 <div class="parity1 source"><a href="#l24" id="l24"> 24</a> </div>
104 <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>
105 <div class="parity1 source"><a href="#l26" id="l26"> 26</a> <span class="kn">import</span> <span class="nn">sys</span></div>
106 <div class="parity0 source"><a href="#l27" id="l27"> 27</a> <span class="kn">try</span><span class="p">:</span></div>
107 <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>
108 <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>
109 <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>
110 <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>
111 <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>
112 <div class="sourcelast"></div>
81 </div>
113 </div>
82 </div>
114 </div>
@@ -98,7 +130,7 b' 200 Script output follows'
98 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
130 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
99
131
100 <link rel="stylesheet" href="/highlightcss" type="text/css" />
132 <link rel="stylesheet" href="/highlightcss" type="text/css" />
101 <title>test: 93b701795893 isolatin.txt</title>
133 <title>test: 3e1445510fe7 isolatin.txt</title>
102 </head>
134 </head>
103 <body>
135 <body>
104
136
@@ -109,27 +141,27 b' 200 Script output follows'
109 <img src="/static/hglogo.png" alt="mercurial" /></a>
141 <img src="/static/hglogo.png" alt="mercurial" /></a>
110 </div>
142 </div>
111 <ul>
143 <ul>
112 <li><a href="/shortlog/93b701795893">log</a></li>
144 <li><a href="/shortlog/3e1445510fe7">log</a></li>
113 <li><a href="/graph/93b701795893">graph</a></li>
145 <li><a href="/graph/3e1445510fe7">graph</a></li>
114 <li><a href="/tags">tags</a></li>
146 <li><a href="/tags">tags</a></li>
115 <li><a href="/branches">branches</a></li>
147 <li><a href="/branches">branches</a></li>
116 </ul>
148 </ul>
117 <ul>
149 <ul>
118 <li><a href="/rev/93b701795893">changeset</a></li>
150 <li><a href="/rev/3e1445510fe7">changeset</a></li>
119 <li><a href="/file/93b701795893/">browse</a></li>
151 <li><a href="/file/3e1445510fe7/">browse</a></li>
120 </ul>
152 </ul>
121 <ul>
153 <ul>
122 <li class="active">file</li>
154 <li class="active">file</li>
123 <li><a href="/diff/93b701795893/isolatin.txt">diff</a></li>
155 <li><a href="/diff/3e1445510fe7/isolatin.txt">diff</a></li>
124 <li><a href="/annotate/93b701795893/isolatin.txt">annotate</a></li>
156 <li><a href="/annotate/3e1445510fe7/isolatin.txt">annotate</a></li>
125 <li><a href="/log/93b701795893/isolatin.txt">file log</a></li>
157 <li><a href="/log/3e1445510fe7/isolatin.txt">file log</a></li>
126 <li><a href="/raw-file/93b701795893/isolatin.txt">raw</a></li>
158 <li><a href="/raw-file/3e1445510fe7/isolatin.txt">raw</a></li>
127 </ul>
159 </ul>
128 </div>
160 </div>
129
161
130 <div class="main">
162 <div class="main">
131 <h2><a href="/">test</a></h2>
163 <h2><a href="/">test</a></h2>
132 <h3>view isolatin.txt @ 0:93b701795893</h3>
164 <h3>view isolatin.txt @ 0:3e1445510fe7</h3>
133
165
134 <form class="search" action="/log">
166 <form class="search" action="/log">
135
167
@@ -162,6 +194,7 b' files, or words in the commit message</d'
162
194
163 <div class="overflow">
195 <div class="overflow">
164 <div class="sourcefirst"> line source</div>
196 <div class="sourcefirst"> line source</div>
197
165 <div class="parity0 source"><a href="#l1" id="l1"> 1</a> h?bsch</div>
198 <div class="parity0 source"><a href="#l1" id="l1"> 1</a> h?bsch</div>
166 <div class="sourcelast"></div>
199 <div class="sourcelast"></div>
167 </div>
200 </div>
@@ -184,7 +217,7 b' 200 Script output follows'
184 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
217 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
185
218
186 <link rel="stylesheet" href="/highlightcss" type="text/css" />
219 <link rel="stylesheet" href="/highlightcss" type="text/css" />
187 <title>test: get-with-headers.py annotate</title>
220 <title>test: primes.py annotate</title>
188 </head>
221 </head>
189 <body>
222 <body>
190
223
@@ -195,28 +228,28 b' 200 Script output follows'
195 <img src="/static/hglogo.png" alt="mercurial" /></a>
228 <img src="/static/hglogo.png" alt="mercurial" /></a>
196 </div>
229 </div>
197 <ul>
230 <ul>
198 <li><a href="/shortlog/93b701795893">log</a></li>
231 <li><a href="/shortlog/3e1445510fe7">log</a></li>
199 <li><a href="/graph/93b701795893">graph</a></li>
232 <li><a href="/graph/3e1445510fe7">graph</a></li>
200 <li><a href="/tags">tags</a></li>
233 <li><a href="/tags">tags</a></li>
201 <li><a href="/branches">branches</a></li>
234 <li><a href="/branches">branches</a></li>
202 </ul>
235 </ul>
203
236
204 <ul>
237 <ul>
205 <li><a href="/rev/93b701795893">changeset</a></li>
238 <li><a href="/rev/3e1445510fe7">changeset</a></li>
206 <li><a href="/file/93b701795893/">browse</a></li>
239 <li><a href="/file/3e1445510fe7/">browse</a></li>
207 </ul>
240 </ul>
208 <ul>
241 <ul>
209 <li><a href="/file/93b701795893/get-with-headers.py">file</a></li>
242 <li><a href="/file/3e1445510fe7/primes.py">file</a></li>
210 <li><a href="/diff/93b701795893/get-with-headers.py">diff</a></li>
243 <li><a href="/diff/3e1445510fe7/primes.py">diff</a></li>
211 <li class="active">annotate</li>
244 <li class="active">annotate</li>
212 <li><a href="/log/93b701795893/get-with-headers.py">file log</a></li>
245 <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>
246 <li><a href="/raw-annotate/3e1445510fe7/primes.py">raw</a></li>
214 </ul>
247 </ul>
215 </div>
248 </div>
216
249
217 <div class="main">
250 <div class="main">
218 <h2><a href="/">test</a></h2>
251 <h2><a href="/">test</a></h2>
219 <h3>annotate get-with-headers.py @ 0:93b701795893</h3>
252 <h3>annotate primes.py @ 0:3e1445510fe7</h3>
220
253
221 <form class="search" action="/log">
254 <form class="search" action="/log">
222
255
@@ -258,213 +291,227 b' files, or words in the commit message</d'
258
291
259 <tr class="parity0">
292 <tr class="parity0">
260 <td class="annotate">
293 <td class="annotate">
261 <a href="/annotate/93b701795893/get-with-headers.py#1"
294 <a href="/annotate/3e1445510fe7/primes.py#1"
262 title="93b701795893: a">test@0</a>
295 title="3e1445510fe7: a">test@0</a>
263 </td>
296 </td>
264 <td class="source"><a href="#l1" id="l1"> 1</a> <span class="c">#!/usr/bin/env python</span></td>
297 <td class="source"><a href="#l1" id="l1"> 1</a> <span class="c">#!/usr/bin/env python</span></td>
265 </tr>
298 </tr>
266 <tr class="parity1">
299 <tr class="parity1">
267 <td class="annotate">
300 <td class="annotate">
268 <a href="/annotate/93b701795893/get-with-headers.py#2"
301 <a href="/annotate/3e1445510fe7/primes.py#2"
269 title="93b701795893: a">test@0</a>
302 title="3e1445510fe7: a">test@0</a>
270 </td>
303 </td>
271 <td class="source"><a href="#l2" id="l2"> 2</a> </td>
304 <td class="source"><a href="#l2" id="l2"> 2</a> </td>
272 </tr>
305 </tr>
273 <tr class="parity0">
306 <tr class="parity0">
274 <td class="annotate">
307 <td class="annotate">
275 <a href="/annotate/93b701795893/get-with-headers.py#3"
308 <a href="/annotate/3e1445510fe7/primes.py#3"
276 title="93b701795893: a">test@0</a>
309 title="3e1445510fe7: a">test@0</a>
277 </td>
310 </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>
311 <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>
312 </tr>
280 <tr class="parity1">
313 <tr class="parity1">
281 <td class="annotate">
314 <td class="annotate">
282 <a href="/annotate/93b701795893/get-with-headers.py#4"
315 <a href="/annotate/3e1445510fe7/primes.py#4"
283 title="93b701795893: a">test@0</a>
316 title="3e1445510fe7: a">test@0</a>
284 </td>
317 </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>
318 <td class="source"><a href="#l4" id="l4"> 4</a> </td>
286 </tr>
319 </tr>
287 <tr class="parity0">
320 <tr class="parity0">
288 <td class="annotate">
321 <td class="annotate">
289 <a href="/annotate/93b701795893/get-with-headers.py#5"
322 <a href="/annotate/3e1445510fe7/primes.py#5"
290 title="93b701795893: a">test@0</a>
323 title="3e1445510fe7: a">test@0</a>
291 </td>
324 </td>
292 <td class="source"><a href="#l5" id="l5"> 5</a> </td>
325 <td class="source"><a href="#l5" id="l5"> 5</a> <span class="sd">primes = 2 : sieve [3, 5..]</span></td>
293 </tr>
326 </tr>
294 <tr class="parity1">
327 <tr class="parity1">
295 <td class="annotate">
328 <td class="annotate">
296 <a href="/annotate/93b701795893/get-with-headers.py#6"
329 <a href="/annotate/3e1445510fe7/primes.py#6"
297 title="93b701795893: a">test@0</a>
330 title="3e1445510fe7: a">test@0</a>
298 </td>
331 </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>
332 <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>
333 </tr>
301 <tr class="parity0">
334 <tr class="parity0">
302 <td class="annotate">
335 <td class="annotate">
303 <a href="/annotate/93b701795893/get-with-headers.py#7"
336 <a href="/annotate/3e1445510fe7/primes.py#7"
304 title="93b701795893: a">test@0</a>
337 title="3e1445510fe7: a">test@0</a>
305 </td>
338 </td>
306 <td class="source"><a href="#l7" id="l7"> 7</a> </td>
339 <td class="source"><a href="#l7" id="l7"> 7</a> <span class="sd">&quot;&quot;&quot;</span></td>
307 </tr>
340 </tr>
308 <tr class="parity1">
341 <tr class="parity1">
309 <td class="annotate">
342 <td class="annotate">
310 <a href="/annotate/93b701795893/get-with-headers.py#8"
343 <a href="/annotate/3e1445510fe7/primes.py#8"
311 title="93b701795893: a">test@0</a>
344 title="3e1445510fe7: a">test@0</a>
312 </td>
345 </td>
313 <td class="source"><a href="#l8" id="l8"> 8</a> <span class="kn">try</span><span class="p">:</span></td>
346 <td class="source"><a href="#l8" id="l8"> 8</a> </td>
314 </tr>
347 </tr>
315 <tr class="parity0">
348 <tr class="parity0">
316 <td class="annotate">
349 <td class="annotate">
317 <a href="/annotate/93b701795893/get-with-headers.py#9"
350 <a href="/annotate/3e1445510fe7/primes.py#9"
318 title="93b701795893: a">test@0</a>
351 title="3e1445510fe7: a">test@0</a>
319 </td>
352 </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>
353 <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>
354 </tr>
322 <tr class="parity1">
355 <tr class="parity1">
323 <td class="annotate">
356 <td class="annotate">
324 <a href="/annotate/93b701795893/get-with-headers.py#10"
357 <a href="/annotate/3e1445510fe7/primes.py#10"
325 title="93b701795893: a">test@0</a>
358 title="3e1445510fe7: a">test@0</a>
326 </td>
359 </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>
360 <td class="source"><a href="#l10" id="l10"> 10</a> </td>
328 </tr>
361 </tr>
329 <tr class="parity0">
362 <tr class="parity0">
330 <td class="annotate">
363 <td class="annotate">
331 <a href="/annotate/93b701795893/get-with-headers.py#11"
364 <a href="/annotate/3e1445510fe7/primes.py#11"
332 title="93b701795893: a">test@0</a>
365 title="3e1445510fe7: a">test@0</a>
333 </td>
366 </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>
367 <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>
368 </tr>
336 <tr class="parity1">
369 <tr class="parity1">
337 <td class="annotate">
370 <td class="annotate">
338 <a href="/annotate/93b701795893/get-with-headers.py#12"
371 <a href="/annotate/3e1445510fe7/primes.py#12"
339 title="93b701795893: a">test@0</a>
372 title="3e1445510fe7: a">test@0</a>
340 </td>
373 </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>
374 <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>
375 </tr>
343 <tr class="parity0">
376 <tr class="parity0">
344 <td class="annotate">
377 <td class="annotate">
345 <a href="/annotate/93b701795893/get-with-headers.py#13"
378 <a href="/annotate/3e1445510fe7/primes.py#13"
346 title="93b701795893: a">test@0</a>
379 title="3e1445510fe7: a">test@0</a>
347 </td>
380 </td>
348 <td class="source"><a href="#l13" id="l13"> 13</a> <span class="kn">pass</span></td>
381 <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>
382 </tr>
350 <tr class="parity1">
383 <tr class="parity1">
351 <td class="annotate">
384 <td class="annotate">
352 <a href="/annotate/93b701795893/get-with-headers.py#14"
385 <a href="/annotate/3e1445510fe7/primes.py#14"
353 title="93b701795893: a">test@0</a>
386 title="3e1445510fe7: a">test@0</a>
354 </td>
387 </td>
355 <td class="source"><a href="#l14" id="l14"> 14</a> </td>
388 <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>
389 </tr>
357 <tr class="parity0">
390 <tr class="parity0">
358 <td class="annotate">
391 <td class="annotate">
359 <a href="/annotate/93b701795893/get-with-headers.py#15"
392 <a href="/annotate/3e1445510fe7/primes.py#15"
360 title="93b701795893: a">test@0</a>
393 title="3e1445510fe7: a">test@0</a>
361 </td>
394 </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>
395 <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>
396 </tr>
364 <tr class="parity1">
397 <tr class="parity1">
365 <td class="annotate">
398 <td class="annotate">
366 <a href="/annotate/93b701795893/get-with-headers.py#16"
399 <a href="/annotate/3e1445510fe7/primes.py#16"
367 title="93b701795893: a">test@0</a>
400 title="3e1445510fe7: a">test@0</a>
368 </td>
401 </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>
402 <td class="source"><a href="#l16" id="l16"> 16</a> <span class="c"># infinite recursion.</span></td>
370 </tr>
403 </tr>
371 <tr class="parity0">
404 <tr class="parity0">
372 <td class="annotate">
405 <td class="annotate">
373 <a href="/annotate/93b701795893/get-with-headers.py#17"
406 <a href="/annotate/3e1445510fe7/primes.py#17"
374 title="93b701795893: a">test@0</a>
407 title="3e1445510fe7: a">test@0</a>
375 </td>
408 </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>
409 <td class="source"><a href="#l17" id="l17"> 17</a> <span class="kn">yield</span> <span class="n">p</span></td>
377 </tr>
410 </tr>
378 <tr class="parity1">
411 <tr class="parity1">
379 <td class="annotate">
412 <td class="annotate">
380 <a href="/annotate/93b701795893/get-with-headers.py#18"
413 <a href="/annotate/3e1445510fe7/primes.py#18"
381 title="93b701795893: a">test@0</a>
414 title="3e1445510fe7: a">test@0</a>
382 </td>
415 </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>
416 <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>
417 </tr>
385 <tr class="parity0">
418 <tr class="parity0">
386 <td class="annotate">
419 <td class="annotate">
387 <a href="/annotate/93b701795893/get-with-headers.py#19"
420 <a href="/annotate/3e1445510fe7/primes.py#19"
388 title="93b701795893: a">test@0</a>
421 title="3e1445510fe7: a">test@0</a>
389 </td>
422 </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>
423 <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>
424 </tr>
392 <tr class="parity1">
425 <tr class="parity1">
393 <td class="annotate">
426 <td class="annotate">
394 <a href="/annotate/93b701795893/get-with-headers.py#20"
427 <a href="/annotate/3e1445510fe7/primes.py#20"
395 title="93b701795893: a">test@0</a>
428 title="3e1445510fe7: a">test@0</a>
396 </td>
429 </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>
430 <td class="source"><a href="#l20" id="l20"> 20</a> <span class="kn">yield</span> <span class="n">n</span></td>
398 </tr>
431 </tr>
399 <tr class="parity0">
432 <tr class="parity0">
400 <td class="annotate">
433 <td class="annotate">
401 <a href="/annotate/93b701795893/get-with-headers.py#21"
434 <a href="/annotate/3e1445510fe7/primes.py#21"
402 title="93b701795893: a">test@0</a>
435 title="3e1445510fe7: a">test@0</a>
403 </td>
436 </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>
437 <td class="source"><a href="#l21" id="l21"> 21</a> </td>
405 </tr>
438 </tr>
406 <tr class="parity1">
439 <tr class="parity1">
407 <td class="annotate">
440 <td class="annotate">
408 <a href="/annotate/93b701795893/get-with-headers.py#22"
441 <a href="/annotate/3e1445510fe7/primes.py#22"
409 title="93b701795893: a">test@0</a>
442 title="3e1445510fe7: a">test@0</a>
410 </td>
443 </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>
444 <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>
445 </tr>
413 <tr class="parity0">
446 <tr class="parity0">
414 <td class="annotate">
447 <td class="annotate">
415 <a href="/annotate/93b701795893/get-with-headers.py#23"
448 <a href="/annotate/3e1445510fe7/primes.py#23"
416 title="93b701795893: a">test@0</a>
449 title="3e1445510fe7: a">test@0</a>
417 </td>
450 </td>
418 <td class="source"><a href="#l23" id="l23"> 23</a> <span class="kn">print</span></td>
451 <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>
452 </tr>
420 <tr class="parity1">
453 <tr class="parity1">
421 <td class="annotate">
454 <td class="annotate">
422 <a href="/annotate/93b701795893/get-with-headers.py#24"
455 <a href="/annotate/3e1445510fe7/primes.py#24"
423 title="93b701795893: a">test@0</a>
456 title="3e1445510fe7: a">test@0</a>
424 </td>
457 </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>
458 <td class="source"><a href="#l24" id="l24"> 24</a> </td>
426 </tr>
459 </tr>
427 <tr class="parity0">
460 <tr class="parity0">
428 <td class="annotate">
461 <td class="annotate">
429 <a href="/annotate/93b701795893/get-with-headers.py#25"
462 <a href="/annotate/3e1445510fe7/primes.py#25"
430 title="93b701795893: a">test@0</a>
463 title="3e1445510fe7: a">test@0</a>
431 </td>
464 </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>
465 <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>
466 </tr>
434 <tr class="parity1">
467 <tr class="parity1">
435 <td class="annotate">
468 <td class="annotate">
436 <a href="/annotate/93b701795893/get-with-headers.py#26"
469 <a href="/annotate/3e1445510fe7/primes.py#26"
437 title="93b701795893: a">test@0</a>
470 title="3e1445510fe7: a">test@0</a>
438 </td>
471 </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>
472 <td class="source"><a href="#l26" id="l26"> 26</a> <span class="kn">import</span> <span class="nn">sys</span></td>
440 </tr>
473 </tr>
441 <tr class="parity0">
474 <tr class="parity0">
442 <td class="annotate">
475 <td class="annotate">
443 <a href="/annotate/93b701795893/get-with-headers.py#27"
476 <a href="/annotate/3e1445510fe7/primes.py#27"
444 title="93b701795893: a">test@0</a>
477 title="3e1445510fe7: a">test@0</a>
445 </td>
478 </td>
446 <td class="source"><a href="#l27" id="l27"> 27</a> </td>
479 <td class="source"><a href="#l27" id="l27"> 27</a> <span class="kn">try</span><span class="p">:</span></td>
447 </tr>
480 </tr>
448 <tr class="parity1">
481 <tr class="parity1">
449 <td class="annotate">
482 <td class="annotate">
450 <a href="/annotate/93b701795893/get-with-headers.py#28"
483 <a href="/annotate/3e1445510fe7/primes.py#28"
451 title="93b701795893: a">test@0</a>
484 title="3e1445510fe7: a">test@0</a>
452 </td>
485 </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>
486 <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>
487 </tr>
455 <tr class="parity0">
488 <tr class="parity0">
456 <td class="annotate">
489 <td class="annotate">
457 <a href="/annotate/93b701795893/get-with-headers.py#29"
490 <a href="/annotate/3e1445510fe7/primes.py#29"
458 title="93b701795893: a">test@0</a>
491 title="3e1445510fe7: a">test@0</a>
459 </td>
492 </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>
493 <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>
494 </tr>
462 <tr class="parity1">
495 <tr class="parity1">
463 <td class="annotate">
496 <td class="annotate">
464 <a href="/annotate/93b701795893/get-with-headers.py#30"
497 <a href="/annotate/3e1445510fe7/primes.py#30"
465 title="93b701795893: a">test@0</a>
498 title="3e1445510fe7: a">test@0</a>
466 </td>
499 </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>
500 <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>
501 </tr>
502 <tr class="parity0">
503 <td class="annotate">
504 <a href="/annotate/3e1445510fe7/primes.py#31"
505 title="3e1445510fe7: a">test@0</a>
506 </td>
507 <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>
508 </tr>
509 <tr class="parity1">
510 <td class="annotate">
511 <a href="/annotate/3e1445510fe7/primes.py#32"
512 title="3e1445510fe7: a">test@0</a>
513 </td>
514 <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>
515 </tr>
469 </table>
516 </table>
470 </div>
517 </div>
General Comments 0
You need to be logged in to leave comments. Login now