py/objslice: Add support for indices() method on slice objects.
Instances of the slice class are passed to __getitem__() on objects when the user indexes them with a slice. In practice the majority of the time (other than passing it on untouched) is to work out what the slice means in the context of an array dimension of a particular length. Since Python 2.3 there has been a method on the slice class, indices(), that takes a dimension length and returns the real start, stop and step, accounting for missing or negative values in the slice spec. This commit implements such a indices() method on the slice class. It is configurable at compile-time via MICROPY_PY_BUILTINS_SLICE_INDICES, disabled by default, enabled on unix, stm32 and esp32 ports. This commit also adds new tests for slice indices and for slicing unicode strings.
This commit is contained in:
committed by
Damien George
parent
007a704d82
commit
4c93955b7b
12
tests/unicode/unicode_slice.py
Normal file
12
tests/unicode/unicode_slice.py
Normal file
@@ -0,0 +1,12 @@
|
||||
# Test slicing of Unicode strings
|
||||
|
||||
s = "Привет"
|
||||
|
||||
print(s[:])
|
||||
print(s[2:])
|
||||
print(s[:5])
|
||||
print(s[2:5])
|
||||
print(s[2:5:1])
|
||||
print(s[2:10])
|
||||
print(s[-3:10])
|
||||
print(s[-4:10])
|
||||
Reference in New Issue
Block a user