@@ -14,6 +14,7 @@ import sys
14
14
import threading
15
15
import types
16
16
import warnings
17
+ from configparser import ConfigParser as IniConfigParser
17
18
18
19
try :
19
20
import contextvars
38
39
else :
39
40
_is_coroutine_marker = True
40
41
41
- try :
42
- import ConfigParser as iniconfigparser
43
- except ImportError :
44
- import configparser as iniconfigparser
45
-
46
42
try :
47
43
import yaml
48
44
except ImportError :
@@ -99,7 +95,7 @@ config_env_marker_pattern = re.compile(
99
95
r " \$ {( ?P<name> [^ }^{: ]+ ) ( ?P<separator> :? ) ( ?P<default> . *? ) }" ,
100
96
)
101
97
102
- def _resolve_config_env_markers (config_content , envs_required = False ):
98
+ cdef str _resolve_config_env_markers(config_content: str , envs_required: bool ):
103
99
""" Replace environment variable markers with their values."""
104
100
findings = list (config_env_marker_pattern.finditer(config_content))
105
101
@@ -118,28 +114,19 @@ def _resolve_config_env_markers(config_content, envs_required=False):
118
114
return config_content
119
115
120
116
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()
133
122
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 :
137
124
config_string = _resolve_config_env_markers(
138
- config_file.read() ,
125
+ config_string ,
139
126
envs_required = envs_required,
140
127
)
141
- parser.readfp(StringIO.StringIO( config_string) )
142
- return parser
128
+ parser.read_string( config_string)
129
+ return parser
143
130
144
131
145
132
if yaml:
@@ -1713,7 +1700,7 @@ cdef class ConfigurationOption(Provider):
1713
1700
try :
1714
1701
parser = _parse_ini_file(
1715
1702
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(),
1717
1704
)
1718
1705
except IOError as exception:
1719
1706
if required is not False \
@@ -1772,10 +1759,11 @@ cdef class ConfigurationOption(Provider):
1772
1759
raise
1773
1760
return
1774
1761
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
+ )
1779
1767
config = yaml.load(config_content, loader)
1780
1768
1781
1769
current_config = self .__call__ ()
@@ -1810,10 +1798,11 @@ cdef class ConfigurationOption(Provider):
1810
1798
raise
1811
1799
return
1812
1800
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
+ )
1817
1806
config = json.loads(config_content)
1818
1807
1819
1808
current_config = self .__call__ ()
@@ -2266,7 +2255,7 @@ cdef class Configuration(Object):
2266
2255
try :
2267
2256
parser = _parse_ini_file(
2268
2257
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(),
2270
2259
)
2271
2260
except IOError as exception:
2272
2261
if required is not False \
@@ -2325,10 +2314,11 @@ cdef class Configuration(Object):
2325
2314
raise
2326
2315
return
2327
2316
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
+ )
2332
2322
config = yaml.load(config_content, loader)
2333
2323
2334
2324
current_config = self .__call__ ()
@@ -2363,10 +2353,11 @@ cdef class Configuration(Object):
2363
2353
raise
2364
2354
return
2365
2355
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
+ )
2370
2361
config = json.loads(config_content)
2371
2362
2372
2363
current_config = self .__call__ ()
0 commit comments