BUGS OpenerDirector.retrieve() should be a function, not a method. HTTPRobotRulesProcessor uses RobotFileParser.read(), which uses urllib. Switch to urllib2. Max-Age handling should take account of RFC 2616 age rules, according to RFC 2965. Would be nice to get rid of ._now instance attribute if & when fix this (be careful with maxage=0 case -- means delete cookie). De-facto rules may have gotten slightly saner with recent MSIEs, so might be possible to simplify and/or tighten up some things. I haven't tested much. eg.: MS docs claim that (eg.) .co.jp (two dots but country-code TLD) is blocked. MS docs: "Session cookies that specify a domain are rejected". I don't remember that, and I don't understand what the purpose would be... Support any more bits of RFC 2109 that IE / Mozilla have added to their Netscape protocol implementations (there may not be any, dunno). Sketch overlap with P3P protocol in docs, once I figure out exactly what the relationship is. I think IE 6 and Mozilla implement it. TESTS Better round-trip tests for LWPCookieJar and MozillaCookieJar. Test MSIECookies on Windows (only tested on wine recently). Test thread safety. How?? Add doctest running to test.py -- see Zope's test.py. Add pychecker to release script somehow? Need to figure out how to suppress warnings -- see Zope's test.py. Write more tests. PLANNED FEATURES (some of this stuff is really for the standard library rather than this package -- eg. file upload function) Add a little processor in the docs that shows how to deal with pages that should have had a non-200 code, but don't. HTTP connection caching. Timeouts (PEP 42, bug 723287). Document lack of DNS timeout (say should use separate process?? -- that's what squid does). File upload function(s). Remember need content-type HTTP header, not just request body data. Conditional fetches? Negotiation / charset? Embedded object fetcher (eg. images) for functional testing. 305 redirections. HTTPS / CONNECT (see 515003)? gzip / deflate / compress encoding processors (send Accept-Encoding (but doesn't httplib send this too?), unzip returned data if it *is* gzipped/zipped (Transfer-Encoding & optionally Content-Encoding)). Weird schemes: data: urllib implements it, but does anybody use it? Not in MSIE. nttp? imap?? TidyProcessor -- mxTidy / uTidylib (wait until tidylib & Python wrappers stabilise a bit). 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). Add a save method to MSIECookieJar? -- just iterate through self._cookies calling InternetSetCookie() for each. Use wininet InternetSetCookie / InternetGetCookie (ctypes). Link DOMForm's JavaScript handling to CookieJar. Maybe MSIE stuff is appropriate for win32all once rest is in std. lib? TODO FOR PYTHON STD. LIB. Before 2.4b1: Upload final patch to docs, tests (?) and code. Put up a page documenting 2.4 / 0.9.x differences on web, link from README.html. Release 1.0 Python 2.4 version known warts: Thread synchronization needs checking by someone with more of a clue about this. ._now attributes! Future: Rest of stuff: UserAgent, HTTPEquivProcessor, HTTPRefreshProcessor, etc. What should happen with seek_wrapper? It's needed for HTTPEquivProcessor. Could use Andrew Dalke's ReseekFile instead, which is simpler. Should it be a separate module?