Add stylesheet and colorize script, and add something to setup.py, so
 people can generate docs?
Include General FAQ in distribution (for CF too).  Keep it locally, and
 write some scripts to upload automatically.
Add pychecker to release script somehow?  Need to figure out how to
 suppress warnings -- see Zope's test.py.

REFACTORING & TESTING
Add doctest running to test.py -- see Zope's test.py.
Add tests for urllib2 callables (urlopen, HTTPHandler, ...).
Decent round-trip tests for CookieJar and MozillaCookieJar.
Test MSIECookies on Windows (only tested on wine recently).
Thread safety.
Write more tests.

BUGS
I don't fully understand the protocols!
Neither do the designers of the RFCs!  Errata were being discussed to
 fix problems with RFC 2965, but that effort seems to have collapsed.
Need to check exactly what should happen for Max-Age and expires stuff:
 Consider both V0 and V1 in each case:
  loading
  saving
  reverting
  setting
  returning
  clear_session_cookies
  clear_expired_cookies
Instance attribute _now is set and read in various places.  Ugly.
 Is it really necessary to worry about this anyway? -- why not just
 check the time wherever in the code it needs to be known?
Max-Age handling should take account of RFC 2616 age rules, according to
 RFC 2965.
Sketch overlap with P3P protocol in docs, once I figure out exactly what
 the relationship is.  I think IE 6 and Mozilla implement it.
Support any more bits of RFC 2109 that IE / Mozilla know about (there
 may not be any, dunno).


URLLIB2 DOC BUGS
820583: The urlopen docs should note that None may be returned if
 you're using your a OpenerDirector of your own that doesn't have an
 UnknownHandler (or equivalent).

URLLIB2 BUGS
I need to write a mock object framework and some tests before I dare
 submit patches for these.

745097: probably, change OpenerDirector.add_handler to allow None as URL
 scheme
738973: just add "/".join(dirs) to key in CacheFTPHandler.connect_ftp
 (and remove passwd from key)
735248: suggest split_header_words (talk to the guy who's trying to fix
 HTTPDigestAuthHandler: see web-sig archive)?  Or run my tests for that
 against the urllib2 functions.
680577: don't understand this one: maybe it was fixed since 2.2.0 and
 not recorded in bug tracker?

515003: HTTP{S,}ProxyConnection and CONNECT; Greg S. says this is bad
545480: examples for urllib2
798244: my examples for urllib2; might be obsoleted by 2.4 changes
548197: cookie support (submitted by somebody else)
711838: support for non-anon ftp (haven't looked at it)
812285: better realm parsing for multiple auth schemes
 (haven't looked at it)
816787: niggle about improper URLError inheritance
817379: fix broken absolute FTP path handling (Jeremy said will fix
 but bug is still open)

618023: IMAP handler!??  Didn't know there was an imap URL scheme...


PLANNED FEATURES
Use wininet InternetSetCookie / InternetGetCookie (ctypes).
UserAgent class (friendly OpenerDirector subclass).
Timeouts (PEP 42, bug 723287).
Connection caching.
Robot rules observance.
305 redirections.
gzip & zip (deflate) encoding processors (send Accept-Encoding (but
 doesn't httplib send this too?), unzip returned data if it *is*
 gzipped/zipped)
Konqueror cookie file support (~/.kde/share/apps/kcookiejar/cookies).
Opera cookie file support (http://www.opera.com/docs/fileformats/).
Support for cookperm.txt (Mozilla file format; cookie permissions,
 presumably block / accept list).

TODO FOR PYTHON STD. LIB.
Import into CVS.  When, where, how?
Somebody needs to run the tests on a Mac, eventually (test_date.py in
 particular).

1. ClientCookie 0.9:
   Write tests for urllib2 stuff!
   Resolve expires / session doubts (see BUGS).
   Sort out file-based and database-based semantics, make an base class
    AbstractCookieJar, interfaces FileCookieJar and DBCookieJar, with
    a plain-old CookieJar (no save / load), and the existing
    FileCookieJars as a subclass of that (LWPCookieJar, MozillaCookieJar,
    MSIECookieJar), plus an MSIEDBCookieJar and a DBMCookieJar.
    Probably make CookieJar.cookies attribute private, and make all use of
     it in AbstractCookieJar abstracted through get_cookie and iteration,
     so eg. MSIEDBCookieJar can avoid duplicating state of Windows' cookie
     database.
    Need to actually implement this MSIEDBCookieJar and DBMCookieJar to
     make sure base classes are adequate.
   IIRC IOError is inappropriately raised (and documented to be raised!)
    in at least one place -- needs fixing.
   Thanks to Request.original_url, should be able to rewrite
    REDIRECT_DEBUG as a handler.  Make sure debugging stuff makes sense.
    Can printing of headers
   Add a RobotRulesProcessor.
   Make HTTPEquivHandler use HTMLParser module, as in ClientForm.
   Document in standard Python format.
    This needs to be done as part of improving urllib2 docs in general.
   Add default_request / default_response methods?
   Pester Jeremy Hylton about processors patch.
2. Python 2.4 version:
    Get rid of 1.5.2 compatibility stuff, replace iterator with generator.
    Drop all CJs except for CookieJar and MozillaCookieJar (maybe MSIE stuff
     is appropriate for win32all once rest is in std. lib?).
    Drop non-cookie features (SeekableProcessor, HTTPEquivProcessor,
     RefererProcessor, HTTPRefreshProcessor).
    Drop cut-n-pasted urllib2 stuff.
    Use logging module.
    Resolve duplication between split_header_words and
     parse_kw_list(parse_http_list(x)).  Latter doesn't actually work ATM
     (735248).
    Maybe email.parsedate, .formatdate etc. can replace some of date
     functions in _Util -- *not* http2time, though (needs to be sloppy)?
     datetime module?
    Combine code into one or two modules.
3. Ask for comments on python-dev.
   Name?  cookielib?
   Sort out verifiability / Request problem.  Should there be a Request
    subclass?  Should the needed attributes have .__double_underscores?
    What about HEAD and PUT? -- I suppose __init__ needs to grow a method
    arg.
4. Rest of stuff: UserAgent, HTTPEquivProcessor, HTTPRefererProcessor,
    etc.
