AssertionError creating array with StringDtype instead of StringDtype(), can we have a friendlier error message? · Issue #31356 · pandas-dev/pandas (original) (raw)

The following fails with an AssertionError on pandas 1.0.0rc0:

pd.Series(["a", "b"], dtype=pd.StringDtype)

I wrote this by mistake — this works:

pd.Series(["a", "b"], dtype=pd.StringDtype())

When running the former, I get a traceback with an AssertionError:

Traceback (most recent call last):
  File "/media/nas/x21324/miniconda3/envs/py37e/lib/python3.7/site-packages/pandas/core/construction.py", line 534, in _try_cast
    if is_integer_dtype(dtype):
  File "/media/nas/x21324/miniconda3/envs/py37e/lib/python3.7/site-packages/pandas/core/dtypes/common.py", line 827, in is_integer_dtype
    return _is_dtype_type(arr_or_dtype, classes_and_not_datetimelike(np.integer))
  File "/media/nas/x21324/miniconda3/envs/py37e/lib/python3.7/site-packages/pandas/core/dtypes/common.py", line 1732, in _is_dtype_type
    return condition(np.dtype(arr_or_dtype).type)
TypeError: data type not understood

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "mwe18.py", line 2, in <module>
    pd.Series(["a", "b"], dtype=pd.StringDtype)
  File "/media/nas/x21324/miniconda3/envs/py37e/lib/python3.7/site-packages/pandas/core/series.py", line 304, in __init__
    data = sanitize_array(data, index, dtype, copy, raise_cast_failure=True)
  File "/media/nas/x21324/miniconda3/envs/py37e/lib/python3.7/site-packages/pandas/core/construction.py", line 438, in sanitize_array
    subarr = _try_cast(data, dtype, copy, raise_cast_failure)
  File "/media/nas/x21324/miniconda3/envs/py37e/lib/python3.7/site-packages/pandas/core/construction.py", line 562, in _try_cast
    subarr = array_type(arr, dtype=dtype, copy=copy)
  File "/media/nas/x21324/miniconda3/envs/py37e/lib/python3.7/site-packages/pandas/core/arrays/string_.py", line 180, in _from_sequence
    assert dtype == "string"
AssertionError

Coming from numpy, I find it unconventional that the type ending in dtype is not itself a valid dtype, but rather a constructor for such a dtype. Therefore, I would consider that a friendlier error message could be in order (or maybe it should even work).

I'm running pandas 1.0.0rc0 on Python 3.7.6.

The full environment:

