def set_default_command(parser, func): """ Replacement for :meth:`ArgParser.set_default_command`. It does add the parser's arg variable for the unknown args as suppressed argument to the func """ def _get_option_from_var(var): return '--{0}'.format(var.replace('_', '-')) unknown_args_var = getattr(parser, 'unknown_args_varname', None) if unknown_args_var is not None: unknown_args_suppress_dict = \ {'help': argparse.SUPPRESS, 'option_strings': (_get_option_from_var(unknown_args_var),)} # prepare for checking whether unknown_args is in func signature inferred_args = list(argh.assembling._get_args_from_signature(func)) dests = OrderedDict() for argspec in inferred_args: dest = argh.assembling._get_parser_param_kwargs(parser, argspec)['dest'] dests[dest] = argspec if argh.assembling._get_dest(parser, unknown_args_suppress_dict) in dests: declared_args = getattr(func, ATTR_ARGS, []) declared_args.insert(0, unknown_args_suppress_dict) setattr(func, ATTR_ARGS, declared_args) argh.set_default_command(parser, func)
def test_set_default_command(): def func(): pass setattr(func, argh.constants.ATTR_ARGS, ( dict(option_strings=('foo', ), nargs='+', choices=[1, 2], help='me'), dict(option_strings=( '-b', '--bar', ), default=False), )) parser = argh.ArghParser() parser.add_argument = mock.MagicMock() parser.set_defaults = mock.MagicMock() argh.set_default_command(parser, func) assert parser.add_argument.mock_calls == [ mock.call('foo', nargs='+', choices=[1, 2], help='me', type=int), mock.call('-b', '--bar', default=False, action='store_true', help=argh.constants.DEFAULT_ARGUMENT_TEMPLATE) ] assert parser.set_defaults.mock_calls == [mock.call(function=func)]
def test_set_default_command(): def func(): pass setattr(func, argh.constants.ATTR_ARGS, ( dict(option_strings=('foo',), nargs='+', choices=[1,2], help='me'), dict(option_strings=('-b', '--bar',), default=False), )) parser = argh.ArghParser() parser.add_argument = mock.MagicMock() parser.set_defaults = mock.MagicMock() argh.set_default_command(parser, func) assert parser.add_argument.mock_calls == [ mock.call('foo', nargs='+', choices=[1,2], help='me', type=int), mock.call('-b', '--bar', default=False, action='store_true', help=argh.constants.DEFAULT_ARGUMENT_TEMPLATE) ] assert parser.set_defaults.mock_calls == [ mock.call(function=func) ]
def test_set_default_command_docstring(): def func(): "docstring" pass parser = argh.ArghParser() argh.set_default_command(parser, func) assert parser.description == 'docstring'
def test_set_default_command_varargs(): def func(*file_paths): yield ', '.join(file_paths) parser = argh.ArghParser() parser.add_argument = mock.MagicMock() argh.set_default_command(parser, func) assert parser.add_argument.mock_calls == [ mock.call('file_paths', nargs='*'), ]
def test_set_default_command_varargs(): def func(*file_paths): yield ', '.join(file_paths) parser = argh.ArghParser() parser.add_argument = mock.MagicMock() argh.set_default_command(parser, func) assert parser.add_argument.mock_calls == [ mock.call('file_paths', nargs='*', help=argh.constants.DEFAULT_ARGUMENT_TEMPLATE), ]
def test_set_default_command_kwargs(): @argh.arg('foo') @argh.arg('--bar') def func(x, **kwargs): pass parser = argh.ArghParser() parser.add_argument = mock.MagicMock() argh.set_default_command(parser, func) assert parser.add_argument.mock_calls == [ mock.call('x'), mock.call('foo'), mock.call('--bar'), ]
def test_set_default_command_kwargs(): @argh.arg('foo') @argh.arg('--bar') def func(x, **kwargs): pass parser = argh.ArghParser() parser.add_argument = mock.MagicMock() argh.set_default_command(parser, func) assert parser.add_argument.mock_calls == [ mock.call('x', help=argh.constants.DEFAULT_ARGUMENT_TEMPLATE), mock.call('foo', help=argh.constants.DEFAULT_ARGUMENT_TEMPLATE), mock.call('--bar', help=argh.constants.DEFAULT_ARGUMENT_TEMPLATE), ]
def main(): epilog = """The 'instance' argument can be one or multiple specifiers separated by commas. valid specifiers: Tag Name (or altName): tt-api-stage Instance ID: i-1a2b3c4d5e Private IP: 12.34.567.89 Private DNS: domU-12-45-56-AB-CD-EF Wildcard on tag Name: tt-api-*""" parser = argh.ArghParser( epilog=epilog, formatter_class=argparse.RawDescriptionHelpFormatter, ) argh.set_default_command(parser, connect) argh.dispatch(parser, completion=False)
def main(root_pkg, argv=None): """Invokes module functions in :mod:`pykern.pkcli` Looks in ``<root_pkg>.pkcli`` for the ``argv[1]`` module. It then invokes the ``argv[2]`` method of that module. Args: root_pkg (str): top level package name argv (list of str): Defaults to `sys.argv`. Only used for testing. Returns: int: 0 if ok. 1 if error (missing command, etc.) """ pkconfig.append_load_path(root_pkg) if not argv: argv = list(sys.argv) prog = os.path.basename(argv.pop(0)) if _is_help(argv): return _list_all(root_pkg, prog) module_name = argv.pop(0) cli = _module(root_pkg, module_name) if not cli: return 1 prog = prog + ' ' + module_name parser = argparse.ArgumentParser( prog=prog, formatter_class=argh.PARSER_FORMATTER) cmds = _commands(cli) dc = _default_command(cmds, argv) if dc: argh.set_default_command(parser, dc) else: argh.add_commands(parser, cmds) if len(argv) < 1: # Python 3: parser doesn't exit if not enough commands parser.error('too few arguments') if argv[0][0] != '-': argv[0] = _module_to_cmd(argv[0]) from pykern.pkdebug import pkdp try: res = argh.dispatch(parser, argv=argv) except CommandError as e: sys.stderr.write('error: {}\n'.format(e)) return 1 return 0
def main(root_pkg, argv=None): """Invokes module functions in :mod:`pykern.pykern_cli` Looks in ``<root_pkg>.pykern_cli`` for the ``argv[1]`` module. It then invokes the ``argv[2]`` method of that module. Args: root_pkg (str): top level package name argv (list of str): Defaults to `sys.argv`. Only used for testing. Returns: int: 0 if ok. 1 if error (missing command, etc.) """ pkconfig.append_load_path(root_pkg) if not argv: argv = list(sys.argv) prog = os.path.basename(argv.pop(0)) if _is_help(argv): return _list_all(root_pkg, prog) module_name = argv.pop(0) cli = _module(root_pkg, module_name) if not cli: return 1 prog = prog + ' ' + module_name parser = argparse.ArgumentParser( prog=prog, formatter_class=argh.PARSER_FORMATTER) cmds = _commands(cli) dc = _default_command(cmds, argv) if dc: argh.set_default_command(parser, dc) else: argh.add_commands(parser, cmds) if len(argv) < 1: # Python 3: parser doesn't exit if not enough commands parser.error('too few arguments') if argv[0][0] != '-': argv[0] = argv[0].replace('_', '-') argh.dispatch(parser, argv=argv) return 0
def main(): """Main application entrypoint""" parser = ArghParser(parents=[COMMON_PARSER]) set_default_command(parser, upload) completion.autocomplete(parser) # Peek CLI arguments and globally enable debugging args = parser.parse_args() if args.debug: logging.basicConfig( level=logging.DEBUG, format='%(asctime)s %(levelname)s: %(message)s' ) # Cut down suds logs logging.getLogger('suds').setLevel(logging.WARNING) if args.version: print_version() return parser.dispatch()
# make the print 'prediction = ', f(x) print '\n' # break for i in range(-6, 7): precent = 0.01 * i + 1 new_price = precent * buy_price sum_avg = 0 for key in dict.keys(): result = dict[key](new_price) if (i > 0): result = 1 - result sum_avg += result actual_avg = sum_avg / (len(dict)) print 'precent = ', i, "actual_avg = ", actual_avg, "new_price = ", new_price @arg('--data', required=True, help='CSV file with stock data') def run_stock_analysis(**kwargs): path = kwargs['data'] start_date = datetime.strptime("2014-11-20", "%Y-%m-%d") duration = 8 read_file(path, start_date, duration) if __name__ == '__main__': p = argh.ArghParser() argh.set_default_command(p, run_stock_analysis) p.dispatch()
Copyright 2017 The Regents of the University of Colorado Licensed under the Apache License, Version 2.0 (the "License") you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ''' ''' load.py Python Version: 3.6.3 ''' import sys print(sys.path) import argh from django_harmonization.HeartData import load_studies if __name__ == '__main__': # http://argh.readthedocs.io/en/latest/tutorial.html#assembling-commands parser = argh.ArghParser() argh.set_default_command(parser, load_studies.main) argh.dispatch(parser)
def main(): parser = argh.ArghParser(description="Beancount Tax Loss Harvester") argh.set_default_command(parser, tlh) argh.completion.autocomplete(parser) parser.dispatch()
def call_main(): p = argh.ArghParser() argh.set_default_command(p, main) argh.dispatch(p)
def main(): p = argh.ArghParser() argh.set_default_command(p, cmd) p.dispatch()
def l(): p = argh.ArghParser() argh.set_default_command(p, load) p.dispatch()
def main(): parser = argh.ArghParser(description="Beancount Asset Cash Drag") argh.set_default_command(parser, cashdrag) argh.completion.autocomplete(parser) parser.dispatch() return 0
def main(): parser = argparse.ArgumentParser( formatter_class=argh.PARSER_FORMATTER) argh.set_default_command(parser, rectangify) argh.dispatch(parser)
exit(1) t1 = time.time() time_taken = (t1 - t0) / 60 logging.info("TIME TAKEN: {0:.2f} minutes".format(time_taken)) send_email(url, email, file_loc, plugin, no_stdout, time_taken, format) def generate_output_name(file_format, plugins): """Generate a filename with the format sectool-report-PLUGINS-DATE.FILEFORMAT. """ date_frmt = "%y-%m-%d-%H%M" current_date = datetime.datetime.now().strftime(date_frmt) return OUTPUT_FILE.format('{0}{1}'.join(plugins), current_date, file_format) def send_email(url, e_mail, file_loc, plugin, no_stdout, time_taken, output_format): """Send an e-mail with a report. """ email_obj = Email(target_url=url, users_email_address=e_mail, input_file=file_loc, plugin_name=plugin, show_std_out=not no_stdout, duration=time_taken) email_obj.trigger_email_alert(output_format) if __name__ == '__main__': parser = ArgumentParser() set_default_command(parser, sectool) dispatch(parser)
def main(): parser = argh.ArghParser() argh.set_default_command(parser, listHooks) parser.dispatch()
def d(): p = argh.ArghParser() argh.set_default_command(p, dump) p.dispatch()
count = get_study_count_in_range(conn, extract_study_id, mapping['from_table'], mapping['from_column'], personObj, bottom, top) print(" ascending {} {}-{}:{:4d} {:4.2f}%".format(f_row[14], bottom, top, count, count / total * 100)) bottom=top elif (f_row[1] == 'ranges_to_rank_desc'): # DESCENDING if (f_row[13] is not None) : bottom=f_row[13] else : bottom=0 count = get_study_count_in_range(conn, extract_study_id, mapping['from_table'], mapping['from_column'], personObj, bottom, top) print(" descending {} {}-{}:{:4d} {:4.2f}%".format(f_row[14], bottom, top, count, count / total * 100)) top=bottom else: print(" {}".format(f_row[1])) def main(db_name, user_name, study_name, extract_study_id) : conn = psycopg2.connect(database=db_name, user=user_name) conn.autocommit=True; (study_id, observation_range_start, observation_range_end, _, _) = get_study_details(conn, study_name) personObj = BasePerson.factory(study_id) mappings = StudyToOhdsiMapping.objects.filter(study_id=study_id) comparison_data = build_comparison(conn, study_id, personObj, mappings) conn.close() if __name__ == '__main__': parser = argh.ArghParser() argh.set_default_command(parser, main) argh.dispatch(parser)
# break for i in range(-6,7): precent = 0.01 * i +1 new_price = precent*buy_price sum_avg=0 for key in dict.keys(): result = dict[key](new_price) if (i> 0): result = 1- result sum_avg+=result actual_avg = sum_avg/(len(dict)) print 'precent = ', i, "actual_avg = ", actual_avg, "new_price = ",new_price @arg('--data', required = True, help='CSV file with stock data') def run_stock_analysis(**kwargs): path = kwargs['data'] start_date = datetime.strptime("2014-11-20", "%Y-%m-%d") duration = 8 read_file(path,start_date,duration) if __name__ == '__main__': p = argh.ArghParser() argh.set_default_command(p, run_stock_analysis) p.dispatch()
''' Copyright 2017 The Regents of the University of Colorado Licensed under the Apache License, Version 2.0 (the "License") you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ''' ''' extract.py <db name> <username> <study_name> <extraction_id> - study name from the study table, indicating the input study - extraction id referring to a set of rows in categorization_function_metadata sharing the as-yet to be renamed study_id column Python Version: 3.6.3 ''' import argh from HeartData import extract if __name__ == '__main__': parser = argh.ArghParser() argh.set_default_command(parser, extract.main) argh.dispatch(parser)
def main(): parser = argparse.ArgumentParser() argh.set_default_command(parser, slurp) argh.dispatch(parser)
#!/usr/bin/env python3 ''' Copyright 2017 The Regents of the University of Colorado Licensed under the Apache License, Version 2.0 (the "License") you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ''' ''' calculate.py <db_name> <user_name> <study_name> ''' import argh from HeartData import calculate if __name__ == '__main__': parser = argh.ArghParser() argh.set_default_command(parser, calculate.main) argh.dispatch(parser)
def main(): parser = argh.ArghParser(description="Beancount Asset Allocation Analyzer") argh.set_default_command(parser, asset_allocation) argh.completion.autocomplete(parser) parser.dispatch() return 0
def main(): parser = argh.ArghParser(description="Beancount Miler: Rewards Miles") argh.set_default_command(parser, miler) argh.completion.autocomplete(parser) parser.dispatch()
#!/usr/bin/env python3 ''' Copyright 2017 The Regents of the University of Colorado Licensed under the Apache License, Version 2.0 (the "License") you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ''' ''' migrate.py db_name user_name study_name ''' from HeartData import migrate import argh if __name__ == '__main__': # http://argh.readthedocs.io/en/latest/tutorial.html#assembling-commands parser = argh.ArghParser() argh.set_default_command(parser, migrate.main) argh.dispatch(parser)