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:
parent
e2bb85b854
commit
96971317b5
|
@ -1,2 +1,3 @@
|
|||
# Copyright 2020 (c) Anna Schumaker.
|
||||
from . import publisher
|
||||
from . import settings
|
||||
|
|
|
@ -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))
|
|
@ -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)
|
Loading…
Reference in New Issue