diff configmix/config.py @ 398:b1f82b853290

Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
author Franz Glasner <fzglas.hg@dom66.de>
date Fri, 19 Nov 2021 01:39:18 +0100
parents 88239f28415c
children b45403d175a0
line wrap: on
line diff
--- a/configmix/config.py	Thu Nov 18 22:29:05 2021 +0100
+++ b/configmix/config.py	Fri Nov 19 01:39:18 2021 +0100
@@ -707,11 +707,43 @@
     def getvarl(self, *path, **kwds):
         return self._base.getvarl(*(self._path + path), **kwds)
 
+    def getfirstvarl(self, *paths, **kwds):
+        real_paths = []
+        for path in paths:
+            if isinstance(path, (list, tuple)):
+                real_paths.append(self._path + path)
+            elif isinstance(path, dict):
+                raise TypeError(
+                    "a `dict' is not supported in a jailed configuration")
+            else:
+                raise TypeError("a paths item must be a list or tuple")
+        return self._base.getfirstvarl(*real_paths, **kwds)
+
     def getvarl_s(self, *path, **kwds):
         return self._base.getvarl_s(*(self._path + path), **kwds)
 
+    def getfirstvarl_s(self, *paths, **kwds):
+        real_paths = []
+        for path in paths:
+            if isinstance(path, (list, tuple)):
+                real_paths.append(self._path + path)
+            elif isinstance(path, dict):
+                raise TypeError(
+                    "a `dict' is not supported in a jailed configuration")
+            else:
+                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 getfirstvar(self, *varnames, **kwds):
+        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 getfirstvar_s(self, *varnames, **kwds):
+        real_varnames = [self._pathstr + vn for vn in varnames]
+        return self._base.getfirstvar_s(*real_varnames, **kwds)