[pyupgrade] Add resource.error as deprecated alias of OSError (UP024) (#17933)

## Summary

Partially addresses #17935.


[`resource.error`](https://docs.python.org/3/library/resource.html#resource.error)
is a deprecated alias of
[`OSError`](https://docs.python.org/3/library/exceptions.html#OSError).
> _Changed in version 3.3:_ Following [**PEP
3151**](https://peps.python.org/pep-3151/), this class was made an alias
of
[`OSError`](https://docs.python.org/3/library/exceptions.html#OSError).

Add it to the list of `OSError` aliases found by [os-error-alias
(UP024)](https://docs.astral.sh/ruff/rules/os-error-alias/#os-error-alias-up024).

## Test Plan

Sorry, I usually don't program in Rust. Could you at least point me to
the test I would need to modify?
This commit is contained in:
Dimitri Papadopoulos Orfanos 2025-05-14 16:37:25 +02:00 committed by GitHub
parent 9b52ae8991
commit 1b4f7de840
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 325 additions and 258 deletions

View file

@ -64,7 +64,7 @@ fn is_alias(expr: &Expr, semantic: &SemanticModel) -> bool {
[
"" | "builtins",
"EnvironmentError" | "IOError" | "WindowsError"
] | ["mmap" | "select" | "socket" | "os", "error"]
] | ["mmap" | "resource" | "select" | "socket" | "os", "error"]
)
})
}

View file

@ -4,7 +4,7 @@ source: crates/ruff_linter/src/rules/pyupgrade/mod.rs
UP024_2.py:10:7: UP024 [*] Replace aliased errors with `OSError`
|
8 | # Testing the modules
9 | import socket, mmap, select
9 | import socket, mmap, select, resource
10 | raise socket.error
| ^^^^^^^^^^^^ UP024
11 | raise mmap.error
@ -15,32 +15,33 @@ UP024_2.py:10:7: UP024 [*] Replace aliased errors with `OSError`
Safe fix
7 7 |
8 8 | # Testing the modules
9 9 | import socket, mmap, select
9 9 | import socket, mmap, select, resource
10 |-raise socket.error
10 |+raise OSError
11 11 | raise mmap.error
12 12 | raise select.error
13 13 |
13 13 | raise resource.error
UP024_2.py:11:7: UP024 [*] Replace aliased errors with `OSError`
|
9 | import socket, mmap, select
9 | import socket, mmap, select, resource
10 | raise socket.error
11 | raise mmap.error
| ^^^^^^^^^^ UP024
12 | raise select.error
13 | raise resource.error
|
= help: Replace `mmap.error` with builtin `OSError`
Safe fix
8 8 | # Testing the modules
9 9 | import socket, mmap, select
9 9 | import socket, mmap, select, resource
10 10 | raise socket.error
11 |-raise mmap.error
11 |+raise OSError
12 12 | raise select.error
13 13 |
14 14 | raise socket.error()
13 13 | raise resource.error
14 14 |
UP024_2.py:12:7: UP024 [*] Replace aliased errors with `OSError`
|
@ -48,355 +49,416 @@ UP024_2.py:12:7: UP024 [*] Replace aliased errors with `OSError`
11 | raise mmap.error
12 | raise select.error
| ^^^^^^^^^^^^ UP024
13 |
14 | raise socket.error()
13 | raise resource.error
|
= help: Replace `select.error` with builtin `OSError`
Safe fix
9 9 | import socket, mmap, select
9 9 | import socket, mmap, select, resource
10 10 | raise socket.error
11 11 | raise mmap.error
12 |-raise select.error
12 |+raise OSError
13 13 |
14 14 | raise socket.error()
15 15 | raise mmap.error(1)
13 13 | raise resource.error
14 14 |
15 15 | raise socket.error()
UP024_2.py:14:7: UP024 [*] Replace aliased errors with `OSError`
UP024_2.py:13:7: UP024 [*] Replace aliased errors with `OSError`
|
11 | raise mmap.error
12 | raise select.error
13 |
14 | raise socket.error()
13 | raise resource.error
| ^^^^^^^^^^^^^^ UP024
14 |
15 | raise socket.error()
|
= help: Replace `resource.error` with builtin `OSError`
Safe fix
10 10 | raise socket.error
11 11 | raise mmap.error
12 12 | raise select.error
13 |-raise resource.error
13 |+raise OSError
14 14 |
15 15 | raise socket.error()
16 16 | raise mmap.error(1)
UP024_2.py:15:7: UP024 [*] Replace aliased errors with `OSError`
|
13 | raise resource.error
14 |
15 | raise socket.error()
| ^^^^^^^^^^^^ UP024
15 | raise mmap.error(1)
16 | raise select.error(1, 2)
16 | raise mmap.error(1)
17 | raise select.error(1, 2)
|
= help: Replace `socket.error` with builtin `OSError`
Safe fix
11 11 | raise mmap.error
12 12 | raise select.error
13 13 |
14 |-raise socket.error()
14 |+raise OSError()
15 15 | raise mmap.error(1)
16 16 | raise select.error(1, 2)
17 17 |
13 13 | raise resource.error
14 14 |
15 |-raise socket.error()
15 |+raise OSError()
16 16 | raise mmap.error(1)
17 17 | raise select.error(1, 2)
18 18 | raise resource.error(1, "strerror", "filename")
UP024_2.py:15:7: UP024 [*] Replace aliased errors with `OSError`
UP024_2.py:16:7: UP024 [*] Replace aliased errors with `OSError`
|
14 | raise socket.error()
15 | raise mmap.error(1)
15 | raise socket.error()
16 | raise mmap.error(1)
| ^^^^^^^^^^ UP024
16 | raise select.error(1, 2)
17 | raise select.error(1, 2)
18 | raise resource.error(1, "strerror", "filename")
|
= help: Replace `mmap.error` with builtin `OSError`
Safe fix
12 12 | raise select.error
13 13 |
14 14 | raise socket.error()
15 |-raise mmap.error(1)
15 |+raise OSError(1)
16 16 | raise select.error(1, 2)
17 17 |
18 18 | raise socket.error(
13 13 | raise resource.error
14 14 |
15 15 | raise socket.error()
16 |-raise mmap.error(1)
16 |+raise OSError(1)
17 17 | raise select.error(1, 2)
18 18 | raise resource.error(1, "strerror", "filename")
19 19 |
UP024_2.py:16:7: UP024 [*] Replace aliased errors with `OSError`
UP024_2.py:17:7: UP024 [*] Replace aliased errors with `OSError`
|
14 | raise socket.error()
15 | raise mmap.error(1)
16 | raise select.error(1, 2)
15 | raise socket.error()
16 | raise mmap.error(1)
17 | raise select.error(1, 2)
| ^^^^^^^^^^^^ UP024
17 |
18 | raise socket.error(
18 | raise resource.error(1, "strerror", "filename")
|
= help: Replace `select.error` with builtin `OSError`
Safe fix
13 13 |
14 14 | raise socket.error()
15 15 | raise mmap.error(1)
16 |-raise select.error(1, 2)
16 |+raise OSError(1, 2)
17 17 |
18 18 | raise socket.error(
19 19 | 1,
14 14 |
15 15 | raise socket.error()
16 16 | raise mmap.error(1)
17 |-raise select.error(1, 2)
17 |+raise OSError(1, 2)
18 18 | raise resource.error(1, "strerror", "filename")
19 19 |
20 20 | raise socket.error(
UP024_2.py:18:7: UP024 [*] Replace aliased errors with `OSError`
|
16 | raise select.error(1, 2)
17 |
18 | raise socket.error(
16 | raise mmap.error(1)
17 | raise select.error(1, 2)
18 | raise resource.error(1, "strerror", "filename")
| ^^^^^^^^^^^^^^ UP024
19 |
20 | raise socket.error(
|
= help: Replace `resource.error` with builtin `OSError`
Safe fix
15 15 | raise socket.error()
16 16 | raise mmap.error(1)
17 17 | raise select.error(1, 2)
18 |-raise resource.error(1, "strerror", "filename")
18 |+raise OSError(1, "strerror", "filename")
19 19 |
20 20 | raise socket.error(
21 21 | 1,
UP024_2.py:20:7: UP024 [*] Replace aliased errors with `OSError`
|
18 | raise resource.error(1, "strerror", "filename")
19 |
20 | raise socket.error(
| ^^^^^^^^^^^^ UP024
19 | 1,
20 | 2,
21 | 1,
22 | 2,
|
= help: Replace `socket.error` with builtin `OSError`
Safe fix
15 15 | raise mmap.error(1)
16 16 | raise select.error(1, 2)
17 17 |
18 |-raise socket.error(
18 |+raise OSError(
19 19 | 1,
20 20 | 2,
21 21 | 3,
17 17 | raise select.error(1, 2)
18 18 | raise resource.error(1, "strerror", "filename")
19 19 |
20 |-raise socket.error(
20 |+raise OSError(
21 21 | 1,
22 22 | 2,
23 23 | 3,
UP024_2.py:25:7: UP024 [*] Replace aliased errors with `OSError`
UP024_2.py:27:7: UP024 [*] Replace aliased errors with `OSError`
|
24 | from mmap import error
25 | raise error
26 | from mmap import error
27 | raise error
| ^^^^^ UP024
26 |
27 | from socket import error
28 |
29 | from socket import error
|
= help: Replace `error` with builtin `OSError`
Safe fix
22 22 | )
23 23 |
24 24 | from mmap import error
25 |-raise error
25 |+raise OSError
26 26 |
27 27 | from socket import error
28 28 | raise error(1)
24 24 | )
25 25 |
26 26 | from mmap import error
27 |-raise error
27 |+raise OSError
28 28 |
29 29 | from socket import error
30 30 | raise error(1)
UP024_2.py:28:7: UP024 [*] Replace aliased errors with `OSError`
UP024_2.py:30:7: UP024 [*] Replace aliased errors with `OSError`
|
27 | from socket import error
28 | raise error(1)
29 | from socket import error
30 | raise error(1)
| ^^^^^ UP024
29 |
30 | from select import error
31 |
32 | from select import error
|
= help: Replace `error` with builtin `OSError`
Safe fix
25 25 | raise error
26 26 |
27 27 | from socket import error
28 |-raise error(1)
28 |+raise OSError(1)
29 29 |
30 30 | from select import error
31 31 | raise error(1, 2)
27 27 | raise error
28 28 |
29 29 | from socket import error
30 |-raise error(1)
30 |+raise OSError(1)
31 31 |
32 32 | from select import error
33 33 | raise error(1, 2)
UP024_2.py:31:7: UP024 [*] Replace aliased errors with `OSError`
UP024_2.py:33:7: UP024 [*] Replace aliased errors with `OSError`
|
30 | from select import error
31 | raise error(1, 2)
32 | from select import error
33 | raise error(1, 2)
| ^^^^^ UP024
32 |
33 | # Testing the names
34 |
35 | from resource import error
|
= help: Replace `error` with builtin `OSError`
Safe fix
28 28 | raise error(1)
29 29 |
30 30 | from select import error
31 |-raise error(1, 2)
31 |+raise OSError(1, 2)
32 32 |
33 33 | # Testing the names
34 34 | raise EnvironmentError
UP024_2.py:34:7: UP024 [*] Replace aliased errors with `OSError`
|
33 | # Testing the names
34 | raise EnvironmentError
| ^^^^^^^^^^^^^^^^ UP024
35 | raise IOError
36 | raise WindowsError
|
= help: Replace `EnvironmentError` with builtin `OSError`
Safe fix
31 31 | raise error(1, 2)
32 32 |
33 33 | # Testing the names
34 |-raise EnvironmentError
34 |+raise OSError
35 35 | raise IOError
36 36 | raise WindowsError
37 37 |
UP024_2.py:35:7: UP024 [*] Replace aliased errors with `OSError`
|
33 | # Testing the names
34 | raise EnvironmentError
35 | raise IOError
| ^^^^^^^ UP024
36 | raise WindowsError
|
= help: Replace `IOError` with builtin `OSError`
Safe fix
32 32 |
33 33 | # Testing the names
34 34 | raise EnvironmentError
35 |-raise IOError
35 |+raise OSError
36 36 | raise WindowsError
37 37 |
38 38 | raise EnvironmentError()
30 30 | raise error(1)
31 31 |
32 32 | from select import error
33 |-raise error(1, 2)
33 |+raise OSError(1, 2)
34 34 |
35 35 | from resource import error
36 36 | raise error(1, "strerror", "filename")
UP024_2.py:36:7: UP024 [*] Replace aliased errors with `OSError`
|
34 | raise EnvironmentError
35 | raise IOError
36 | raise WindowsError
| ^^^^^^^^^^^^ UP024
35 | from resource import error
36 | raise error(1, "strerror", "filename")
| ^^^^^ UP024
37 |
38 | raise EnvironmentError()
38 | # Testing the names
|
= help: Replace `WindowsError` with builtin `OSError`
= help: Replace `error` with builtin `OSError`
Safe fix
33 33 | # Testing the names
34 34 | raise EnvironmentError
35 35 | raise IOError
36 |-raise WindowsError
36 |+raise OSError
33 33 | raise error(1, 2)
34 34 |
35 35 | from resource import error
36 |-raise error(1, "strerror", "filename")
36 |+raise OSError(1, "strerror", "filename")
37 37 |
38 38 | raise EnvironmentError()
39 39 | raise IOError(1)
UP024_2.py:38:7: UP024 [*] Replace aliased errors with `OSError`
|
36 | raise WindowsError
37 |
38 | raise EnvironmentError()
| ^^^^^^^^^^^^^^^^ UP024
39 | raise IOError(1)
40 | raise WindowsError(1, 2)
|
= help: Replace `EnvironmentError` with builtin `OSError`
Safe fix
35 35 | raise IOError
36 36 | raise WindowsError
37 37 |
38 |-raise EnvironmentError()
38 |+raise OSError()
39 39 | raise IOError(1)
40 40 | raise WindowsError(1, 2)
41 41 |
38 38 | # Testing the names
39 39 | raise EnvironmentError
UP024_2.py:39:7: UP024 [*] Replace aliased errors with `OSError`
|
38 | raise EnvironmentError()
39 | raise IOError(1)
| ^^^^^^^ UP024
40 | raise WindowsError(1, 2)
38 | # Testing the names
39 | raise EnvironmentError
| ^^^^^^^^^^^^^^^^ UP024
40 | raise IOError
41 | raise WindowsError
|
= help: Replace `IOError` with builtin `OSError`
= help: Replace `EnvironmentError` with builtin `OSError`
Safe fix
36 36 | raise WindowsError
36 36 | raise error(1, "strerror", "filename")
37 37 |
38 38 | raise EnvironmentError()
39 |-raise IOError(1)
39 |+raise OSError(1)
40 40 | raise WindowsError(1, 2)
41 41 |
42 42 | raise EnvironmentError(
38 38 | # Testing the names
39 |-raise EnvironmentError
39 |+raise OSError
40 40 | raise IOError
41 41 | raise WindowsError
42 42 |
UP024_2.py:40:7: UP024 [*] Replace aliased errors with `OSError`
|
38 | raise EnvironmentError()
39 | raise IOError(1)
40 | raise WindowsError(1, 2)
| ^^^^^^^^^^^^ UP024
41 |
42 | raise EnvironmentError(
38 | # Testing the names
39 | raise EnvironmentError
40 | raise IOError
| ^^^^^^^ UP024
41 | raise WindowsError
|
= help: Replace `WindowsError` with builtin `OSError`
= help: Replace `IOError` with builtin `OSError`
Safe fix
37 37 |
38 38 | raise EnvironmentError()
39 39 | raise IOError(1)
40 |-raise WindowsError(1, 2)
40 |+raise OSError(1, 2)
41 41 |
42 42 | raise EnvironmentError(
43 43 | 1,
38 38 | # Testing the names
39 39 | raise EnvironmentError
40 |-raise IOError
40 |+raise OSError
41 41 | raise WindowsError
42 42 |
43 43 | raise EnvironmentError()
UP024_2.py:42:7: UP024 [*] Replace aliased errors with `OSError`
UP024_2.py:41:7: UP024 [*] Replace aliased errors with `OSError`
|
40 | raise WindowsError(1, 2)
41 |
42 | raise EnvironmentError(
| ^^^^^^^^^^^^^^^^ UP024
43 | 1,
44 | 2,
|
= help: Replace `EnvironmentError` with builtin `OSError`
Safe fix
39 39 | raise IOError(1)
40 40 | raise WindowsError(1, 2)
41 41 |
42 |-raise EnvironmentError(
42 |+raise OSError(
43 43 | 1,
44 44 | 2,
45 45 | 3,
UP024_2.py:48:7: UP024 [*] Replace aliased errors with `OSError`
|
46 | )
47 |
48 | raise WindowsError
39 | raise EnvironmentError
40 | raise IOError
41 | raise WindowsError
| ^^^^^^^^^^^^ UP024
49 | raise EnvironmentError(1)
50 | raise IOError(1, 2)
42 |
43 | raise EnvironmentError()
|
= help: Replace `WindowsError` with builtin `OSError`
Safe fix
45 45 | 3,
46 46 | )
47 47 |
48 |-raise WindowsError
48 |+raise OSError
49 49 | raise EnvironmentError(1)
50 50 | raise IOError(1, 2)
38 38 | # Testing the names
39 39 | raise EnvironmentError
40 40 | raise IOError
41 |-raise WindowsError
41 |+raise OSError
42 42 |
43 43 | raise EnvironmentError()
44 44 | raise IOError(1)
UP024_2.py:49:7: UP024 [*] Replace aliased errors with `OSError`
UP024_2.py:43:7: UP024 [*] Replace aliased errors with `OSError`
|
48 | raise WindowsError
49 | raise EnvironmentError(1)
41 | raise WindowsError
42 |
43 | raise EnvironmentError()
| ^^^^^^^^^^^^^^^^ UP024
50 | raise IOError(1, 2)
44 | raise IOError(1)
45 | raise WindowsError(1, 2)
|
= help: Replace `EnvironmentError` with builtin `OSError`
Safe fix
46 46 | )
47 47 |
48 48 | raise WindowsError
49 |-raise EnvironmentError(1)
49 |+raise OSError(1)
50 50 | raise IOError(1, 2)
40 40 | raise IOError
41 41 | raise WindowsError
42 42 |
43 |-raise EnvironmentError()
43 |+raise OSError()
44 44 | raise IOError(1)
45 45 | raise WindowsError(1, 2)
46 46 |
UP024_2.py:50:7: UP024 [*] Replace aliased errors with `OSError`
UP024_2.py:44:7: UP024 [*] Replace aliased errors with `OSError`
|
48 | raise WindowsError
49 | raise EnvironmentError(1)
50 | raise IOError(1, 2)
43 | raise EnvironmentError()
44 | raise IOError(1)
| ^^^^^^^ UP024
45 | raise WindowsError(1, 2)
|
= help: Replace `IOError` with builtin `OSError`
Safe fix
41 41 | raise WindowsError
42 42 |
43 43 | raise EnvironmentError()
44 |-raise IOError(1)
44 |+raise OSError(1)
45 45 | raise WindowsError(1, 2)
46 46 |
47 47 | raise EnvironmentError(
UP024_2.py:45:7: UP024 [*] Replace aliased errors with `OSError`
|
43 | raise EnvironmentError()
44 | raise IOError(1)
45 | raise WindowsError(1, 2)
| ^^^^^^^^^^^^ UP024
46 |
47 | raise EnvironmentError(
|
= help: Replace `WindowsError` with builtin `OSError`
Safe fix
42 42 |
43 43 | raise EnvironmentError()
44 44 | raise IOError(1)
45 |-raise WindowsError(1, 2)
45 |+raise OSError(1, 2)
46 46 |
47 47 | raise EnvironmentError(
48 48 | 1,
UP024_2.py:47:7: UP024 [*] Replace aliased errors with `OSError`
|
45 | raise WindowsError(1, 2)
46 |
47 | raise EnvironmentError(
| ^^^^^^^^^^^^^^^^ UP024
48 | 1,
49 | 2,
|
= help: Replace `EnvironmentError` with builtin `OSError`
Safe fix
44 44 | raise IOError(1)
45 45 | raise WindowsError(1, 2)
46 46 |
47 |-raise EnvironmentError(
47 |+raise OSError(
48 48 | 1,
49 49 | 2,
50 50 | 3,
UP024_2.py:53:7: UP024 [*] Replace aliased errors with `OSError`
|
51 | )
52 |
53 | raise WindowsError
| ^^^^^^^^^^^^ UP024
54 | raise EnvironmentError(1)
55 | raise IOError(1, 2)
|
= help: Replace `WindowsError` with builtin `OSError`
Safe fix
50 50 | 3,
51 51 | )
52 52 |
53 |-raise WindowsError
53 |+raise OSError
54 54 | raise EnvironmentError(1)
55 55 | raise IOError(1, 2)
UP024_2.py:54:7: UP024 [*] Replace aliased errors with `OSError`
|
53 | raise WindowsError
54 | raise EnvironmentError(1)
| ^^^^^^^^^^^^^^^^ UP024
55 | raise IOError(1, 2)
|
= help: Replace `EnvironmentError` with builtin `OSError`
Safe fix
51 51 | )
52 52 |
53 53 | raise WindowsError
54 |-raise EnvironmentError(1)
54 |+raise OSError(1)
55 55 | raise IOError(1, 2)
UP024_2.py:55:7: UP024 [*] Replace aliased errors with `OSError`
|
53 | raise WindowsError
54 | raise EnvironmentError(1)
55 | raise IOError(1, 2)
| ^^^^^^^ UP024
|
= help: Replace `IOError` with builtin `OSError`
Safe fix
47 47 |
48 48 | raise WindowsError
49 49 | raise EnvironmentError(1)
50 |-raise IOError(1, 2)
50 |+raise OSError(1, 2)
52 52 |
53 53 | raise WindowsError
54 54 | raise EnvironmentError(1)
55 |-raise IOError(1, 2)
55 |+raise OSError(1, 2)