Fix unbound local with bad engine by jtratner · Pull Request #16511 · pandas-dev/pandas (original) (raw)
Previously, passing a bad engine to read_csv gave an less-than-informative UnboundLocalError:
Traceback (most recent call last):
File "example_test.py", line 9, in <module>
pd.read_csv(tfp.name, engine='pyt')
File "/Users/jtratner/pandas/pandas/io/parsers.py", line 655, in parser_f
return _read(filepath_or_buffer, kwds)
File "/Users/jtratner/pandas/pandas/io/parsers.py", line 405, in _read
parser = TextFileReader(filepath_or_buffer, **kwds)
File "/Users/jtratner/pandas/pandas/io/parsers.py", line 762, in __init__
self._make_engine(self.engine)
File "/Users/jtratner/pandas/pandas/io/parsers.py", line 972, in _make_engine
self._engine = klass(self.f, **self.options)
UnboundLocalError: local variable 'klass' referenced before assignment
Traceback (most recent call last):
File "example_test.py", line 9, in <module>
pd.read_csv(fp, engine='pyt')
File "/Users/jtratner/pandas/pandas/io/parsers.py", line 655, in parser_f
return _read(filepath_or_buffer, kwds)
File "/Users/jtratner/pandas/pandas/io/parsers.py", line 405, in _read
parser = TextFileReader(filepath_or_buffer, **kwds)
File "/Users/jtratner/pandas/pandas/io/parsers.py", line 762, in __init__
self._make_engine(self.engine)
File "/Users/jtratner/pandas/pandas/io/parsers.py", line 974, in _make_engine
' or "python-fwf")' % engine)
ValueError: Unknown engine: 'pyt' (valid are "c", "python", or "python-fwf")
I was not sure where to stick the test or the whatsnew entry (or if a whatsnew entry is really necessary), so please tell me if I should move it elsewhere.