Skip to content

Commit

Permalink
Added a optional default argument to to_bool. Closes #238
Browse files Browse the repository at this point in the history
  • Loading branch information
stringertheory committed Feb 3, 2024
1 parent 1dd27d2 commit 632915c
Show file tree
Hide file tree
Showing 2 changed files with 79 additions and 4 deletions.
48 changes: 48 additions & 0 deletions tests/test_operations.py
Original file line number Diff line number Diff line change
Expand Up @@ -117,3 +117,51 @@ def test_difference():

c = a - b
assert list(c.items()) == [(0, 0), (1, -1), (2, 1), (3, 0)]


def test_to_bool_default():
data = [(0, 0), (2, 5), (3, 0), (4, 7), (10, 3)]

assert TimeSeries(data=data, default=None).to_bool().default is None
assert TimeSeries(data=data, default=None).to_bool()[-1] is None
assert TimeSeries(data=data, default=0).to_bool().default == 0
assert TimeSeries(data=data, default=0).to_bool()[-1] == 0
assert TimeSeries(data=data, default=5).to_bool().default == 1
assert TimeSeries(data=data, default=5).to_bool()[-1] == 1

assert (
TimeSeries(data=data, default=None).to_bool(default=None).default
is None
)
assert (
TimeSeries(data=data, default=0).to_bool(default=None).default is None
)
assert (
TimeSeries(data=data, default=5).to_bool(default=None).default is None
)

assert (
TimeSeries(data=data, default=None).to_bool(default=False).default
is False
)
assert (
TimeSeries(data=data, default=0).to_bool(default=False).default is False
)
assert (
TimeSeries(data=data, default=5).to_bool(default=False).default is False
)

assert (
TimeSeries(data=data, default=None).to_bool(default=True).default
is True
)
assert (
TimeSeries(data=data, default=0).to_bool(default=True).default is True
)
assert (
TimeSeries(data=data, default=5).to_bool(default=True).default is True
)

assert TimeSeries(data=data, default=None).to_bool(default=10).default == 10
assert TimeSeries(data=data, default=0).to_bool(default=10).default == 10
assert TimeSeries(data=data, default=5).to_bool(default=10).default == 10
35 changes: 31 additions & 4 deletions traces/timeseries.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@

from . import histogram, operations, plot, utils

NotGiven = object()


class TimeSeries:
"""A class to help manipulate and analyze time series that are the
Expand Down Expand Up @@ -868,19 +870,44 @@ def operation(self, other, function, **kwargs):
result[time] = function(value, other)
return result

def to_bool(self, invert=False):
"""Return the truth value of each element."""
def to_bool(self, invert=False, default=NotGiven):
"""Return the truth value of each element.
Args:
invert: opposite truth values
default: If default is not explicitly given, keep it as
None if it's None (which often means "undefined" rather
than "false"), otherwise cast to bool
Returns:
:obj:`TimeSeries` with the results.
"""
if default is NotGiven:
if self.default is None:
new_default = None
else:
new_default = bool(self.default)
if invert:
new_default = not (new_default)
else:
# should this complain if default not in {None, True, False}?
new_default = default

if invert:

def function(x, y):
return not bool(x)

else:

def function(x, y):
return bool(x)

return self.operation(None, function)
return self.operation(None, function, default=new_default)

def threshold(self, value, inclusive=False):
"""Return True if > than treshold value (or >= threshold value if
Expand Down

0 comments on commit 632915c

Please sign in to comment.