# packages in environment at /media/nas/x21324/miniconda3/envs/py37e: # # Name Version Build Channel _libgcc_mutex 0.1 conda_forge conda-forge _openmp_mutex 4.5 0_gnu conda-forge affine 2.3.0 py_0 conda-forge aggdraw 1.3.11 py37hc56bac0_0 conda-forge alabaster 0.7.12 py_0 conda-forge appdirs 1.4.3 pypi_0 pypi arrow-cpp 0.15.1 py37had5782a_4 conda-forge asciitree 0.3.3 py_2 conda-forge attrs 19.3.0 py_0 conda-forge awscli 1.17.8 py37_0 conda-forge babel 2.8.0 py_0 conda-forge backcall 0.1.0 py_0 conda-forge beautifulsoup4 4.8.2 py37_0 conda-forge behave 1.2.6 py37_1000 conda-forge bitstring 3.1.6 pypi_0 pypi bleach 3.1.0 py_0 conda-forge blosc 1.17.0 he1b5a44_1 conda-forge bokeh 1.4.0 py37_0 conda-forge boost-cpp 1.70.0 h8e57a91_2 conda-forge boto3 1.11.8 py_0 conda-forge botocore 1.14.8 py_0 conda-forge brotli 1.0.7 he1b5a44_1000 conda-forge bzip2 1.0.8 h516909a_2 conda-forge c-ares 1.15.0 h516909a_1001 conda-forge ca-certificates 2019.11.28 hecc5488_0 conda-forge cairo 1.16.0 hfb77d84_1002 conda-forge cartopy 0.17.0 py37hc5b2455_1008 conda-forge certifi 2019.11.28 py37_0 conda-forge cffi 1.13.2 py37h8022711_0 conda-forge cfgrib 0.9.7.3 py_0 conda-forge cfitsio 3.470 hb60a0a2_2 conda-forge cftime 1.0.4.2 py37hc1659b7_0 conda-forge chardet 3.0.4 py37_1003 conda-forge click 7.0 py_0 conda-forge click-plugins 1.1.1 py_0 conda-forge cligj 0.5.0 py_0 conda-forge cloudpickle 1.2.2 py_1 conda-forge codecov 2.0.15 py_1 conda-forge colorama 0.4.1 py_0 conda-forge colorcet 2.0.1 py_0 conda-forge configobj 5.0.6 py_0 conda-forge coverage 5.0.3 py37h516909a_0 conda-forge coveralls 1.10.0 py_0 conda-forge cryptography 2.8 py37h72c5cf5_1 conda-forge curl 7.65.3 hf8cf82a_0 conda-forge cycler 0.10.0 py_2 conda-forge cython 0.29.14 py37he1b5a44_0 conda-forge cytoolz 0.10.1 py37h516909a_0 conda-forge dask 2.9.2 py_0 conda-forge dask-core 2.9.2 py_0 conda-forge datashader 0.8.0 py_0 conda-forge datashape 0.5.4 py_1 conda-forge dbus 1.13.6 he372182_0 conda-forge decorator 4.4.1 py_0 conda-forge defusedxml 0.6.0 py_0 conda-forge distributed 2.9.3 py_0 conda-forge docopt 0.6.2 py_1 conda-forge docutils 0.15.2 py37_0 conda-forge double-conversion 3.1.5 he1b5a44_2 conda-forge eccodes 2.14.1 hc4140ea_3 conda-forge entrypoints 0.3 py37_1000 conda-forge expat 2.2.5 he1b5a44_1004 conda-forge fasteners 0.14.1 py_3 conda-forge fcitools 0.1.0.post0.dev5+ga19d0d1 pypi_0 pypi fiona 1.8.13 py37h900e953_0 conda-forge flake8 3.7.9 py37_0 conda-forge fogpy 1.2.0+dev21.g2b0d49d.get.validation.output.for.fog.mask pypi_0 pypi fogtools 0.0.post0.dev13+g735723f.dirty dev_0 fontconfig 2.13.1 h86ecdb6_1001 conda-forge freetype 2.10.0 he983fc9_1 conda-forge freetype-py 2.1.0.post1 py_0 conda-forge freexl 1.0.5 h14c3975_1002 conda-forge fsspec 0.6.2 py_0 conda-forge g2clib 1.6.0 hf3f1b0b_9 conda-forge gdal 3.0.2 py37hbb6b9fb_3 conda-forge geopandas 0.6.2 py_0 conda-forge geos 3.7.2 he1b5a44_2 conda-forge geotiff 1.5.1 hbd99317_7 conda-forge geoviews 1.6.5 py_0 conda-forge geoviews-core 1.6.5 py_0 conda-forge gettext 0.19.8.1 hc5be6a0_1002 conda-forge gflags 2.2.2 he1b5a44_1002 conda-forge giflib 5.1.7 h516909a_1 conda-forge glib 2.58.3 py37h6f030ca_1002 conda-forge glog 0.4.0 he1b5a44_1 conda-forge goesr 0.5.2 pypi_0 pypi grpc-cpp 1.25.0 h5321d42_1 conda-forge gst-plugins-base 1.14.5 h0935bb2_0 conda-forge gstreamer 1.14.5 h36ae1b5_0 conda-forge h5netcdf 0.7.4 py_0 conda-forge h5py 2.10.0 nompi_py37h513d04c_101 conda-forge hdf4 4.2.13 hf30be14_1003 conda-forge hdf5 1.10.5 nompi_h3c11f04_1104 conda-forge hdfeos2 2.20 h64bfcee_1000 conda-forge hdfeos5 5.1.16 h8b6279f_5 conda-forge heapdict 1.0.1 py_0 conda-forge holoviews 1.12.7 py_0 conda-forge icu 64.2 he1b5a44_1 conda-forge idna 2.8 py37_1000 conda-forge imageio 2.6.1 py37_0 conda-forge imagesize 1.2.0 py_0 conda-forge importlib_metadata 1.4.0 py37_0 conda-forge ipdb 0.12.3 py_0 conda-forge ipykernel 5.1.3 py37h5ca1d4c_0 conda-forge ipython 7.11.1 py37h5ca1d4c_0 conda-forge ipython_genutils 0.2.0 py_1 conda-forge ipywidgets 7.5.1 py_0 conda-forge jasper 1.900.1 h07fcdf6_1006 conda-forge jedi 0.15.2 py37_0 conda-forge jinja2 2.10.3 py_0 conda-forge jmespath 0.9.4 py_0 conda-forge jpeg 9c h14c3975_1001 conda-forge json-c 0.13.1 h14c3975_1001 conda-forge jsonschema 3.2.0 py37_0 conda-forge jupyter 1.0.0 py_2 conda-forge jupyter_client 5.3.4 py37_1 conda-forge jupyter_console 6.0.0 py_0 conda-forge jupyter_core 4.6.1 py37_0 conda-forge kealib 1.4.10 h58c409b_1005 conda-forge kiwisolver 1.1.0 py37hc9558a2_0 conda-forge krb5 1.16.4 h2fd8d38_0 conda-forge ld_impl_linux-64 2.33.1 h53a641e_7 conda-forge libaec 1.0.4 hf484d3e_0 conda-forge libblas 3.8.0 14_openblas conda-forge libcblas 3.8.0 14_openblas conda-forge libclang 9.0.1 default_hde54327_0 conda-forge libcurl 7.65.3 hda55be3_0 conda-forge libdap4 3.20.4 hd3bb157_0 conda-forge libedit 3.1.20170329 hf8c457e_1001 conda-forge libevent 2.1.10 h72c5cf5_0 conda-forge libffi 3.2.1 he1b5a44_1006 conda-forge libgcc-ng 9.2.0 h24d8f2e_2 conda-forge libgdal 3.0.2 h5534617_3 conda-forge libgfortran-ng 7.3.0 hdf63c60_4 conda-forge libgomp 9.2.0 h24d8f2e_2 conda-forge libiconv 1.15 h516909a_1005 conda-forge libkml 1.3.0 h4fcabce_1010 conda-forge liblapack 3.8.0 14_openblas conda-forge libllvm8 8.0.1 hc9558a2_0 conda-forge libllvm9 9.0.1 hc9558a2_0 conda-forge libnetcdf 4.7.1 nompi_h94020b1_102 conda-forge libopenblas 0.3.7 h5ec1e0e_6 conda-forge libpng 1.6.37 hed695b0_0 conda-forge libpq 11.5 hd9ab2ff_2 conda-forge libprotobuf 3.10.1 h8b12597_0 conda-forge libsodium 1.0.17 h516909a_0 conda-forge libspatialindex 1.9.3 he1b5a44_1 conda-forge libspatialite 4.3.0a h4f6d029_1032 conda-forge libssh2 1.8.2 h22169c7_2 conda-forge libstdcxx-ng 9.2.0 hdf63c60_2 conda-forge libtiff 0.4.2 pypi_0 pypi libuuid 2.32.1 h14c3975_1000 conda-forge libwebp 1.0.2 hf4e8a37_4 conda-forge libxcb 1.13 h14c3975_1002 conda-forge libxkbcommon 0.9.1 hebb1f50_0 conda-forge libxml2 2.9.10 hee79883_0 conda-forge libxslt 1.1.33 h31b3aaa_0 conda-forge line_profiler 3.0.2 py37hc9558a2_0 conda-forge llvmlite 0.31.0 py37h8b12597_0 conda-forge locket 0.2.0 py_2 conda-forge lxml 4.4.2 py37h7ec2d77_0 conda-forge lz4-c 1.8.3 he1b5a44_1001 conda-forge lzo 2.10 h14c3975_1000 conda-forge markupsafe 1.1.1 py37h516909a_0 conda-forge matplotlib 3.1.2 py37_1 conda-forge matplotlib-base 3.1.2 py37h250f245_1 conda-forge mccabe 0.6.1 py_1 conda-forge mechanicalsoup 0.12.0 py_0 conda-forge mistune 0.8.4 py37h516909a_1000 conda-forge mock 3.0.5 py37_0 conda-forge monotonic 1.5 py_0 conda-forge more-itertools 8.1.0 py_0 conda-forge msgpack-python 0.6.2 py37hc9558a2_0 conda-forge multipledispatch 0.6.0 py_0 conda-forge munch 2.5.0 py_0 conda-forge nbconvert 5.6.1 py37_0 conda-forge nbformat 5.0.4 py_0 conda-forge ncurses 6.1 hf484d3e_1002 conda-forge netcdf4 1.5.3 nompi_py37hfee4bf2_101 conda-forge networkx 2.4 py_0 conda-forge notebook 6.0.3 py37_0 conda-forge nspr 4.24 he1b5a44_0 conda-forge nss 3.47 he751ad9_0 conda-forge numba 0.47.0 py37hb3f55d8_0 conda-forge numcodecs 0.6.4 py37he1b5a44_0 conda-forge numexpr 2.7.1 py37hb3f55d8_0 conda-forge numpy 1.17.5 py37h95a1406_0 conda-forge olefile 0.46 py_0 conda-forge opencv-python 4.1.0.25 pypi_0 pypi openjpeg 2.3.1 h981e76c_3 conda-forge openssl 1.1.1d h516909a_0 conda-forge owslib 0.19.0 py_2 conda-forge packaging 20.0 py_0 conda-forge pandas 1.0.0rc0 pypi_0 pypi pandoc 2.9.1.1 0 conda-forge pandocfilters 1.4.2 py_1 conda-forge param 1.9.2 py_0 conda-forge parquet-cpp 1.5.1 2 conda-forge parse 1.14.0 py_0 conda-forge parse_type 0.5.2 py37_0 conda-forge parso 0.5.2 py_0 conda-forge partd 1.1.0 py_0 conda-forge pcre 8.43 he1b5a44_0 conda-forge pexpect 4.8.0 py37_0 conda-forge pickleshare 0.7.5 py37_1000 conda-forge pillow 7.0.0 py37hefe7db6_0 conda-forge pip 20.0.1 py37_0 conda-forge pixman 0.38.0 h516909a_1003 conda-forge pluggy 0.13.0 py37_0 conda-forge poppler 0.67.0 h14e79db_8 conda-forge poppler-data 0.4.9 1 conda-forge postgresql 11.5 hc63931a_2 conda-forge progressbar2 3.47.0 py_0 conda-forge proj 6.2.1 hc80f0dc_0 conda-forge prometheus_client 0.7.1 py_0 conda-forge prompt_toolkit 2.0.10 py_0 conda-forge psutil 5.6.7 py37h516909a_0 conda-forge pthread-stubs 0.4 h14c3975_1001 conda-forge ptyprocess 0.6.0 py_1001 conda-forge py 1.8.1 py_0 conda-forge pyarrow 0.15.1 py37h8b68381_1 conda-forge pyasn1 0.4.8 py_0 conda-forge pycoast 1.3.2 py_0 conda-forge pycodestyle 2.5.0 py_0 conda-forge pycparser 2.19 py37_1 conda-forge pyct 0.4.6 py_0 conda-forge pyct-core 0.4.6 py_0 conda-forge pydap 3.2.2 py37_1000 conda-forge pydecorate 0.2.1 py_0 conda-forge pyepsg 0.4.0 py_0 conda-forge pyflakes 2.1.1 py_0 conda-forge pygments 2.5.2 py_0 conda-forge pygrib 2.0.4 py37h55c65ac_0 conda-forge pyhdf 0.10.2 py37h3a4e923_0 conda-forge pykdtree 1.3.1 py37hc1659b7_1002 conda-forge pynio 1.5.5 py37h2e5bc1a_7 conda-forge pyopengl 3.1.5 py_0 conda-forge pyopenssl 19.1.0 py37_0 conda-forge pyorbital 1.5.0 pypi_0 pypi pyparsing 2.4.6 py_0 conda-forge pyproj 2.4.2.post1 py37h12732c1_0 conda-forge pyqt 5.12.3 py37hcca6a23_1 conda-forge pyqt5 5.13.1 pypi_0 pypi pyqt5-sip 4.19.18 pypi_0 pypi pyqtgraph 0.11.0rc0 py_0 conda-forge pyqtwebengine 5.12.1 pypi_0 pypi pyresample 1.14.0 py37hb3f55d8_2 conda-forge pyrsistent 0.15.7 py37h516909a_0 conda-forge pyscaffold 3.2.2 py_0 conda-forge pyshp 2.1.0 py_0 conda-forge pysocks 1.7.1 py37_0 conda-forge pyspectral 0.8.9 pypi_0 pypi pytables 3.6.1 py37h9f153d1_1 conda-forge pytest 5.3.4 py37_0 conda-forge pytest-cov 2.8.1 py_0 conda-forge pytest-mock 2.0.0 py37_0 conda-forge pytest-runner 5.2 py_0 conda-forge python 3.7.6 h357f687_2 conda-forge python-dateutil 2.8.1 py_0 conda-forge python-geotiepoints 1.1.8 pypi_0 pypi python-utils 2.3.0 py_1 conda-forge pytz 2019.3 py_0 conda-forge pyviz_comms 0.7.3 py_0 conda-forge pywavelets 1.1.1 py37hc1659b7_0 conda-forge pyyaml 5.2 py37h516909a_0 conda-forge pyzmq 18.1.1 py37h1768529_0 conda-forge qt 5.12.5 hd8c4c69_1 conda-forge qtconsole 4.6.0 py_0 conda-forge quamash 0.6.1 pypi_0 pypi rasterio 1.1.1 py37h900e953_0 conda-forge re2 2020.01.01 he1b5a44_0 conda-forge readline 8.0 hf8c457e_0 conda-forge requests 2.22.0 py37_1 conda-forge rsa 3.4.2 py_1 conda-forge rtree 0.9.3 py37h7b0cdae_0 conda-forge s3fs 0.4.0 py_0 conda-forge s3transfer 0.3.2 py37_0 conda-forge satpy 0.19.2.dev31+gf537a14d pypi_0 pypi scikit-image 0.16.2 py37hb3f55d8_0 conda-forge scipy 1.4.1 py37h921218d_0 conda-forge send2trash 1.5.0 py_0 conda-forge setuptools 45.1.0 py37_0 conda-forge shapely 1.6.4 py37hec07ddf_1006 conda-forge six 1.14.0 py37_0 conda-forge snakeviz 2.0.1 py_0 conda-forge snappy 1.1.7 he1b5a44_1003 conda-forge snowballstemmer 2.0.0 py_0 conda-forge snuggs 1.4.7 py_0 conda-forge sortedcontainers 2.1.0 py_0 conda-forge soupsieve 1.9.4 py37_0 conda-forge sphinx 2.3.1 py_0 conda-forge sphinxcontrib-applehelp 1.0.1 py_0 conda-forge sphinxcontrib-devhelp 1.0.1 py_0 conda-forge sphinxcontrib-htmlhelp 1.0.2 py_0 conda-forge sphinxcontrib-jsmath 1.0.1 py_0 conda-forge sphinxcontrib-qthelp 1.0.2 py_0 conda-forge sphinxcontrib-serializinghtml 1.1.3 py_0 conda-forge sqlalchemy 1.3.13 py37h516909a_0 conda-forge sqlite 3.30.1 hcee41ef_0 conda-forge tbb 2018.0.5 h2d50403_0 conda-forge tblib 1.6.0 py_0 conda-forge terminado 0.8.3 py37_0 conda-forge testpath 0.4.4 py_0 conda-forge thrift-cpp 0.12.0 hf3afdfd_1004 conda-forge tiledb 1.7.0 hcde45ca_2 conda-forge tk 8.6.10 hed695b0_0 conda-forge toolz 0.10.0 py_0 conda-forge tornado 6.0.3 py37h516909a_0 conda-forge traitlets 4.3.3 py37_0 conda-forge trollbufr 0.11.0 pypi_0 pypi trollimage 1.9.0 pypi_0 pypi trollsift 0.3.2 pypi_0 pypi tzcode 2019a h516909a_1002 conda-forge uriparser 0.9.3 he1b5a44_1 conda-forge urllib3 1.25.7 py37_0 conda-forge uwsift 1.0.6 pypi_0 pypi vispy 0.6.4 py37hf5ce8a7_0 conda-forge wcwidth 0.1.8 py_0 conda-forge webencodings 0.5.1 py_1 conda-forge webob 1.8.6 py_0 conda-forge wheel 0.33.6 py37_0 conda-forge widgetsnbextension 3.5.1 py37_0 conda-forge xarray 0.14.1 py_0 conda-forge xerces-c 3.2.2 h8412b87_1004 conda-forge xorg-kbproto 1.0.7 h14c3975_1002 conda-forge xorg-libice 1.0.10 h516909a_0 conda-forge xorg-libsm 1.2.3 h84519dc_1000 conda-forge xorg-libx11 1.6.9 h516909a_0 conda-forge xorg-libxau 1.0.9 h14c3975_0 conda-forge xorg-libxdmcp 1.1.3 h516909a_0 conda-forge xorg-libxext 1.3.4 h516909a_0 conda-forge xorg-libxrender 0.9.10 h516909a_1002 conda-forge xorg-renderproto 0.11.1 h14c3975_1002 conda-forge xorg-xextproto 7.3.0 h14c3975_1002 conda-forge xorg-xproto 7.0.31 h14c3975_1007 conda-forge xz 5.2.4 h14c3975_1001 conda-forge yaml 0.2.2 h516909a_1 conda-forge zarr 2.4.0 py_0 conda-forge zeromq 4.3.2 he1b5a44_2 conda-forge zict 1.0.0 py_0 conda-forge zipp 2.0.0 py_2 conda-forge zlib 1.2.11 h516909a_1006 conda-forge zstd 1.4.4 h3b9ef0a_1 conda-forge