Skip to content

Commit 3550eac

Browse files
committed
ENH: added guards against bad interval data
1 parent dfb6e90 commit 3550eac

File tree

3 files changed

+14
-0
lines changed

3 files changed

+14
-0
lines changed

pandas/core/datetools.py

+2
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,8 @@ def __init__(self, value=None, freq=None,
287287
elif isinstance(value, datetime):
288288
dt = value
289289
elif isinstance(value, (int, long)):
290+
if value <= 0:
291+
raise ValueError("Value must be positive")
290292
self.ordinal = value
291293
else:
292294
raise ValueError("Value must be string or datetime")

pandas/core/index.py

+3
Original file line numberDiff line numberDiff line change
@@ -1951,6 +1951,9 @@ def __new__(cls, data=None,
19511951
else:
19521952
data = data.astype('i8')
19531953

1954+
if (data <= 0).any():
1955+
raise ValueError("Found illegal (<= 0) values in data")
1956+
19541957
subarr = data.view(cls)
19551958
subarr.name = name
19561959
subarr.freq = freq

pandas/tests/test_interval.py

+9
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
from numpy.ma.testutils import assert_equal
1313
from pandas.core.datetools import Interval
1414
from pandas.core.index import IntervalIndex
15+
import pandas.core.datetools as datetools
16+
import numpy as np
1517

1618
class TestIntervalProperties(TestCase):
1719
"Test properties such as year, month, weekday, etc...."
@@ -899,6 +901,13 @@ def test_resample(self):
899901
self.assertEquals(ii7.resample('H', 'S'), ii5)
900902
self.assertEquals(ii7.resample('Min', 'S'), ii6)
901903

904+
def test_badinput(self):
905+
self.assertRaises(datetools.DateParseError, Interval, '1/1/-2000', 'A')
906+
self.assertRaises(ValueError, Interval, -2000, 'A')
907+
self.assertRaises(ValueError, Interval, 0, 'A')
908+
self.assertRaises(ValueError, IntervalIndex, [-1, 0, 1], 'A')
909+
self.assertRaises(ValueError, IntervalIndex, np.array([-1, 0, 1]), 'A')
910+
902911
class TestMethods(TestCase):
903912
"Base test class for MaskedArrays."
904913

0 commit comments

Comments
 (0)