You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
It would be useful to have slice being generic and allowing type hints a la
slice[start_type, stop_type, step_type]
slice[S, T] as shorthand for slice[S, S, T] or slice[S, T, Any]
slice[T] as shorthand for slice[T, T, T] or slice[T, T, Any] or slice[Any, T, Any]
slice as shorthand for slice[Any, Any, Any]
Syntax wise, I would advocate for the latter options slice[S, T]=slice[S, T, Any], slice[T]=slice[Any, T, Any] for the following reasons:
It resembles the regular usage of slice:
slice(x) = slice(None, x, None),
slice(a, b) = slice(a, b, None)
It has better compatible with datetime/timedelta variables, which might be a common use-case.
slice[datetime]=slice[datetime, datetime, datetime] would be an error, because `datetimes cannot be added, only timedeltas can be added to datetimes.
Real-world examples
Datetime based slicing: Here, start and stop are datetime-like and step is timedelta-like (e.g. datetime.datetime / datetime.timedelta, numpy.datetime64/numpy.timedelta64 or pandas.Timestamp/pandas.Timedelta)
Label based slicing via strings, for example, pandas allows something like frame.loc["2017-07-01":"2017-10-31"] for a DataFrame that is indexed by a DatetimeIndex, this will first convert the strings to datetime objects and then select all rows of the table that lie between the given dates.
Similarly, one might want to select all rows of a table that lie between two float values.
Activity
TeamSpen210 commentedon Aug 29, 2022
An example of heterogeneous types (although a little cute) is to do
obj["keyword": value], effectively producing keyword arguments.Gobot1234 commentedon Sep 13, 2022
Related https://peps.python.org/pep-0696/#using-another-typevarlike-as-the-default which were my thoughts on the matter
AlexWaygood commentedon Jul 22, 2023
Marking as deferred until and unless PEP-696 is accepted by the Steering Council and implemented by all major type checkers
lorenzo-w commentedon Feb 14, 2024
Little status update:
typing_extensionssrittau commentedon Feb 14, 2024
Cf. #11422 for the feature tracker.