[PATCH 1 of 3 FOLLOW-UP] vfs: fix proxyvfs inheritance

Boris Feld boris.feld at octobus.net
Wed Jan 2 11:29:27 UTC 2019


# HG changeset patch
# User Boris Feld <boris.feld at octobus.net>
# Date 1546421352 -3600
#      Wed Jan 02 10:29:12 2019 +0100
# Node ID b33239d75ded3c23d46fe50bb04e0dd3aac9ef9b
# Parent  9e593db5f1a1b08f812591439c831ace55bca321
# EXP-Topic vfs-audit
# Available At https://bitbucket.org/octobus/mercurial-devel/
#              hg pull https://bitbucket.org/octobus/mercurial-devel/ -r b33239d75ded
vfs: fix proxyvfs inheritance

The proxyvfs class is designed to overwrite some of the vfs logic. Yet, it did
not use normal class inheritance. This is becoming an issue as `abstractvfs`
method could take precedence over their `proxyvfs` version.

We fix the inheritance chain to be as expected.

diff --git a/mercurial/store.py b/mercurial/store.py
--- a/mercurial/store.py
+++ b/mercurial/store.py
@@ -523,7 +523,7 @@ class fncache(object):
             self._load()
         return iter(self.entries | self.addls)
 
-class _fncachevfs(vfsmod.abstractvfs, vfsmod.proxyvfs):
+class _fncachevfs(vfsmod.proxyvfs):
     def __init__(self, vfs, fnc, encode):
         vfsmod.proxyvfs.__init__(self, vfs)
         self.fncache = fnc
diff --git a/mercurial/vfs.py b/mercurial/vfs.py
--- a/mercurial/vfs.py
+++ b/mercurial/vfs.py
@@ -469,7 +469,7 @@ class vfs(abstractvfs):
 
 opener = vfs
 
-class proxyvfs(object):
+class proxyvfs(abstractvfs):
     def __init__(self, vfs):
         self.vfs = vfs
 
@@ -481,7 +481,7 @@ class proxyvfs(object):
     def options(self, value):
         self.vfs.options = value
 
-class filtervfs(abstractvfs, proxyvfs):
+class filtervfs(proxyvfs, abstractvfs):
     '''Wrapper vfs for filtering filenames with a function.'''
 
     def __init__(self, vfs, filter):
@@ -499,7 +499,7 @@ class filtervfs(abstractvfs, proxyvfs):
 
 filteropener = filtervfs
 
-class readonlyvfs(abstractvfs, proxyvfs):
+class readonlyvfs(proxyvfs):
     '''Wrapper vfs preventing any writing.'''
 
     def __init__(self, vfs):


More information about the Mercurial-devel mailing list