-
-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Closed
Labels
status: deferredIssue or PR deferred until some precondition is fixedIssue or PR deferred until some precondition is fixed
Description
This is a port of python/typing#159, which was closed as being out of scope, with https://github.com/srittau suggesting it maybe be more suitable for typeshed instead.
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 forslice[S, S, T]orslice[S, T, Any]slice[T]as shorthand forslice[T, T, T]orslice[T, T, Any]orslice[Any, T, Any]sliceas shorthand forslice[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/timedeltavariables, 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,
startandstoparedatetime-like andstepistimedelta-like (e.g.datetime.datetime/datetime.timedelta,numpy.datetime64/numpy.timedelta64orpandas.Timestamp/pandas.Timedelta) - Label based slicing via strings, for example,
pandasallows something likeframe.loc["2017-07-01":"2017-10-31"]for aDataFramethat is indexed by aDatetimeIndex, this will first convert the strings todatetimeobjects 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.
Jackenmen, rmorshea, DanielSank, flisboac, edwag and 3 moreChaoyingz and mauvilsa
Metadata
Metadata
Assignees
Labels
status: deferredIssue or PR deferred until some precondition is fixedIssue or PR deferred until some precondition is fixed