File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -740,23 +740,26 @@ def _install_extension_requirements(mudpi, extension):
740740 cache [extension .namespace ] = extension
741741 return cache [extension .namespace ]
742742
743+ requirement_cache = mudpi .cache .setdefault ('requirement_installed' , {})
743744 for requirement in extension .requirements :
744- if not utils .is_package_installed (requirement ):
745- Logger .log_formatted (
746- LOG_LEVEL ["info" ],
747- f'{ FONT_YELLOW } { extension .namespace .title ()} { FONT_RESET } requirements' ,
748- 'Installing' , 'notice'
749- )
750- Logger .log (
751- LOG_LEVEL ["debug" ],
752- f'Installing package { FONT_YELLOW } { requirement } { FONT_RESET } ' ,
753- )
754- if not utils .install_package (requirement ):
745+ if requirement not in requirement_cache :
746+ if not utils .is_package_installed (requirement ):
747+ Logger .log_formatted (
748+ LOG_LEVEL ["info" ],
749+ f'{ FONT_YELLOW } { extension .namespace .title ()} { FONT_RESET } requirements' ,
750+ 'Installing' , 'notice'
751+ )
755752 Logger .log (
756- LOG_LEVEL ["error " ],
757- f'Error installing < { extension . title () } > requirement: { FONT_YELLOW } { requirement } { FONT_RESET } '
753+ LOG_LEVEL ["debug " ],
754+ f'Installing package { FONT_YELLOW } { requirement } { FONT_RESET } ' ,
758755 )
759- return False
756+ if not utils .install_package (requirement ):
757+ Logger .log (
758+ LOG_LEVEL ["error" ],
759+ f'Error installing <{ extension .title ()} > requirement: { FONT_YELLOW } { requirement } { FONT_RESET } '
760+ )
761+ return False
762+ requirement_cache [requirement ] = True
760763 # extension.requirements_installed = True
761764 cache [extension .namespace ] = extension
762765 return cache [extension .namespace ]
Original file line number Diff line number Diff line change @@ -147,6 +147,9 @@ def load_all_extensions(self, config=None):
147147 # Import and setup the extensions
148148 self .load_extensions (extensions_to_load , config )
149149
150+ # Cache important data like requirements installed
151+ self .mudpi .states .cache ()
152+
150153 return self .mudpi .extensions .all ()
151154
152155 def load_extensions (self , extensions , config ):
Original file line number Diff line number Diff line change @@ -111,6 +111,16 @@ def restore_states(self):
111111 _state = State .from_json (data )
112112 self .states [key ] = _state
113113
114+ # Restore requirement cache
115+ _cache = self .redis .get ('requirement_installed' )
116+ if _cache :
117+ self .mudpi .cache ['requirement_installed' ] = json .loads (_cache )
118+
119+ def cache (self ):
120+ """ Cache some important states and data for MudPi """
121+ if self .mudpi .cache .get ('requirement_installed' ):
122+ self .redis .set ('requirement_installed' , json .dumps (self .mudpi .cache ['requirement_installed' ]))
123+
114124
115125class State ():
116126 """
You can’t perform that action at this time.
0 commit comments