77from .log import init_logger
88from deeputil import Dummy
99
10+
1011class BaseScript (object ):
11- DESC = ' Base script abstraction'
12+ DESC = " Base script abstraction"
1213 METRIC_GROUPING_INTERVAL = 1
1314
1415 def __init__ (self , args = None ):
1516 # argparse parser obj
1617 self .parser = argparse .ArgumentParser (description = self .DESC )
1718 self .define_baseargs (self .parser )
1819
19- self .subcommands = self .parser .add_subparsers (title = ' commands' )
20- self .subcommands .dest = ' commands'
20+ self .subcommands = self .parser .add_subparsers (title = " commands" )
21+ self .subcommands .dest = " commands"
2122 self .subcommands .required = True
2223 self .define_subcommands (self .subcommands )
23- self .subcommand_run = self .subcommands .add_parser (' run' )
24+ self .subcommand_run = self .subcommands .add_parser (" run" )
2425 self .subcommand_run .set_defaults (func = self .run )
2526
2627 self .define_args (self .subcommand_run )
@@ -34,12 +35,12 @@ def __init__(self, args=None):
3435
3536 if self .args .debug :
3637 if self .args .log_level is None :
37- self .args .log_level = ' debug'
38+ self .args .log_level = " debug"
3839 if self .args .metric_grouping_interval is None :
3940 self .args .metric_grouping_interval = 0
4041
4142 if not self .args .log_level :
42- self .args .log_level = ' info'
43+ self .args .log_level = " info"
4344 self .args .metric_grouping_interval = self .METRIC_GROUPING_INTERVAL
4445
4546 if self .args .metric_grouping_interval is None :
@@ -52,22 +53,22 @@ def __init__(self, args=None):
5253 fpath = self .args .log_file ,
5354 pre_hooks = self .define_log_pre_format_hooks (),
5455 post_hooks = self .define_log_post_format_hooks (),
55- metric_grouping_interval = self .args .metric_grouping_interval
56+ metric_grouping_interval = self .args .metric_grouping_interval ,
5657 )
5758
5859 self ._flush_metrics_q = log ._force_flush_q
5960 self .log = log .bind (name = self .args .name )
6061
6162 self .stats = Dummy ()
6263
63- args = { n : getattr (self .args , n ) for n in vars (self .args ) }
64- args [' func' ] = self .args .func .__name__
64+ args = {n : getattr (self .args , n ) for n in vars (self .args )}
65+ args [" func" ] = self .args .func .__name__
6566 self .log .debug ("basescript init" , ** args )
6667
6768 def start (self ):
68- '''
69+ """
6970 Starts execution of the script
70- '''
71+ """
7172 # invoke the appropriate sub-command as requested from command-line
7273 try :
7374 self .args .func ()
@@ -88,7 +89,7 @@ def start(self):
8889
8990 @property
9091 def name (self ):
91- return '.' .join ([x for x in (sys .argv [0 ].split ('.' )[0 ], self .args .name ) if x ])
92+ return "." .join ([x for x in (sys .argv [0 ].split ("." )[0 ], self .args .name ) if x ])
9293
9394 def define_log_pre_format_hooks (self ):
9495 """
@@ -110,48 +111,67 @@ def define_log_post_format_hooks(self):
110111 return []
111112
112113 def define_subcommands (self , subcommands ):
113- '''
114+ """
114115 Define subcommands (as defined at https://docs.python.org/2/library/argparse.html#sub-commands)
115116
116117 eg: adding a sub-command called "blah" that invokes a function fn_blah
117118
118119 blah_command = subcommands.add_parser('blah')
119120 blah_command.set_defaults(func=fn_blah)
120- '''
121+ """
121122 pass
122123
123124 def define_baseargs (self , parser ):
124- '''
125+ """
125126 Define basic command-line arguments required by the script.
126127 @parser is a parser object created using the `argparse` module.
127128 returns: None
128- '''
129- parser .add_argument ('--name' , default = sys .argv [0 ],
130- help = 'Name to identify this instance' )
131- parser .add_argument ('--log-level' , default = None ,
132- help = 'Logging level as picked from the logging module' )
133- parser .add_argument ('--log-format' , default = None ,
129+ """
130+ parser .add_argument (
131+ "--name" , default = sys .argv [0 ], help = "Name to identify this instance"
132+ )
133+ parser .add_argument (
134+ "--log-level" ,
135+ default = None ,
136+ help = "Logging level as picked from the logging module" ,
137+ )
138+ parser .add_argument (
139+ "--log-format" ,
140+ default = None ,
134141 # TODO add more formats
135- choices = ("json" , "pretty" ,),
136- help = ("Force the format of the logs. By default, if the "
137- "command is from a terminal, print colorful logs. "
138- "Otherwise print json." ),
142+ choices = ("json" , "pretty" ),
143+ help = (
144+ "Force the format of the logs. By default, if the "
145+ "command is from a terminal, print colorful logs. "
146+ "Otherwise print json."
147+ ),
139148 )
140- parser .add_argument ('--log-file' , default = None ,
141- help = 'Writes logs to log file if specified, default: %(default)s' ,
149+ parser .add_argument (
150+ "--log-file" ,
151+ default = None ,
152+ help = "Writes logs to log file if specified, default: %(default)s" ,
142153 )
143- parser .add_argument ('--quiet' , default = False , action = "store_true" ,
144- help = 'if true, does not print logs to stderr, default: %(default)s' ,
154+ parser .add_argument (
155+ "--quiet" ,
156+ default = False ,
157+ action = "store_true" ,
158+ help = "if true, does not print logs to stderr, default: %(default)s" ,
145159 )
146- parser .add_argument ('--metric-grouping-interval' , default = None , type = int ,
147- help = 'To group metrics based on time interval ex:10 i.e;(10 sec)' ,
160+ parser .add_argument (
161+ "--metric-grouping-interval" ,
162+ default = None ,
163+ type = int ,
164+ help = "To group metrics based on time interval ex:10 i.e;(10 sec)" ,
148165 )
149- parser .add_argument ('--debug' , default = False , action = "store_true" ,
150- help = 'To run the code in debug mode' ,
166+ parser .add_argument (
167+ "--debug" ,
168+ default = False ,
169+ action = "store_true" ,
170+ help = "To run the code in debug mode" ,
151171 )
152172
153173 def define_args (self , parser ):
154- '''
174+ """
155175 Define script specific command-line arguments.
156176 @parser is a parser object created using the `argparse` module.
157177
@@ -160,12 +180,11 @@ def define_args(self, parser):
160180 module.
161181
162182 returns: None
163- '''
183+ """
164184 pass
165185
166186 def run (self ):
167- '''
187+ """
168188 Override this method to define logic for `run` sub-command
169- '''
189+ """
170190 pass
171-
0 commit comments