diff --git a/firanka/series/range.py b/firanka/series/range.py
index 5f153bf59555f4bb3e9166b76806c0d3009b8bad..ffc085940b19dde12a3f95dc48bcbd186b1dd1dc 100644
--- a/firanka/series/range.py
+++ b/firanka/series/range.py
@@ -25,8 +25,9 @@ class Range(object):
     def __init__(self, *args):
         if len(args) == 1:
             rs, = args
-            assert rs[0] in '<('
-            assert rs[-1] in '>)'
+
+            if (rs[0] not in '<(') or (rs[-1] not in '>)'):
+                raise ValueError('Must start with < or ( and end with ) or >')
 
             lend_inclusive = rs[0] == '<'
             rend_inclusive = rs[-1] == '>'
diff --git a/tests/test_series/test_range.py b/tests/test_series/test_range.py
index 44826992906b5e26c09fd99a645f8a7b92d4e7c4..f0eca7083180a8acd4206dcb83ae47851339edc0 100644
--- a/tests/test_series/test_range.py
+++ b/tests/test_series/test_range.py
@@ -14,6 +14,10 @@ class TestRange(unittest.TestCase):
     def test_str(self):
         self.assertEqual(str(Range(-1, 1, True, True)), '<-1;1>')
 
+    def test_constructor(self):
+        self.assertRaises(ValueError, lambda: Range('#2;3>'))
+        self.assertRaises(ValueError, lambda: Range('(2;3!'))
+
     def test_contains(self):
         self.assertFalse(-1 in Range('<-10;-1)'))
         self.assertTrue(-10 in Range('<-10;-1)'))