24
24
25
25
import pandas .io .formats .printing as printing
26
26
27
- from .common import TestData
28
-
29
27
30
28
class SharedWithSparse :
31
29
"""
@@ -39,82 +37,84 @@ def _assert_series_equal(self, left, right):
39
37
"""Dispatch to series class dependent assertion"""
40
38
raise NotImplementedError
41
39
42
- def test_scalarop_preserve_name (self ):
43
- result = self . ts * 2
44
- assert result .name == self . ts .name
40
+ def test_scalarop_preserve_name (self , datetime_series ):
41
+ result = datetime_series * 2
42
+ assert result .name == datetime_series .name
45
43
46
- def test_copy_name (self ):
47
- result = self . ts .copy ()
48
- assert result .name == self . ts .name
44
+ def test_copy_name (self , datetime_series ):
45
+ result = datetime_series .copy ()
46
+ assert result .name == datetime_series .name
49
47
50
- def test_copy_index_name_checking (self ):
48
+ def test_copy_index_name_checking (self , datetime_series ):
51
49
# don't want to be able to modify the index stored elsewhere after
52
50
# making a copy
53
51
54
- self . ts .index .name = None
55
- assert self . ts .index .name is None
56
- assert self . ts is self . ts
52
+ datetime_series .index .name = None
53
+ assert datetime_series .index .name is None
54
+ assert datetime_series is datetime_series
57
55
58
- cp = self . ts .copy ()
56
+ cp = datetime_series .copy ()
59
57
cp .index .name = "foo"
60
- printing .pprint_thing (self . ts .index .name )
61
- assert self . ts .index .name is None
58
+ printing .pprint_thing (datetime_series .index .name )
59
+ assert datetime_series .index .name is None
62
60
63
- def test_append_preserve_name (self ):
64
- result = self . ts [:5 ].append (self . ts [5 :])
65
- assert result .name == self . ts .name
61
+ def test_append_preserve_name (self , datetime_series ):
62
+ result = datetime_series [:5 ].append (datetime_series [5 :])
63
+ assert result .name == datetime_series .name
66
64
67
- def test_binop_maybe_preserve_name (self ):
65
+ def test_binop_maybe_preserve_name (self , datetime_series ):
68
66
# names match, preserve
69
- result = self . ts * self . ts
70
- assert result .name == self . ts .name
71
- result = self . ts . mul (self . ts )
72
- assert result .name == self . ts .name
67
+ result = datetime_series * datetime_series
68
+ assert result .name == datetime_series .name
69
+ result = datetime_series . mul (datetime_series )
70
+ assert result .name == datetime_series .name
73
71
74
- result = self . ts * self . ts [:- 2 ]
75
- assert result .name == self . ts .name
72
+ result = datetime_series * datetime_series [:- 2 ]
73
+ assert result .name == datetime_series .name
76
74
77
75
# names don't match, don't preserve
78
- cp = self . ts .copy ()
76
+ cp = datetime_series .copy ()
79
77
cp .name = "something else"
80
- result = self . ts + cp
78
+ result = datetime_series + cp
81
79
assert result .name is None
82
- result = self . ts .add (cp )
80
+ result = datetime_series .add (cp )
83
81
assert result .name is None
84
82
85
83
ops = ["add" , "sub" , "mul" , "div" , "truediv" , "floordiv" , "mod" , "pow" ]
86
84
ops = ops + ["r" + op for op in ops ]
87
85
for op in ops :
88
86
# names match, preserve
89
- s = self . ts .copy ()
87
+ s = datetime_series .copy ()
90
88
result = getattr (s , op )(s )
91
- assert result .name == self . ts .name
89
+ assert result .name == datetime_series .name
92
90
93
91
# names don't match, don't preserve
94
- cp = self . ts .copy ()
92
+ cp = datetime_series .copy ()
95
93
cp .name = "changed"
96
94
result = getattr (s , op )(cp )
97
95
assert result .name is None
98
96
99
- def test_combine_first_name (self ):
100
- result = self .ts .combine_first (self .ts [:5 ])
101
- assert result .name == self .ts .name
97
+ def test_combine_first_name (self , datetime_series ):
98
+ result = datetime_series .combine_first (datetime_series [:5 ])
99
+ assert result .name == datetime_series .name
100
+
101
+ def test_getitem_preserve_name (self , datetime_series ):
102
+ result = datetime_series [datetime_series > 0 ]
103
+ assert result .name == datetime_series .name
102
104
103
- def test_getitem_preserve_name (self ):
104
- result = self .ts [self .ts > 0 ]
105
- assert result .name == self .ts .name
105
+ result = datetime_series [[0 , 2 , 4 ]]
106
+ assert result .name == datetime_series .name
106
107
107
- result = self . ts [[ 0 , 2 , 4 ] ]
108
- assert result .name == self . ts .name
108
+ result = datetime_series [ 5 : 10 ]
109
+ assert result .name == datetime_series .name
109
110
110
- result = self .ts [5 :10 ]
111
- assert result .name == self .ts .name
111
+ def test_pickle_datetimes (self , datetime_series ):
112
+ unp_ts = self ._pickle_roundtrip (datetime_series )
113
+ assert_series_equal (unp_ts , datetime_series )
112
114
113
- def test_pickle (self ):
114
- unp_series = self ._pickle_roundtrip (self .series )
115
- unp_ts = self ._pickle_roundtrip (self .ts )
116
- assert_series_equal (unp_series , self .series )
117
- assert_series_equal (unp_ts , self .ts )
115
+ def test_pickle_strings (self , string_series ):
116
+ unp_series = self ._pickle_roundtrip (string_series )
117
+ assert_series_equal (unp_series , string_series )
118
118
119
119
def _pickle_roundtrip (self , obj ):
120
120
@@ -123,13 +123,13 @@ def _pickle_roundtrip(self, obj):
123
123
unpickled = pd .read_pickle (path )
124
124
return unpickled
125
125
126
- def test_argsort_preserve_name (self ):
127
- result = self . ts .argsort ()
128
- assert result .name == self . ts .name
126
+ def test_argsort_preserve_name (self , datetime_series ):
127
+ result = datetime_series .argsort ()
128
+ assert result .name == datetime_series .name
129
129
130
- def test_sort_index_name (self ):
131
- result = self . ts .sort_index (ascending = False )
132
- assert result .name == self . ts .name
130
+ def test_sort_index_name (self , datetime_series ):
131
+ result = datetime_series .sort_index (ascending = False )
132
+ assert result .name == datetime_series .name
133
133
134
134
def test_constructor_dict (self ):
135
135
d = {"a" : 0.0 , "b" : 1.0 , "c" : 2.0 }
@@ -211,7 +211,7 @@ def test_sparse_accessor_updates_on_inplace(self):
211
211
assert s .sparse .density == 1.0
212
212
213
213
214
- class TestSeriesMisc (TestData , SharedWithSparse ):
214
+ class TestSeriesMisc (SharedWithSparse ):
215
215
216
216
series_klass = Series
217
217
# SharedWithSparse tests use generic, series_klass-agnostic assertion
@@ -307,44 +307,49 @@ def test_not_hashable(self):
307
307
with pytest .raises (TypeError , match = msg ):
308
308
hash (s )
309
309
310
- def test_contains (self ):
311
- tm .assert_contains_all (self . ts . index , self . ts )
310
+ def test_contains (self , datetime_series ):
311
+ tm .assert_contains_all (datetime_series . index , datetime_series )
312
312
313
- def test_iter (self ):
314
- for i , val in enumerate (self . series ):
315
- assert val == self . series [i ]
313
+ def test_iter_datetimes (self , datetime_series ):
314
+ for i , val in enumerate (datetime_series ):
315
+ assert val == datetime_series [i ]
316
316
317
- for i , val in enumerate (self .ts ):
318
- assert val == self .ts [i ]
317
+ def test_iter_strings (self , string_series ):
318
+ for i , val in enumerate (string_series ):
319
+ assert val == string_series [i ]
319
320
320
- def test_keys (self ):
321
+ def test_keys (self , datetime_series ):
321
322
# HACK: By doing this in two stages, we avoid 2to3 wrapping the call
322
323
# to .keys() in a list()
323
- getkeys = self . ts .keys
324
- assert getkeys () is self . ts .index
324
+ getkeys = datetime_series .keys
325
+ assert getkeys () is datetime_series .index
325
326
326
- def test_values (self ):
327
- tm .assert_almost_equal (self .ts .values , self .ts , check_dtype = False )
327
+ def test_values (self , datetime_series ):
328
+ tm .assert_almost_equal (
329
+ datetime_series .values , datetime_series , check_dtype = False
330
+ )
328
331
329
- def test_iteritems (self ):
330
- for idx , val in self . series .iteritems ():
331
- assert val == self . series [idx ]
332
+ def test_iteritems_datetimes (self , datetime_series ):
333
+ for idx , val in datetime_series .iteritems ():
334
+ assert val == datetime_series [idx ]
332
335
333
- for idx , val in self .ts .iteritems ():
334
- assert val == self .ts [idx ]
336
+ def test_iteritems_strings (self , string_series ):
337
+ for idx , val in string_series .iteritems ():
338
+ assert val == string_series [idx ]
335
339
336
340
# assert is lazy (genrators don't define reverse, lists do)
337
- assert not hasattr (self . series .iteritems (), "reverse" )
341
+ assert not hasattr (string_series .iteritems (), "reverse" )
338
342
339
- def test_items (self ):
340
- for idx , val in self . series .items ():
341
- assert val == self . series [idx ]
343
+ def test_items_datetimes (self , datetime_series ):
344
+ for idx , val in datetime_series .items ():
345
+ assert val == datetime_series [idx ]
342
346
343
- for idx , val in self .ts .items ():
344
- assert val == self .ts [idx ]
347
+ def test_items_strings (self , string_series ):
348
+ for idx , val in string_series .items ():
349
+ assert val == string_series [idx ]
345
350
346
351
# assert is lazy (genrators don't define reverse, lists do)
347
- assert not hasattr (self . series .items (), "reverse" )
352
+ assert not hasattr (string_series .items (), "reverse" )
348
353
349
354
def test_raise_on_info (self ):
350
355
s = Series (np .random .randn (10 ))
@@ -413,9 +418,9 @@ def test_class_axis(self):
413
418
# no exception and no empty docstring
414
419
assert pydoc .getdoc (Series .index )
415
420
416
- def test_numpy_unique (self ):
421
+ def test_numpy_unique (self , datetime_series ):
417
422
# it works!
418
- np .unique (self . ts )
423
+ np .unique (datetime_series )
419
424
420
425
def test_ndarray_compat (self ):
421
426
0 commit comments