[Debichem-devel] Bug#1023972: Python 3.11 for bookworm?
Andrius Merkys
merkys at debian.org
Mon Jan 9 15:42:05 GMT 2023
Hi Simon,
On 2023-01-07 13:24, Simon McVittie wrote:
> On Sat, 07 Jan 2023 at 10:23:19 +0200, Andrius Merkys wrote:
>> If I may, I would as well be grateful if someone could give a look at:
>>
>> #1023972 [src:python-ase] FTBFS with Python 3.11 due to
>> pathlib.Path.__enter__() deprecation
>>
>> I have no idea how to fix this and the upstream is silent.
> My first thought on seeing this was: why were Path objects a context
> manager in the first place? What would that mean?
>
> Looking at the code in python3.10 and python3.11 pathlib, it seems the
> reason this is deprecated is indeed that it didn't make sense:
>
> 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
>
> So the solution seems to be that if your package contains this:
>
> with some_path_object:
> do_stuff(some_path_object)
>
> replace it with:
>
> do_stuff(some_path_object)
>
> and if it contains:
>
> with Path(...) as my_path:
> do_stuff(my_path)
>
> replace with:
>
> my_path = Path(...)
> do_stuff(my_path)
>
> I hope that should be a relatively straightforward change.
Thanks a lot for the hint, this indeed worked. Failure in __enter__()
threw me off tracks, but now I recall how it is related to 'with'
construction.
Best wishes,
Andrius
More information about the Debichem-devel
mailing list