[Zope-dev] Restricted Python not handling slices correctly

Stephan Richter srichter at cosmos.phy.tufts.edu
Tue Jun 10 09:50:45 EDT 2008


On Thursday 05 June 2008, Shane Hathaway wrote:
> Are you in fact using RestrictedPython?  The code snippet looks like it
> only uses a security proxy.  RestrictedPython is a custom Python
> compiler; you're not using it unless your interactive Python prompt uses
> RestrictedPython to compile all expressions.

You are right.

> The behavior you saw is exactly what happens when an object implements
> __getitem__ and __len__ but not __getslice__.  If lp matches that
> description, and the length of lp is 2, then Python evaluates "lp[-3:]"
> as "lp.__getitem__(slice(-1, 2147483647, None))".  I wish Python would
> instead evaluate it as "lp.__getitem__(slice(-3))", but maybe there are
> historical reasons for this.

But this is still fine. the first index I got for "lp" is +1, not -1. I have 
tried to ready through the C code of Proxy. It clearly exposes __getslice__. 
See zope/proxy/_zope_proxy_proxy.c, line 630 and 746.

Does anyone else have an idea?

Regards,
Stephan
-- 
Stephan Richter
Web Software Design, Development and Training
Google me. "Zope Stephan Richter"


More information about the Zope-Dev mailing list