@@ -46,12 +46,13 @@ def with_warn_for_invalid_lines(mappings):
4646
4747class DotEnv ():
4848
49- def __init__ (self , dotenv_path , verbose = False , encoding = None ):
50- # type: (Union[Text, _PathLike, _StringIO], bool, Union[None, Text]) -> None
49+ def __init__ (self , dotenv_path , verbose = False , encoding = None , interpolate = True ):
50+ # type: (Union[Text, _PathLike, _StringIO], bool, Union[None, Text], bool ) -> None
5151 self .dotenv_path = dotenv_path # type: Union[Text,_PathLike, _StringIO]
5252 self ._dict = None # type: Optional[Dict[Text, Optional[Text]]]
5353 self .verbose = verbose # type: bool
5454 self .encoding = encoding # type: Union[None, Text]
55+ self .interpolate = interpolate # type: bool
5556
5657 @contextmanager
5758 def _get_stream (self ):
@@ -73,7 +74,7 @@ def dict(self):
7374 return self ._dict
7475
7576 values = OrderedDict (self .parse ())
76- self ._dict = resolve_nested_variables (values )
77+ self ._dict = resolve_nested_variables (values ) if self . interpolate else values
7778 return self ._dict
7879
7980 def parse (self ):
@@ -286,8 +287,8 @@ def _is_interactive():
286287 return ''
287288
288289
289- def load_dotenv (dotenv_path = None , stream = None , verbose = False , override = False , ** kwargs ):
290- # type: (Union[Text, _PathLike, None], Optional[_StringIO], bool, bool, Union[None, Text]) -> bool
290+ def load_dotenv (dotenv_path = None , stream = None , verbose = False , override = False , interpolate = True , ** kwargs ):
291+ # type: (Union[Text, _PathLike, None], Optional[_StringIO], bool, bool, bool, Union[None, Text]) -> bool
291292 """Parse a .env file and then load all the variables found as environment variables.
292293
293294 - *dotenv_path*: absolute or relative path to .env file.
@@ -297,10 +298,10 @@ def load_dotenv(dotenv_path=None, stream=None, verbose=False, override=False, **
297298 Defaults to `False`.
298299 """
299300 f = dotenv_path or stream or find_dotenv ()
300- return DotEnv (f , verbose = verbose , ** kwargs ).set_as_environment_variables (override = override )
301+ return DotEnv (f , verbose = verbose , interpolate = interpolate , ** kwargs ).set_as_environment_variables (override = override )
301302
302303
303- def dotenv_values (dotenv_path = None , stream = None , verbose = False , ** kwargs ):
304- # type: (Union[Text, _PathLike, None], Optional[_StringIO], bool, Union[None, Text]) -> Dict[Text, Optional[Text]]
304+ def dotenv_values (dotenv_path = None , stream = None , verbose = False , interpolate = True , ** kwargs ):
305+ # type: (Union[Text, _PathLike, None], Optional[_StringIO], bool, bool, Union[None, Text]) -> Dict[Text, Optional[Text]] # noqa: E501
305306 f = dotenv_path or stream or find_dotenv ()
306- return DotEnv (f , verbose = verbose , ** kwargs ).dict ()
307+ return DotEnv (f , verbose = verbose , interpolate = interpolate , ** kwargs ).dict ()
0 commit comments