Skip to content

Commit

Permalink
Include backports.strenum in deprecated-imports (#8113)
Browse files Browse the repository at this point in the history
Closes #8102.
  • Loading branch information
charliermarsh committed Oct 21, 2023
1 parent 4e07a65 commit 7586091
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 10 deletions.
9 changes: 6 additions & 3 deletions crates/ruff_linter/resources/test/fixtures/pyupgrade/UP035.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,11 +80,14 @@
# OK
from a import b

# Ok: `typing_extensions` contains backported improvements.
# OK: `typing_extensions` contains backported improvements.
from typing_extensions import SupportsIndex

# Ok: `typing_extensions` contains backported improvements.
# OK: `typing_extensions` contains backported improvements.
from typing_extensions import NamedTuple

# Ok: `typing_extensions` supports `frozen_default` (backported from 3.12).
# OK: `typing_extensions` supports `frozen_default` (backported from 3.12).
from typing_extensions import dataclass_transform

# UP035
from backports.strenum import StrEnum
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,13 @@ impl Violation for DeprecatedImport {
fn is_relevant_module(module: &str) -> bool {
matches!(
module,
"collections" | "pipes" | "mypy_extensions" | "typing_extensions" | "typing" | "typing.re"
"collections"
| "pipes"
| "mypy_extensions"
| "typing_extensions"
| "typing"
| "typing.re"
| "backports.strenum"
)
}

Expand Down Expand Up @@ -320,6 +326,8 @@ const TYPING_EXTENSIONS_TO_TYPING_311: &[&str] = &[
"reveal_type",
];

const BACKPORTS_STR_ENUM_TO_ENUM_311: &[&str] = &["StrEnum"];

// Python 3.12+

// Members of `typing_extensions` that were moved to `typing`.
Expand Down Expand Up @@ -482,6 +490,11 @@ impl<'a> ImportReplacer<'a> {
operations.push(operation);
}
}
"backports.strenum" if self.version >= PythonVersion::Py311 => {
if let Some(operation) = self.try_replace(BACKPORTS_STR_ENUM_TO_ENUM_311, "enum") {
operations.push(operation);
}
}
_ => {}
}
operations
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -997,37 +997,57 @@ UP035.py:77:1: UP035 [*] Import from `collections.abc` instead: `Callable`

UP035.py:87:1: UP035 [*] Import from `typing` instead: `NamedTuple`
|
86 | # Ok: `typing_extensions` contains backported improvements.
86 | # OK: `typing_extensions` contains backported improvements.
87 | from typing_extensions import NamedTuple
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
88 |
89 | # Ok: `typing_extensions` supports `frozen_default` (backported from 3.12).
89 | # OK: `typing_extensions` supports `frozen_default` (backported from 3.12).
|
= help: Import from `typing`

Fix
84 84 | from typing_extensions import SupportsIndex
85 85 |
86 86 | # Ok: `typing_extensions` contains backported improvements.
86 86 | # OK: `typing_extensions` contains backported improvements.
87 |-from typing_extensions import NamedTuple
87 |+from typing import NamedTuple
88 88 |
89 89 | # Ok: `typing_extensions` supports `frozen_default` (backported from 3.12).
89 89 | # OK: `typing_extensions` supports `frozen_default` (backported from 3.12).
90 90 | from typing_extensions import dataclass_transform

UP035.py:90:1: UP035 [*] Import from `typing` instead: `dataclass_transform`
|
89 | # Ok: `typing_extensions` supports `frozen_default` (backported from 3.12).
89 | # OK: `typing_extensions` supports `frozen_default` (backported from 3.12).
90 | from typing_extensions import dataclass_transform
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
91 |
92 | # UP035
|
= help: Import from `typing`

Fix
87 87 | from typing_extensions import NamedTuple
88 88 |
89 89 | # Ok: `typing_extensions` supports `frozen_default` (backported from 3.12).
89 89 | # OK: `typing_extensions` supports `frozen_default` (backported from 3.12).
90 |-from typing_extensions import dataclass_transform
90 |+from typing import dataclass_transform
91 91 |
92 92 | # UP035
93 93 | from backports.strenum import StrEnum

UP035.py:93:1: UP035 [*] Import from `enum` instead: `StrEnum`
|
92 | # UP035
93 | from backports.strenum import StrEnum
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
= help: Import from `enum`

Fix
90 90 | from typing_extensions import dataclass_transform
91 91 |
92 92 | # UP035
93 |-from backports.strenum import StrEnum
93 |+from enum import StrEnum


0 comments on commit 7586091

Please sign in to comment.