@@ -615,9 +615,6 @@ def has_invalidated(sender) -> None: ...
615615 @event
616616 def has_initialized (sender ) -> None : ...
617617
618- @event
619- def has_imports_changed (sender ) -> None : ...
620-
621618 @event
622619 def has_analysed (sender ) -> None : ...
623620
@@ -634,9 +631,6 @@ def search_order(self) -> Tuple[str, ...]:
634631
635632 def imports_changed (self , sender : Any , uri : DocumentUri ) -> None :
636633 # TODO: optimise this by checking our imports
637- if self .document is not None :
638- self .document .set_data (Namespace .DataEntry , None )
639-
640634 self .invalidate ()
641635
642636 @_logger .call
@@ -652,9 +646,6 @@ def libraries_changed(self, sender: Any, libraries: List[LibraryDoc]) -> None:
652646 break
653647
654648 if invalidate :
655- if self .document is not None :
656- self .document .set_data (Namespace .DataEntry , None )
657-
658649 self .invalidate ()
659650
660651 @_logger .call
@@ -670,9 +661,6 @@ def resources_changed(self, sender: Any, resources: List[LibraryDoc]) -> None:
670661 break
671662
672663 if invalidate :
673- if self .document is not None :
674- self .document .set_data (Namespace .DataEntry , None )
675-
676664 self .invalidate ()
677665
678666 @_logger .call
@@ -688,9 +676,6 @@ def variables_changed(self, sender: Any, variables: List[LibraryDoc]) -> None:
688676 break
689677
690678 if invalidate :
691- if self .document is not None :
692- self .document .set_data (Namespace .DataEntry , None )
693-
694679 self .invalidate ()
695680
696681 def is_initialized (self ) -> bool :
@@ -802,73 +787,29 @@ class DataEntry(NamedTuple):
802787
803788 @_logger .call (condition = lambda self : not self ._initialized )
804789 def ensure_initialized (self ) -> bool :
805- run_initialize = False
806- imports_changed = False
807-
808790 with self ._initialize_lock :
809791 if not self ._initialized :
810- if self ._in_initialize :
811- self ._logger .critical (lambda : f"already initialized { self .document } " )
812-
813- self ._in_initialize = True
814792
793+ succeed = False
815794 try :
816- self ._logger .debug (lambda : f"ensure_initialized -> initialize { self .document } " )
795+ self ._logger .debug (lambda : f"initialize { self .document } " )
817796
818797 imports = self .get_imports ()
819798
820- data_entry : Optional [Namespace .DataEntry ] = None
821- if self .document is not None :
822- # check or save several data in documents data cache,
823- # if imports are different, then the data is invalid
824- old_imports : Optional [List [Import ]] = self .document .get_data (Namespace )
825- if old_imports is None :
826- self .document .set_data (Namespace , imports )
827- elif old_imports != imports :
828- imports_changed = True
829-
830- self .document .set_data (Namespace , imports )
831- self .document .set_data (Namespace .DataEntry , None )
832- else :
833- data_entry = self .document .get_data (Namespace .DataEntry )
834-
835- if data_entry is not None :
836- self ._libraries = data_entry .libraries .copy ()
837- self ._resources = data_entry .resources .copy ()
838- self ._variables = data_entry .variables .copy ()
839- self ._diagnostics = data_entry .diagnostics .copy ()
840- self ._import_entries = data_entry .import_entries .copy ()
841- self ._imported_keywords = (
842- data_entry .imported_keywords .copy () if data_entry .imported_keywords else None
843- )
844- else :
845- variables = self .get_resolvable_variables ()
846-
847- self ._import_default_libraries (variables )
848- self ._import_imports (
849- imports ,
850- str (Path (self .source ).parent ),
851- top_level = True ,
852- variables = variables ,
853- )
799+ variables = self .get_resolvable_variables ()
854800
855- if self .document is not None :
856- self .document .set_data (
857- Namespace .DataEntry ,
858- Namespace .DataEntry (
859- self ._libraries .copy (),
860- self ._resources .copy (),
861- self ._variables .copy (),
862- self ._diagnostics .copy (),
863- self ._import_entries .copy (),
864- self ._imported_keywords .copy () if self ._imported_keywords else None ,
865- ),
866- )
801+ self ._import_default_libraries (variables )
802+ self ._import_imports (
803+ imports ,
804+ str (Path (self .source ).parent ),
805+ top_level = True ,
806+ variables = variables ,
807+ )
867808
868809 self ._reset_global_variables ()
869810
870811 self ._initialized = True
871- run_initialize = True
812+ succeed = True
872813
873814 except BaseException :
874815 if self .document is not None :
@@ -877,14 +818,9 @@ def ensure_initialized(self) -> bool:
877818
878819 self ._invalidate ()
879820 raise
880- finally :
881- self ._in_initialize = False
882821
883- if run_initialize :
884- self .has_initialized (self )
885-
886- if imports_changed :
887- self .has_imports_changed (self )
822+ if succeed :
823+ self .has_initialized (self )
888824
889825 return self ._initialized
890826
@@ -1069,7 +1005,7 @@ def _import(
10691005 value .args ,
10701006 value .alias ,
10711007 base_dir ,
1072- sentinel = value ,
1008+ sentinel = self ,
10731009 variables = variables ,
10741010 )
10751011 result .import_range = value .range
0 commit comments