@@ -458,20 +458,20 @@ def __init__(self, start=None, end=None, step=None):
458458 self .end = end
459459 self .step = step
460460
461- def find (self , data ):
461+ def find (self , datum ):
462+ datum = DatumInContext .wrap (datum )
463+
462464 # Here's the hack. If it is a dictionary or some kind of constant,
463465 # put it in a single-element list
464- if (isinstance (data , dict ) or isinstance (data , six .integer_types )
465- or isinstance (data , six .string_types )):
466-
467- return self .find ([data ])
466+ if (isinstance (datum .value , dict ) or isinstance (datum .value , six .integer_types ) or isinstance (datum .value , six .string_types )):
467+ return self .find (DatumInContext ([datum .value ], path = datum .path , context = datum .context ))
468468
469469 # Some iterators do not support slicing but we can still
470470 # at least work for '*'
471471 if self .start == None and self .end == None and self .step == None :
472- return [DatumInContext (data [i ], Index (i )) for i in xrange (0 , len (data ))]
472+ return [DatumInContext (datum . value [i ], path = Index (i ), context = datum ) for i in xrange (0 , len (datum . value ))]
473473 else :
474- return [DatumInContext (data [i ], Index (i )) for i in range (0 , len (data ))[self .start :self .end :self .step ]]
474+ return [DatumInContext (datum . value [i ], path = Index (i ), context = datum ) for i in range (0 , len (datum . value ))[self .start :self .end :self .step ]]
475475
476476 def __str__ (self ):
477477 if self .start == None and self .end == None and self .step == None :
@@ -481,5 +481,8 @@ def __str__(self):
481481 ':%d' % self .end if self .end else '' ,
482482 ':%d' % self .step if self .step else '' )
483483
484+ def __repr__ (self ):
485+ return '%s(start=%r,end=%r,step=%r)' % (self .__class__ .__name__ , self .start , self .end , self .step )
486+
484487 def __eq__ (self , other ):
485488 return isinstance (other , Slice ) and other .start == self .start and self .end == other .end and other .step == self .step
0 commit comments