<p>I have installed CherryPy 3.1.0,. Here is what happens when I try to run tutorial 9:</p>

<pre><code>$ cd /Library/Python/2.5/site-packages/cherrypy/tutorial/
$ python tut09_files.py
Traceback (most recent call last):
  File "tut09_files.py", line 48, in &lt;module&gt;
    from cherrypy.lib import static
ImportError: cannot import name static
</code></pre>

<p>The previous line in the file:</p>

<pre><code>import cherrypy
</code></pre>

<p>passes without error, so it appears that it can find cherrypy on the path. What am I missing?</p>

I am a big fan of the proposed HTML 5 solution (
```
data-
```
prefixed attributes). Edit: I'd add that there are probably better examples for the use of custom attributes. For instance, data that a custom application will use that have no analogue in standard attributes (eg. customization for event handlers based on something that can't necessarily be expressed in a className or id).