tiramisu/config.py can specify return type for find ('option', 'value', 'path') and...
authorEmmanuel Garette <egarette@cadoles.com>
Fri, 5 Apr 2013 10:20:33 +0000 (12:20 +0200)
committerEmmanuel Garette <egarette@cadoles.com>
Fri, 5 Apr 2013 10:20:33 +0000 (12:20 +0200)
user need replace config.get(value) by config.find(byname="value", type_='value')

test/test_option_setting.py
test/test_parsing_group.py
tiramisu/config.py

index c030fdb..2d41cc2 100644 (file)
@@ -380,10 +380,10 @@ def test_allow_multiple_changes_from_config():
 def test_access_by_get():
     descr = make_description()
     cfg = Config(descr)
 def test_access_by_get():
     descr = make_description()
     cfg = Config(descr)
-    raises(NotFoundError, "cfg.get('idontexist')" )
-    assert cfg.get('wantref') == False
+    raises(NotFoundError, "cfg.find(byname='idontexist')" )
+    assert cfg.find_first(byname='wantref', type_='value') == False
     assert cfg.gc.dummy == False
     assert cfg.gc.dummy == False
-    assert cfg.get('dummy') == False
+    assert cfg.find_first(byname='dummy', type_='value') == False
 
 def test_access_by_get_whith_hide():
     b1 = BoolOption("b1", "", properties=(('hidden'),))
 
 def test_access_by_get_whith_hide():
     b1 = BoolOption("b1", "", properties=(('hidden'),))
@@ -399,4 +399,4 @@ def test_access_by_get_whith_hide():
     c = Config(descr)
     setting = c.cfgimpl_get_settings()
     setting.read_write()
     c = Config(descr)
     setting = c.cfgimpl_get_settings()
     setting.read_write()
-    raises(NotFoundError, "c.get('b1')")
+    raises(NotFoundError, "c.find(byname='b1')")
index f69b67d..ab17289 100644 (file)
@@ -40,7 +40,7 @@ def test_base_config():
     config = Config(descr)
     assert config.creole.general.activer_proxy_client == False
     assert config.creole.general.nom_machine == "eoleng"
     config = Config(descr)
     assert config.creole.general.activer_proxy_client == False
     assert config.creole.general.nom_machine == "eoleng"
-    assert config.get('nom_machine') == "eoleng"
+    assert config.find_first(byname='nom_machine', type_='value') == "eoleng"
     result = {'general.numero_etab': None, 'general.nombre_interfaces': 1,
     'general.serveur_ntp': [], 'interface1.ip_admin_eth0.ip_admin_eth0': None,
     'general.mode_conteneur_actif': False, 'general.time_zone': 'Paris',
     result = {'general.numero_etab': None, 'general.nombre_interfaces': 1,
     'general.serveur_ntp': [], 'interface1.ip_admin_eth0.ip_admin_eth0': None,
     'general.mode_conteneur_actif': False, 'general.time_zone': 'Paris',
index 14c0985..6d261be 100644 (file)
@@ -280,23 +280,8 @@ class SubConfig(object):
         context_descr = self.cfgimpl_get_context().cfgimpl_get_description()
         return context_descr.get_path_by_opt(descr)
 
         context_descr = self.cfgimpl_get_context().cfgimpl_get_description()
         return context_descr.get_path_by_opt(descr)
 
-    def get(self, name):
-        """
-        same as a `find_first()` method in a config that has identical names:
-        it returns the first item of an option named `name`
-
-        much like the attribute access way, except that
-        the search for the option is performed recursively in the whole
-        configuration tree.
-
-        :returns: option value.
-        """
-        return self.cfgimpl_get_context()._find(byname=name, bytype=None,
-                                                byvalue=None, byattrs=None,
-                                                first=True, ret='value',
-                                                _subpath=self.getpath())
-
-    def find(self, bytype=None, byname=None, byvalue=None, byattrs=None):
+    def find(self, bytype=None, byname=None, byvalue=None, byattrs=None,
+             type_='option'):
         """
             finds a list of options recursively in the config
 
         """
             finds a list of options recursively in the config
 
@@ -308,9 +293,11 @@ class SubConfig(object):
         """
         return self.cfgimpl_get_context()._find(bytype, byname, byvalue,
                                                 byattrs, first=False,
         """
         return self.cfgimpl_get_context()._find(bytype, byname, byvalue,
                                                 byattrs, first=False,
+                                                type_=type_,
                                                 _subpath=self.getpath())
 
                                                 _subpath=self.getpath())
 
-    def find_first(self, bytype=None, byname=None, byvalue=None, byattrs=None):
+    def find_first(self, bytype=None, byname=None, byvalue=None, byattrs=None,
+                   type_='option'):
         """
             finds an option recursively in the config
 
         """
             finds an option recursively in the config
 
@@ -322,6 +309,7 @@ class SubConfig(object):
         """
         return self.cfgimpl_get_context()._find(bytype, byname, byvalue,
                                                 byattrs, first=True,
         """
         return self.cfgimpl_get_context()._find(bytype, byname, byvalue,
                                                 byattrs, first=True,
+                                                type_=type_,
                                                 _subpath=self.getpath())
 
     def make_dict(self, flatten=False, _currpath=None, withoption=None, withvalue=None):
                                                 _subpath=self.getpath())
 
     def make_dict(self, flatten=False, _currpath=None, withoption=None, withvalue=None):
