[Python-bugs-list] [ python-Bugs-633152 ] list slice ass ignores subtypes of list
noreply@sourceforge.net
noreply@sourceforge.net
Wed, 06 Nov 2002 03:21:57 -0800
Bugs item #633152, was opened at 2002-11-04 08:19
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=633152&group_id=5470
Category: Python Interpreter Core
Group: Python 2.3
>Status: Open
Resolution: Fixed
Priority: 5
Submitted By: Ronald Oussoren (ronaldoussoren)
Assigned to: Nobody/Anonymous (nobody)
Summary: list slice ass ignores subtypes of list
Initial Comment:
When assigning a subtype of list to a list slice the implementation
of slice-assignment directly accesses the list representation and
ignores any modified accessor functions:
class MyList (list):
def __getitem__(self, idx):
if idx % 2 == 0:
return 'E'
return 'O'
mylst = MyList()
mylst.append(1)
mylst.append(1)
lst = [ 1, 2, 3, 4]
lst [2:3] = mylst
print lst
# prints [1, 2, 1, 1, 4] I'd expect it to print [1, 2, 'E', 'O', 4 ]
----------------------------------------------------------------------
>Comment By: Michael Hudson (mwh)
Date: 2002-11-06 11:21
Message:
Logged In: YES
user_id=6656
Sigh. More s/PyList_Check/PyList_CheckExact/ I guess.
----------------------------------------------------------------------
Comment By: Ronald Oussoren (ronaldoussoren)
Date: 2002-11-06 08:45
Message:
Logged In: YES
user_id=580910
Sorry, but it is not fixed completely. The problem is in PyList_AsTuple
(called by PySequence_Tuple if the arguments is a PyList).
PyList_AsTuple directly accesses the list representation, and therefore
the code above still fails. I'll try to post a patch for this later this week.
I'm not sure why the patch got corrupted, it (and still is) fine on my
system (but not when I download it again...).
----------------------------------------------------------------------
Comment By: Michael Hudson (mwh)
Date: 2002-11-05 18:15
Message:
Logged In: YES
user_id=6656
I think this is now fixed, via a somewhat different approach.
You might want to check, though.
While we're at it, there are a bunch of problems with your
patch (for future reference):
1) it contains a bunch of NUL bytes!
2) it's a straight diff. we like context (-c) or unified
(-u) diffs. most people prefer context diffs, I think.
Bass players (e.g. Barry) prefer unified.
3) it has no error checking at all!
----------------------------------------------------------------------
Comment By: Ronald Oussoren (ronaldoussoren)
Date: 2002-11-04 11:04
Message:
Logged In: YES
user_id=580910
The attached patch (list_ass_slice.patch) updates the implementation of
slice assigment for lists: If the RHS is a list (exact match) use the
current implementation and if the RHS is a sequence use
PySequence_GetItem.
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=633152&group_id=5470