@@ -604,6 +604,8 @@ def explode_env_vars(self, field_name: str, field: FieldInfo, env_vars: Mapping[
604
604
Returns:
605
605
A dictionary contains extracted values from nested env values.
606
606
"""
607
+ is_dict = lenient_issubclass (get_origin (field .annotation ), dict )
608
+
607
609
prefixes = [
608
610
f'{ env_name } { self .env_nested_delimiter } ' for _ , env_name , _ in self ._extract_field_info (field , field_name )
609
611
]
@@ -624,11 +626,15 @@ def explode_env_vars(self, field_name: str, field: FieldInfo, env_vars: Mapping[
624
626
target_field = self .next_field (target_field , last_key )
625
627
626
628
# check if env_val maps to a complex field and if so, parse the env_val
627
- if target_field and env_val :
628
- is_complex , allow_json_failure = self ._field_is_complex (target_field )
629
+ if (target_field or is_dict ) and env_val :
630
+ if target_field :
631
+ is_complex , allow_json_failure = self ._field_is_complex (target_field )
632
+ else :
633
+ # nested field type is dict
634
+ is_complex , allow_json_failure = True , False
629
635
if is_complex :
630
636
try :
631
- env_val = self .decode_complex_value (last_key , target_field , env_val )
637
+ env_val = self .decode_complex_value (last_key , target_field , env_val ) # type: ignore
632
638
except ValueError as e :
633
639
if not allow_json_failure :
634
640
raise e
0 commit comments