[Python-checkins] r42294 - peps/trunk/pep-0000.txt peps/trunk/pep-0357.txt
guido.van.rossum
python-checkins at python.org
Thu Feb 9 20:09:54 CET 2006
Author: guido.van.rossum
Date: Thu Feb 9 20:09:50 2006
New Revision: 42294
Added:
peps/trunk/pep-0357.txt
Modified:
peps/trunk/pep-0000.txt
Log:
Add PEP 357, Allowing Any Object to be Used for Slicing (by Travis Oliphant).
Modified: peps/trunk/pep-0000.txt
==============================================================================
--- peps/trunk/pep-0000.txt (original)
+++ peps/trunk/pep-0000.txt Thu Feb 9 20:09:50 2006
@@ -109,6 +109,7 @@
S 353 Using ssize_t as the index type von Loewis
S 354 Enumerations in Python Finney
S 355 Path - Object oriented filesystem paths Lindqvist
+ S 357 Allowing Any Object to be Used for Slicing Oliphant
S 754 IEEE 754 Floating Point Special Values Warnes
Finished PEPs (done, implemented in Subversion)
@@ -408,6 +409,7 @@
S 354 Enumerations in Python Finney
S 355 Path - Object oriented filesystem paths Lindqvist
I 356 Python 2.5 Release Schedule Norwitz, et al
+ S 357 Allowing Any Object to be Used for Slicing Oliphant
SR 666 Reject Foolish Indentation Creighton
S 754 IEEE 754 Floating Point Special Values Warnes
I 3000 Python 3.0 Plans Kuchling, Cannon
Added: peps/trunk/pep-0357.txt
==============================================================================
--- (empty file)
+++ peps/trunk/pep-0357.txt Thu Feb 9 20:09:50 2006
@@ -0,0 +1,71 @@
+PEP: 357
+Title: Allowing Any Object to be Used for Slicing
+Version: $Revision$
+Last Modified: $Date$
+Author: Travis Oliphant <oliphant at ee.byu.edu>
+Status: Draft
+Type: Standards Track
+Created: 09-Feb-2006
+Python-Version: 2.5
+
+Abstract
+
+ This PEP proposes adding an sq_index slot in PySequenceMethods and
+ an __index__ special method so that arbitrary objects can be used
+ in slice syntax.
+
+Rationale
+
+ Currently integers and long integers play a special role in slice
+ notation in that they are the only objects allowed in slice
+ syntax. In other words, if X is an object implementing the sequence
+ protocol, then X[obj1:obj2] is only valid if obj1 and obj2 are both
+ integers or long integers. There is no way for obj1 and obj2 to
+ tell Python that they could be reasonably used as indexes into a
+ sequence. This is an unnecessary limitation.
+
+ In NumPy, for example, there are 8 different integer scalars
+ corresponding to unsigned and signed integers of 8, 16, 32, and 64
+ bits. These type-objects could reasonably be used as indexes into
+ a sequence if there were some way for their typeobjects to tell
+ Python what integer value to use.
+
+Proposal
+
+ Add a sq_index slot to PySequenceMethods, and a corresponding
+ __index__ special method. Objects could define a function to
+ place in the sq_index slot that returns an C-integer for use in
+ PySequence_GetSlice, PySequence_SetSlice, and PySequence_DelSlice.
+
+Implementation Plan
+
+ 1) Add the slots
+
+ 2) Change the ISINT macro in ceval.c to accomodate objects with the
+ index slot defined.
+
+ 3) Change the _PyEval_SliceIndex function to accomodate objects
+ with the index slot defined.
+
+Possible Concerns
+
+ Speed:
+
+ Implementation should not slow down Python because integers and long
+ integers used as indexes will complete in the same number of
+ instructions. The only change will be that what used to generate
+ an error will now be acceptable.
+
+ Why not use nb_int which is already there?
+
+ The nb_int, nb_oct, and nb_hex methods are used for coercion.
+ Floats have these methods defined and floats should not be used in
+ slice notation.
+
+Reference Implementation
+
+ Available on PEP acceptance.
+
+Copyright
+
+ This document is placed in the public domain
More information about the Python-checkins
mailing list