@@ -1848,26 +1848,33 @@ def infer_dtype_from_object(dtype):
1848
1848
if isinstance (dtype , type ) and issubclass (dtype , np .generic ):
1849
1849
# Type object from a dtype
1850
1850
return dtype
1851
- elif is_categorical (dtype ):
1852
- return CategoricalDtype ().type
1853
- elif is_datetime64tz_dtype (dtype ):
1854
- return DatetimeTZDtype (dtype ).type
1855
- elif isinstance (dtype , np .dtype ): # dtype object
1851
+ elif isinstance (dtype , np .dtype ):
1852
+ # dtype object
1856
1853
try :
1857
1854
_validate_date_like_dtype (dtype )
1858
1855
except TypeError :
1859
1856
# Should still pass if we don't have a date-like
1860
1857
pass
1861
1858
return dtype .type
1859
+
1860
+ try :
1861
+ dtype = pandas_dtype (dtype )
1862
+ except TypeError :
1863
+ pass
1864
+
1865
+ if is_extension_array_dtype (dtype ):
1866
+ return dtype .type
1862
1867
elif isinstance (dtype , string_types ):
1868
+
1869
+ # TODO(jreback)
1870
+ # should deprecate these
1863
1871
if dtype in ['datetimetz' , 'datetime64tz' ]:
1864
1872
return DatetimeTZDtype .type
1865
1873
elif dtype in ['period' ]:
1866
1874
raise NotImplementedError
1867
1875
1868
1876
if dtype == 'datetime' or dtype == 'timedelta' :
1869
1877
dtype += '64'
1870
-
1871
1878
try :
1872
1879
return infer_dtype_from_object (getattr (np , dtype ))
1873
1880
except (AttributeError , TypeError ):
0 commit comments