comparison configmix/config.py @ 428:090a25f36a3d

FIX: Allow jailed configurations to use correctly use base configurations that use a different "default" marker object. Jailed configurations assumed that their "default" marker object is identical to the "default" marker object in the unjailed base configuration. This is not always true, especially if "_JailedConfiguration.rebind()" is used. Removed the explicit "default" keyword argument and passed the complete keywords argument dictionary to the base instead. This triggers correct default handling in the base.
author Franz Glasner <f.glasner@feldmann-mg.com>
date Thu, 09 Dec 2021 13:02:17 +0100
parents 84d4f82ffe59
children b96f49c9c76b
comparison
equal deleted inserted replaced
427:40be1d25ff1c 428:090a25f36a3d
840 "a `dict' is not supported in a jailed configuration") 840 "a `dict' is not supported in a jailed configuration")
841 else: 841 else:
842 raise TypeError("a paths item must be a list or tuple") 842 raise TypeError("a paths item must be a list or tuple")
843 return self._base.getfirstvarl_s(*real_paths, **kwds) 843 return self._base.getfirstvarl_s(*real_paths, **kwds)
844 844
845 def getvar(self, varname, default=_MARKER): 845 def getvar(self, varname, **kwds):
846 return self._base.getvar(self._pathstr + varname, default=default) 846 return self._base.getvar(self._pathstr + varname, **kwds)
847 847
848 def getkeys(self, varname): 848 def getkeys(self, varname):
849 for k in self._base.getkeys(self._pathstr + varname): 849 for k in self._base.getkeys(self._pathstr + varname):
850 yield k 850 yield k
851 851
852 def getfirstvar(self, *varnames, **kwds): 852 def getfirstvar(self, *varnames, **kwds):
853 real_varnames = [self._pathstr + vn for vn in varnames] 853 real_varnames = [self._pathstr + vn for vn in varnames]
854 return self._base.getfirstvar(*real_varnames, **kwds) 854 return self._base.getfirstvar(*real_varnames, **kwds)
855 855
856 def getvar_s(self, varname, default=_MARKER): 856 def getvar_s(self, varname, **kwds):
857 return self._base.getvar_s(self._pathstr + varname, default=default) 857 return self._base.getvar_s(self._pathstr + varname, **kwds)
858 858
859 def getfirstvar_s(self, *varnames, **kwds): 859 def getfirstvar_s(self, *varnames, **kwds):
860 real_varnames = [self._pathstr + vn for vn in varnames] 860 real_varnames = [self._pathstr + vn for vn in varnames]
861 return self._base.getfirstvar_s(*real_varnames, **kwds) 861 return self._base.getfirstvar_s(*real_varnames, **kwds)
862 862