[flake8-blind-expect] Allow raise from in BLE001 (#11131)

## Summary

This allows `raise from` in BLE001.

```python
try:
    ...
except Exception as e:
    raise ValueError from e
```

Fixes #10806

## Test Plan

Test case added.
This commit is contained in:
Sid 2024-04-24 17:56:11 +02:00 committed by GitHub
parent e3fde28146
commit cee38f39df
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 17 additions and 5 deletions

View file

@ -124,3 +124,8 @@ try:
pass
except Exception:
error("...", exc_info=True)
try:
...
except Exception as e:
raise ValueError from e

View file

@ -87,18 +87,25 @@ pub(crate) fn blind_except(
if !matches!(builtin_exception_type, "BaseException" | "Exception") {
return;
}
// If the exception is re-raised, don't flag an error.
if body.iter().any(|stmt| {
if let Stmt::Raise(ast::StmtRaise { exc, .. }) = stmt {
if let Some(exc) = exc {
if let Expr::Name(ast::ExprName { id, .. }) = exc.as_ref() {
if let Stmt::Raise(ast::StmtRaise { exc, cause, .. }) = stmt {
if let Some(cause) = cause {
if let Expr::Name(ast::ExprName { id, .. }) = cause.as_ref() {
name.is_some_and(|name| id == name)
} else {
false
}
} else {
true
if let Some(exc) = exc {
if let Expr::Name(ast::ExprName { id, .. }) = exc.as_ref() {
name.is_some_and(|name| id == name)
} else {
false
}
} else {
true
}
}
} else {
false