This PEP contains a list of feature requests that may be considered for future versions of Python. Large feature requests should not be included here, but should be described in separate PEPs; however a large feature request that doesn’t have its own PEP can be listed here until its own PEP is created. See PEP 0 for details.
This PEP was created to allow us to close bug reports that are really feature requests. Marked as Open, they distract from the list of real bugs (which should ideally be less than a page). Marked as Closed, they tend to be forgotten. The procedure now is: if a bug report is really a feature request, add the feature request to this PEP; mark the bug as “feature request”, “later”, and “closed”; and add a comment to the bug saying that this is the case (mentioning the PEP explicitly). It is also acceptable to move large feature requests directly from the bugs database to a separate PEP.
This PEP should really be separated into four different categories (categories due to Laura Creighton):
- The urllib module should support proxies which require authentication. See SourceForge bug #210619 for information:
https://bugs.python.org/issue210619
- os.rename() should be modified to handle EXDEV errors on platforms that don’t allow rename() to operate across filesystem boundaries by copying the file over and removing the original. Linux is one system that requires this treatment.
https://bugs.python.org/issue212317
- signal handling doesn’t always work as expected. E.g. if sys.stdin.readline() is interrupted by a (returning) signal handler, it returns “”. It would be better to make it raise an exception (corresponding to EINTR) or to restart. But these changes would have to applied to all places that can do blocking interruptible I/O. So it’s a big project.
https://bugs.python.org/issue210599
- Extend Windows utime to accept directory paths.
https://bugs.python.org/issue214245
- Extend copy.py to module & function types.
https://bugs.python.org/issue214553
- Better checking for bad input to
marshal.load*().
https://bugs.python.org/issue214754
- rfc822.py should be more lenient than the spec in the types of address fields it parses. Specifically, an invalid address of the form “From: Amazon.com <delivers-news2@amazon.com>” should be parsed correctly.
https://bugs.python.org/issue210678
- cgi.py’s FieldStorage class should be more conservative with memory in the face of large binary file uploads.
https://bugs.python.org/issue210674
There are two issues here: first, because read_lines_to_outerboundary() uses readline() it is possible that a large amount of data will be read into memory for a binary file upload. This should probably look at the Content-Type header of the section and do a chunked read if it’s a binary type.
The second issue was related to the self.lines attribute, which was removed in revision 1.56 of cgi.py (see also):
https://bugs.python.org/issue219806
- urllib should support proxy definitions that contain just the host and port
https://bugs.python.org/issue210849
- urlparse should be updated to comply with RFC 2396, which defines optional parameters for each segment of the path.
https://bugs.python.org/issue210834
- The exceptions raised by pickle and cPickle are currently different; these should be unified (probably the exceptions should be defined in a helper module that’s imported by both). [No bug report; I just thought of this.]
- More standard library routines should support Unicode. For example, urllib.quote() could convert Unicode strings to UTF-8 and then do the usual %HH conversion. But this is not the only one!
https://bugs.python.org/issue216716
- There should be a way to say that you don’t mind if
str()
or __str__()
return a Unicode string object. Or a different function – ustr()
has been proposed. Or something…
http://sf.net/patch/?func=detailpatch&patch_id=101527&group_id=5470
- Killing a thread from another thread. Or maybe sending a signal. Or maybe raising an asynchronous exception.
https://bugs.python.org/issue221115
- The debugger (pdb) should understand packages.
https://bugs.python.org/issue210631
- Jim Fulton suggested the following:
I wonder if it would be a good idea to have a new kind of
temporary file that stored data in memory unless:
- The data exceeds some size, or
- Somebody asks for a fileno.
Then the cgi module (and other apps) could use this thing in a
uniform way.
https://bugs.python.org/issue415692
- Jim Fulton pointed out that binascii’s b2a_base64() function has situations where it makes sense not to append a newline, or to append something else than a newline.
Proposal:
- add an optional argument giving the delimiter string to be appended, defaulting to “\n”
- possibly special-case None as the delimiter string to avoid adding the pad bytes too???
https://bugs.python.org/issue415694
- pydoc should be integrated with the HTML docs, or at least be able to link to them.
https://bugs.python.org/issue405554
- Distutils should deduce dependencies for .c and .h files.
https://bugs.python.org/issue472881
- asynchat is buggy in the face of multithreading.
https://bugs.python.org/issue595217
- It would be nice if the higher level modules (httplib, smtplib, nntplib, etc.) had options for setting socket timeouts.
https://bugs.python.org/issue723287
- The curses library is missing two important calls: newterm() and delscreen()
https://bugs.python.org/issue665572, http://bugs.debian.org/175590
- It would be nice if the built-in SSL socket type could be used for non-blocking SSL I/O. Currently packages such as Twisted which implement async servers using SSL have to require third-party packages such as pyopenssl.
- reST as a standard library module
- The import lock could use some redesign.
https://bugs.python.org/issue683658
- A nicer API to open text files, replacing the ugly (in some people’s eyes) “U” mode flag. There’s a proposal out there to have a new built-in type textfile(filename, mode, encoding). (Shouldn’t it have a bufsize argument too?)
- Support new widgets and/or parameters for Tkinter
- For a class defined inside another class, the __name__ should be “outer.inner”, and pickling should work. (GvR is no longer certain this is easy or even right.)
https://bugs.python.org/issue633930
- Decide on a clearer deprecation policy (especially for modules) and act on it.
https://mail.python.org/pipermail/python-dev/2002-April/023165.html
- Provide alternatives for common uses of the types module; Skip Montanaro has posted a proto-PEP for this idea:
https://mail.python.org/pipermail/python-dev/2002-May/024346.html
- Use pending deprecation for the types and string modules. This requires providing alternatives for the parts that aren’t covered yet (e.g. string.whitespace and types.TracebackType). It seems we can’t get consensus on this.
- Lazily tracking tuples?
https://mail.python.org/pipermail/python-dev/2002-May/023926.html https://bugs.python.org/issue558745
- Make ‘as’ a keyword. It has been a pseudo-keyword long enough. (It’s deprecated in 2.5, and will become a keyword in 2.6.)