@@ -23,10 +23,27 @@ def normalize_connection_name(name: str) -> str:
2323 return s
2424
2525
26+ def _expand_env_vars (value : Any ) -> Any :
27+ """
28+ Recursively expand environment variables in strings, dicts, and lists.
29+
30+ Expands ${VAR_NAME} and $VAR_NAME patterns in strings.
31+ """
32+ if isinstance (value , str ):
33+ return os .path .expandvars (value )
34+ elif isinstance (value , dict ):
35+ return {k : _expand_env_vars (v ) for k , v in value .items ()}
36+ elif isinstance (value , list ):
37+ return [_expand_env_vars (item ) for item in value ]
38+ else :
39+ return value
40+
41+
2642def _load_connections_from_yaml (yaml_path : str ) -> dict [str , dict [str , Any ]]:
2743 """
2844 Load connection definitions from YAML file.
2945 Returns a dict mapping conn_id -> URL.create() parameters.
46+ Expands environment variables in all string values.
3047 """
3148 expanded_path = Path (yaml_path ).expanduser ()
3249 if not expanded_path .exists ():
@@ -35,7 +52,10 @@ def _load_connections_from_yaml(yaml_path: str) -> dict[str, dict[str, Any]]:
3552 try :
3653 with open (expanded_path , "r" ) as f :
3754 data = yaml .safe_load (f )
38- return data if isinstance (data , dict ) else {}
55+ if isinstance (data , dict ):
56+ # Expand environment variables in all values
57+ return _expand_env_vars (data )
58+ return {}
3959 except Exception :
4060 return {}
4161
0 commit comments