Skip to content

Commit 8ca7877

Browse files
committed
pandas 0.25.0: paper over a strictness change in index unions
see pandas-dev/pandas#28034 We switch every timezone-aware series into utc now.
1 parent 7517322 commit 8ca7877

File tree

3 files changed

+14
-9
lines changed

3 files changed

+14
-9
lines changed

test/test_tsio.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1543,7 +1543,7 @@ def test_insert_errors(engine, tsh):
15431543
index=pd.date_range(start=utcdt(2018, 1, 1),
15441544
freq='D', periods=3))
15451545

1546-
with pytest.raises(AssertionError):
1546+
with pytest.raises(TypeError):
15471547
tsh.insert(engine, 42, 'error', 'Babar')
15481548

15491549
with pytest.raises(AssertionError):

tshistory/tsio.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,12 +55,12 @@ def insert(self, cn, newts, name, author,
5555
author: str free-form author name
5656
metadata: optional dict for changeset metadata
5757
"""
58+
if not len(newts):
59+
return
5860
newts = self._guard_insert(
5961
newts, name, author, metadata,
6062
_insertion_date
6163
)
62-
if not len(newts):
63-
return
6464

6565
assert ('<M8[ns]' == newts.index.dtype or
6666
'datetime' in str(newts.index.dtype) and not
@@ -441,11 +441,14 @@ def _guard_insert(self, newts, name, author, metadata, insertion_date):
441441
assert (insertion_date is None or
442442
isinstance(insertion_date, datetime)), 'Bad format for insertion date'
443443
assert isinstance(newts, pd.Series), 'Not a pd.Series'
444-
assert not newts.index.duplicated().any(), 'There are some duplicates in the index'
444+
index = newts.index
445+
assert not index.duplicated().any(), 'There are some duplicates in the index'
445446

446-
assert newts.index.notna().all(), 'The index contains NaT entries'
447-
if not newts.index.is_monotonic_increasing:
447+
assert index.notna().all(), 'The index contains NaT entries'
448+
if not index.is_monotonic_increasing:
448449
newts = newts.sort_index()
450+
if index.tz is not None:
451+
newts.index = index.tz_convert('UTC')
449452

450453
return num2float(newts)
451454

tshistory/util.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -146,10 +146,12 @@ class SeriesServices(object):
146146
def patch(self, base, diff):
147147
assert base is not None
148148
assert diff is not None
149-
newindex = base.index.union(diff.index).sort_values()
149+
basei = base.index
150+
diffi = diff.index
151+
newindex = basei.union(diffi).sort_values()
150152
patched = pd.Series([0] * len(newindex), index=newindex)
151-
patched[base.index] = base
152-
patched[diff.index] = diff
153+
patched[basei] = base
154+
patched[diffi] = diff
153155
patched.name = base.name
154156
return patched
155157

0 commit comments

Comments
 (0)