Exemple #1
0
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)]
Exemple #3
0
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)
    ]
Exemple #4
0
def test_set_default_command_docstring():
    def func():
        "docstring"
        pass

    parser = argh.ArghParser()

    argh.set_default_command(parser, func)

    assert parser.description == 'docstring'
Exemple #5
0
def test_set_default_command_docstring():

    def func():
        "docstring"
        pass

    parser = argh.ArghParser()

    argh.set_default_command(parser, func)

    assert parser.description == 'docstring'
Exemple #6
0
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='*'),
    ]
Exemple #7
0
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),
    ]
Exemple #9
0
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),
    ]
Exemple #10
0
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),
    ]
Exemple #12
0
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)
Exemple #13
0
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'),
    ]
Exemple #14
0
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),
    ]
Exemple #15
0
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)
Exemple #16
0
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
Exemple #17
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
Exemple #18
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()
Exemple #19
0
                    # 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()
Exemple #20
0
   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)
Exemple #21
0
def main():
    parser = argh.ArghParser(description="Beancount Tax Loss Harvester")
    argh.set_default_command(parser, tlh)
    argh.completion.autocomplete(parser)
    parser.dispatch()
Exemple #22
0
def call_main():
    p = argh.ArghParser()
    argh.set_default_command(p, main)
    argh.dispatch(p)
Exemple #23
0
def main():

    p = argh.ArghParser()
    argh.set_default_command(p, cmd)
    p.dispatch()
Exemple #24
0
def l():
    p = argh.ArghParser()
    argh.set_default_command(p, load)
    p.dispatch()
Exemple #25
0
def main():
    parser = argh.ArghParser(description="Beancount Asset Cash Drag")
    argh.set_default_command(parser, cashdrag)
    argh.completion.autocomplete(parser)
    parser.dispatch()
    return 0
Exemple #26
0
def main():
    parser = argparse.ArgumentParser(
        formatter_class=argh.PARSER_FORMATTER)
    argh.set_default_command(parser, rectangify)
    argh.dispatch(parser)
Exemple #27
0
                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)
Exemple #28
0
def main():
    parser = argh.ArghParser()
    argh.set_default_command(parser, listHooks)
    parser.dispatch()
Exemple #29
0
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)
    
Exemple #33
0
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
Exemple #36
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)