19 from importlib.util
import spec_from_loader, module_from_spec
20 from importlib.machinery
import SourceFileLoader, ExtensionFileLoader
30 from base
import BaseCLI
31 from mp
import MarkovPasswordsCLI
32 from mmx
import ModelMatrixCLI
33 from evaluate
import CorpusEvaluator, ModelEvaluator
34 from importer
import import_markopy
38 except ModuleNotFoundError
as e:
40 if(os.path.exists(
"../../../Markopy/src/CLI/base.py")):
41 sys.path.insert(1,
'../../../Markopy/src/CLI/')
42 from base
import BaseCLI
43 from mp
import MarkovPasswordsCLI
44 from mmx
import ModelMatrixCLI
45 from evaluate
import CorpusEvaluator, ModelEvaluator
46 from importer
import import_markopy
53 from termcolor
import colored
54 from abc
import abstractmethod
58 @brief Top level model selector for Markopy CLI.
59 This class is used for injecting the -mt parameter to the CLI, and determining the model type depending on that.
60 @belongsto Python::Markopy
61 @extends Python::Markopy::BaseCLI
62 @extends Python::Markopy::ModelMatrixCLI
63 @extends Python::Markopy::MarkovPasswordsCLI
68 @brief default constructor
71 BaseCLI.__init__(self,add_help)
73 self.
parserparser.epilog = f
"""
74 {colored("Sample runs:", "yellow")}
75 {__file__.split("/")[-1]} -mt MP generate trained.mdl -n 500 -w output.txt
76 Import trained.mdl, and generate 500 lines to output.txt
78 {__file__.split("/")[-1]} -mt MMX generate trained.mdl -n 500 -w output.txt
79 Import trained.mdl, and generate 500 lines to output.txt
85 @brief add -mt/--model_type constructor
87 self.
parserparser.add_argument(
"-mt",
"--model_type", default=
"_MMX", help=
"Model type to use. Accepted values: MP, MMX")
88 self.
parserparser.add_argument(
"-h",
"--help", action=
"store_true", help=
"Model type to use. Accepted values: MP, MMX")
89 self.
parserparser.add_argument(
"-ev",
"--evaluate", help=
"Evaluate a models integrity")
90 self.
parserparser.add_argument(
"-evt",
"--evaluate_type", help=
"Evaluation type, model or corpus")
96 @brief overload help function to print submodel helps
100 if(self.
argsargsargs.model_type!=
"_MMX"):
101 if(self.
argsargsargs.model_type==
"MP"):
104 mp.parser.print_help()
105 elif(self.
argsargsargs.model_type==
"MMX"):
108 mp.parser.print_help()
110 print(colored(
"Model Mode selection choices:",
"green"))
112 print(colored(
"Following are applicable for -mt MP mode:",
"green"))
115 mp.parser.print_help()
116 print(colored(
"Following are applicable for -mt MMX mode:",
"green"))
119 mp.parser.print_help()
126 "! @brief overload parse function to parse for submodels"
134 if(self.
argsargsargs.model_type ==
"MP"):
136 elif(self.
argsargsargs.model_type ==
"MMX" or self.
argsargsargs.model_type ==
"_MMX"):
150 "! @brief failed to parse model type"
151 print(
"Unrecognized model type.")
155 "! @brief pass the process request to selected submodel"
159 "! @brief stub function to hack help requests"
164 if(
not self.args.evaluate_type):
165 if(filename.endswith(
".mdl")):
168 CorpusEvaluator(filename).
evaluate()
170 if(self.args.evaluate_type ==
"model"):
173 CorpusEvaluator(filename).
evaluate()
178 if __name__ ==
"__main__":
Base CLI class to handle user interactions
def init_post_arguments(self)
def parse_arguments(self)
Top level model selector for Markopy CLI.
def __init__(self, add_help=False)
default constructor
def help(self)
overload help function to print submodel helps
def init_post_arguments(self)
def add_arguments(self)
add -mt/–model_type constructor
def evaluate(self, str filename)
def process(self)
Process parameters for operation.
def init_post_arguments(sel)
Extension of Python.Markopy.Base.BaseCLI for Markov::API::MarkovPasswords.
Extension of Python.Markopy.Base.BaseCLI for Markov::API::ModelMatrix.
def init_post_arguments(self)
def import_markopy()
import and return markopy module