Skip to content

Commit 57f7d3a

Browse files
authored
🚚 Move lazy-loaded Config initialization logic to __init__.py (#148)
1 parent b4777fe commit 57f7d3a

File tree

2 files changed

+20
-19
lines changed

2 files changed

+20
-19
lines changed

src/config/__init__.py

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,24 @@
11
# Copyright (c) NiceBots.xyz
22
# SPDX-License-Identifier: MIT
33

4-
from .bot_config import config
4+
from typing import TYPE_CHECKING, Any
5+
6+
from .bot_config import _config
7+
from .models import Config
8+
9+
# Lazy load Config object
10+
if TYPE_CHECKING:
11+
config: Config
12+
else:
13+
_config_obj: Config | None = None
14+
15+
def __getattr__(name: str) -> Any:
16+
if name == "config":
17+
global _config_obj # noqa: PLW0603
18+
if _config_obj is None:
19+
_config_obj = Config(**_config) if _config else Config()
20+
return _config_obj
21+
raise AttributeError(name)
22+
523

624
__all__ = ["config"]

src/config/bot_config.py

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,12 @@
44
import contextlib
55
import os
66
from collections import defaultdict
7-
from typing import TYPE_CHECKING, Any
7+
from typing import Any
88

99
import orjson
1010
import yaml
1111
from dotenv import load_dotenv
1212

13-
from .models import Config
14-
1513
load_dotenv()
1614

1715
SPLIT: str = "__"
@@ -61,7 +59,6 @@ def load_json_recursive(data: dict[str, Any]) -> dict[str, Any]:
6159
path = "config.yml"
6260

6361
_config: dict[str, Any] = defaultdict(dict) # pyright: ignore [reportExplicitAny]
64-
config: Config
6562

6663

6764
def merge_dicts(dct: dict[str, Any], merge_dct: dict[str, Any]) -> None: # pyright: ignore [reportExplicitAny]
@@ -77,17 +74,3 @@ def merge_dicts(dct: dict[str, Any], merge_dct: dict[str, Any]) -> None: # pyri
7774
_config.update(yaml.safe_load(f))
7875

7976
merge_dicts(_config, load_from_env())
80-
81-
# Lazy load Config object
82-
if TYPE_CHECKING:
83-
config: Config
84-
else:
85-
_config_obj: Config | None = None
86-
87-
def __getattr__(name: str) -> Any:
88-
if name == "config":
89-
global _config_obj # noqa: PLW0603
90-
if _config_obj is None:
91-
_config_obj = Config(**_config) if _config else Config()
92-
return _config_obj
93-
raise AttributeError(name)

0 commit comments

Comments
 (0)