configuration: the cache folder can now be specified in the configuration file
This commit is contained in:
parent
f964c5471e
commit
05557cceb5
@ -15,7 +15,7 @@ def hist_cmd(args: argparse.Namespace, config: Config) -> None:
|
|||||||
tags_not=args.exclude_tags,
|
tags_not=args.exclude_tags,
|
||||||
question_contains=args.question,
|
question_contains=args.question,
|
||||||
answer_contains=args.answer)
|
answer_contains=args.answer)
|
||||||
chat = ChatDB.from_dir(Path('.'),
|
chat = ChatDB.from_dir(Path(config.cache),
|
||||||
Path(config.db),
|
Path(config.db),
|
||||||
mfilter=mfilter)
|
mfilter=mfilter)
|
||||||
chat.print(args.source_code_only,
|
chat.print(args.source_code_only,
|
||||||
|
|||||||
@ -84,7 +84,7 @@ def question_cmd(args: argparse.Namespace, config: Config) -> None:
|
|||||||
mfilter = MessageFilter(tags_or=args.or_tags if args.or_tags is not None else set(),
|
mfilter = MessageFilter(tags_or=args.or_tags if args.or_tags is not None else set(),
|
||||||
tags_and=args.and_tags if args.and_tags is not None else set(),
|
tags_and=args.and_tags if args.and_tags is not None else set(),
|
||||||
tags_not=args.exclude_tags if args.exclude_tags is not None else set())
|
tags_not=args.exclude_tags if args.exclude_tags is not None else set())
|
||||||
chat = ChatDB.from_dir(cache_path=Path('.'),
|
chat = ChatDB.from_dir(cache_path=Path(config.cache),
|
||||||
db_path=Path(config.db),
|
db_path=Path(config.db),
|
||||||
mfilter=mfilter)
|
mfilter=mfilter)
|
||||||
# if it's a new question, create and store it immediately
|
# if it's a new question, create and store it immediately
|
||||||
|
|||||||
@ -8,7 +8,7 @@ def tags_cmd(args: argparse.Namespace, config: Config) -> None:
|
|||||||
"""
|
"""
|
||||||
Handler for the 'tags' command.
|
Handler for the 'tags' command.
|
||||||
"""
|
"""
|
||||||
chat = ChatDB.from_dir(cache_path=Path('.'),
|
chat = ChatDB.from_dir(cache_path=Path(config.cache),
|
||||||
db_path=Path(config.db))
|
db_path=Path(config.db))
|
||||||
if args.list:
|
if args.list:
|
||||||
tags_freq = chat.msg_tags_frequency(args.prefix, args.contain)
|
tags_freq = chat.msg_tags_frequency(args.prefix, args.contain)
|
||||||
|
|||||||
@ -116,6 +116,7 @@ class Config:
|
|||||||
"""
|
"""
|
||||||
# all members have default values, so we can easily create
|
# all members have default values, so we can easily create
|
||||||
# a default configuration
|
# a default configuration
|
||||||
|
cache: str = '.'
|
||||||
db: str = './db/'
|
db: str = './db/'
|
||||||
ais: dict[str, AIConfig] = field(default_factory=create_default_ai_configs)
|
ais: dict[str, AIConfig] = field(default_factory=create_default_ai_configs)
|
||||||
|
|
||||||
@ -132,6 +133,7 @@ class Config:
|
|||||||
ai_conf = ai_config_instance(conf['name'], conf)
|
ai_conf = ai_config_instance(conf['name'], conf)
|
||||||
ais[ID] = ai_conf
|
ais[ID] = ai_conf
|
||||||
return cls(
|
return cls(
|
||||||
|
cache=str(source['cache']) if 'cache' in source else '.',
|
||||||
db=str(source['db']),
|
db=str(source['db']),
|
||||||
ais=ais
|
ais=ais
|
||||||
)
|
)
|
||||||
|
|||||||
@ -57,6 +57,7 @@ class TestConfig(unittest.TestCase):
|
|||||||
|
|
||||||
def test_from_dict_should_create_config_from_dict(self) -> None:
|
def test_from_dict_should_create_config_from_dict(self) -> None:
|
||||||
source_dict = {
|
source_dict = {
|
||||||
|
'cache': '.',
|
||||||
'db': './test_db/',
|
'db': './test_db/',
|
||||||
'ais': {
|
'ais': {
|
||||||
'myopenai': {
|
'myopenai': {
|
||||||
@ -73,6 +74,7 @@ class TestConfig(unittest.TestCase):
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
config = Config.from_dict(source_dict)
|
config = Config.from_dict(source_dict)
|
||||||
|
self.assertEqual(config.cache, '.')
|
||||||
self.assertEqual(config.db, './test_db/')
|
self.assertEqual(config.db, './test_db/')
|
||||||
self.assertEqual(len(config.ais), 1)
|
self.assertEqual(len(config.ais), 1)
|
||||||
self.assertEqual(config.ais['myopenai'].name, 'openai')
|
self.assertEqual(config.ais['myopenai'].name, 'openai')
|
||||||
@ -89,6 +91,7 @@ class TestConfig(unittest.TestCase):
|
|||||||
|
|
||||||
def test_from_file_should_load_config_from_file(self) -> None:
|
def test_from_file_should_load_config_from_file(self) -> None:
|
||||||
source_dict = {
|
source_dict = {
|
||||||
|
'cache': './test_cache/',
|
||||||
'db': './test_db/',
|
'db': './test_db/',
|
||||||
'ais': {
|
'ais': {
|
||||||
'default': {
|
'default': {
|
||||||
@ -108,6 +111,7 @@ class TestConfig(unittest.TestCase):
|
|||||||
yaml.dump(source_dict, f)
|
yaml.dump(source_dict, f)
|
||||||
config = Config.from_file(self.test_file.name)
|
config = Config.from_file(self.test_file.name)
|
||||||
self.assertIsInstance(config, Config)
|
self.assertIsInstance(config, Config)
|
||||||
|
self.assertEqual(config.cache, './test_cache/')
|
||||||
self.assertEqual(config.db, './test_db/')
|
self.assertEqual(config.db, './test_db/')
|
||||||
self.assertEqual(len(config.ais), 1)
|
self.assertEqual(len(config.ais), 1)
|
||||||
self.assertIsInstance(config.ais['default'], AIConfig)
|
self.assertIsInstance(config.ais['default'], AIConfig)
|
||||||
@ -115,6 +119,7 @@ class TestConfig(unittest.TestCase):
|
|||||||
|
|
||||||
def test_to_file_should_save_config_to_file(self) -> None:
|
def test_to_file_should_save_config_to_file(self) -> None:
|
||||||
config = Config(
|
config = Config(
|
||||||
|
cache='./test_cache/',
|
||||||
db='./test_db/',
|
db='./test_db/',
|
||||||
ais={
|
ais={
|
||||||
'myopenai': OpenAIConfig(
|
'myopenai': OpenAIConfig(
|
||||||
@ -133,12 +138,14 @@ class TestConfig(unittest.TestCase):
|
|||||||
config.to_file(Path(self.test_file.name))
|
config.to_file(Path(self.test_file.name))
|
||||||
with open(self.test_file.name, 'r') as f:
|
with open(self.test_file.name, 'r') as f:
|
||||||
saved_config = yaml.load(f, Loader=yaml.FullLoader)
|
saved_config = yaml.load(f, Loader=yaml.FullLoader)
|
||||||
|
self.assertEqual(saved_config['cache'], './test_cache/')
|
||||||
self.assertEqual(saved_config['db'], './test_db/')
|
self.assertEqual(saved_config['db'], './test_db/')
|
||||||
self.assertEqual(len(saved_config['ais']), 1)
|
self.assertEqual(len(saved_config['ais']), 1)
|
||||||
self.assertEqual(saved_config['ais']['myopenai']['system'], 'Custom system')
|
self.assertEqual(saved_config['ais']['myopenai']['system'], 'Custom system')
|
||||||
|
|
||||||
def test_from_file_error_unknown_ai(self) -> None:
|
def test_from_file_error_unknown_ai(self) -> None:
|
||||||
source_dict = {
|
source_dict = {
|
||||||
|
'cache': './test_cache/',
|
||||||
'db': './test_db/',
|
'db': './test_db/',
|
||||||
'ais': {
|
'ais': {
|
||||||
'default': {
|
'default': {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user