11from .common import CONTEXT_INTRUCTION , TARGET_INSTRUCTION , wrap_content
2+ from .logs import logger
23
34from pydantic import BaseModel , Field , computed_field , field_validator
45from typing import Any , Dict , List , Optional , Literal , Union
@@ -663,8 +664,9 @@ def _render_class_contents(self, class_def: 'ClassDefinition', prefix: str,
663664
664665 def get (self , unique_id :Union [str , List [str ]], degree :int = 1 , as_string :bool = False , as_list_str :bool = False , preloaded_files :Optional [Dict [str , str ]]= None )-> Union [CodeContextStructure , str , List [str ]]:
665666 if not self ._cached_elements :
667+ logger .debug ("Building cached elements for the first time" )
666668 self ._build_cached_elements ()
667-
669+
668670 if isinstance (unique_id , str ):
669671 unique_id = [unique_id ]
670672
@@ -675,6 +677,8 @@ def get(self, unique_id :Union[str, List[str]], degree :int=1, as_string :bool=F
675677
676678 while True :
677679 new_references_ids = []
680+ logger .debug (f"Current degree level: { degree } , processing { len (references_ids )} references" )
681+
678682 for reference in references_ids :
679683 element = self ._cached_elements .get (reference )
680684 if (
@@ -684,34 +688,49 @@ def get(self, unique_id :Union[str, List[str]], degree :int=1, as_string :bool=F
684688 ):
685689 retrieved_elements .append (element )
686690 retrieved_ids .append (element .unique_id )
691+ logger .debug (f"Added element: { element .unique_id } ({ element .__class__ .__name__ } )" )
687692
688693 if hasattr (element , "references" ) and degree > 0 :
689- new_references_ids .extend ([
690- _reference .unique_id for _reference in element .references if _reference .unique_id and _reference .unique_id not in references_ids
691- ])
694+ new_refs = [
695+ _reference .unique_id for _reference in element .references
696+ if _reference .unique_id and _reference .unique_id not in references_ids
697+ ]
698+ new_references_ids .extend (new_refs )
699+ if new_refs :
700+ logger .debug (f"Found { len (new_refs )} new references from { element .unique_id } " )
692701
693702 if degree == 0 :
703+ logger .debug ("Reached maximum degree depth" )
694704 break
695705
696706 references_ids = new_references_ids .copy ()
697707 first_swipe = False
698708 degree -= 1
699709
700- codeContext = CodeContextStructure .from_list_of_elements (retrieved_elements , requested_element_index = [i for i in range (len (unique_id )- len (preloaded_files or []))], preloaded_files = preloaded_files )
710+ logger .info (f"Retrieved { len (retrieved_elements )} total elements" )
711+
712+ codeContext = CodeContextStructure .from_list_of_elements (
713+ retrieved_elements ,
714+ requested_element_index = [i for i in range (len (unique_id )- len (preloaded_files or []))],
715+ preloaded_files = preloaded_files
716+ )
701717 codeContext ._cached_elements = self ._cached_elements
702718
703719 if as_string :
704720 context = codeContext .as_list_str ()
705721 if context [0 ]:
706722 context .insert (0 , [CONTEXT_INTRUCTION ])
707723 context .insert (- 1 , [TARGET_INSTRUCTION ])
708-
724+ logger . debug ( f"Returning as string with { len ( context ) } sections" )
709725 return "\n \n " .join (sum (context , []))
710-
726+
711727 elif as_list_str :
712- return sum (codeContext .as_list_str (), [])
713-
728+ flat_list = sum (codeContext .as_list_str (), [])
729+ logger .debug (f"Returning as list with { len (flat_list )} items" )
730+ return flat_list
731+
714732 else :
733+ logger .debug ("Returning raw CodeContextStructure" )
715734 return codeContext
716735
717736 def serialize_cache_elements (self , indent :int = 4 )-> str :
0 commit comments