Skip to content

Commit 37ce37b

Browse files
authored
Merge pull request #11 from mudpi/feature
Get latest changes as per 03/26/2021
2 parents 46f248e + 03a4178 commit 37ce37b

3 files changed

Lines changed: 30 additions & 14 deletions

File tree

mudpi/importer.py

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff 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]

mudpi/managers/core_manager.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff 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):

mudpi/managers/state_manager.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff 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

115125
class State():
116126
"""

0 commit comments

Comments
 (0)