Redesign of Python site
Bengt Richter
bokr at oz.net
Wed Sep 10 10:49:05 EDT 2003
On Tue, 9 Sep 2003 14:06:22 -0500, Skip Montanaro <skip at pobox.com> wrote:
>
> amk> I envision people wanting information on a specific version first,
> amk> only later going to the more generic items under "documentation".
> amk> Do other people think this would be a good idea?
>
>I think docs are more important than specific versions. Sure, the first
>time they come to the site they'll be looking for "Python 2.3". But most
>times after that they'll want documentation. The most frequent page I visit
>on the site is
>
> http://www.python.org/dev/doc/devel/modindex.html
>
>That far outpaces any other page on the site, even the home page, so I
>bookmarked so it's one click away.
>
For the most part, I use downloaded HTML docs from my HD. And a command line
hack to search with regex the index page for links to the individual module docs
and/or launch the browser to a particular doc. E.g., (the opts handling code is a bit weird,
just a quick experiment, not meant as a model ;-)
[ 7:36] C:\pywk\clp>modoc
Usage: modoc.py [-h] [-re | -ire ] [-href] pattern
Without opts, pattern is taken as a module name to start browser showing docs for.
With opt(s):
-re: pattern is taken as regex to print available matching doc names
-ire: same as -re but case insensitive
-href: prints doc href paths along with names found.
-h: print this
Doc info is retrieved from the html file defined by environment name PY_DOC_INDEX,
e.g., modindex.html and this is located (along with pages therefrom referenced)
by prefixing the string defined by PY_DOC_PREFIX, e.g., D:/Python23/Doc/ (note
forward slashing and ending slash). The ref_name_patt regex may need change if
generated documentation links change format.
[ 7:37] C:\pywk\clp>modoc -ire os
MacOS TERMIOS macostools os
os.path ossaudiodev posix posixfile
termios
[ 7:37] C:\pywk\clp>modoc -re os
macostools os os.path ossaudiodev
posix posixfile termios
[ 7:37] C:\pywk\clp>modoc os.path
(browser pops up with os.path doc).
Oh, I forgot:
[ 7:39] C:\pywk\clp>modoc -re os -href
macostools: 'mac/module-macostools.html'
os: 'lib/module-os.html'
os.path: 'lib/module-os.path.html'
ossaudiodev: 'lib/module-ossaudiodev.html'
posix: 'lib/module-posix.html'
posixfile: 'lib/module-posixfile.html'
termios: 'lib/module-termios.html'
I was thinking of expanding it to cover more of the doc hierarchy, but never got a round tuit.
In case someone want to use/improve it:
(Note the
PY_DOC_PREFIX = os.environ.get('PY_DOC_PREFIX', r'D:/Python23/Doc/')
PY_DOC_INDEX = os.environ.get('PY_DOC_INDEX', r'modindex.html')
lines, which you may want to change for your system setup).
----< modoc.py >---------------------------------------------------------------------------
# modoc.py -- quick way to get to module docs from command line
"""
Usage: modoc.py [-h] [-re | -ire ] [-href] pattern
Without opts, pattern is taken as a module name to start browser showing docs for.
With opt(s):
-re: pattern is taken as regex to print available matching doc names
-ire: same as -re but case insensitive
-href: prints doc href paths along with names found.
-h: print this
Doc info is retrieved from the html file defined by environment name PY_DOC_INDEX,
e.g., modindex.html and this is located (along with pages therefrom referenced)
by prefixing the string defined by PY_DOC_PREFIX, e.g., D:/Python23/Doc/ (note
forward slashing and ending slash). The ref_name_patt regex may need change if
generated documentation links change format.
"""
__version__ = '0.10a'
# Original code by Bengt Richter, offered for free use, with no warranty of any kind.
# v0.1a: 20030813 13:29:40
# + docs and untested env variable defs for doc locs
# + using webbrowser module to start browser instead of os.system
# handy to run from c:\util\modoc.cmd wrapper, e.g.,
# @python c:\pywk\ut\modoc.py %*
import re, os, webbrowser
PY_DOC_PREFIX = os.environ.get('PY_DOC_PREFIX', r'D:/Python23/Doc/')
PY_DOC_INDEX = os.environ.get('PY_DOC_INDEX', r'modindex.html')
def dispmod(namex='', **opts):
"""Display module doc via browser or search names for match. See module doc."""
page = file(PY_DOC_PREFIX+PY_DOC_INDEX).read()
ref_name_patt = r'<dt><a href="([^"]+)"><tt class="module">([^<]+)' #XXX brittle
rx = re.compile(ref_name_patt)
modict = dict([(name, ref) for ref,name in rx.findall(page)])
names = modict.keys()
names.sort()
if opts:
regex = namex # default case sensitive match
if 're' in opts: pass
elif 'ire' in opts:
regex = '(?i)'+namex
elif 'all' in opts:
regex = None
if regex:
rx = re.compile(regex)
names = list(filter(rx.search, names))
names.sort()
for i, name in enumerate(names):
if 'href' in opts:
print '%19s: %r' % (name, modict[name])
else:
if i and not i%4: print
print '%-19s' % name,
else:
namex = namex.lower()
for name in names:
if name.lower() == namex:
webbrowser.open_new('%s%s' % (PY_DOC_PREFIX, modict[name]))
return
raise SystemExit, 'Module "%s" not found.' % namex
if __name__ == '__main__':
import sys
args = sys.argv[1:]
if not args or '-h' in args: raise SystemExit, __doc__
callargs=[]; callkw={}
while args:
arg = args.pop(0)
if arg.startswith('-'):
callkw[arg[1:]]=True
else:
callargs.append(arg)
dispmod(*callargs, **callkw)
-------------------------------------------------------------------------------------------
Regards,
Bengt Richter
More information about the Python-list
mailing list