diff --git a/.pep8speaks.yml b/.pep8speaks.yml index ae1c92832bb152..cbcb098c47125f 100644 --- a/.pep8speaks.yml +++ b/.pep8speaks.yml @@ -13,7 +13,6 @@ pycodestyle: - W503, # line break before binary operator - W504, # line break after binary operator - E402, # module level import not at top of file - - E722, # do not use bare except - E731, # do not assign a lambda expression, use a def - C406, # Unnecessary list literal - rewrite as a dict literal. - C408, # Unnecessary dict call - rewrite as a literal. diff --git a/doc/source/conf.py b/doc/source/conf.py index 47adc80204fcca..d88b5e97574239 100644 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -586,7 +586,7 @@ def linkcode_resolve(domain, info): for part in fullname.split('.'): try: obj = getattr(obj, part) - except: + except AttributeError: return None try: @@ -595,14 +595,14 @@ def linkcode_resolve(domain, info): fn = inspect.getsourcefile(inspect.unwrap(obj)) else: fn = inspect.getsourcefile(obj) - except: + except TypeError: fn = None if not fn: return None try: source, lineno = inspect.getsourcelines(obj) - except: + except OSError: lineno = None if lineno: diff --git a/pandas/tests/indexing/common.py b/pandas/tests/indexing/common.py index 5053c7f3d9875b..f4d6fe428515e5 100644 --- a/pandas/tests/indexing/common.py +++ b/pandas/tests/indexing/common.py @@ -156,7 +156,7 @@ def get_result(self, obj, method, key, axis): with catch_warnings(record=True): try: xp = getattr(obj, method).__getitem__(_axify(obj, key, axis)) - except: + except AttributeError: xp = getattr(obj, method).__getitem__(key) return xp @@ -219,7 +219,7 @@ def _print(result, error=None): try: xp = self.get_result(obj, method2, k2, a) - except: + except Exception: result = 'no comp' _print(result) return diff --git a/pandas/tests/io/formats/test_format.py b/pandas/tests/io/formats/test_format.py index 0814df8240e139..7d26ea05b514aa 100644 --- a/pandas/tests/io/formats/test_format.py +++ b/pandas/tests/io/formats/test_format.py @@ -70,7 +70,7 @@ def has_horizontally_truncated_repr(df): try: # Check header row fst_line = np.array(repr(df).splitlines()[0].split()) cand_col = np.where(fst_line == '...')[0][0] - except: + except IndexError: return False # Make sure each row has this ... in the same place r = repr(df) @@ -459,7 +459,7 @@ def test_to_string_repr_unicode(self): for line in rs[1:]: try: line = line.decode(get_option("display.encoding")) - except: + except AttributeError: pass if not line.startswith('dtype:'): assert len(line) == line_len diff --git a/pandas/tests/io/test_pytables.py b/pandas/tests/io/test_pytables.py index f7157fe13e14a0..4a68719eedc9aa 100644 --- a/pandas/tests/io/test_pytables.py +++ b/pandas/tests/io/test_pytables.py @@ -51,7 +51,7 @@ def safe_remove(path): if path is not None: try: os.remove(path) - except: + except OSError: pass @@ -59,7 +59,7 @@ def safe_close(store): try: if store is not None: store.close() - except: + except IOError: pass @@ -117,7 +117,7 @@ def _maybe_remove(store, key): no content from previous tests using the same table name.""" try: store.remove(key) - except: + except (ValueError, KeyError): pass @@ -4601,7 +4601,7 @@ def do_copy(f, new_f=None, keys=None, safe_close(tstore) try: os.close(fd) - except: + except (OSError, ValueError): pass safe_remove(new_f) diff --git a/pandas/tests/io/test_sql.py b/pandas/tests/io/test_sql.py index 6bb7800b721104..eeeb55cb8e70c2 100644 --- a/pandas/tests/io/test_sql.py +++ b/pandas/tests/io/test_sql.py @@ -1815,6 +1815,7 @@ def test_default_type_conversion(self): assert issubclass(df.BoolColWithNull.dtype.type, np.floating) def test_read_procedure(self): + import pymysql # see GH7324. Although it is more an api test, it is added to the # mysql tests as sqlite does not have stored procedures df = DataFrame({'a': [1, 2, 3], 'b': [0.1, 0.2, 0.3]}) @@ -1833,7 +1834,7 @@ def test_read_procedure(self): try: r1 = connection.execute(proc) # noqa trans.commit() - except: + except pymysql.Error: trans.rollback() raise @@ -2418,7 +2419,7 @@ def setup_class(cls): # No real user should allow root access with a blank password. pymysql.connect(host='localhost', user='root', passwd='', db='pandas_nosetest') - except: + except pymysql.Error: pass else: return @@ -2445,7 +2446,7 @@ def setup_method(self, request, datapath): # No real user should allow root access with a blank password. self.conn = pymysql.connect(host='localhost', user='root', passwd='', db='pandas_nosetest') - except: + except pymysql.Error: pass else: return diff --git a/pandas/tests/test_multilevel.py b/pandas/tests/test_multilevel.py index 2717b92e05a291..70d2c9080ab94a 100644 --- a/pandas/tests/test_multilevel.py +++ b/pandas/tests/test_multilevel.py @@ -1376,7 +1376,7 @@ def f(): try: df = f() - except: + except ValueError: pass assert (df['foo', 'one'] == 0).all() diff --git a/pandas/tests/test_nanops.py b/pandas/tests/test_nanops.py index b06463d3c07aa9..49dbccb82fac85 100644 --- a/pandas/tests/test_nanops.py +++ b/pandas/tests/test_nanops.py @@ -141,12 +141,12 @@ def _coerce_tds(targ, res): if axis != 0 and hasattr( targ, 'shape') and targ.ndim and targ.shape != res.shape: res = np.split(res, [targ.shape[0]], axis=0)[0] - except: + except (ValueError, IndexError): targ, res = _coerce_tds(targ, res) try: tm.assert_almost_equal(targ, res, check_dtype=check_dtype) - except: + except AssertionError: # handle timedelta dtypes if hasattr(targ, 'dtype') and targ.dtype == 'm8[ns]': @@ -167,11 +167,11 @@ def _coerce_tds(targ, res): else: try: res = res.astype('c16') - except: + except RuntimeError: res = res.astype('f8') try: targ = targ.astype('c16') - except: + except RuntimeError: targ = targ.astype('f8') # there should never be a case where numpy returns an object # but nanops doesn't, so make that an exception diff --git a/pandas/tests/test_panel.py b/pandas/tests/test_panel.py index 0e45fd6411ac05..6d5d07b00398c0 100644 --- a/pandas/tests/test_panel.py +++ b/pandas/tests/test_panel.py @@ -335,13 +335,13 @@ def check_op(op, name): for op in ops: try: check_op(getattr(operator, op), op) - except: + except AttributeError: pprint_thing("Failing operation: %r" % op) raise if compat.PY3: try: check_op(operator.truediv, 'div') - except: + except AttributeError: pprint_thing("Failing operation: %r" % 'div') raise diff --git a/pandas/tests/test_strings.py b/pandas/tests/test_strings.py index 42f0cebea83a09..d128a66a182baf 100644 --- a/pandas/tests/test_strings.py +++ b/pandas/tests/test_strings.py @@ -2637,7 +2637,7 @@ def test_slice(self): expected = Series([s[start:stop:step] if not isna(s) else NA for s in values]) tm.assert_series_equal(result, expected) - except: + except IndexError: print('failed on %s:%s:%s' % (start, stop, step)) raise diff --git a/setup.cfg b/setup.cfg index 72128334359979..5132e6c5f79cdf 100644 --- a/setup.cfg +++ b/setup.cfg @@ -17,7 +17,6 @@ ignore = W503, # line break before binary operator W504, # line break after binary operator E402, # module level import not at top of file - E722, # do not use bare except E731, # do not assign a lambda expression, use a def C406, # Unnecessary list literal - rewrite as a dict literal. C408, # Unnecessary dict call - rewrite as a literal.