Skip to content

Commit 2ae0e98

Browse files
authored
consider-using-with now triggers for pathlib.Path.open (#7968)
1 parent 71baf6a commit 2ae0e98

File tree

4 files changed

+42
-24
lines changed

4 files changed

+42
-24
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
``consider-using-with`` now triggers for ``pathlib.Path.open``.
2+
3+
Closes #7964

pylint/checkers/refactoring/refactoring_checker.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
CALLS_RETURNING_CONTEXT_MANAGERS = frozenset(
5050
(
5151
"_io.open", # regular 'open()' call
52+
"pathlib.Path.open",
5253
"codecs.open",
5354
"urllib.request.urlopen",
5455
"tempfile.NamedTemporaryFile",

tests/functional/c/consider/consider_using_with.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,24 @@
22
import codecs
33
import contextlib
44
import multiprocessing
5+
import pathlib
56
import subprocess
67
import tarfile
78
import tempfile
89
import threading
910
import urllib
1011
import zipfile
1112
from concurrent.futures import ThreadPoolExecutor, ProcessPoolExecutor
13+
from pathlib import Path
14+
15+
16+
def test_pathlib_open():
17+
_ = pathlib.Path("foo").open(encoding="utf8") # [consider-using-with]
18+
_ = Path("foo").open(encoding="utf8") # [consider-using-with]
19+
path = Path("foo")
20+
_ = path.open(encoding="utf8") # [consider-using-with]
21+
with Path("foo").open(encoding="utf8") as file: # must not trigger
22+
_ = file.read()
1223

1324

1425
def test_codecs_open():
Lines changed: 27 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,28 @@
1-
consider-using-with:15:9:15:40:test_codecs_open:Consider using 'with' for resource-allocating operations:UNDEFINED
2-
consider-using-with:20:8:20:55:test_urlopen:Consider using 'with' for resource-allocating operations:UNDEFINED
3-
consider-using-with:28:8:28:40:test_named_temporary_file:Consider using 'with' for resource-allocating operations:UNDEFINED
4-
consider-using-with:32:8:32:42:test_spooled_temporary_file:Consider using 'with' for resource-allocating operations:UNDEFINED
5-
consider-using-with:36:8:36:37:test_temporary_directory:Consider using 'with' for resource-allocating operations:UNDEFINED
6-
consider-using-with:40:12:40:44:test_zipfile:Consider using 'with' for resource-allocating operations:UNDEFINED
7-
consider-using-with:41:8:41:30:test_zipfile:Consider using 'with' for resource-allocating operations:UNDEFINED
8-
consider-using-with:45:12:45:46:test_pyzipfile:Consider using 'with' for resource-allocating operations:UNDEFINED
9-
consider-using-with:50:8:50:30:test_pyzipfile:Consider using 'with' for resource-allocating operations:UNDEFINED
10-
consider-using-with:57:9:57:43:test_tarfile:Consider using 'with' for resource-allocating operations:UNDEFINED
11-
consider-using-with:63:9:63:47:test_tarfile:Consider using 'with' for resource-allocating operations:UNDEFINED
12-
consider-using-with:72:4:72:18:test_lock_acquisition:Consider using 'with' for resource-allocating operations:UNDEFINED
13-
consider-using-with:79:4:79:19:test_lock_acquisition:Consider using 'with' for resource-allocating operations:UNDEFINED
14-
consider-using-with:86:4:86:18:test_lock_acquisition:Consider using 'with' for resource-allocating operations:UNDEFINED
15-
consider-using-with:93:4:93:26:test_lock_acquisition:Consider using 'with' for resource-allocating operations:UNDEFINED
16-
consider-using-with:129:8:129:30:test_multiprocessing:Consider using 'with' for resource-allocating operations:UNDEFINED
17-
consider-using-with:134:4:134:19:test_multiprocessing:Consider using 'with' for resource-allocating operations:UNDEFINED
18-
consider-using-with:139:4:139:19:test_multiprocessing:Consider using 'with' for resource-allocating operations:UNDEFINED
19-
consider-using-with:145:8:145:30:test_popen:Consider using 'with' for resource-allocating operations:UNDEFINED
20-
consider-using-with:201:4:201:26::Consider using 'with' for resource-allocating operations:UNDEFINED
21-
consider-using-with:202:4:202:26::Consider using 'with' for resource-allocating operations:UNDEFINED
22-
consider-using-with:207:4:207:26::Consider using 'with' for resource-allocating operations:UNDEFINED
1+
consider-using-with:17:8:17:49:test_pathlib_open:Consider using 'with' for resource-allocating operations:UNDEFINED
2+
consider-using-with:18:8:18:41:test_pathlib_open:Consider using 'with' for resource-allocating operations:UNDEFINED
3+
consider-using-with:20:8:20:34:test_pathlib_open:Consider using 'with' for resource-allocating operations:UNDEFINED
4+
consider-using-with:26:9:26:40:test_codecs_open:Consider using 'with' for resource-allocating operations:UNDEFINED
5+
consider-using-with:31:8:31:55:test_urlopen:Consider using 'with' for resource-allocating operations:UNDEFINED
6+
consider-using-with:39:8:39:40:test_named_temporary_file:Consider using 'with' for resource-allocating operations:UNDEFINED
7+
consider-using-with:43:8:43:42:test_spooled_temporary_file:Consider using 'with' for resource-allocating operations:UNDEFINED
8+
consider-using-with:47:8:47:37:test_temporary_directory:Consider using 'with' for resource-allocating operations:UNDEFINED
9+
consider-using-with:51:12:51:44:test_zipfile:Consider using 'with' for resource-allocating operations:UNDEFINED
10+
consider-using-with:52:8:52:30:test_zipfile:Consider using 'with' for resource-allocating operations:UNDEFINED
11+
consider-using-with:56:12:56:46:test_pyzipfile:Consider using 'with' for resource-allocating operations:UNDEFINED
12+
consider-using-with:61:8:61:30:test_pyzipfile:Consider using 'with' for resource-allocating operations:UNDEFINED
13+
consider-using-with:68:9:68:43:test_tarfile:Consider using 'with' for resource-allocating operations:UNDEFINED
14+
consider-using-with:74:9:74:47:test_tarfile:Consider using 'with' for resource-allocating operations:UNDEFINED
15+
consider-using-with:83:4:83:18:test_lock_acquisition:Consider using 'with' for resource-allocating operations:UNDEFINED
16+
consider-using-with:90:4:90:19:test_lock_acquisition:Consider using 'with' for resource-allocating operations:UNDEFINED
17+
consider-using-with:97:4:97:18:test_lock_acquisition:Consider using 'with' for resource-allocating operations:UNDEFINED
18+
consider-using-with:104:4:104:26:test_lock_acquisition:Consider using 'with' for resource-allocating operations:UNDEFINED
19+
consider-using-with:140:8:140:30:test_multiprocessing:Consider using 'with' for resource-allocating operations:UNDEFINED
20+
consider-using-with:145:4:145:19:test_multiprocessing:Consider using 'with' for resource-allocating operations:UNDEFINED
21+
consider-using-with:150:4:150:19:test_multiprocessing:Consider using 'with' for resource-allocating operations:UNDEFINED
22+
consider-using-with:156:8:156:30:test_popen:Consider using 'with' for resource-allocating operations:UNDEFINED
23+
consider-using-with:212:4:212:26::Consider using 'with' for resource-allocating operations:UNDEFINED
2324
consider-using-with:213:4:213:26::Consider using 'with' for resource-allocating operations:UNDEFINED
24-
consider-using-with:229:18:229:40:test_subscript_assignment:Consider using 'with' for resource-allocating operations:UNDEFINED
25-
consider-using-with:231:24:231:46:test_subscript_assignment:Consider using 'with' for resource-allocating operations:UNDEFINED
25+
consider-using-with:218:4:218:26::Consider using 'with' for resource-allocating operations:UNDEFINED
26+
consider-using-with:224:4:224:26::Consider using 'with' for resource-allocating operations:UNDEFINED
27+
consider-using-with:240:18:240:40:test_subscript_assignment:Consider using 'with' for resource-allocating operations:UNDEFINED
28+
consider-using-with:242:24:242:46:test_subscript_assignment:Consider using 'with' for resource-allocating operations:UNDEFINED

0 commit comments

Comments
 (0)