File tree Expand file tree Collapse file tree 3 files changed +41
-2
lines changed Expand file tree Collapse file tree 3 files changed +41
-2
lines changed Original file line number Diff line number Diff line change 1+ cbook.is_sequence_of_strings recognizes string objects
2+ `````````````````````````````````````````````````````` 
3+ 
4+ This is primarily how pandas stores a sequence of strings.
5+ 
6+     import pandas as pd
7+     import matplotlib.cbook as cbook
8+ 
9+     a = np.array(['a', 'b', 'c'])
10+     print(cbook.is_sequence_of_strings(a))  # True
11+ 
12+     a = np.array(['a', 'b', 'c'], dtype=object)
13+     print(cbook.is_sequence_of_strings(a))  # True
14+ 
15+     s = pd.Series(['a', 'b', 'c'])
16+     print(cbook.is_sequence_of_strings(s))  # True
17+ 
18+ Previously, the last two prints returned false.
Original file line number Diff line number Diff line change @@ -783,8 +783,12 @@ def is_sequence_of_strings(obj):
783783    """ 
784784    if  not  iterable (obj ):
785785        return  False 
786-     if  is_string_like (obj ):
787-         return  False 
786+     if  is_string_like (obj ) and  not  isinstance (obj , np .ndarray ):
787+         try :
788+             obj  =  obj .values 
789+         except  AttributeError :
790+             # not pandas 
791+             return  False 
788792    for  o  in  obj :
789793        if  not  is_string_like (o ):
790794            return  False 
Original file line number Diff line number Diff line change @@ -26,6 +26,23 @@ def test_is_string_like():
2626    assert  cbook .is_string_like ("hello world" )
2727    assert_equal (cbook .is_string_like (10 ), False )
2828
29+     y  =  ['a' , 'b' , 'c' ]
30+     assert_equal (cbook .is_string_like (y ), False )
31+ 
32+     y  =  np .array (y )
33+     assert_equal (cbook .is_string_like (y ), False )
34+ 
35+     y  =  np .array (y , dtype = object )
36+     assert  cbook .is_string_like (y )
37+ 
38+ 
39+ def  test_is_sequence_of_strings ():
40+     y  =  ['a' , 'b' , 'c' ]
41+     assert  cbook .is_sequence_of_strings (y )
42+ 
43+     y  =  np .array (y , dtype = object )
44+     assert  cbook .is_sequence_of_strings (y )
45+ 
2946
3047def  test_restrict_dict ():
3148    d  =  {'foo' : 'bar' , 1 : 2 }
 
 
   
 
     
   
   
          
    
    
     
    
      
     
     
    You can’t perform that action at this time.
  
 
    
  
    
      
        
     
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments