Reorganize: move stuff from core language to atomic types, add Influencing PEPs

section.
This commit is contained in:
Brett Cannon 2006-03-01 05:32:44 +00:00
parent 81eabf7a0d
commit 9e3b21db47
1 changed files with 42 additions and 20 deletions

View File

@ -38,18 +38,22 @@ of doing things. A general principle of the design will be that one
obvious way of doing something is enough. [1]_
Influencing PEPs
================
* PEP 238 (Changing the Division Operator) [#pep238]_
* PEP 328 (Imports: Multi-Line and Absolute/Relative) [#pep328]_
* PEP 343 (The "with" Statement) [#pep343]_
* PEP 352 (Required Superclass for Exceptions) [#pep352]_
Core language
=============
* Remove distinction between int and long types [1]_
* True division becomes default behavior [10]_
* Make all strings be Unicode, and have a separate bytes() type [1]_
* ``exec`` as a statement is not worth it -- make it a function
* Add optional declarations for static typing [11]_
* Support only new-style classes; classic classes will be gone [1]_
* Return iterators instead of lists where appropriate for atomic type methods
(e.g. ``dict.keys()``, ``dict.values()``, ``dict.items()``, etc.)
(Do we keep iter*() methods or remove them? I vote remove. -- nn)
* Replace ``print`` by a function [16]_
* Do something so you can catch multiple exceptions using ``except E1,
E2, E3:``. Maybe use ``except E1, E2, E3 as err:`` if you want the
@ -70,12 +74,13 @@ Core language
be required for top-level packages.
* Cleanup the Py_InitModule() variants {,3,4} (also import and parser APIs)
* Cleanup the APIs exported in pythonrun, etc.
* Fix (or remove) {}.setdefault() [21]_
* Some expressions will require parentheses that didn't in 2.x:
- List comprehensions will require parentheses around the iterables.
This will make list comprehensions more similar to generator comprehensions.
[x for x in 1, 2] will need to be: [x for x in (1, 2)]
- Lambdas will have to be parenthesized [23]_
* Builtin module init function names (PyMODINIT_FUNC) will be prefixed
with _Py (or Py). Currently they aren't namespace safe since the names
start with init.
@ -95,9 +100,26 @@ To be removed:
PySequence_In, PyEval_EvalFrame, PyEval_CallObject,
_PyObject_Del, _PyObject_GC_Del, _PyObject_GC_Track, _PyObject_GC_UnTrack
PyString_AsEncodedString, PyString_AsDecodedString
PyArg_NoArgs, PyArg_GetInt
PyArg_NoArgs, PyArg_GetInt, intargfunc, intintargfunc
Atomic Types
============
* Remove distinction between int and long types [1]_
* Make all strings be Unicode, and have a separate bytes() type [1]_
* Return iterators instead of lists where appropriate for atomic type methods
(e.g. ``dict.keys()``, ``dict.values()``, ``dict.items()``, etc.)
(Do we keep iter*() methods or remove them? I vote remove. -- nn)
To be removed:
* ``basestring.find()`` and ``basestring.rfind()``; use ``basestring.index()``
or ``basestring.rindex()`` in a try/except block [15]_
* ``file.xreadlines()`` method [17]_
* ``dict.setdefault()`` [22]_
* ``dict.has_key()`` method
typedefs: intargfunc, intintargfunc
Built-in Namespace
==================
@ -127,18 +149,6 @@ To be removed:
* ``xrange()``: use ``range()`` instead [1]_
Atomic Types
============
To be removed:
* ``basestring.find()`` and ``basestring.rfind()``; use ``basestring.index()``
or ``basestring.rindex()`` in a try/except block [15]_
* ``file.xreadlines()`` method [17]_
* ``dict.setdefault()`` [22]_
* ``dict.has_key()`` method
Standard library
================
@ -253,6 +263,18 @@ References
.. [23] PEP 308 ("Conditional Expressions")
http://www.python.org/peps/pep-0308.html
.. [#pep238] PEP 238 (Changing the Division Operator)
http://www.python.org/peps/pep-0238.html
.. [#pep328] PEP 328 (Imports: Multi-Line and Absolute/Relative)
http://www.python.org/peps/pep-0328.html
.. [#pep343] PEP 343 (The "with" Statement)
http://www.python.org/peps/pep-0343.html
.. [#pep352] PEP 352 (Required Superclass for Exceptions)
http://www.python.org/peps/pep-0352.html
Copyright
=========