summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Dairiki <dairiki@dairiki.org>2014-01-10 08:02:21 -0800
committerJeff Dairiki <dairiki@dairiki.org>2014-01-10 08:02:30 -0800
commit824df52069f9512ef192af07a9007a0d174becf8 (patch)
tree4464662cbf55697fb721a204e88e1490c1039242
parent9a24cb31197994a82fdba203d791c42024e09ccb (diff)
downloaddogpile-cache-824df52069f9512ef192af07a9007a0d174becf8.tar.gz
util.coerce_string_conf: coerce floats too (#57)
-rw-r--r--dogpile/cache/util.py2
-rw-r--r--tests/cache/test_utils.py9
2 files changed, 11 insertions, 0 deletions
diff --git a/dogpile/cache/util.py b/dogpile/cache/util.py
index 8f6f3ff..0f732a6 100644
--- a/dogpile/cache/util.py
+++ b/dogpile/cache/util.py
@@ -15,6 +15,8 @@ def coerce_string_conf(d):
v = v.strip()
if re.match(r'^[-+]?\d+$', v):
result[k] = int(v)
+ elif re.match(r'^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][-+]?\d+)?$', v):
+ result[k] = float(v)
elif v.lower() in ('false', 'true'):
result[k] = v.lower() == 'true'
elif v == 'None':
diff --git a/tests/cache/test_utils.py b/tests/cache/test_utils.py
index 4104e9b..6218a96 100644
--- a/tests/cache/test_utils.py
+++ b/tests/cache/test_utils.py
@@ -15,3 +15,12 @@ class UtilsTest(TestCase):
settings = {'expiration_time': '+1'}
coerced = util.coerce_string_conf(settings)
self.assertEqual(coerced['expiration_time'], 1)
+ self.assertEqual(type(coerced['expiration_time']), int)
+
+ settings = {'arguments.lock_sleep': '0.1'}
+ coerced = util.coerce_string_conf(settings)
+ self.assertEqual(coerced['arguments.lock_sleep'], 0.1)
+
+ settings = {'arguments.lock_sleep': '-3.14e-10'}
+ coerced = util.coerce_string_conf(settings)
+ self.assertEqual(coerced['arguments.lock_sleep'], -3.14e-10)