lib: Begin a settings file

Right now I just have functions for set and get wrapped in a context
manager for splitting the setting string into section and key values.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2021-06-06 20:59:40 -04:00
parent e2bb85b854
commit 96971317b5
3 changed files with 41 additions and 0 deletions

View File

@ -1,2 +1,3 @@
# Copyright 2020 (c) Anna Schumaker.
from . import publisher
from . import settings

23
lib/settings.py Normal file
View File

@ -0,0 +1,23 @@
# Copyright 2021 (c) Anna Schumaker.
import configparser
config = configparser.ConfigParser()
class Prepare:
def __init__(self, setting):
self.setting = setting
def __enter__(self):
return self.setting.split(".")
def __exit__(self, exp_type, exp_value, traceback):
return exp_type == None
def get(setting, default=None):
with Prepare(setting) as (section, key):
return config.get(section, key, fallback=default)
def set(setting, value):
with Prepare(setting) as (section, key):
if not config.has_section(section):
config.add_section(section)
config.set(section, key, str(value))

17
lib/test_settings.py Normal file
View File

@ -0,0 +1,17 @@
# Copyright 2021 (c) Anna Schumaker.
from . import settings
import unittest
import configparser
class TestSettings(unittest.TestCase):
def test_init(self):
self.assertIsInstance(settings.config, configparser.ConfigParser)
def test_set_get(self):
self.assertIsNone(settings.get("test.key"))
settings.set("test.key", 42)
self.assertEqual(settings.get("test.key"), "42")
self.assertIsNone(settings.get("test.nokey"))
self.assertEqual(settings.get("test.nokey", 1), 1)
self.assertEqual(settings.get("no.key", 1), 1)