Cache lines from files.
This is intended to read lines from modules imported -- hence if a filename
is not found, it will look down the module search path for a file by
that name.


Discard cache entries that are out of date.
(This is not checked upon each call!)
Clear the cache entirely.
getline(filename, lineno)
Get the lines for a file from the cache.
Update the cache if it doesn't contain an entry for this file already.
Update a cache entry and return its list of lines.
If something's wrong, print a message, discard the cache entry,
and return an empty list.

        __all__ = ['getline', 'clearcache', 'checkcache']
cache = {'/usr/local/lib/python2.3/': (21364L, 1073458744, ['"""HTTP server base class.\n', '\n', "Note: the class in this module doesn't implement any HTTP request; see\n", 'SimpleHTTPServer for simple implementations of GET, HEAD and POST\n', '(including CGI scripts). It does, however, optionally implement HTTP/1.1\n', 'persistent connections, as of version 0.3.\n', '\n', 'Contents:\n', '\n', '- BaseHTTPRequestHandler: HTTP request handler base class\n', '- test: test function\n', '\n', 'XXX To do:\n', '\n', '- log requests even later (to capture byte count)\n', '- log user-agent header and other interesting goodies\n', '- send error log to separate file\n', '"""\n', '\n', '\n', ...], '/usr/local/lib/python2.3/'), '/usr/local/lib/python2.3/': (11071L, 1073458744, ['"""CGI-savvy HTTP Server.\n', '\n', 'This module builds on SimpleHTTPServer by implementing GET and POST\n', 'requests to cgi-bin scripts.\n', '\n', 'If the os.fork() function is not present (e.g. on Windows),\n', 'os.popen2() is used as a fallback, with slightly altered semantics; if\n', 'that function is not present either (e.g. on Macintosh), only Python\n', 'scripts are supported, and they are executed by the current process.\n', '\n', 'In all cases, the implementation is intentionally naive -- all\n', 'requests are executed sychronously.\n', '\n', "SECURITY WARNING: DON'T USE THIS CODE UNLESS YOU ARE INSIDE A FIREWALL\n", '-- it may execute arbitrary Python code or external programs.\n', '\n', '"""\n', '\n', '\n', '__version__ = "0.4"\n', ...], '/usr/local/lib/python2.3/'), '/usr/local/lib/python2.3/': (22138L, 1073458744, ['"""Configuration file parser.\n', '\n', 'A setup file consists of sections, lead by a "[section]" header,\n', 'and followed by "name: value" entries, with continuations and such in\n', 'the style of RFC 822.\n', '\n', 'The option values can contain format strings which refer to other values in\n', 'the same section, or values in a special [DEFAULT] section.\n', '\n', 'For example:\n', '\n', ' something: %(dir)s/whatever\n', '\n', 'would resolve the "%(dir)s" to the value of dir. All reference\n', 'expansions are done late, on demand.\n', '\n', 'Intrinsic defaults can be specified by passing them into the\n', 'ConfigParser constructor as a dictionary.\n', '\n', 'class:\n', ...], '/usr/local/lib/python2.3/'), '/usr/local/lib/python2.3/': (25180L, 1073458744, ['#!/usr/bin/env python\n', '#\n', '\n', '####\n', "# Copyright 2000 by Timothy O'Malley <>\n", '#\n', '# All Rights Reserved\n', '#\n', '# Permission to use, copy, modify, and distribute this software\n', '# and its documentation for any purpose and without fee is hereby\n', '# granted, provided that the above copyright notice appear in all\n', '# copies and that both that copyright notice and this permission\n', '# notice appear in supporting documentation, and that the name of\n', "# Timothy O'Malley not be used in advertising or publicity\n", '# pertaining to distribution of the software without specific, written\n', '# prior permission.\n', '#\n', "# Timothy O'Malley DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS\n", '# SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n', "# AND FITNESS, IN NO EVENT SHALL Timothy O'Malley BE LIABLE FOR\n", ...], '/usr/local/lib/python2.3/'), '/usr/local/lib/python2.3/': (11032L, 1073458744, ['"""Self documenting XML-RPC Server.\n', '\n', 'This module can be used to create XML-RPC servers that\n', 'serve pydoc-style documentation in response to HTTP\n', 'GET requests. This documentation is dynamically generated\n', 'based on the functions and methods registered with the\n', 'server.\n', '\n', 'This module is built upon the pydoc and SimpleXMLRPCServer\n', 'modules.\n', '"""\n', '\n', 'import pydoc\n', 'import inspect\n', 'import types\n', 'import re\n', 'import sys\n', '\n', 'from SimpleXMLRPCServer import SimpleXMLRPCServer,\\\n', ' SimpleXMLRPCRequestHandler,\\\n', ...], '/usr/local/lib/python2.3/'), '/usr/local/lib/python2.3/': (404L, 1073458744, ['"""Backward-compatibility version of FCNTL; export constants exported by\n', 'fcntl, and issue a deprecation warning.\n', '"""\n', '\n', 'import warnings\n', 'warnings.warn("the FCNTL module is deprecated; please use fcntl",\n', ' DeprecationWarning)\n', '\n', '\n', '# Export the constants known to the fcntl module:\n', 'from fcntl import *\n', '\n', '# and *only* the constants:\n', '__all__ = [s for s in dir() if s[0] in "ABCDEFGHIJKLMNOPQRSTUVWXYZ"]\n'], '/usr/local/lib/python2.3/'), '/usr/local/lib/python2.3/': (13109L, 1073458744, ['"""A parser for HTML and XHTML."""\n', '\n', '# This file is based on, but the API is slightly different.\n', '\n', '# XXX There should be a way to distinguish between PCDATA (parsed\n', '# character data -- the normal case), RCDATA (replaceable character\n', '# data -- only char and entity references and end tags are special)\n', '# and CDATA (character data -- only end tags are special).\n', '\n', '\n', 'import markupbase\n', 'import re\n', '\n', '# Regular expressions used for parsing\n', '\n', "interesting_normal = re.compile('[&<]')\n", "interesting_cdata = re.compile(r'<(/|\\Z)')\n", "incomplete = re.compile('&[a-zA-Z#]')\n", '\n', "entityref = re.compile('&([a-zA-Z][-.a-zA-Z0-9]*)[^a-zA-Z0-9]')\n", ...], '/usr/local/lib/python2.3/'), '/usr/local/lib/python2.3/': (6341L, 1073458744, ['"""Generic MIME writer.\n', '\n', 'This module defines the class MimeWriter. The MimeWriter class implements\n', "a basic formatter for creating MIME multi-part files. It doesn't seek around\n", 'the output file nor does it use large amounts of buffer space. You must write\n', 'the parts out in the order that they should occur in the final file.\n', 'MimeWriter does buffer the headers you add, allowing you to rearrange their\n', 'order.\n', '\n', '"""\n', '\n', '\n', 'import mimetools\n', '\n', '__all__ = ["MimeWriter"]\n', '\n', 'class MimeWriter:\n', '\n', ' """Generic MIME writer.\n', '\n', ...], '/usr/local/lib/python2.3/'), '/usr/local/lib/python2.3/': (7834L, 1073458744, ['"""A multi-producer, multi-consumer queue."""\n', '\n', 'from time import time as _time, sleep as _sleep\n', '\n', "__all__ = ['Empty', 'Full', 'Queue']\n", '\n', 'class Empty(Exception):\n', ' "Exception raised by Queue.get(block=0)/get_nowait()."\n', ' pass\n', '\n', 'class Full(Exception):\n', ' "Exception raised by Queue.put(block=0)/put_nowait()."\n', ' pass\n', '\n', 'class Queue:\n', ' def __init__(self, maxsize=0):\n', ' """Initialize a queue object with a given maximum size.\n', '\n', ' If maxsize is <= 0, the queue size is infinite.\n', ' """\n', ...], '/usr/local/lib/python2.3/'), '/usr/local/lib/python2.3/': (6461L, 1073458744, ['"""Simple HTTP Server.\n', '\n', 'This module builds on BaseHTTPServer by implementing the standard GET\n', 'and HEAD requests in a fairly straightforward manner.\n', '\n', '"""\n', '\n', '\n', '__version__ = "0.6"\n', '\n', '__all__ = ["SimpleHTTPRequestHandler"]\n', '\n', 'import os\n', 'import posixpath\n', 'import BaseHTTPServer\n', 'import urllib\n', 'import cgi\n', 'import shutil\n', 'import mimetypes\n', 'from StringIO import StringIO\n', ...], '/usr/local/lib/python2.3/'), ...}