mirror of https://github.com/astral-sh/ruff
105 lines
2.4 KiB
Python
105 lines
2.4 KiB
Python
import os
|
|
from typing import Optional
|
|
from pathlib import Path
|
|
|
|
## Valid cases:
|
|
|
|
def os_path_in_foo():
|
|
file = "file.txt"
|
|
|
|
os.path.abspath(file) # OK
|
|
os.path.exists(file) # OK
|
|
os.path.split() # OK
|
|
|
|
async def non_io_os_path_methods():
|
|
os.path.split() # OK
|
|
os.path.dirname() # OK
|
|
os.path.basename() # OK
|
|
os.path.join() # OK
|
|
|
|
def pathlib_path_in_foo():
|
|
path = Path("src/my_text.txt") # OK
|
|
path.exists() # OK
|
|
with path.open() as f: # OK
|
|
...
|
|
path = Path("src/my_text.txt").open() # OK
|
|
|
|
async def non_io_pathlib_path_methods():
|
|
path = Path("src/my_text.txt")
|
|
path.is_absolute() # OK
|
|
path.is_relative_to() # OK
|
|
path.as_posix() # OK
|
|
path.relative_to() # OK
|
|
|
|
def inline_path_method_call():
|
|
Path("src/my_text.txt").open() # OK
|
|
Path("src/my_text.txt").open().flush() # OK
|
|
with Path("src/my_text.txt").open() as f: # OK
|
|
...
|
|
|
|
async def trio_path_in_foo():
|
|
from trio import Path
|
|
|
|
path = Path("src/my_text.txt") # OK
|
|
await path.absolute() # OK
|
|
await path.exists() # OK
|
|
with Path("src/my_text.txt").open() as f: # OK
|
|
...
|
|
|
|
async def anyio_path_in_foo():
|
|
from anyio import Path
|
|
|
|
path = Path("src/my_text.txt") # OK
|
|
await path.absolute() # OK
|
|
await path.exists() # OK
|
|
with Path("src/my_text.txt").open() as f: # OK
|
|
...
|
|
|
|
async def path_open_in_foo():
|
|
path = Path("src/my_text.txt") # OK
|
|
path.open() # OK, covered by ASYNC230
|
|
|
|
## Invalid cases:
|
|
|
|
async def os_path_in_foo():
|
|
file = "file.txt"
|
|
|
|
os.path.abspath(file) # ASYNC240
|
|
os.path.exists(file) # ASYNC240
|
|
|
|
async def pathlib_path_in_foo():
|
|
path = Path("src/my_text.txt")
|
|
path.exists() # ASYNC240
|
|
|
|
async def pathlib_path_in_foo():
|
|
import pathlib
|
|
|
|
path = pathlib.Path("src/my_text.txt")
|
|
path.exists() # ASYNC240
|
|
|
|
async def inline_path_method_call():
|
|
Path("src/my_text.txt").exists() # ASYNC240
|
|
Path("src/my_text.txt").absolute().exists() # ASYNC240
|
|
|
|
async def aliased_path_in_foo():
|
|
from pathlib import Path as PathAlias
|
|
|
|
path = PathAlias("src/my_text.txt")
|
|
path.exists() # ASYNC240
|
|
|
|
global_path = Path("src/my_text.txt")
|
|
|
|
async def global_path_in_foo():
|
|
global_path.exists() # ASYNC240
|
|
|
|
async def path_as_simple_parameter_type(path: Path):
|
|
path.exists() # ASYNC240
|
|
|
|
async def path_as_union_parameter_type(path: Path | None):
|
|
path.exists() # ASYNC240
|
|
|
|
async def path_as_optional_parameter_type(path: Optional[Path]):
|
|
path.exists() # ASYNC240
|
|
|
|
|