Skip to content

[Bug]: Missing FURB151 (Path(x).touch()) when separating open() and close() #326

Description

@opk12

Has your issue already been fixed?

  • Have you checked to see if your issue still exists on the master branch? See the docs for instructions on how to setup a local build of Refurb.
  • Have you looked at the open/closed issues to see if anyone has already reported your issue?

The Bug

The following code:

#! /usr/bin/env python3
import os.path

path = "/tmp/tmpfile1"

if not os.path.exists(path):
    # Missing FURB151: No warning
    f = open(path, "w")
    f.close()

    # Warns as expected
    open(path, "w").close()

Does not emit the Path.touch() warning for lines 8-9. It only warns for line 12.

$ refurb --enable-all a.py 
a.py:6:8 [FURB141]: Replace `os.path.exists(x)` with `Path(x).exists()`
a.py:12:5 [FURB151]: Replace `open(x, "w").close()` with `Path(x).touch()`

Version Info

Refurb: v1.27.0
Mypy: v1.8.0

Python Version

Python 3.11.7

Config File

# N/A

Extra Info

None

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions