diff --git a/firanka/ranges.py b/firanka/ranges.py index 8387735e98e59f706a0ab9bd056d09690823cf83..491ed7b0029dd40112b626940cbd8a42ded4318a 100644 --- a/firanka/ranges.py +++ b/firanka/ranges.py @@ -1,7 +1,6 @@ # coding=UTF-8 from __future__ import print_function, absolute_import, division -import functools import math import six @@ -14,7 +13,7 @@ __all__ = [ def _pre_range(fun): - @functools.wraps(fun) + @six.wraps(fun) def inner(self, arg, *args, **kwargs): if not isinstance(arg, Range): arg = Range(arg) diff --git a/firanka/series/base.py b/firanka/series/base.py index b31c3ad802f20e7b24953c4a2624db7bf0f3b45a..2001146f02048cd67c03a83da73e9dc317ea7c5a 100644 --- a/firanka/series/base.py +++ b/firanka/series/base.py @@ -9,7 +9,8 @@ from firanka.ranges import Range, EMPTY_SET from sortedcontainers import SortedList -def has_arguments(fun, n): +def _has_arguments(fun, n): + assert hasattr(fun, '__call__'), 'function is not callable!' return len(inspect.getargspec(fun).args) == n @@ -65,7 +66,7 @@ class Series(object): :param fun: callable(index: float, value: any) => 1 :return: Series instance """ - assert has_arguments(fun, 2), 'Callable to apply needs 2 arguments' + assert _has_arguments(fun, 2), 'Callable to apply needs 2 arguments' return AlteredSeries(self, applyfun=fun) @@ -94,7 +95,7 @@ class Series(object): :param fun: callable(t: float, v1: any, v2: any) => value :return: new Series instance """ - assert has_arguments(fun, 3), 'Callable to join needs 3 arguments' + assert _has_arguments(fun, 3), 'Callable to join needs 3 arguments' return JoinedSeries(self, series, fun) @@ -250,7 +251,7 @@ class JoinedSeries(Series): def __init__(self, ser1, ser2, op, *args, **kwargs): """:type op: callable(time: float, v1, v2: any) -> v""" - assert has_arguments(op, 3), 'op must have 3 arguments' + assert _has_arguments(op, 3), 'op must have 3 arguments' super(JoinedSeries, self).__init__(ser1.domain.intersection(ser2.domain), *args, **kwargs) self.ser1 = ser1