value_labels fails to assign value_label_dict, leads to AttributeError · Issue #19417 · pandas-dev/pandas (original) (raw)
Code Sample, a copy-pastable example if possible
def test_StataReader(stata_path): """ Args: stata_path - path to literally any valid stata file. """ # Step 1: Delay reading value labels, which is done automaticaly when # decoding categoricals. Otherwise this only works if we have a stata file # with format verison <= 108 reader = pandas.io.stata.StataReader(stata_path, convert_categoricals=False) # Patch format to be <= 108 # https://github.com/pandas-dev/pandas/blob/master/pandas/io/stata.py#L1341-L1344 with patch.object(reader, 'format_version', 108): # Trigger AttributeError when _read_value_labels immediately returns without # assigning value_label_dict, which value_labels() expects to exist # https://github.com/pandas-dev/pandas/blob/master/pandas/io/stata.py#L1745 reader.value_labels()
Problem description
An unlikely code path will lead to an AttributeError.
Expected Output
I thin it is reasonable to expect value_labels()
to return either None
or {}
when the stata file's format_version
is <= 108
Output of pd.show_versions()
pandas.show_versions()
INSTALLED VERSIONS
commit: None
python: 3.6.1.final.0
python-bits: 64
OS: Darwin
OS-release: 17.3.0
machine: x86_64
processor: i386
byteorder: little
LC_ALL: None
LANG: en_US.UTF-8
LOCALE: en_US.UTF-8
pandas: 0.21.0
pytest: 3.0.7
pip: 9.0.1
setuptools: 27.2.0
Cython: None
numpy: 1.13.3
scipy: None
pyarrow: None
xarray: None
IPython: None
sphinx: None
patsy: None
dateutil: 2.6.1
pytz: 2017.3
blosc: None
bottleneck: None
tables: None
numexpr: None
feather: None
matplotlib: None
openpyxl: None
xlrd: 1.0.0
xlwt: None
xlsxwriter: None
lxml: None
bs4: None
html5lib: None
sqlalchemy: None
pymysql: None
psycopg2: None
jinja2: None
s3fs: None
fastparquet: None
pandas_gbq: None
pandas_datareader: None