From 9cf62efc9bccea55399e502d1e07c318d17dafed Mon Sep 17 00:00:00 2001 From: Diogo Silva <49190578+diogosilva30@users.noreply.github.com> Date: Fri, 1 Aug 2025 11:38:13 +0000 Subject: [PATCH 1/2] fix: fix incorrect matching env var strings with dollar sign --- pyconfigparser.py | 2 +- test_configparser.py | 29 ++++++++++++++++++++++++++++- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/pyconfigparser.py b/pyconfigparser.py index eb83556..a851a03 100644 --- a/pyconfigparser.py +++ b/pyconfigparser.py @@ -97,7 +97,7 @@ def _extract_env_variable_key(variable): return variable -_VARIABLE_PATTERN = r'\$([a-zA-Z][\w]+|\{[a-zA-Z][\w]+\})$' +_VARIABLE_PATTERN = r'^\$([a-zA-Z][\w]+|\{[a-zA-Z][\w]+\})$' _DEFAULT_CONFIG_FILES = ('config.json', 'config.yaml', 'config.yml') _ENTITY_NAME_PATTERN = r'^[a-zA-Z][\w]+$' _SUPPORTED_EXTENSIONS = { diff --git a/test_configparser.py b/test_configparser.py index 8530ef1..2817ca5 100644 --- a/test_configparser.py +++ b/test_configparser.py @@ -1,4 +1,4 @@ -from pyconfigparser import ConfigParser, ConfigError, ConfigFileNotFoundError +from pyconfigparser import ConfigParser, ConfigError, ConfigFileNotFoundError,_is_variable from config.schemas import SIMPLE_SCHEMA_CONFIG, UNSUPPORTED_OBJECT_KEYS_SCHEMA import unittest import os @@ -92,6 +92,33 @@ def assign_a_bad_type_ignore_unsetted_env_vars(): self.assertIs(configparser.ignore_unset_env_vars, True) self.assertIsInstance(configparser.ignore_unset_env_vars, bool) + def test_variable_pattern_matching(self) -> None: + """Test the regex pattern for environment variable matching.""" + + valid_env_vars = [ + "$FOO", + "${FOO}", + "$My_Var123" + ] + + invalid_env_vars = [ + "FOO", # no $ + "$", # missing name + "${}", # empty braces + "$1VAR", # starts with number + "${1VAR}", # starts with number in braces + "foo$VAR", # not at start + " Date: Fri, 1 Aug 2025 11:54:13 +0000 Subject: [PATCH 2/2] fix: fix flake8 error --- test_configparser.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test_configparser.py b/test_configparser.py index 2817ca5..fd41ff5 100644 --- a/test_configparser.py +++ b/test_configparser.py @@ -1,4 +1,4 @@ -from pyconfigparser import ConfigParser, ConfigError, ConfigFileNotFoundError,_is_variable +from pyconfigparser import ConfigParser, ConfigError, ConfigFileNotFoundError, _is_variable from config.schemas import SIMPLE_SCHEMA_CONFIG, UNSUPPORTED_OBJECT_KEYS_SCHEMA import unittest import os