@@ -47,8 +47,8 @@ def test_getitem_dict(self):
4747 expected = v [0 ]
4848 self .assertVariableIdentical (expected , actual )
4949
50- def assertIndexedLikeNDArray (self , variable , expected_value0 ,
51- expected_dtype = None ):
50+ def _assertIndexedLikeNDArray (self , variable , expected_value0 ,
51+ expected_dtype = None ):
5252 """Given a 1-dimensional variable, verify that the variable is indexed
5353 like a numpy.ndarray.
5454 """
@@ -66,52 +66,52 @@ def assertIndexedLikeNDArray(self, variable, expected_value0,
6666 # check output type instead of array dtype
6767 self .assertEqual (type (variable .values [0 ]), type (expected_value0 ))
6868 self .assertEqual (type (variable [0 ].values ), type (expected_value0 ))
69- else :
69+ elif expected_dtype is not False :
7070 self .assertEqual (variable .values [0 ].dtype , expected_dtype )
7171 self .assertEqual (variable [0 ].values .dtype , expected_dtype )
7272
7373 def test_index_0d_int (self ):
7474 for value , dtype in [(0 , np .int_ ),
7575 (np .int32 (0 ), np .int32 )]:
7676 x = self .cls (['x' ], [value ])
77- self .assertIndexedLikeNDArray (x , value , dtype )
77+ self ._assertIndexedLikeNDArray (x , value , dtype )
7878
7979 def test_index_0d_float (self ):
8080 for value , dtype in [(0.5 , np .float_ ),
8181 (np .float32 (0.5 ), np .float32 )]:
8282 x = self .cls (['x' ], [value ])
83- self .assertIndexedLikeNDArray (x , value , dtype )
83+ self ._assertIndexedLikeNDArray (x , value , dtype )
8484
8585 def test_index_0d_string (self ):
8686 for value , dtype in [('foo' , np .dtype ('U3' if PY3 else 'S3' )),
8787 (u'foo' , np .dtype ('U3' ))]:
8888 x = self .cls (['x' ], [value ])
89- self .assertIndexedLikeNDArray (x , value , dtype )
89+ self ._assertIndexedLikeNDArray (x , value , dtype )
9090
9191 def test_index_0d_datetime (self ):
9292 d = datetime (2000 , 1 , 1 )
9393 x = self .cls (['x' ], [d ])
94- self .assertIndexedLikeNDArray (x , np .datetime64 (d ))
94+ self ._assertIndexedLikeNDArray (x , np .datetime64 (d ))
9595
9696 x = self .cls (['x' ], [np .datetime64 (d )])
97- self .assertIndexedLikeNDArray (x , np .datetime64 (d ), 'datetime64[ns]' )
97+ self ._assertIndexedLikeNDArray (x , np .datetime64 (d ), 'datetime64[ns]' )
9898
9999 x = self .cls (['x' ], pd .DatetimeIndex ([d ]))
100- self .assertIndexedLikeNDArray (x , np .datetime64 (d ), 'datetime64[ns]' )
100+ self ._assertIndexedLikeNDArray (x , np .datetime64 (d ), 'datetime64[ns]' )
101101
102102 def test_index_0d_timedelta64 (self ):
103103 td = timedelta (hours = 1 )
104104
105105 x = self .cls (['x' ], [np .timedelta64 (td )])
106- self .assertIndexedLikeNDArray (x , np .timedelta64 (td ), 'timedelta64[ns]' )
106+ self ._assertIndexedLikeNDArray (x , np .timedelta64 (td ), 'timedelta64[ns]' )
107107
108108 x = self .cls (['x' ], pd .to_timedelta ([td ]))
109- self .assertIndexedLikeNDArray (x , np .timedelta64 (td ), 'timedelta64[ns]' )
109+ self ._assertIndexedLikeNDArray (x , np .timedelta64 (td ), 'timedelta64[ns]' )
110110
111111 def test_index_0d_not_a_time (self ):
112112 d = np .datetime64 ('NaT' , 'ns' )
113113 x = self .cls (['x' ], [d ])
114- self .assertIndexedLikeNDArray (x , d , None )
114+ self ._assertIndexedLikeNDArray (x , d )
115115
116116 def test_index_0d_object (self ):
117117
@@ -130,7 +130,15 @@ def __repr__(self):
130130
131131 item = HashableItemWrapper ((1 , 2 , 3 ))
132132 x = self .cls ('x' , [item ])
133- self .assertIndexedLikeNDArray (x , item )
133+ self ._assertIndexedLikeNDArray (x , item , expected_dtype = False )
134+
135+ def test_0d_object_array_with_list (self ):
136+ listarray = np .empty ((1 ,), dtype = object )
137+ listarray [0 ] = [1 , 2 , 3 ]
138+ x = self .cls ('x' , listarray )
139+ assert x .data == listarray
140+ assert x [0 ].data == listarray .squeeze ()
141+ assert x .squeeze ().data == listarray .squeeze ()
134142
135143 def test_index_and_concat_datetime (self ):
136144 # regression test for #125
@@ -729,6 +737,19 @@ def test_transpose(self):
729737 w3 = Variable (['b' , 'c' , 'd' , 'a' ], np .einsum ('abcd->bcda' , x ))
730738 self .assertVariableIdentical (w , w3 .transpose ('a' , 'b' , 'c' , 'd' ))
731739
740+ def test_transpose_0d (self ):
741+ for value in [
742+ 3.5 ,
743+ ('a' , 1 ),
744+ np .datetime64 ('2000-01-01' ),
745+ np .timedelta64 (1 , 'h' ),
746+ None ,
747+ object (),
748+ ]:
749+ variable = Variable ([], value )
750+ actual = variable .transpose ()
751+ assert actual .identical (variable )
752+
732753 def test_squeeze (self ):
733754 v = Variable (['x' , 'y' ], [[1 ]])
734755 self .assertVariableIdentical (Variable ([], 1 ), v .squeeze ())
@@ -773,6 +794,15 @@ def test_expand_dims(self):
773794 with self .assertRaisesRegexp (ValueError , 'must be a superset' ):
774795 v .expand_dims (['z' ])
775796
797+ def test_expand_dims_object_dtype (self ):
798+ v = Variable ([], ('a' , 1 ))
799+ actual = v .expand_dims (('x' ,), (3 ,))
800+ exp_values = np .empty ((3 ,), dtype = object )
801+ for i in range (3 ):
802+ exp_values [i ] = ('a' , 1 )
803+ expected = Variable (['x' ], exp_values )
804+ assert actual .identical (expected )
805+
776806 def test_stack (self ):
777807 v = Variable (['x' , 'y' ], [[0 , 1 ], [2 , 3 ]], {'foo' : 'bar' })
778808 actual = v .stack (z = ('x' , 'y' ))
0 commit comments