FutureWarnings should specify a stacklevel · Issue #9584 · pandas-dev/pandas (original) (raw)
Running my test suite, I see:
/home/njs/.user-python2.7-64bit-3/local/lib/python2.7/site-packages/pandas/core/categorical.py:443: FutureWarning: Accessing 'levels' is deprecated, use 'categories'
warn("Accessing 'levels' is deprecated, use 'categories'", FutureWarning)
/home/njs/.user-python2.7-64bit-3/local/lib/python2.7/site-packages/pandas/core/categorical.py:291: RuntimeWarning: Values and categories have different dtypes. Did you mean to use
'Categorical.from_codes(codes, categories)'?
"'Categorical.from_codes(codes, categories)'?", RuntimeWarning)
/home/njs/.user-python2.7-64bit-3/local/lib/python2.7/site-packages/pandas/core/categorical.py:295: RuntimeWarning: None of the categories were found in values. Did you mean to use
'Categorical.from_codes(codes, categories)'?
"'Categorical.from_codes(codes, categories)'?", RuntimeWarning)
./home/njs/.user-python2.7-64bit-3/local/lib/python2.7/site-packages/pandas/core/categorical.py:395: FutureWarning: 'labels' is deprecated. Use 'codes' instead
warnings.warn("'labels' is deprecated. Use 'codes' instead", FutureWarning)
Okay, fair enough. But the problem is that all of the listed lines of code are inside pandas, so I have no idea which parts of my code are actually doing the wrong thing. warnings.warn
provides a stacklevel
argument, where the idea is that you should pass a non-zero value so that warnings are attributed to the code that actually needs to be changed. E.g., stacklevel=1
means that the code which is doing something wrong is the code which called the function containing the call to warnings.warn
.