コード例 #1
0
 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)))
コード例 #2
0
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
コード例 #3
0
ファイル: case.py プロジェクト: bakta5/armi
    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)
コード例 #4
0
ファイル: test_inspectors.py プロジェクト: ntouran/armi
 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