localrepo: purge filecache attribute using there unicode name
authorPierre-Yves David <pierre-yves.david@octobus.net>
Wed, 30 Aug 2023 01:23:30 +0200
changeset 50919 b3174be5e7f7
parent 50918 d97227f42558
child 50920 882687259181
localrepo: purge filecache attribute using there unicode name This could be better, but that's a good step.
mercurial/localrepo.py
mercurial/scmutil.py
--- a/mercurial/localrepo.py	Thu Aug 31 01:21:57 2023 +0200
+++ b/mercurial/localrepo.py	Wed Aug 30 01:23:30 2023 +0200
@@ -3028,7 +3028,11 @@
             if clearfilecache:
                 del self._filecache[k]
             try:
-                delattr(unfiltered, k)
+                # XXX ideally, the key would be a unicode string to match the
+                # fact it refers to an attribut name. However changing this was
+                # a bit a scope creep compared to the series cleaning up
+                # del/set/getattr so we kept thing simple here.
+                delattr(unfiltered, pycompat.sysstr(k))
             except AttributeError:
                 pass
         self.invalidatecaches()
--- a/mercurial/scmutil.py	Thu Aug 31 01:21:57 2023 +0200
+++ b/mercurial/scmutil.py	Wed Aug 30 01:23:30 2023 +0200
@@ -1692,6 +1692,10 @@
     def __call__(self, func):
         self.func = func
         self.sname = func.__name__
+        # XXX We should be using a unicode string instead of bytes for the main
+        # name (and the _filecache key). The fact we use bytes is a remains
+        # from Python2, since the name is derived from an attribute name a
+        # `str` is a better fit now that we support Python3 only
         self.name = pycompat.sysbytes(self.sname)
         return self