Changeset 333

Show
Ignore:
Timestamp:
06/20/08 22:54:01 (4 years ago)
Author:
simon
Message:

Keyword game. New slides.

Location:
hodgestar/Talks/PythonObjects
Files:
2 added
7 modified

Legend:

Unmodified
Added
Removed
  • hodgestar/Talks/PythonObjects

    • Property svn:ignore set to
      *.pyc
  • hodgestar/Talks/PythonObjects/html/pyobjects-0.html

    r332 r333  
    1111<li><a href='pyobjects-2.html'>Out With The Old ...</a></li> 
    1212<li><a href='pyobjects-3.html'>Strings</a></li> 
    13 <li><a href='pyobjects-4.html'>Gamboling With Slots</a></li> 
    14 <li><a href='pyobjects-5.html'>PyObject C API</a></li> 
    15 <li><a href='pyobjects-6.html'>object.c</a></li> 
     13<li><a href='pyobjects-4.html'>Find Big Dict</a></li> 
     14<li><a href='pyobjects-5.html'>Gamboling With Slots</a></li> 
     15<li><a href='pyobjects-6.html'>PyObject C API</a></li> 
     16<li><a href='pyobjects-7.html'>object.c</a></li> 
    1617</ol> 
    1718<br /></body></html> 
  • hodgestar/Talks/PythonObjects/html/pyobjects-2.html

    r332 r333  
    99<li>Old style:<div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">class</span> <span class="nc">Old</span><span class="p">:</span> 
    1010<span class="gp">... </span>  <span class="k">pass</span> 
    11 <span class="gp">...</span> 
     11<span class="gp">... </span> 
    1212<span class="gp">&gt;&gt;&gt; </span><span class="nb">type</span><span class="p">(</span><span class="n">Old</span><span class="p">),</span> <span class="nb">type</span><span class="p">(</span><span class="n">Old</span><span class="p">())</span> 
    1313<span class="go">(&lt;type &#39;classobj&#39;&gt;, &lt;type &#39;instance&#39;&gt;)</span> 
     
    1717<li>New Style:<div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">class</span> <span class="nc">New</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> 
    1818<span class="gp">... </span>  <span class="k">pass</span> 
    19 <span class="gp">...</span> 
     19<span class="gp">... </span> 
    2020<span class="gp">&gt;&gt;&gt; </span><span class="nb">type</span><span class="p">(</span><span class="n">New</span><span class="p">),</span> <span class="nb">type</span><span class="p">(</span><span class="n">New</span><span class="p">())</span> 
    2121<span class="go">(&lt;type &#39;type&#39;&gt;, &lt;class &#39;__main__.New&#39;&gt;)</span> 
  • hodgestar/Talks/PythonObjects/html/pyobjects-4.html

    r332 r333  
    66</head> 
    77<body> 
    8 <a accesskey="P" href="pyobjects-3.html">Prev</a> | <a href="pyobjects-0.html">Index</a> | <a acesskey="N" href="pyobjects-5.html">Next</a><h2>Gamboling With Slots</h2><ul> 
     8<a accesskey="P" href="pyobjects-3.html">Prev</a> | <a href="pyobjects-0.html">Index</a> | <a acesskey="N" href="pyobjects-5.html">Next</a><h2>Find Big Dict</h2><ul> 
     9<li>Util:<div class="highlight"><pre><span class="k">def</span> <span class="nf">find_big_dict</span><span class="p">(</span><span class="n">x</span><span class="p">):</span> 
     10    <span class="k">import</span> <span class="nn">gc</span> 
     11    <span class="k">for</span> <span class="n">obj</span> <span class="ow">in</span> <span class="n">gc</span><span class="o">.</span><span class="n">get_referrers</span><span class="p">(</span><span class="n">x</span><span class="p">):</span> 
     12        <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span> <span class="ow">is</span> <span class="nb">dict</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mf">1000</span><span class="p">:</span> 
     13            <span class="k">return</span> <span class="n">obj</span> 
     14    <span class="k">return</span> <span class="bp">None</span> 
     15</pre></div> 
     16</li> 
     17 
     18<li>Example:<div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">interned</span> <span class="o">=</span> <span class="n">find_big_dict</span><span class="p">(</span><span class="s">&quot;a&quot;</span><span class="p">)</span> 
     19</pre></div> 
     20</li> 
     21 
     22<li>Game:<div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">import</span> <span class="nn">util</span> 
     23<span class="gp">&gt;&gt;&gt; </span><span class="n">util</span><span class="o">.</span><span class="n">keyword_quiz</span><span class="p">()</span> 
     24</pre></div> 
     25</li> 
    926</ul> 
    1027<br /><div class="footer"><hr />Everything You Didn't Want to Known About Python Objects</div></body></html> 
  • hodgestar/Talks/PythonObjects/html/pyobjects-5.html

    r332 r333  
    66</head> 
    77<body> 
    8 <a accesskey="P" href="pyobjects-4.html">Prev</a> | <a href="pyobjects-0.html">Index</a> | <a acesskey="N" href="pyobjects-6.html">Next</a><h2>PyObject C API</h2><ul> 
     8<a accesskey="P" href="pyobjects-4.html">Prev</a> | <a href="pyobjects-0.html">Index</a> | <a acesskey="N" href="pyobjects-6.html">Next</a><h2>Gamboling With Slots</h2><ul> 
    99</ul> 
    1010<br /><div class="footer"><hr />Everything You Didn't Want to Known About Python Objects</div></body></html> 
  • hodgestar/Talks/PythonObjects/html/pyobjects-6.html

    r332 r333  
    66</head> 
    77<body> 
    8 <a accesskey="P" href="pyobjects-5.html">Prev</a> | <a href="pyobjects-0.html">Index</a> | Next<h2>object.c</h2><ul> 
    9 <li><img src='tabs.png' alt='' /></li> 
     8<a accesskey="P" href="pyobjects-5.html">Prev</a> | <a href="pyobjects-0.html">Index</a> | <a acesskey="N" href="pyobjects-7.html">Next</a><h2>PyObject C API</h2><ul> 
    109</ul> 
    1110<br /><div class="footer"><hr />Everything You Didn't Want to Known About Python Objects</div></body></html> 
  • hodgestar/Talks/PythonObjects/pyobjects.py

    r332 r333  
    2424class CODE(object): 
    2525    def __init__(self, code, lexer="python", formatter="html", style="default"): 
    26         self.code = code 
     26        self.code = self._strip_indent(code) 
    2727        self.lexer = get_lexer_by_name(lexer) 
    2828        self.formatter = get_formatter_by_name(formatter, style=style) 
     
    3131        return pygments.highlight(self.code, self.lexer, self.formatter) 
    3232 
     33    def _strip_indent(self, code): 
     34        """Remove lead and trailing blank lines and strip indents.""" 
     35        itr = iter(code.split("\n")) 
     36        for line in itr: 
     37            if line.strip(): 
     38                break 
     39        indent = len(line) - len(line.lstrip()) 
     40        lines = [line[indent:]] 
     41        for line in itr: 
     42            lines.append(line[indent:]) 
     43        while lines and not lines[-1]: 
     44            del lines[-1] 
     45        return "\n".join(lines) 
     46 
     47class PYCODE(CODE): 
     48    def __init__(self, code, formatter="html", style="default"): 
     49        super(PYCODE, self).__init__(code, "python", formatter, style) 
     50 
    3351class PYCON(CODE): 
    3452    def __init__(self, code, formatter="html", style="default"): 
    35         code = "\n".join([x.strip() for x in code.split("\n")]) 
    36         lexer = "pycon" 
    37         super(PYCON, self).__init__(code, lexer, formatter, style) 
     53        super(PYCON, self).__init__(code, "pycon", formatter, style) 
    3854 
    3955class MyLecture(Lecture): 
     
    88104        Bullet("Constants strings of size <= 20 cache by parser (TODO: check)."), 
    89105    ), 
     106    Slide("Find Big Dict", 
     107        Bullet("Util:", PYCODE(""" 
     108            def find_big_dict(x): 
     109                import gc 
     110                for obj in gc.get_referrers(x): 
     111                    if type(obj) is dict and len(obj) > 1000: 
     112                        return obj 
     113                return None 
     114        """)), 
     115        Bullet("Example:", PYCON(""" 
     116            >>> interned = find_big_dict("a") 
     117        """)), 
     118        Bullet("Game:", PYCON(""" 
     119            >>> import util 
     120            >>> util.keyword_quiz() 
     121        """)), 
     122    ), 
    90123    Slide("Gamboling With Slots", 
    91124    ),