[tor-commits] [stem/master] Dropping Config's get_int_csv() and get_str_csv()

atagar at torproject.org atagar at torproject.org
Tue Jan 1 23:20:29 UTC 2013


commit 93e1e8a1c4c5c52f09a9b974f868a223a1cda1ca
Author: Damian Johnson <atagar at torproject.org>
Date:   Tue Jan 1 14:03:53 2013 -0800

    Dropping Config's get_int_csv() and get_str_csv()
    
    Many, many moons ago when arm first began it used integer enumerations (as is
    often the case for python projects). I added get_int_csv() to allow users to
    configure those enums, and later added get_str_csv() when we moved to our Enum
    class.
    
    Long story short, both are legacy methods for a bygone age before we had our
    new config_dict() pattern. We don't use it, and now neither does arm. Time to
    drop the cruft.
---
 stem/util/conf.py      |   85 +-----------------------------------------------
 test/unit/util/conf.py |   20 -----------
 2 files changed, 1 insertions(+), 104 deletions(-)

diff --git a/stem/util/conf.py b/stem/util/conf.py
index 21106bf..e8d35b6 100644
--- a/stem/util/conf.py
+++ b/stem/util/conf.py
@@ -131,9 +131,7 @@ Alternatively you can get a read-only dictionary that stays in sync with the
     |- set - sets the given key/value pair
     |- unused_keys - provides keys that have never been requested
     |- get - provides the value for a given key, with type inference
-    |- get_value - provides the value for a given key as a string
-    |- get_str_csv - gets a value as a comma separated list of strings
-    +- get_int_csv - gets a value as a comma separated list of integers
+    +- get_value - provides the value for a given key as a string
 """
 
 from __future__ import with_statement
@@ -655,85 +653,4 @@ class Config(object):
         message_id = "stem.util.conf.missing_config_key_%s" % key
         log.log_once(message_id, log.TRACE, "config entry '%s' not found, defaulting to '%s'" % (key, default))
         return default
-  
-  def get_str_csv(self, key, default = None, count = None, sub_key = None):
-    """
-    Fetches the given key as a comma separated value.
-    
-    :param str key: config setting to be fetched, last if multiple exists
-    :param object default: value provided if no such key exists or doesn't
-      match the count
-    :param int count: if set then the default is returned when the number of
-      elements doesn't match this value
-    :param str sub_key: handle the configuration entry as a dictionary and use
-      this key within it
-    
-    :returns: **list** with the stripped values
-    """
-    
-    if sub_key: conf_value = self.get(key, {}).get(sub_key)
-    else: conf_value = self.get_value(key)
-    
-    if conf_value is None: return default
-    elif not conf_value.strip(): return [] # empty string
-    else:
-      conf_comp = [entry.strip() for entry in conf_value.split(",")]
-      
-      # check if the count doesn't match
-      if count is not None and len(conf_comp) != count:
-        msg = "Config entry '%s' is expected to be %i comma separated values" % (key, count)
-        if default is not None and (isinstance(default, list) or isinstance(default, tuple)):
-          defaultStr = ", ".join([str(i) for i in default])
-          msg += ", defaulting to '%s'" % defaultStr
-        
-        log.debug(msg)
-        return default
-      
-      return conf_comp
-  
-  def get_int_csv(self, key, default = None, count = None, min_value = None, max_value = None, sub_key = None):
-    """
-    Fetches the given comma separated value, returning the default if the
-    values aren't integers or don't follow the given constraints.
-    
-    :param str key: config setting to be fetched, last if multiple exists
-    :param object default: value provided if no such key exists, doesn't match
-      the count, values aren't all integers, or doesn't match the bounds
-    :param int count: checks that the number of values matches this if set
-    :param int min_value: checks that all values are over this if set
-    :param int max_value: checks that all values are under this if set
-    :param str sub_key: handle the configuration entry as a dictionary and use
-      this key within it
-    
-    :returns: **list** with the stripped values
-    """
-    
-    conf_comp = self.get_str_csv(key, default, count, sub_key)
-    if conf_comp == default: return default
-    
-    # validates the input, setting the error_msg if there's a problem
-    error_msg = None
-    base_error_msg = "Config entry '%s' is expected to %%s" % key
-    
-    # includes our default value in the message
-    if default is not None and (isinstance(default, list) or isinstance(default, tuple)):
-      default_str = ", ".join([str(i) for i in default])
-      base_error_msg += ", defaulting to '%s'" % default_str
-    
-    for val in conf_comp:
-      if not val.isdigit():
-        error_msg = base_error_msg % "only have integer values"
-        break
-      else:
-        if min_value is not None and int(val) < min_value:
-          error_msg = base_error_msg % "only have values over %i" % min_value
-          break
-        elif max_value is not None and int(val) > max_value:
-          error_msg = base_error_msg % "only have values less than %i" % max_value
-          break
-    
-    if error_msg:
-      log.debug(error_msg)
-      return default
-    else: return [int(val) for val in conf_comp]
 
diff --git a/test/unit/util/conf.py b/test/unit/util/conf.py
index 36afe10..f3ce915 100644
--- a/test/unit/util/conf.py
+++ b/test/unit/util/conf.py
@@ -266,24 +266,4 @@ class TestConf(unittest.TestCase):
     
     self.assertEquals(None, test_config.get_value("foo"))
     self.assertEquals("hello", test_config.get_value("foo", "hello"))
-  
-  def test_csv(self):
-    """
-    Tests the get_str_csv and get_int_csv methods.
-    """
-    
-    test_config = stem.util.conf.get_config("unit_testing")
-    test_config.set("str_csv_value", "hello, world")
-    test_config.set("int_csv_value", "1, 2, 3")
-    test_config.set("not_a_csv_value", "blarg I say!")
-    
-    self.assertEquals(["hello", "world"], test_config.get_str_csv("str_csv_value"))
-    self.assertEquals(["1", "2", "3"], test_config.get_str_csv("int_csv_value"))
-    self.assertEquals(["blarg I say!"], test_config.get_str_csv("not_a_csv_value"))
-    self.assertEquals(None, test_config.get_str_csv("not_a_csv_value", count = 5))
-    
-    self.assertEquals(None, test_config.get_int_csv("str_csv_value"))
-    self.assertEquals([1, 2, 3], test_config.get_int_csv("int_csv_value"))
-    self.assertEquals(None, test_config.get_int_csv("int_csv_value", min_value = 4))
-    self.assertEquals(None, test_config.get_int_csv("not_a_csv_value"))
 





More information about the tor-commits mailing list