-
-
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]
slice
as 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
/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
andstop
aredatetime
-like andstep
istimedelta
-like (e.g.datetime.datetime
/datetime.timedelta
,numpy.datetime64
/numpy.timedelta64
orpandas.Timestamp
/pandas.Timedelta
) - Label based slicing via strings, for example,
pandas
allows something likeframe.loc["2017-07-01":"2017-10-31"]
for aDataFrame
that is indexed by aDatetimeIndex
, this will first convert the strings todatetime
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.
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