What domains and range are possible?#

Let’s quickly revise what domain and range refer to in the language of (mathematical) functions.

The domain is the set of all possible inputs for a function.

The range is the set of all possible outputs, or values for a function.

staircase is designed with two domain types in mind: real numbers and time - or in the language of Python computing, floats and datetimes. However this is not to say that other domains are not possible. If the domain is totally ordered and is compatible with Python’s bisect module, and numpy.searchsorted(), then there is a reasonable chance that it could be used with staircase 2.*. Support for timedelta domains was added in v2.1.

For datetime domains, staircase (v2) has been tested with numpy.datetime64, datetime.datetime, and pandas.Timestamp, including time-zone aware variants for the latter two of these.

For timedelta domains, staircase (v2.1) has been tested with numpy.timedelta64, datetime.timedelta, and pandas.Timedelta.

Prior to v2 the domain of a step function always extended from negative infinity to positive infinity, however the ability to exclude intervals from the domain (where the step function is undefined) was introduced in v2 via masking.

The range of step functions in staircase are the real numbers only.