[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