[tor-commits] [stem/master] Remove config values when Config.set() is provided with a None value
atagar at torproject.org
atagar at torproject.org
Mon Jan 18 16:42:11 UTC 2016
commit 1248546bcdd6c1d9e6aa0e79dd1c29d89c8d6060
Author: Damian Johnson <atagar at torproject.org>
Date: Sun Jan 17 15:05:56 2016 -0800
Remove config values when Config.set() is provided with a None value
Ran into a situation where I wanted to unset a config value. Intuitive way of
doing this is to provide None to our set() method.
---
docs/change_log.rst | 1 +
stem/util/conf.py | 10 +++++++++-
2 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/docs/change_log.rst b/docs/change_log.rst
index 0640aef..1420ddf 100644
--- a/docs/change_log.rst
+++ b/docs/change_log.rst
@@ -74,6 +74,7 @@ The following are only available within Stem's `git repository
* Added :func:`~stem.util.__init__.datetime_to_unix`
* Basic IPv6 support in :func:`~stem.util.connection.get_connections`
* The 'ss' connection resolver didn't work on Gentoo (:trac:`18079`)
+ * Allow :func:`stem.util.conf.Config.set` to remove values when provided with a **None** value
* **Interpreter**
diff --git a/stem/util/conf.py b/stem/util/conf.py
index 8e6597f..18226d8 100644
--- a/stem/util/conf.py
+++ b/stem/util/conf.py
@@ -620,6 +620,9 @@ class Config(object):
Appends the given key/value configuration mapping, behaving the same as if
we'd loaded this from a configuration file.
+ .. versionchanged:: 1.5.0
+ Allow removal of values by overwriting with a **None** value.
+
:param str key: key for the configuration mapping
:param str,list value: value we're setting the mapping to
:param bool overwrite: replaces the previous value if **True**, otherwise
@@ -629,7 +632,12 @@ class Config(object):
with self._contents_lock:
unicode_type = str if stem.prereq.is_python_3() else unicode
- if isinstance(value, bytes) or isinstance(value, unicode_type):
+ if value is None:
+ if overwrite and key in self._contents:
+ del self._contents[key]
+ else:
+ pass # no value so this is a no-op
+ elif isinstance(value, (bytes, unicode_type)):
if not overwrite and key in self._contents:
self._contents[key].append(value)
else:
More information about the tor-commits
mailing list