Python-by-example - new online guide to Python Standard Library

Gerard Flanagan grflanagan at gmail.com
Mon Apr 7 11:46:34 CEST 2008


On Apr 3, 8:33 pm, AK <andrei.... at gmail.com> wrote:
> AK wrote:
> > Hello,
>
> > I find that I learn easier when I go from specific examples to a more
> > general explanation of function's utility and I made a reference guide
> > that will eventually document all functions, classes and methods in
> > Python's Standard Library. For now, I covered about 20 most important
> > modules. I will be adding more modules and eventually I'll cover
> > everything. Here's my progress so far, let me know if this is useful;
> > I'll be glad to hear comments/suggestions/etc:
>
> >http://www.lightbird.net/py-by-example/
>
> I uploaded an updated site incorporating most of the suggestions I
> received and fixing some errors along the way. I will be adding more
> examples to modules that are already covered and will try to add more
> modules during the following week. Thanks again to all who posted advice
> and comments!
>

I don't know if you've heard of Sphinx, it's being used to generate
the Python 2.6 docs but can also be used standalone. It may have
benefits for a project like yours, particularly with regard to
collaboration and maintainability over the long-term. I've been
playing about with it myself and put together a `very` basic site
using a few of the pages from your site:

The generated html is here:

http://gflanagan.net/site/python/pbe/pbe-sphinx-skeleton-build-0.1.tar.gz
http://gflanagan.net/site/python/pbe/pbe-sphinx-skeleton-build-0.1.zip

And the actual Sphinx 'app':

http://gflanagan.net/site/python/pbe/pbe-sphinx-skeleton-0.1.tar.gz
http://gflanagan.net/site/python/pbe/pbe-sphinx-skeleton-0.1.zip

For which you would need Sphinx (obviously): http://sphinx.pocoo.org/
which depends on docutils: http://docutils.sourceforge.net/
and pygments: http://pygments.org/

There's a make.bat for windows and a MakeFile for unix but the latter
is untested.

I've no time to spend on it further, but you're welcome to what's
there if you've any interest. (I repeat, it's just a proof of concept
- don't expect too much.)

As you might see, I preferred 'doctest' style code rather than the
commented results, but each to their own.

Sphinx uses ReST as its input format - below is what I cooked up for
'restifying' your html, not perfect but a brave attempt!

All the best.

Gerard

------------------------------------------------------------------

import textwrap
import re
import os
from BeautifulSoup import BeautifulSoup

def onmatch(m):
    return '\nRESULT' + m.group(2)

result = re.compile('<span class="result">(# )?(.*?)</span>',
                                        re.DOTALL | re.MULTILINE)
src = 'c:/workspace/pbe/orig/'

for infile in os.listdir(src):
    if not infile.endswith('-module.html'):
        continue
    title = infile[:-5]
    infile = src + infile
    outfile = infile[:-4] + 'rst'
    out = open(outfile, 'wb')
    out.write(title + '\n')
    out.write('='*len(title) + '\n\n')

    soup = BeautifulSoup(open(infile).read())

    for p in soup.findAll('ul'):
        print >> out
        for line in textwrap.wrap(p.span.contents[0], 79):
            print >> out,  line.lstrip()
        #code = ''.join(comment.sub(onmatch, str(p.pre)))
        code = result.sub(onmatch, str(p.pre)).splitlines()[1:-1]
        if code:
            print >> out
            print >> out, '::'
            print >> out
            for line in code:
                line = line.strip()
                if line:
                    leader = '    '
                    if line.startswith('RESULT'):
                        line = line[len('RESULT'):]
                    else:
                        leader += '>>> '
                    print >> out,  leader + line
                else:
                    print >> out
        print >> out

    out.close()
------------------------------------------------------------------




More information about the Python-list mailing list