From 965031d16f7a0a02ad2d9adb7bd30dad2b5a6299 Mon Sep 17 00:00:00 2001 From: Eliah Kagan Date: Fri, 3 Nov 2023 08:01:13 -0400 Subject: [PATCH] Remove obsolete note in _iter_packed_refs This removes a comment noting that a try-finally block had been present (or had been intended), but was removed because some version of Python had imposed a limitation on yield appearing in try-finally. That comment was obsolete as of 58c5b99 (#326), which wrapped the relevant code in a with-statement, because: 1. Since then, the cleanup is done in a manner equivaent to try-finally. 2. It turned out, as noted in that PR, that cleanup had not always been done automatically. (This was contrary to the prediction given in the comment.) 3. At some point before that, the limitation that had prevented the use of try-finally no longer affected any supported version of Python. Specifically, it appears the only limitation that this could be was the limitation lifted in Python 2.5, where along with the addition of the close() method which causes try-finally to be called (and is itself called when a generator object is finalized), yield in a try-block with an associated finally-block became permitted, since the call to close() was sufficient to run the finally-block (by raising GeneratorExit). For details, see: https://docs.python.org/3/whatsnew/2.5.html#pep-342-new-generator-features (This obsolete comment was one of the things I discovered while working on #1725, but I didn't include this change there, having not yet looked into the history of the code enough to be sure.) --- git/refs/symbolic.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/git/refs/symbolic.py b/git/refs/symbolic.py index 73f64a57b..99a60201f 100644 --- a/git/refs/symbolic.py +++ b/git/refs/symbolic.py @@ -149,10 +149,6 @@ def _iter_packed_refs(cls, repo: "Repo") -> Iterator[Tuple[str, str]]: except OSError: return None # END no packed-refs file handling - # NOTE: Had try-finally block around here to close the fp, - # but some python version wouldn't allow yields within that. - # I believe files are closing themselves on destruction, so it is - # alright. @classmethod def dereference_recursive(cls, repo: "Repo", ref_path: Union[PathLike, None]) -> str: