@@ -615,9 +615,6 @@ def has_invalidated(sender) -> None: ...
615
615
@event
616
616
def has_initialized (sender ) -> None : ...
617
617
618
- @event
619
- def has_imports_changed (sender ) -> None : ...
620
-
621
618
@event
622
619
def has_analysed (sender ) -> None : ...
623
620
@@ -634,9 +631,6 @@ def search_order(self) -> Tuple[str, ...]:
634
631
635
632
def imports_changed (self , sender : Any , uri : DocumentUri ) -> None :
636
633
# TODO: optimise this by checking our imports
637
- if self .document is not None :
638
- self .document .set_data (Namespace .DataEntry , None )
639
-
640
634
self .invalidate ()
641
635
642
636
@_logger .call
@@ -652,9 +646,6 @@ def libraries_changed(self, sender: Any, libraries: List[LibraryDoc]) -> None:
652
646
break
653
647
654
648
if invalidate :
655
- if self .document is not None :
656
- self .document .set_data (Namespace .DataEntry , None )
657
-
658
649
self .invalidate ()
659
650
660
651
@_logger .call
@@ -670,9 +661,6 @@ def resources_changed(self, sender: Any, resources: List[LibraryDoc]) -> None:
670
661
break
671
662
672
663
if invalidate :
673
- if self .document is not None :
674
- self .document .set_data (Namespace .DataEntry , None )
675
-
676
664
self .invalidate ()
677
665
678
666
@_logger .call
@@ -688,9 +676,6 @@ def variables_changed(self, sender: Any, variables: List[LibraryDoc]) -> None:
688
676
break
689
677
690
678
if invalidate :
691
- if self .document is not None :
692
- self .document .set_data (Namespace .DataEntry , None )
693
-
694
679
self .invalidate ()
695
680
696
681
def is_initialized (self ) -> bool :
@@ -802,73 +787,29 @@ class DataEntry(NamedTuple):
802
787
803
788
@_logger .call (condition = lambda self : not self ._initialized )
804
789
def ensure_initialized (self ) -> bool :
805
- run_initialize = False
806
- imports_changed = False
807
-
808
790
with self ._initialize_lock :
809
791
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
814
792
793
+ succeed = False
815
794
try :
816
- self ._logger .debug (lambda : f"ensure_initialized -> initialize { self .document } " )
795
+ self ._logger .debug (lambda : f"initialize { self .document } " )
817
796
818
797
imports = self .get_imports ()
819
798
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 ()
854
800
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
+ )
867
808
868
809
self ._reset_global_variables ()
869
810
870
811
self ._initialized = True
871
- run_initialize = True
812
+ succeed = True
872
813
873
814
except BaseException :
874
815
if self .document is not None :
@@ -877,14 +818,9 @@ def ensure_initialized(self) -> bool:
877
818
878
819
self ._invalidate ()
879
820
raise
880
- finally :
881
- self ._in_initialize = False
882
821
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 )
888
824
889
825
return self ._initialized
890
826
@@ -1069,7 +1005,7 @@ def _import(
1069
1005
value .args ,
1070
1006
value .alias ,
1071
1007
base_dir ,
1072
- sentinel = value ,
1008
+ sentinel = self ,
1073
1009
variables = variables ,
1074
1010
)
1075
1011
result .import_range = value .range
0 commit comments