262 lines
10 KiB
Plaintext
262 lines
10 KiB
Plaintext
PEP: 42
|
||
Title: Feature Requests
|
||
Version: $Revision$
|
||
Author: Jeremy Hylton <jeremy@digicool.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://sourceforge.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://sourceforge.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.
|
||
|
||
- "continue" inside "try" should work as expect instead of raising
|
||
SyntaxError. The current behavior is considered an implementation
|
||
limit.
|
||
|
||
while 1:
|
||
try:
|
||
continue
|
||
except:
|
||
pass
|
||
|
||
http://sourceforge.net/bugs/?func=detailbug&bug_id=110830&group_id=5470
|
||
|
||
- When the compiler pass complains about something,
|
||
e.g. "continue" inside "try", it should complain about the
|
||
*first* error, not the second or last.
|
||
|
||
http://sourceforge.net/bugs/?func=detailbug&group_id=5470&bug_id=115143
|
||
|
||
- 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://sourceforge.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://sourceforge.net/bugs/?func=detailbug&bug_id=116405&group_id=5470
|
||
|
||
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://sourceforge.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://sourceforge.net/bugs/?func=detailbug&bug_id=110619&group_id=5470
|
||
|
||
- Support passive FTP via urllib
|
||
|
||
http://sourceforge.net/bugs/?func=detailbug&bug_id=110848&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://sourceforge.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://sourceforge.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://sourceforge.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://sourceforge.net/bugs/?func=detailbug&bug_id=114557&group_id=5470
|
||
|
||
- Port the Python SSL code to Windows.
|
||
|
||
http://sourceforge.net/bugs/?func=detailbug&bug_id=110683&group_id=5470
|
||
|
||
- Extend Windows utime to accept directory paths.
|
||
|
||
http://sourceforge.net/bugs/?func=detailbug&bug_id=114245&group_id=5470
|
||
|
||
- Extend copy.py to class, module & function types.
|
||
|
||
http://sourceforge.net/bugs/?func=detailbug&bug_id=114553&group_id=5470
|
||
|
||
- Better checking for bad input to marshal.load*().
|
||
|
||
http://sourceforge.net/bugs/?func=detailbug&bug_id=114754&group_id=5470
|
||
|
||
- Generalize eval to accept any mapping objects for locals and globals.
|
||
|
||
http://sourceforge.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://sourceforge.net/bugs/?func=detailbug&bug_id=115146&group_id=5470
|
||
http://sourceforge.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://sourceforge.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://sourceforge.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.
|
||
|
||
Second, because the lines that are read are stored in an
|
||
instance attribute (self.lines -- a list), the uploaded data is
|
||
never freed. self.lines isn't definied as part of the public
|
||
interface it /might/ be safe to remove it. OTOH, removing it
|
||
will break code clever and nosy code.
|
||
|
||
- urllib should support proxy definitions that contain just the
|
||
host and port
|
||
|
||
http://sourceforge.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://sourceforge.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://sourceforge.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://sourceforge.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>.]
|
||
|
||
Tools
|
||
|
||
- IDLE should reload & recompile modules changed externally. To
|
||
be done properly, scripts will have to be run in a separate
|
||
process.
|
||
|
||
http://sourceforge.net/bugs/?func=detailbug&bug_id=110841&group_id=5470
|
||
|
||
- Python could use a GUI builder.
|
||
|
||
http://sourceforge.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://sourceforge.net/bugs/?func=detailbug&bug_id=110659&group_id=5470
|
||
|
||
|
||
Building and Installing
|
||
|
||
- You should be able to configure and build Python with a
|
||
cross-compiler.
|
||
|
||
http://sourceforge.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://sourceforge.net/bugs/?func=detailbug&bug_id=116326&group_id=5470
|
||
|
||
- We should rename and rationalize the API getopt.c provides, and
|
||
always use this, instead of trying to rely on the platform
|
||
getopt and fighting with its prototype.
|
||
|
||
http://www.python.org/pipermail/python-dev/2000-October/016620.html
|
||
|
||
|
||
Local Variables:
|
||
mode: indented-text
|
||
indent-tabs-mode: nil
|
||
End:
|