changeset 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 40be1d25ff1c
children 5b928606fa00
files CHANGES.txt configmix/config.py
diffstat 2 files changed, 14 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- 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)
 ~~~~~~~~~~~~~~~~~
 
--- 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]