python-peps/pep-0042.txt

339 lines
13 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

PEP: 42
Title: Feature Requests
Version: $Revision$
Author: Jeremy Hylton <jeremy@zope.com>
Status: Active
Type: Informational
Created: 12-Sep-2000
Introduction
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-0000.txt 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.
Core Language / Builtins
- A builtin function that returns the number of bytes an object
uses internally. Apparently mxTools has a sizeof function that
returns the size of the object struct itself.
http://sf.net/bugs/?func=detailbug&bug_id=110835&group_id=5470
- Add C API functions to help Windows users who are building
embedded applications where the FILE * structure does not match
the FILE * the interpreter was compiled with.
http://sf.net/bugs/?func=detailbug&bug_id=110821&group_id=5470
See this bug report for a specific suggestion that will allow a
Borland C++ builder application to interact with a python.dll
build with MSVC.
- The parser should handle more deeply nested parse trees.
The following will fail -- eval("["*50 + "]"*50) -- because the
parser has a hard-coded limit on stack size. This limit should
be raised or removed. Removal would be hard because the
current compiler can overflow the C stack if the nesting is too
deep.
http://sf.net/bugs/?func=detailbug&bug_id=115555&group_id=5470
- The buffer interface could be smarter when a buffer object is
created that depends on another buffer object -- if the
original buffer object has no base, the depending object will
have no base either. It could be argued that the depending
object should have the original object as a base. Or not.
http://sf.net/bugs/?func=detailbug&bug_id=116405&group_id=5470
- Non-accidental IEEE-754 support (Infs, NaNs, settable traps, etc).
Big project.
pickle lacks float('inf')
http://sf.net/tracker/index.php?func=detail&aid=445484&group_id=5470&atid=355470
Standard Library
- The test suite is incomplete (and probably always will be).
This is a reminder to people that more regression tests are
needed.
http://sf.net/bugs/?func=detailbug&group_id=5470&bug_id=110819
- The urllib module should support proxies which require
authenication. See SourceForge bug #110619 for information:
http://sf.net/bugs/?func=detailbug&bug_id=110619&group_id=5470
- Use objects with attributes in place of tuples of values for
return values in several places in the library. Two specific
APIs which could use this treatment include os.stat() and
os.statvfs(); see SourceForge bug #111481:
http://sf.net/bugs/?func=detailbug&bug_id=111481&group_id=5470
which shows very specifically why this approach is better than
the tuple approach: additional attributes can be added as needed
without having as detrimental an affect on existing code.
- 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.
http://sf.net/bugs/?func=detailbug&bug_id=112317&group_id=5470
- 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
interruptable I/O. So it's a big project.
http://sf.net/bugs/?func=detailbug&bug_id=110599&group_id=5470
- Ensure that all .py files in the std library use 4-space indents and
no hard tabs. This was actually a PEP200 precondition for the
release of 2.0b1, but got misinterpreted as the weaker condition that
tabnanny not complain. Tim Peters will do this now, but, since about
250 files are affected, will wait until after 2.0final is released.
http://sf.net/bugs/?func=detailbug&bug_id=114557&group_id=5470
- Port the Python SSL code to Windows.
http://sf.net/bugs/?func=detailbug&bug_id=110683&group_id=5470
- Extend Windows utime to accept directory paths.
http://sf.net/bugs/?func=detailbug&bug_id=114245&group_id=5470
- Extend copy.py to class, module & function types.
http://sf.net/bugs/?func=detailbug&bug_id=114553&group_id=5470
- Better checking for bad input to marshal.load*().
http://sf.net/bugs/?func=detailbug&bug_id=114754&group_id=5470
- Generalize eval to accept any mapping objects for locals and globals.
http://sf.net/bugs/?func=detailbug&bug_id=115126&group_id=5470
- Add a portable implementation of time.strptime() that works in
clearly defined ways on all platforms.
http://sf.net/bugs/?func=detailbug&bug_id=115146&group_id=5470
http://sf.net/bugs/?func=detailbug&bug_id=112244&group_id=5470
- 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.
http://sf.net/bugs/?func=detailbug&bug_id=110678&group_id=5470
- cgi.py's FieldStorage class should be more conservative with
memory in the face of large binary file uploads.
http://sf.net/bugs/?func=detailbug&bug_id=110674&group_id=5470
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):
http://sf.net/bugs/?func=detailbug&bug_id=119806&group_id=5470
- urllib should support proxy definitions that contain just the
host and port
http://sf.net/bugs/?func=detailbug&bug_id=110849&group_id=5470
- urlparse should be updated to comply with RFC 2396, which
defines optional parameters for each segment of the page.
http://sf.net/bugs/?func=detailbug&bug_id=110834&group_id=5470
- 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!
http://sf.net/bugs/?func=detailbug&bug_id=116716&group_id=5470
- 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
- A UTF-7 codec. It's not a great encoding, but it's required in
some places (e.g. IMAP mailbox names with Asian language
support). [No bug report; private email from Seo Junwon
<linuxqna@chollian.net>.]
- Killing a thread from another thread. Or maybe sending a
signal. Or maybe raising an asynchronous exception.
http://sf.net/bugs/?func=detailbug&bug_id=121115&group_id=5470
- The debugger (pdb) should understand packages.
http://sf.net/bugs/?func=detailbug&bug_id=110631&group_id=5470
- The cmath library should be rewritten in Python.
http://sf.net/bugs/?func=detailbug&bug_id=110838&group_id=5470
- Could use a more comprehensive email module. (But then again,
that may be better done as a 3rd party project.)
http://sf.net/bugs/?func=detailbug&bug_id=121208&group_id=5470
- every built-in function or method (including all core
extensions) that accepts a string, dict, or list, should also
accept a UserString, UserDict, or UserList. (The latter two
should more generally accept all mappings, all sequences.)
http://sf.net/bugs/?func=detailbug&bug_id=132493&group_id=5470
- Fatter math module docs and docstrings.
http://sf.net/tracker/?func=detail&aid=426539&group_id=5470&atid=105470
- New math module radians() and degrees() functions.
http://sf.net/tracker/?func=detail&aid=426539&group_id=5470&atid=105470
- 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.
http://sf.net/tracker/?func=detail&aid=415692&group_id=5470&atid=355470
- Jim Fulton pointed out that binascii's b2a_base64() function
restricts the length of its input to 57 characters for no good
reason: the code would work for any input size but for this
check. Also, there are situations where it makes sense not to
append a newline, or to append something else than a newline.
Proposal:
- get rid of the input size check
- 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???
http://sf.net/tracker/?func=detail&aid=415694&group_id=5470&atid=355470
Tools
- IDLE should reload & recompile modules changed externally. To
be done properly, scripts will have to be run in a separate
process.
http://sf.net/bugs/?func=detailbug&bug_id=110841&group_id=5470
- Python could use a GUI builder.
http://sf.net/bugs/?func=detailbug&bug_id=110820&group_id=5470
- IDLE's key bindings should be revised. Some of the advertised
bindings don't even work!
http://sf.net/bugs/?func=detailbug&bug_id=110659&group_id=5470
- IDLE has deep problems running threaded programs. Re-architect.
http://sf.net/bugs/?func=detailbug&bug_id=121963&group_id=5470
- Would be nice if IDLE showed which structure was being closed upon
typing one of "})]". Heck, a string too, for that matter.
The bug report also says something about TAB I didn't grok.
http://sf.net/tracker/?func=detail&aid=404444&group_id=5470&atid=105470
Building and Installing
- You should be able to configure and build Python with a
cross-compiler.
http://sf.net/bugs/?func=detailbug&bug_id=110836&group_id=5470
- Modules/makesetup should make sure the 'config.c' file it
generates from the various Setup files, is valid C. It currently
accepts module names with characters that are not allowable in
Python or C identifiers.
http://sf.net/bugs/?func=detailbug&bug_id=116326&group_id=5470
- There's a name conflict on case insensitive filesystems (in
particular Mac OSX) between the directory "Python" and the key
build target "python". That's currently solved by abusing the
--with-suffix option, but that's not ideal (since that also
causes the binary to be *installed* as python.exe). What should
be the solution?
http://sf.net/bugs/?func=detailbug&bug_id=122215&group_id=5470
- Building from source should not attempt to overwrite the
Include/graminit.h and Parser/graminit.c files, at least for
people downloading a source release rather than working from CVS
or snapshots. Some people find this a problem in unusual build
environments.
http://sf.net/bugs/?func=detailbug&bug_id=119221&group_id=5470
- There should be at least an option to build Python as a shared
library.
http://sf.net/tracker/index.php?func=detail&aid=400938&group_id=5470&atid=305470
Local Variables:
mode: indented-text
indent-tabs-mode: nil
End: