Strings setting works like Server from CLI
This commit is contained in:
parent
69345b4b0e
commit
d8630a02d9
2 changed files with 20 additions and 11 deletions
|
@ -192,7 +192,17 @@ class MaxKeyFee(Setting[dict]):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class Servers(Setting[list]):
|
class ListSetting(Setting[list]):
|
||||||
|
|
||||||
|
def contribute_to_argparse(self, parser: ArgumentParser):
|
||||||
|
parser.add_argument(
|
||||||
|
self.cli_name,
|
||||||
|
help=self.doc,
|
||||||
|
action='append'
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class Servers(ListSetting):
|
||||||
|
|
||||||
def validate(self, val):
|
def validate(self, val):
|
||||||
assert isinstance(val, (tuple, list)), \
|
assert isinstance(val, (tuple, list)), \
|
||||||
|
@ -225,15 +235,8 @@ class Servers(Setting[list]):
|
||||||
return [f"{host}:{port}" for host, port in value]
|
return [f"{host}:{port}" for host, port in value]
|
||||||
return value
|
return value
|
||||||
|
|
||||||
def contribute_to_argparse(self, parser: ArgumentParser):
|
|
||||||
parser.add_argument(
|
|
||||||
self.cli_name,
|
|
||||||
help=self.doc,
|
|
||||||
action='append'
|
|
||||||
)
|
|
||||||
|
|
||||||
|
class Strings(ListSetting):
|
||||||
class Strings(Setting[list]):
|
|
||||||
|
|
||||||
def validate(self, val):
|
def validate(self, val):
|
||||||
assert isinstance(val, (tuple, list)), \
|
assert isinstance(val, (tuple, list)), \
|
||||||
|
@ -268,7 +271,7 @@ class ArgumentAccess:
|
||||||
def load(self, args):
|
def load(self, args):
|
||||||
for setting in self.configuration.get_settings():
|
for setting in self.configuration.get_settings():
|
||||||
value = getattr(args, setting.name, NOT_SET)
|
value = getattr(args, setting.name, NOT_SET)
|
||||||
if value != NOT_SET and not (isinstance(setting, Servers) and value is None):
|
if value != NOT_SET and not (isinstance(setting, ListSetting) and value is None):
|
||||||
self.args[setting.name] = setting.deserialize(value)
|
self.args[setting.name] = setting.deserialize(value)
|
||||||
|
|
||||||
def __contains__(self, item: str):
|
def __contains__(self, item: str):
|
||||||
|
|
|
@ -4,7 +4,7 @@ import types
|
||||||
import tempfile
|
import tempfile
|
||||||
import unittest
|
import unittest
|
||||||
import argparse
|
import argparse
|
||||||
from lbrynet.conf import Config, BaseConfig, String, Integer, Toggle, Servers, NOT_SET
|
from lbrynet.conf import Config, BaseConfig, String, Integer, Toggle, Servers, Strings, NOT_SET
|
||||||
from lbrynet.error import InvalidCurrencyError
|
from lbrynet.error import InvalidCurrencyError
|
||||||
|
|
||||||
|
|
||||||
|
@ -14,6 +14,7 @@ class TestConfig(BaseConfig):
|
||||||
test_false_toggle = Toggle('toggle help', False)
|
test_false_toggle = Toggle('toggle help', False)
|
||||||
test_true_toggle = Toggle('toggle help', True)
|
test_true_toggle = Toggle('toggle help', True)
|
||||||
servers = Servers('servers help', [('localhost', 80)])
|
servers = Servers('servers help', [('localhost', 80)])
|
||||||
|
strings = Strings('cheese', ['string'])
|
||||||
|
|
||||||
|
|
||||||
class ConfigurationTests(unittest.TestCase):
|
class ConfigurationTests(unittest.TestCase):
|
||||||
|
@ -54,6 +55,7 @@ class ConfigurationTests(unittest.TestCase):
|
||||||
self.assertTrue(c.test_true_toggle)
|
self.assertTrue(c.test_true_toggle)
|
||||||
self.assertFalse(c.test_false_toggle)
|
self.assertFalse(c.test_false_toggle)
|
||||||
self.assertEqual(c.servers, [('localhost', 80)])
|
self.assertEqual(c.servers, [('localhost', 80)])
|
||||||
|
self.assertEqual(c.strings, ['string'])
|
||||||
|
|
||||||
args = parser.parse_args(['--test-str', 'blah'])
|
args = parser.parse_args(['--test-str', 'blah'])
|
||||||
c = TestConfig.create_from_arguments(args)
|
c = TestConfig.create_from_arguments(args)
|
||||||
|
@ -80,6 +82,10 @@ class ConfigurationTests(unittest.TestCase):
|
||||||
c = TestConfig.create_from_arguments(args)
|
c = TestConfig.create_from_arguments(args)
|
||||||
self.assertEqual(c.servers, [('localhost', 1), ('192.168.0.1', 2)])
|
self.assertEqual(c.servers, [('localhost', 1), ('192.168.0.1', 2)])
|
||||||
|
|
||||||
|
args = parser.parse_args(['--strings=cheddar', '--strings=mozzarella'])
|
||||||
|
c = TestConfig.create_from_arguments(args)
|
||||||
|
self.assertEqual(c.strings, ['cheddar', 'mozzarella'])
|
||||||
|
|
||||||
def test_environment(self):
|
def test_environment(self):
|
||||||
c = TestConfig()
|
c = TestConfig()
|
||||||
self.assertEqual(c.test_str, 'the default')
|
self.assertEqual(c.test_str, 'the default')
|
||||||
|
|
Loading…
Reference in a new issue