mirror of
https://github.com/python/cpython.git
synced 2025-07-19 09:15:34 +00:00
GH-83863: Drop support for using pathlib.Path
objects as context managers (GH-104807)
In Python 3.8 and prior, `pathlib.Path.__exit__()` marked a path as closed; some subsequent attempts to perform I/O would raise an IOError. This functionality was never documented, and had the effect of making `Path` objects mutable, contrary to PEP 428. In Python 3.9 we made `__exit__()` a no-op, and in 3.11 `__enter__()` began raising deprecation warnings. Here we remove both methods.
This commit is contained in:
parent
e0b3078705
commit
6b1510cf11
4 changed files with 7 additions and 39 deletions
|
@ -1080,25 +1080,6 @@ class Path(PurePath):
|
|||
cls = WindowsPath if os.name == 'nt' else PosixPath
|
||||
return object.__new__(cls)
|
||||
|
||||
def __enter__(self):
|
||||
# In previous versions of pathlib, __exit__() marked this path as
|
||||
# closed; subsequent attempts to perform I/O would raise an IOError.
|
||||
# This functionality was never documented, and had the effect of
|
||||
# making Path objects mutable, contrary to PEP 428.
|
||||
# In Python 3.9 __exit__() was made a no-op.
|
||||
# In Python 3.11 __enter__() began emitting DeprecationWarning.
|
||||
# In Python 3.13 __enter__() and __exit__() should be removed.
|
||||
warnings.warn("pathlib.Path.__enter__() is deprecated and scheduled "
|
||||
"for removal in Python 3.13; Path objects as a context "
|
||||
"manager is a no-op",
|
||||
DeprecationWarning, stacklevel=2)
|
||||
return self
|
||||
|
||||
def __exit__(self, t, v, tb):
|
||||
pass
|
||||
|
||||
# Public API
|
||||
|
||||
@classmethod
|
||||
def cwd(cls):
|
||||
"""Return a new path pointing to the current working directory."""
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue