diff --git a/README.md b/README.md index e3a49d8f23eb2e89885f6ff2f6bdeb81c3d4e99c..c71f28c4f4960f2d978553ea75db83d72c65acf0 100644 --- a/README.md +++ b/README.md @@ -41,14 +41,14 @@ to know more about series operations. ### DiscreteSeries To use a _DiscreteSeries_ you must give it a set of data to work with. These -will define intervals, left-closed, right-open. Ie. - +will define intervals with given values, left-closed, right-open. as in: ```python fs = DiscreteSeries([(0,1), (3, 4), (5, 6)]) fs[0.5] == 1 fs[3] == 4 fs[5] == 6 +fs.domain == '<0;5>' # fs[6] - NotInDomainError's ``` @@ -100,7 +100,7 @@ _ValueError_ will be thrown. ## Ranges -Can be imported from _sai.series_. +Can be imported from _sai.ranges_. Range would have been better called an **interval**. It is a continuous subset of the real number line. diff --git a/firanka/__init__.py b/firanka/__init__.py index 11d27f8c7c435c335afaa298cf06e2cc1b202e0c..66a87bb6e9111e056b787a60fc91234ac3cd7b3c 100644 --- a/firanka/__init__.py +++ b/firanka/__init__.py @@ -1 +1 @@ -__version__ = '0.1' +__version__ = '0.1.5' diff --git a/firanka/series/exceptions.py b/firanka/exceptions.py similarity index 82% rename from firanka/series/exceptions.py rename to firanka/exceptions.py index f8d6a2885e2e3c142dfbb2b4aee946cdab471144..5a960dece93dbe1c8ed50b5e08a5f5b07e927c6c 100644 --- a/firanka/series/exceptions.py +++ b/firanka/exceptions.py @@ -1,8 +1,10 @@ # coding=UTF-8 from __future__ import print_function, absolute_import, division -import six -import logging +__all__ = [ + 'FirankaError', + 'NotInDomainError', +] class FirankaError(Exception): """ diff --git a/firanka/series/range.py b/firanka/ranges.py similarity index 95% rename from firanka/series/range.py rename to firanka/ranges.py index a5e45697951116cf71186d71cd5267970866af8f..9e5c64e160e99a9c8612856aa4b5f13adbb53352 100644 --- a/firanka/series/range.py +++ b/firanka/ranges.py @@ -1,15 +1,17 @@ # coding=UTF-8 from __future__ import print_function, absolute_import, division import six -import logging -import re import functools import math -logger = logging.getLogger(__name__) +__all__ = [ + 'Range', + 'REAL_SET', + 'EMPTY_SET' +] -def pre_range(fun): +def _pre_range(fun): @functools.wraps(fun) def inner(self, arg, *args, **kwargs): if not isinstance(arg, Range): @@ -100,7 +102,7 @@ class Range(object): '>' if self.right_inc else ')', ) - @pre_range + @_pre_range def intersection(self, y): if self.start > y.start: return y.intersection(self) @@ -108,10 +110,10 @@ class Range(object): assert self.start <= y.start if (self.stop < y.start) or (y.stop < y.start): - return EMPTY_RANGE + return EMPTY_SET if self.stop == y.start and not (self.right_inc and y.left_inc): - return EMPTY_RANGE + return EMPTY_SET if self.start == y.start: start = self.start @@ -130,7 +132,7 @@ class Range(object): return Range(start, stop, left_inc, right_inc) - @pre_range + @_pre_range def __eq__(self, other): if self.is_empty() and other.is_empty(): return True @@ -140,5 +142,5 @@ class Range(object): return hash(self.start) ^ hash(self.stop) -EMPTY_RANGE = Range(0, 0, False, False) +EMPTY_SET = Range(0, 0, False, False) REAL_SET = Range(float('-inf'), float('+inf'), False, False) diff --git a/firanka/series/__init__.py b/firanka/series/__init__.py index fb30d506acd788a3a4732b98ef5fd2da58ee8fb3..3407ef614f2778c78992bee020fd4f4cbcec5dc6 100644 --- a/firanka/series/__init__.py +++ b/firanka/series/__init__.py @@ -1,18 +1,9 @@ # coding=UTF-8 from __future__ import print_function, absolute_import, division -import six -import logging -from .exceptions import NotInDomainError, FirankaError -from .range import Range, REAL_SET from .series import DiscreteSeries, FunctionSeries, ModuloSeries, Series - __all__ = [ - 'REAL_SET', - 'FirankaError', - 'NotInDomainError', - 'Range', 'FunctionSeries', 'DiscreteSeries', 'ModuloSeries', diff --git a/firanka/series/series.py b/firanka/series/series.py index d5847d2900b710274129ea768d0b96421e88e70d..dcc777ae37a3a4ef27b0a182b669daf9eb5536fc 100644 --- a/firanka/series/series.py +++ b/firanka/series/series.py @@ -1,11 +1,13 @@ # coding=UTF-8 from __future__ import print_function, absolute_import, division -import six + import math -from .range import Range, REAL_SET, EMPTY_RANGE -from .exceptions import NotInDomainError +import six + +from firanka.exceptions import NotInDomainError +from firanka.ranges import Range, REAL_SET, EMPTY_SET class Series(object): @@ -141,7 +143,7 @@ class DiscreteSeries(Series): def __init__(self, data, domain=None): if len(data) == 0: - domain = EMPTY_RANGE + domain = EMPTY_SET elif domain is None: domain = Range(data[0][0], data[-1][0], True, True) diff --git a/requirements.txt b/requirements.txt index 51695eebe71a5ec2a8c4182d21b47ede8728f1bf..ffe2fce498955b628014618b28c6bcf152466a4a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1 @@ six -satella diff --git a/tests/test_series/test_range.py b/tests/test_series/test_range.py index 4476b083c6260967955f36e4db92af193146600d..f116128a9bff68beb50e39399b8f3f45673de928 100644 --- a/tests/test_series/test_range.py +++ b/tests/test_series/test_range.py @@ -1,7 +1,7 @@ # coding=UTF-8 from __future__ import print_function, absolute_import, division import unittest -from firanka.series import Range +from firanka.ranges import Range class TestRange(unittest.TestCase): @@ -42,7 +42,8 @@ class TestRange(unittest.TestCase): self.assertRaises(ValueError, lambda: Range('#2;3>')) self.assertRaises(ValueError, lambda: Range('(2;3!')) self.assertRaises(ValueError, lambda: Range('<-inf;3)')) - self.assertEqual(Range(1,2,True,False), Range('<1;2)')) + self.assertEqual(Range(1, 2, True, False), Range('<1;2)')) + self.assertEqual(Range(1, 2, True, False), '<1;2)') def test_contains(self): self.assertFalse(-1 in Range('<-10;-1)')) diff --git a/tests/test_series/test_series.py b/tests/test_series/test_series.py index 219a56c1696d39ce2f850eb51f200a1c15435b3b..f83a952e478e8a147f0c1b54ae26f0dd29bac45d 100644 --- a/tests/test_series/test_series.py +++ b/tests/test_series/test_series.py @@ -3,7 +3,9 @@ from __future__ import print_function, absolute_import, division import six import math import unittest -from firanka.series import DiscreteSeries, FunctionSeries, Range, ModuloSeries, NotInDomainError +from firanka.series import DiscreteSeries, FunctionSeries, ModuloSeries +from firanka.ranges import Range +from firanka.exceptions import NotInDomainError NOOP = lambda x: x