commit 4cfc014f8730c148511b5407a37d2e50ba07f01e Author: Damian Johnson atagar@torproject.org Date: Wed Aug 23 10:53:22 2017 -0700
Stub sqlite support for manual caches
Stem's Config class is handy when we need human-editable configuratoins but when it comes to our auto-generated caches (manual information and fallback directories) better to use sqlite. Curious to see what kind of performance this gets us, and for nyx it might improve memory usage too. We'll see. --- stem/manual.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+)
diff --git a/stem/manual.py b/stem/manual.py index 9287033e..66e0abf3 100644 --- a/stem/manual.py +++ b/stem/manual.py @@ -49,6 +49,7 @@ us what our torrc options do...
import os import shutil +import sqlite3 import sys import tempfile
@@ -312,6 +313,10 @@ class Manual(object): requirements, and is faster too. Only drawback is that this manual content is only as up to date as the Stem release we're using.
+ .. versionchanged:: 1.6.0 + Added support for sqlite cache. Support for + :class:`~stem.util.conf.Config` caches will be dropped in Stem 2.x. + :param str path: cached manual content to read, if not provided this uses the bundled manual information
@@ -320,6 +325,19 @@ class Manual(object): :raises: **IOError** if a **path** was provided and we were unable to read it """
+ # TODO: drop _from_config_cache() with stem 2.x + + if path is not None and path.endswith('.sqlite'): + return Manual._from_sqlite_cache(path) + else: + return Manual._from_config_cache(path) + + @staticmethod + def _from_sqlite_cache(path): + pass + + @staticmethod + def _from_config_cache(path): conf = stem.util.conf.Config() conf.load(path if path else CACHE_PATH, commenting = False)
@@ -434,11 +452,26 @@ class Manual(object): """ Persists the manual content to a given location.
+ .. versionchanged:: 1.6.0 + Added support for sqlite cache. Support for + :class:`~stem.util.conf.Config` caches will be dropped in Stem 2.x. + :param str path: path to save our manual content to
:raises: **IOError** if unsuccessful """
+ # TODO: drop _save_as_config() with stem 2.x + + if path.endswith('.sqlite'): + return self._save_as_sqlite(path) + else: + return self._save_as_config(path) + + def _save_as_sqlite(self, path): + pass + + def _save_as_config(self, path): conf = stem.util.conf.Config() conf.set('name', self.name) conf.set('synopsis', self.synopsis)
tor-commits@lists.torproject.org