Skip to content

Commit 3f3508f

Browse files
committed
fixed DateRange state pickling issue, turn off rpy unit tests for now
git-svn-id: http://pandas.googlecode.com/svn/trunk@201 d5231056-7de3-11de-ac95-d976489f1ece
1 parent 4e375e8 commit 3f3508f

File tree

8 files changed

+43
-44
lines changed

8 files changed

+43
-44
lines changed

pandas/core/daterange.py

+13
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,19 @@ def __new__(cls, start=None, end=None, periods=None,
168168

169169
return index
170170

171+
def __reduce__(self):
172+
"""Necessary for making this object picklable"""
173+
a, b, state = Index.__reduce__(self)
174+
aug_state = state, self.offset
175+
176+
return a, b, aug_state
177+
178+
def __setstate__(self, aug_state):
179+
"""Necessary for making this object picklable"""
180+
state, offset = aug_state[:-1], aug_state[-1]
181+
182+
self.offset = offset
183+
Index.__setstate__(self, *state)
171184

172185
@property
173186
def _allDates(self):

pandas/core/index.py

-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
# pylint: disable-msg=W0232
44

55
import numpy as np
6-
from pandas.core.datetools import DateOffset
76
from pandas.lib.tseries import map_indices, isAllDates
87

98
def _indexOp(opname):

pandas/core/panel.py

+19-36
Original file line numberDiff line numberDiff line change
@@ -76,13 +76,24 @@ def f(self, other, axis='items'):
7676

7777
return f
7878

79+
class PanelAxis(object):
80+
81+
def __init__(self, cache_field):
82+
self.cache_field = cache_field
83+
84+
def __get__(self, obj, type=None):
85+
return getattr(obj, self.cache_field)
86+
87+
def __set__(self, obj, value):
88+
if not isinstance(value, Index):
89+
value = Index(value)
90+
91+
setattr(obj, self.cache_field, value)
92+
7993
class Panel(Picklable):
8094
"""
8195
Abstract superclass for LongPanel and WidePanel data structures
8296
"""
83-
_items = None
84-
_major_axis = None
85-
_minor_axis = None
8697
_values = None
8798
factors = None
8899

@@ -98,6 +109,10 @@ class Panel(Picklable):
98109
__rdiv__ = _arith_method(lambda x, y: y / x, '__rdiv__')
99110
__rpow__ = _arith_method(lambda x, y: y ** x, '__rpow__')
100111

112+
items = PanelAxis('_items')
113+
major_axis = PanelAxis('_major_axis')
114+
minor_axis = PanelAxis('_minor_axis')
115+
101116
def __repr__(self):
102117
class_name = str(self.__class__)
103118

@@ -130,39 +145,6 @@ def iteritems(self):
130145
for item in self:
131146
yield item, self[item]
132147

133-
def _get_items(self):
134-
return self._items
135-
136-
def _set_items(self, items):
137-
if not isinstance(items, Index):
138-
items = Index(items)
139-
140-
self._items = items
141-
142-
items = property(fget=_get_items, fset=_set_items)
143-
144-
def _get_major_axis(self):
145-
return self._major_axis
146-
147-
def _set_major_axis(self, major_axis):
148-
if not isinstance(major_axis, Index):
149-
major_axis = Index(major_axis)
150-
151-
self._major_axis = major_axis
152-
153-
major_axis = property(fget=_get_major_axis, fset=_set_major_axis)
154-
155-
def _get_minor_axis(self):
156-
return self._minor_axis
157-
158-
def _set_minor_axis(self, minor_axis):
159-
if not isinstance(minor_axis, Index):
160-
minor_axis = Index(minor_axis)
161-
162-
self._minor_axis = minor_axis
163-
164-
minor_axis = property(fget=_get_minor_axis, fset=_set_minor_axis)
165-
166148
@property
167149
def dims(self):
168150
return len(self.items), len(self.major_axis), len(self.minor_axis)
@@ -172,6 +154,7 @@ def dims(self):
172154
'major' : 1,
173155
'minor' : 2
174156
}
157+
175158
_WIDE_AXIS_NAMES = dict((v, k) for k, v in _WIDE_AXIS_NUMBERS.iteritems())
176159

177160

pandas/core/tests/test_daterange.py

+8
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,14 @@ def test_shift(self):
100100
rng = DateRange(START, END, offset=datetools.bmonthEnd)
101101
shifted = rng.shift(1, offset=datetools.bday)
102102

103+
def test_pickle_unpickle(self):
104+
import pickle
105+
106+
pickled = pickle.dumps(self.rng)
107+
unpickled = pickle.loads(pickled)
108+
109+
self.assert_(unpickled.offset is not None)
110+
103111
# DateRange test
104112

105113
def testDateRange1():

pandas/rpy/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
from pandas.rpy.common import importr, r, load_data
1+
# from pandas.rpy.common import importr, r, load_data

pandas/rpy/common.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
from pandas import DataFrame, DataMatrix
44

55
from rpy2.robjects.packages import importr
6-
import rpy2.robjects as robjects
6+
# import rpy2.robjects as robjects
77

8-
r = robjects.r
8+
# r = robjects.r
99

1010
def load_data(name, package=None):
1111
if package:

pandas/stats/tests/test_ols.py

-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@ def testOLSWithDatasets(self):
4242
self.checkDataSet(datasets.cpunish.Load(), skip_moving=True)
4343
self.checkDataSet(datasets.longley.Load(), skip_moving=True)
4444
self.checkDataSet(datasets.stackloss.Load(), skip_moving=True)
45-
4645
self.checkDataSet(datasets.ccard.Load(), 39, 49) # one col in X all 0s
4746
self.checkDataSet(datasets.copper.Load())
4847
self.checkDataSet(datasets.scotland.Load())

pandas/stats/var.py

-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
from __future__ import division
22

3-
from itertools import izip
43
import numpy as np
54

65
from pandas.util.decorators import cache_readonly
@@ -111,8 +110,6 @@ def granger_causality(self):
111110
from pandas.stats.api import ols
112111
from scipy.stats import f
113112

114-
params = self._k * self._p
115-
116113
d = {}
117114
for col in self._columns:
118115
d[col] = {}

0 commit comments

Comments
 (0)