Skip to content

Commit 63ec5b3

Browse files
committed
Fix and test handling of nested settings
1 parent 53848a2 commit 63ec5b3

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

src/mcp_grafana/settings.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class ToolSettings(BaseSettings):
1313

1414
class GrafanaSettings(BaseSettings):
1515
model_config: SettingsConfigDict = SettingsConfigDict(
16-
env_prefix="GRAFANA_", env_file=".env"
16+
env_prefix="GRAFANA_", env_file=".env", env_nested_delimiter="__"
1717
)
1818

1919
url: str = "http://localhost:3000"

tests/settings_test.py

+21
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
import os
2+
from unittest.mock import patch
3+
14
from mcp_grafana.settings import GrafanaSettings
25

36

@@ -7,3 +10,21 @@ def test_settings():
710
assert settings.api_key is None
811
assert settings.tools.search.enabled
912
assert settings.tools.search.limit == 1000
13+
14+
15+
@patch.dict(
16+
os.environ,
17+
{
18+
"GRAFANA_URL": "http://localhost:3001",
19+
"GRAFANA_API_KEY": "my-api-key",
20+
"GRAFANA_TOOLS__SEARCH__ENABLED": "false",
21+
"GRAFANA_TOOLS__SEARCH__LIMIT": "100",
22+
},
23+
)
24+
def test_settings_from_env():
25+
# Test we can instantiate settings from environment variables with delimiters.
26+
settings = GrafanaSettings()
27+
assert settings.url == "http://localhost:3001"
28+
assert settings.api_key == "my-api-key"
29+
assert not settings.tools.search.enabled
30+
assert settings.tools.search.limit == 100

0 commit comments

Comments
 (0)