@@ -121,10 +121,8 @@ def record_nested_discovery(
121121 if not self ._enabled :
122122 return
123123
124- # Flatten the nested data
125124 flat_data = self ._flatten_nested_dict (nested_data )
126125
127- # Record each flat key
128126 timestamp = datetime .now ()
129127 for flat_key , value in flat_data .items ():
130128 config_value = ConfigValue (
@@ -157,7 +155,6 @@ def mark_selected(self, key: str, source_name: str) -> None:
157155 if not self ._enabled or key not in self ._discoveries :
158156 return
159157
160- # Build resolution history for this key
161158 entries : List [ResolutionEntry ] = []
162159 selected_value = None
163160
@@ -191,12 +188,10 @@ def mark_default_used(self, key: str, default_value: Any) -> None:
191188 if not self ._enabled :
192189 return
193190
194- # Create or update history to indicate default usage
195191 if key in self ._histories :
196192 self ._histories [key ].default_used = True
197193 self ._histories [key ].final_value = default_value
198194 else :
199- # No discoveries, only default
200195 self ._histories [key ] = ResolutionHistory (
201196 key = key , entries = [], final_value = default_value , default_used = True
202197 )
@@ -235,20 +230,14 @@ def finalize_with_result(self, final_config: Dict[str, Any]) -> None:
235230 if not self ._enabled :
236231 return
237232
238- # Flatten final config to identify which values were selected
239233 flat_final = self ._flatten_nested_dict (final_config )
240234
241- # For each flat key in final config, find which source provided it
242235 for flat_key , final_value in flat_final .items ():
243- # Check if this key has discoveries
244236 if flat_key not in self ._discoveries :
245237 continue
246238
247- # Find the entry with matching value (should be highest priority)
248239 discoveries = self ._discoveries [flat_key ]
249- for config_value , timestamp in reversed (
250- discoveries
251- ): # Check from highest to lowest
240+ for config_value , timestamp in reversed (discoveries ):
252241 if config_value .value == final_value :
253242 self .mark_selected (flat_key , config_value .source_name )
254243 break
@@ -276,7 +265,6 @@ def record_general_params_merged_to_connections(
276265
277266 timestamp = datetime .now ()
278267 for param_key , param_value in general_params .items ():
279- # Record for each connection
280268 for conn_name in connection_names :
281269 flat_key = f"connections.{ conn_name } .{ param_key } "
282270 config_value = ConfigValue (
@@ -301,10 +289,8 @@ def replicate_root_level_discoveries_to_connection(
301289 return
302290
303291 for param_key in param_keys :
304- # Check if we have discoveries for the root-level key
305292 if param_key in self ._discoveries :
306293 conn_key = f"connections.{ connection_name } .{ param_key } "
307- # Copy all discoveries from root to connection location
308294 for config_value , timestamp in self ._discoveries [param_key ]:
309295 self ._discoveries [conn_key ].append ((config_value , timestamp ))
310296
@@ -574,23 +560,19 @@ def _resolve_file_sources(self, key: Optional[str] = None) -> Dict[str, Any]:
574560
575561 for source in self ._get_sources_by_type (SourceType .FILE ):
576562 try :
577- source_data = source .discover (key ) # Already nested!
563+ source_data = source .discover (key )
578564
579- # Record discoveries for history tracking
580565 self ._history_tracker .record_nested_discovery (
581566 source_data , source .source_name
582567 )
583568
584- # For FILE sources: connection-level replacement
585569 if "connections" in source_data :
586570 if "connections" not in result :
587571 result ["connections" ] = {}
588572
589- # Replace entire connections (not merge)
590573 for conn_name , conn_data in source_data ["connections" ].items ():
591574 result ["connections" ][conn_name ] = conn_data
592575
593- # Merge other top-level keys
594576 for k , v in source_data .items ():
595577 if k != "connections" :
596578 result [k ] = v
@@ -617,11 +599,9 @@ def _merge_file_results(
617599 """
618600 all_values : Dict [str , ConfigValue ] = {}
619601
620- # Add all connection parameters
621602 for conn_params in file_connections .values ():
622603 all_values .update (conn_params )
623604
624- # Add flat values
625605 all_values .update (file_flat_values )
626606
627607 return all_values
@@ -655,58 +635,46 @@ def _apply_overlay_sources(
655635 try :
656636 source_data = source .discover (key )
657637
658- # Record discoveries for history tracking
659638 self ._history_tracker .record_nested_discovery (
660639 source_data , source .source_name
661640 )
662641
663- # Separate general connection params from other data
664642 general_params , other_data = extract_root_level_connection_params (
665643 source_data
666644 )
667645
668- # First, merge connection-specific data and internal params
669646 result = deep_merge (result , other_data )
670647
671- # Then, merge general params into all existing connections
672648 if general_params and "connections" in result and result ["connections" ]:
673649 connection_names = [
674650 name
675651 for name in result ["connections" ]
676652 if isinstance (result ["connections" ][name ], dict )
677653 ]
678654
679- # Record history for general params being merged into connections
680655 self ._history_tracker .record_general_params_merged_to_connections (
681656 general_params , connection_names , source .source_name
682657 )
683658
684- # Merge general params into existing connections
685659 result ["connections" ] = merge_params_into_connections (
686660 result ["connections" ], general_params
687661 )
688662 elif general_params :
689- # No connections exist yet, keep general params at root
690- # for default connection creation later
691663 result = deep_merge (result , general_params )
692664
693665 except Exception as e :
694666 log .warning ("Error from source %s: %s" , source .source_name , e )
695667
696- # Final cleanup: merge any remaining root-level general params into all connections
697- # This handles params from early sources that were added before connections existed
698668 if "connections" in result and result ["connections" ]:
699669 remaining_general_params , _ = extract_root_level_connection_params (result )
700670
701671 if remaining_general_params :
702- # Merge remaining params into connections (connection values take precedence)
703672 for conn_name in result ["connections" ]:
704673 if isinstance (result ["connections" ][conn_name ], dict ):
705674 result ["connections" ][conn_name ] = deep_merge (
706675 remaining_general_params , result ["connections" ][conn_name ]
707676 )
708677
709- # Remove general params from root since they're now in connections
710678 for key in remaining_general_params :
711679 if key in result :
712680 result .pop (key )
@@ -733,12 +701,10 @@ def _ensure_default_connection(self, config: Dict[str, Any]) -> Dict[str, Any]:
733701 """
734702 from snowflake .cli .api .config_ng .constants import INTERNAL_CLI_PARAMETERS
735703
736- # Check if connections already exist
737704 connections = config .get ("connections" , {})
738705 if connections :
739- return config # Connections exist, nothing to do
706+ return config
740707
741- # Identify general connection parameters (root-level, non-internal)
742708 general_params = {}
743709 for key , value in config .items ():
744710 if (
@@ -747,20 +713,16 @@ def _ensure_default_connection(self, config: Dict[str, Any]) -> Dict[str, Any]:
747713 ):
748714 general_params [key ] = value
749715
750- # If no general params, nothing to create
751716 if not general_params :
752717 return config
753718
754- # Create default connection with general params
755719 result = config .copy ()
756720 result ["connections" ] = {"default" : general_params .copy ()}
757721
758- # Record history for moved parameters
759722 self ._history_tracker .replicate_root_level_discoveries_to_connection (
760723 list (general_params .keys ()), "default"
761724 )
762725
763- # Remove general params from root level (they're now in default connection)
764726 for key in general_params :
765727 result .pop (key , None )
766728
@@ -798,16 +760,12 @@ def resolve(self, key: Optional[str] = None, default: Any = None) -> Dict[str, A
798760 Returns:
799761 Nested dictionary of resolved configuration
800762 """
801- # Phase A: FILE sources (connection-level replacement)
802763 result = self ._resolve_file_sources (key )
803764
804- # Phase B: OVERLAY sources (field-level overlay with deep merge)
805765 result = self ._apply_overlay_sources (result , key )
806766
807- # Phase C: Ensure default connection exists if general params present
808767 result = self ._ensure_default_connection (result )
809768
810- # Phase D: Finalize resolution history
811769 self ._finalize_resolution_history (result )
812770
813771 return result
@@ -882,7 +840,6 @@ def get_resolution_history(self, key: str) -> Optional[ResolutionHistory]:
882840 Returns:
883841 ResolutionHistory showing the full precedence chain
884842 """
885- # First, try exact match
886843 history = self ._history_tracker .get_history (key )
887844 if history :
888845 return history
0 commit comments