@@ -451,6 +451,20 @@ def test_set_names_unset(self, idx, nm, prop):
451451 result = set_default_names (data )
452452 assert getattr (result .index , prop ) == nm
453453
454+ @pytest .mark .parametrize ("idx" , [
455+ pd .Index ([], name = 'index' ),
456+ pd .MultiIndex .from_arrays ([['foo' ], ['bar' ]],
457+ names = ('level_0' , 'level_1' )),
458+ pd .MultiIndex .from_arrays ([['foo' ], ['bar' ]],
459+ names = ('foo' , 'level_1' ))
460+ ])
461+ def test_warns_non_roundtrippable_names (self , idx ):
462+ # GH 19130
463+ df = pd .DataFrame ([[]], index = idx )
464+ df .index .name = 'index'
465+ with tm .assert_produces_warning ():
466+ set_default_names (df )
467+
454468 def test_timestamp_in_columns (self ):
455469 df = pd .DataFrame ([[1 , 2 ]], columns = [pd .Timestamp ('2016' ),
456470 pd .Timedelta (10 , unit = 's' )])
@@ -481,7 +495,8 @@ def test_mi_falsey_name(self):
481495class TestTableOrientReader (object ):
482496
483497 @pytest .mark .parametrize ("index_nm" , [
484- None , "idx" , pytest .param ("index" , marks = pytest .mark .xfail )])
498+ None , "idx" , pytest .param ("index" , marks = pytest .mark .xfail ),
499+ 'level_0' ])
485500 @pytest .mark .parametrize ("vals" , [
486501 {'ints' : [1 , 2 , 3 , 4 ]},
487502 {'objects' : ['a' , 'b' , 'c' , 'd' ]},
@@ -492,7 +507,7 @@ class TestTableOrientReader(object):
492507 pytest .param ({'floats' : [1. , 2. , 3. , 4. ]}, marks = pytest .mark .xfail ),
493508 {'floats' : [1.1 , 2.2 , 3.3 , 4.4 ]},
494509 {'bools' : [True , False , False , True ]}])
495- def test_read_json_table_orient (self , index_nm , vals ):
510+ def test_read_json_table_orient (self , index_nm , vals , recwarn ):
496511 df = DataFrame (vals , index = pd .Index (range (4 ), name = index_nm ))
497512 out = df .to_json (orient = "table" )
498513 result = pd .read_json (out , orient = "table" )
@@ -504,7 +519,7 @@ def test_read_json_table_orient(self, index_nm, vals):
504519 {'timedeltas' : pd .timedelta_range ('1H' , periods = 4 , freq = 'T' )},
505520 {'timezones' : pd .date_range ('2016-01-01' , freq = 'd' , periods = 4 ,
506521 tz = 'US/Central' )}])
507- def test_read_json_table_orient_raises (self , index_nm , vals ):
522+ def test_read_json_table_orient_raises (self , index_nm , vals , recwarn ):
508523 df = DataFrame (vals , index = pd .Index (range (4 ), name = index_nm ))
509524 out = df .to_json (orient = "table" )
510525 with tm .assert_raises_regex (NotImplementedError , 'can not yet read ' ):
@@ -530,7 +545,9 @@ def test_comprehensive(self):
530545 result = pd .read_json (out , orient = "table" )
531546 tm .assert_frame_equal (df , result )
532547
533- @pytest .mark .parametrize ("index_names" , [[None , None ], ['foo' , 'bar' ]])
548+ @pytest .mark .parametrize ("index_names" , [
549+ [None , None ], ['foo' , 'bar' ], ['foo' , None ], [None , 'foo' ],
550+ ['index' , 'foo' ]])
534551 def test_multiindex (self , index_names ):
535552 # GH 18912
536553 df = pd .DataFrame (
0 commit comments