# HG changeset patch # User Franz Glasner # Date 1639051337 -3600 # Node ID 090a25f36a3d55a673845b0fa31a41aba96b6c14 # Parent 40be1d25ff1ccf9360b9999564aafa53ed0151e2 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. diff -r 40be1d25ff1c -r 090a25f36a3d CHANGES.txt --- a/CHANGES.txt Tue Dec 07 15:43:09 2021 +0100 +++ b/CHANGES.txt Thu Dec 09 13:02:17 2021 +0100 @@ -12,6 +12,16 @@ Pre-1.0 Series -------------- +n/a (not yet) +~~~~~~~~~~~~~ + +- **[bugfix]** + 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 + :py:meth:`~configmix.config._JailedConfiguration.rebind` is used. + + 0.18 (2021-12-02) ~~~~~~~~~~~~~~~~~ diff -r 40be1d25ff1c -r 090a25f36a3d configmix/config.py --- a/configmix/config.py Tue Dec 07 15:43:09 2021 +0100 +++ b/configmix/config.py Thu Dec 09 13:02:17 2021 +0100 @@ -842,8 +842,8 @@ raise TypeError("a paths item must be a list or tuple") return self._base.getfirstvarl_s(*real_paths, **kwds) - def getvar(self, varname, default=_MARKER): - return self._base.getvar(self._pathstr + varname, default=default) + def getvar(self, varname, **kwds): + return self._base.getvar(self._pathstr + varname, **kwds) def getkeys(self, varname): for k in self._base.getkeys(self._pathstr + varname): @@ -853,8 +853,8 @@ real_varnames = [self._pathstr + vn for vn in varnames] return self._base.getfirstvar(*real_varnames, **kwds) - def getvar_s(self, varname, default=_MARKER): - return self._base.getvar_s(self._pathstr + varname, default=default) + def getvar_s(self, varname, **kwds): + return self._base.getvar_s(self._pathstr + varname, **kwds) def getfirstvar_s(self, *varnames, **kwds): real_varnames = [self._pathstr + vn for vn in varnames]