Skip to content

Commit 543e2fe

Browse files
committed
BUGFIX:
- use deep_merge() for config files (support DEFAULT handling for complex structures)
1 parent 6925972 commit 543e2fe

File tree

4 files changed

+5
-5
lines changed

4 files changed

+5
-5
lines changed

core/data/server.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ def read_locals(self) -> dict:
8080
raise YAMLError(config_file, ex)
8181
if data.get(self.name) is None and self.name != 'n/a':
8282
self.log.warning(f'No configuration found for server "{self.name}" in servers.yaml!')
83-
_locals = data.get(DEFAULT_TAG, {}) | data.get(self.name, {})
83+
_locals = utils.deep_merge(data.get(DEFAULT_TAG, {}), data.get(self.name, {}))
8484
_locals['messages'] = {
8585
"greeting_message_members": "{player.name}, welcome back to {server.name}!",
8686
"greeting_message_unmatched": "{player.name}, please use /linkme in our Discord, if you want to see your user stats!",

core/plugin.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -497,7 +497,7 @@ def get_config(self, server: Optional[Server] = None, *, plugin_name: Optional[s
497497
self._config[server.node.name] = {}
498498
if server.instance.name not in self._config[server.node.name] or not use_cache:
499499
default, specific = self.get_base_config(server)
500-
self._config[server.node.name][server.instance.name] = default | specific
500+
self._config[server.node.name][server.instance.name] = utils.deep_merge(default, specific)
501501
return self._config[server.node.name][server.instance.name]
502502

503503
async def rename(self, conn: psycopg.AsyncConnection, old_name: str, new_name: str) -> None:

core/services/base.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -165,8 +165,8 @@ def get_config(self, server: Optional[Server] = None) -> dict:
165165
if server.node.name not in self._config:
166166
self._config[server.node.name] = {}
167167
if server.instance.name not in self._config[server.node.name]:
168-
self._config[server.node.name][server.instance.name] = (
169-
self.locals.get(DEFAULT_TAG, {}) |
168+
self._config[server.node.name][server.instance.name] = utils.deep_merge(
169+
self.locals.get(DEFAULT_TAG, {}),
170170
self.locals.get(server.node.name, self.locals).get(server.instance.name, {})
171171
)
172172
return self._config.get(server.node.name, {}).get(server.instance.name, {})

plugins/mission/migrate.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ def _change_instance(instance: dict):
8686
if 'slotblocking' not in self.node.plugins:
8787
instance.pop('message_server_full', None)
8888

89-
# first of all, reorganise the messages in servers.yaml
89+
# first, re-organize the messages in servers.yaml
9090
server_config = os.path.join(self.node.config_dir, 'servers.yaml')
9191
server_data = yaml.load(Path(server_config).read_text(encoding='utf-8'))
9292
# make sure we have a default tag

0 commit comments

Comments
 (0)