@@ -382,7 +370,7 @@ class Config(SubConfig):
     "main configuration management entry"
     __slots__ = ('_cfgimpl_settings', '_cfgimpl_values')
 
     "main configuration management entry"
     __slots__ = ('_cfgimpl_settings', '_cfgimpl_values')
 
-    def __init__(self, descr, valid_opt_names=True):
+    def __init__(self, descr):
         """ Configuration option management master class
 
         :param descr: describes the configuration schema
         """ Configuration option management master class
 
         :param descr: describes the configuration schema
@@ -394,15 +382,6 @@ class Config(SubConfig):
         """
         self._cfgimpl_settings = Setting()
         self._cfgimpl_values = Values(self)
         """
         self._cfgimpl_settings = Setting()
         self._cfgimpl_values = Values(self)
-        #if valid_opt_names:
-        #    # some api members shall not be used as option's names !
-        #    #FIXME fait une boucle infini ...
-        #    #methods = getmembers(self, ismethod)
-        #    #slots = tuple([key for key, value in methods
-        #    #               if not key.startswith("_")])
-        #    slots = []
-        #else:
-        #    slots = []
         super(Config, self).__init__(descr, None, self)  # , slots)
         self._cfgimpl_build_all_paths()
 
         super(Config, self).__init__(descr, None, self)  # , slots)
         self._cfgimpl_build_all_paths()
 
@@ -454,7 +433,7 @@ class Config(SubConfig):
     def getpath(self):
         return None
 
     def getpath(self):
         return None
 
-    def _find(self, bytype, byname, byvalue, byattrs, first, ret='option',
+    def _find(self, bytype, byname, byvalue, byattrs, first, type_='option',
               _subpath=None):
         """
         convenience method for finding an option that lives only in the subtree
               _subpath=None):
         """
         convenience method for finding an option that lives only in the subtree
@@ -500,8 +479,8 @@ class Config(SubConfig):
                     else:
                         continue
             return True
                     else:
                         continue
             return True
-        if ret not in ('option', 'path', 'value'):
-            raise ValueError('unknown ret type {} for _find'.format(ret))
+        if type_ not in ('option', 'path', 'value'):
+            raise ValueError('unknown type_ type {} for _find'.format(type_))
         find_results = []
         opts, paths = self.cfgimpl_get_description()._cache_paths
         for index in range(0, len(paths)):
         find_results = []
         opts, paths = self.cfgimpl_get_description()._cache_paths
         for index in range(0, len(paths)):
@@ -524,9 +503,9 @@ class Config(SubConfig):
                 value = getattr(self, path)
             except:  # a property restricts the access of the value
                 continue
                 value = getattr(self, path)
             except:  # a property restricts the access of the value
                 continue
-            if ret == 'value':
+            if type_ == 'value':
                 retval = value
                 retval = value
-            elif ret == 'path':
+            elif type_ == 'path':
                 retval = path
             else:
                 retval = option
                 retval = path
             else:
                 retval = option