Source code for oasislmf.pytools.eve.cli
#!/usr/bin/env python
import argparse
import logging
from oasislmf.pytools.eve.manager import DEFAULT_EVENTS_FILE
from . import logger, manager
[docs]
def validate_flags(args):
if args.process_number <= 0:
raise RuntimeError(f"ERROR: evepy process_number {args.process_number} is not valid.")
if args.total_processes <= 0:
raise RuntimeError(f"ERROR: evepy total_processes {args.total_processes} is not valid.")
if args.total_processes < args.process_number:
raise ValueError(f"ERROR: evepy process_number {args.process_number} cannot be larger than the total_processes {args.total_processes}")
[docs]
def main():
parser = argparse.ArgumentParser(description='Generate partitioned event IDs stream.')
parser.add_argument('process_number', type=int,
help='Process number to receive a partition of events. Processes are one-indexed.')
parser.add_argument('total_processes', type=int,
help='Total number of processes to distribute the events over')
parser.add_argument('-i', '--input_file', type=str, default=DEFAULT_EVENTS_FILE,
help=f'Input file containing the events binary (default: {DEFAULT_EVENTS_FILE})')
parser.add_argument('-o', '--output_file', type=str, default='-',
help='Path to output file, if present then save output stream into output file instead of stdout.')
parser.add_argument('-n', '--no_shuffle', action='store_true',
help='Disable shuffle. Events respect input ordering')
parser.add_argument('-r', '--randomise', action='store_true',
help='Randomise events using the Fisher-Yates shuffle. Events are output during shuffling.')
parser.add_argument('-R', '--randomise_builtin', action='store_true',
help='Randomise events using the builtin. Events are shuffled first and then output.')
parser.add_argument('-v', '--logging-level', type=int, default=30,
help='logging level (debug:10, info:20, warning:30, error:40, critical:50)')
args = parser.parse_args()
validate_flags(args)
kwargs = vars(args)
# Set up logging
ch = logging.StreamHandler()
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
ch.setFormatter(formatter)
logger.addHandler(ch)
logging_level = kwargs.pop('logging_level')
logger.setLevel(logging_level)
manager.main(**kwargs)
if __name__ == "__main__":
main()