@@ -14,6 +14,7 @@ import sys
1414import threading
1515import types
1616import warnings
17+ from configparser import ConfigParser as IniConfigParser
1718
1819try :
1920 import contextvars
3839 else :
3940 _is_coroutine_marker = True
4041
41- try :
42- import ConfigParser as iniconfigparser
43- except ImportError :
44- import configparser as iniconfigparser
45-
4642try :
4743 import yaml
4844except ImportError :
@@ -99,7 +95,7 @@ config_env_marker_pattern = re.compile(
9995 r " \$ {( ?P<name> [^ }^{: ]+ ) ( ?P<separator> :? ) ( ?P<default> . *? ) }" ,
10096)
10197
102- def _resolve_config_env_markers (config_content , envs_required = False ):
98+ cdef str _resolve_config_env_markers(config_content: str , envs_required: bool ):
10399 """ Replace environment variable markers with their values."""
104100 findings = list (config_env_marker_pattern.finditer(config_content))
105101
@@ -118,28 +114,19 @@ def _resolve_config_env_markers(config_content, envs_required=False):
118114 return config_content
119115
120116
121- if sys.version_info[0 ] == 3 :
122- def _parse_ini_file (filepath , envs_required = False ):
123- parser = iniconfigparser.ConfigParser()
124- with open (filepath) as config_file:
125- config_string = _resolve_config_env_markers(
126- config_file.read(),
127- envs_required = envs_required,
128- )
129- parser.read_string(config_string)
130- return parser
131- else :
132- import StringIO
117+ cdef object _parse_ini_file(filepath, envs_required: bool | None ):
118+ parser = IniConfigParser()
119+
120+ with open (filepath) as config_file:
121+ config_string = config_file.read()
133122
134- def _parse_ini_file (filepath , envs_required = False ):
135- parser = iniconfigparser.ConfigParser()
136- with open (filepath) as config_file:
123+ if envs_required is not None :
137124 config_string = _resolve_config_env_markers(
138- config_file.read() ,
125+ config_string ,
139126 envs_required = envs_required,
140127 )
141- parser.readfp(StringIO.StringIO( config_string) )
142- return parser
128+ parser.read_string( config_string)
129+ return parser
143130
144131
145132if yaml:
@@ -1713,7 +1700,7 @@ cdef class ConfigurationOption(Provider):
17131700 try :
17141701 parser = _parse_ini_file(
17151702 filepath,
1716- envs_required = envs_required if envs_required is not UNDEFINED else self ._is_strict_mode_enabled(),
1703+ envs_required if envs_required is not UNDEFINED else self ._is_strict_mode_enabled(),
17171704 )
17181705 except IOError as exception:
17191706 if required is not False \
@@ -1772,10 +1759,11 @@ cdef class ConfigurationOption(Provider):
17721759 raise
17731760 return
17741761
1775- config_content = _resolve_config_env_markers(
1776- config_content,
1777- envs_required = envs_required if envs_required is not UNDEFINED else self ._is_strict_mode_enabled(),
1778- )
1762+ if envs_required is not None :
1763+ config_content = _resolve_config_env_markers(
1764+ config_content,
1765+ envs_required if envs_required is not UNDEFINED else self ._is_strict_mode_enabled(),
1766+ )
17791767 config = yaml.load(config_content, loader)
17801768
17811769 current_config = self .__call__ ()
@@ -1810,10 +1798,11 @@ cdef class ConfigurationOption(Provider):
18101798 raise
18111799 return
18121800
1813- config_content = _resolve_config_env_markers(
1814- config_content,
1815- envs_required = envs_required if envs_required is not UNDEFINED else self ._is_strict_mode_enabled(),
1816- )
1801+ if envs_required is not None :
1802+ config_content = _resolve_config_env_markers(
1803+ config_content,
1804+ envs_required if envs_required is not UNDEFINED else self ._is_strict_mode_enabled(),
1805+ )
18171806 config = json.loads(config_content)
18181807
18191808 current_config = self .__call__ ()
@@ -2266,7 +2255,7 @@ cdef class Configuration(Object):
22662255 try :
22672256 parser = _parse_ini_file(
22682257 filepath,
2269- envs_required = envs_required if envs_required is not UNDEFINED else self ._is_strict_mode_enabled(),
2258+ envs_required if envs_required is not UNDEFINED else self ._is_strict_mode_enabled(),
22702259 )
22712260 except IOError as exception:
22722261 if required is not False \
@@ -2325,10 +2314,11 @@ cdef class Configuration(Object):
23252314 raise
23262315 return
23272316
2328- config_content = _resolve_config_env_markers(
2329- config_content,
2330- envs_required = envs_required if envs_required is not UNDEFINED else self ._is_strict_mode_enabled(),
2331- )
2317+ if envs_required is not None :
2318+ config_content = _resolve_config_env_markers(
2319+ config_content,
2320+ envs_required if envs_required is not UNDEFINED else self ._is_strict_mode_enabled(),
2321+ )
23322322 config = yaml.load(config_content, loader)
23332323
23342324 current_config = self .__call__ ()
@@ -2363,10 +2353,11 @@ cdef class Configuration(Object):
23632353 raise
23642354 return
23652355
2366- config_content = _resolve_config_env_markers(
2367- config_content,
2368- envs_required = envs_required if envs_required is not UNDEFINED else self ._is_strict_mode_enabled(),
2369- )
2356+ if envs_required is not None :
2357+ config_content = _resolve_config_env_markers(
2358+ config_content,
2359+ envs_required if envs_required is not UNDEFINED else self ._is_strict_mode_enabled(),
2360+ )
23702361 config = json.loads(config_content)
23712362
23722363 current_config = self .__call__ ()
0 commit comments