From 0c57cbda0c9ae58180656ccb564470e7eded8c90 Mon Sep 17 00:00:00 2001 From: nicolargo Date: Tue, 4 Nov 2025 23:10:17 +0100 Subject: [PATCH] Add Dynaconf test --- pyproject.toml | 1 + tests-data/issues/issue3193-decouple.py | 15 +++++++++++++++ tests-data/issues/issue3193-dynaconf.py | 23 +++++++++++++++++++++++ 3 files changed, 39 insertions(+) create mode 100644 tests-data/issues/issue3193-decouple.py create mode 100644 tests-data/issues/issue3193-dynaconf.py diff --git a/pyproject.toml b/pyproject.toml index aa7ae3ff..5a6fba0f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -26,6 +26,7 @@ dependencies = [ "windows-curses; platform_system == 'Windows'", "shtab; platform_system != 'Windows'", "jinja2", + "dynaconf[ini]>=3.2.12", ] description = "A cross-platform curses-based monitoring tool" dynamic = ["version"] diff --git a/tests-data/issues/issue3193-decouple.py b/tests-data/issues/issue3193-decouple.py new file mode 100644 index 00000000..53f03266 --- /dev/null +++ b/tests-data/issues/issue3193-decouple.py @@ -0,0 +1,15 @@ +# Test python-decouple +# https://github.com/HBNetwork/python-decouple + +import os + +from decouple import Config, RepositoryIni + +GLANCES_CONFIG_FILE = os.environ.get("GLANCES_CONFIG_FILE", "../../conf/glances.conf") +print(f"Using config file: {GLANCES_CONFIG_FILE}") + +config = Config(RepositoryIni(GLANCES_CONFIG_FILE)) + +print(config.get('refresh', cast=int)) + +# 👉 Python-decouple does not support multiple sections in .ini files natively... diff --git a/tests-data/issues/issue3193-dynaconf.py b/tests-data/issues/issue3193-dynaconf.py new file mode 100644 index 00000000..3b903f11 --- /dev/null +++ b/tests-data/issues/issue3193-dynaconf.py @@ -0,0 +1,23 @@ +# Test Dynaconf +# https://www.dynaconf.com/ + +import os + +from dynaconf import Dynaconf, Validator + +GLANCES_CONFIG_FILE = os.environ.get("GLANCES_CONFIG_FILE", "../../conf/glances.conf") +print(f"Using config file: {GLANCES_CONFIG_FILE}") + +settings = Dynaconf(settings_files=[GLANCES_CONFIG_FILE]) + +# Cast and validate settings +settings.validators.register(Validator("global.refresh", cast=int, gte=1)) +settings.validators.validate() + + +# print(settings.global.refresh) <== global is a Python keyword so error +# read as a string from ini file +assert settings.get('global').get('refresh') == 2 +assert settings.GLOBAL.refresh == 2 +assert settings['global']['refresh'] == 2 +assert settings['global.refresh'] == 2