def invoke(self): csInstances = settings.recursivelyLoadSettingsFiles( ".", self.args.patterns) messages = (("found", "listing") if self.args.list_setting_files else ("writing", "modifying")) for cs in csInstances: runLog.important("{} settings file {}".format( messages[0], cs.path)) for settingName in self.settingsProvidedOnCommandLine: if cs[settingName] != self.cs[settingName]: runLog.info(" changing `{}` from : {}\n" " {} to -> {}".format( settingName, cs[settingName], " " * (2 + len(settingName)), self.cs[settingName], )) cs[settingName] = self.cs[settingName] # if we are only listing setting files, don't write them; it is OK that we modified them in memory :-) if not self.args.skip_inspection: inspector = operators.getOperatorClassFromSettings( cs).inspector(cs) inspector.run() if not self.args.list_setting_files: cs.writeToYamlFile(cs.path) runLog.important("Finished {} {} settings files.".format( messages[1], len(csInstances)))
def _runInspectorOnSettings(cs): from armi import operators operator_class = operators.getOperatorClassFromSettings(cs) inspector = operator_class.inspector(cs) issues = [ query for query in inspector.queries if query and query.correction is not None and query._passed != True ] # pylint: disable=protected-access return issues
def checkInputs(self): """ Checks ARMI inputs for consistency. Returns ------- bool True if the inputs are all good, False otherwise """ with DirectoryChanger(self.cs.inputDirectory): operatorClass = operators.getOperatorClassFromSettings(self.cs) inspector = operatorClass.inspector(self.cs) inspectorIssues = [query for query in inspector.queries if query] if armi.CURRENT_MODE == armi.Mode.Interactive: # if interactive, ask user to deal with settings issues inspector.run() else: # when not interactive, just print out the info in the stdout queryData = [] for i, query in enumerate(inspectorIssues, start=1): queryData.append(( i, textwrap.fill(query.statement, width=50, break_long_words=False), textwrap.fill(query.question, width=50, break_long_words=False), query.autoResolved, )) if queryData: runLog.header("=========== Input Queries ===========") runLog.info( tabulate.tabulate( queryData, headers=[ "Number", "Statement", "Question", "Auto-resolved", ], tablefmt="armi", )) return not any(inspectorIssues)
def setUp(self): self.cs = settings.Settings() self.inspector = operators.getOperatorClassFromSettings(self.cs).inspector( self.cs ) self.inspector.queries = [] # clear out the auto-generated ones