def edit_sync_params(): puts(colored.green('Editing synchronization workload parameters...\n')) user_conf.num_consumers = prompt.query('Number of worker threads: ', default=str(user_conf.num_consumers), validators=[validators.IntegerValidator()]) user_conf.deep_sync_interval_seconds = prompt.query('Number of seconds to wait before next full scan: ', default=str(user_conf.deep_sync_interval_seconds), validators=[validators.IntegerValidator()]) puts() puts(colored.green('Workload parameters saved.'))
def modifySettings(settings): putSeparator() puts('Modify Settings:') with indent(4): invalidSettings = True while invalidSettings: settings['method'] = prompt.query( 'Output Method:', default=settings['method'], validators=[ validators.RegexValidator(regex=re.compile('[a-b]+')) ]) settings['min'] = prompt.query( 'Minimum X Value:', default="%f" % settings['min'], validators=[sab_validators.FloatValidator()]) settings['max'] = prompt.query( 'Max X Value:', default="%f" % settings['max'], validators=[sab_validators.FloatValidator()]) if settings['min'] > settings['max']: puts( colored.red( 'Minimum X value can not be larger than Maximum X value!' )) continue settings['formats'] = prompt.query( 'Comma Separated List of Output Formats(Formats: {}):'.format( ','.join(getValidFormats())), default=','.join(settings['formats']), validators=[ sab_validators.CommaSeparatedValidator( options=getValidFormats()) ]) settings['smooth'] = prompt.query( 'AirPLS Smoothing:', default=str(settings['smooth']), validators=[validators.IntegerValidator()]) settings['max_it'] = prompt.query( 'AirPLS Max Iterations:', default=str(settings['max_it']), validators=[validators.IntegerValidator()]) settings['porder'] = prompt.query( 'AirPLS POrder:', default=str(settings['porder']), validators=[validators.IntegerValidator()]) settings['prec'] = prompt.query( 'Data Output Decimal Precision:', default=str(settings['prec']), validators=[validators.IntegerValidator()]) invalidSettings = False
def prompt_drive_config(drive): if hasattr(drive, 'config'): drive_config_data = drive.config.data else: drive_config_data = drive_config.DriveConfig.DEFAULT_VALUES if drive_config_data['local_root'] is None or drive_config_data['local_root'] == '': drive_config_data['local_root'] = OS_USER_HOME + '/OneDrive/' + drive.drive_id puts(colored.green('You selected Drive "%s"...' % drive.drive_id)) puts() with indent(4, quote=' >'): puts('When specifying local root, pick a directory not used by or under any other Drive.') puts('When specifying HTTPS download / upload sizes, note that files larger than those sizes will be handled ' 'as chunks.') puts() while True: local_root = prompt.query('Which local directory do you want to sync with this Drive?', default=drive_config_data['local_root']) try: while local_root[-1] == '/': local_root = local_root[:-1] if not os.path.exists(local_root): puts(colored.yellow('Directory "%s" does not exist. Try creating it...' % local_root)) mkdir(local_root) puts(colored.green('Successfully created directory "%s".' % local_root)) elif os.path.isfile(local_root): raise ValueError('Path "%s" is a file.' % local_root) if os.path.isdir(local_root): drive_config_data['local_root'] = local_root break raise ValueError('Invalid path "%s"' % local_root) except Exception as ex: puts(colored.red('Error: ' + str(ex))) drive_config_data['max_get_size_bytes'] = prompt.query('Maximum size, in KB, for a single download request?', default=str(drive_config_data['max_get_size_bytes'] >> 10), validators=[validators.IntegerValidator()]) * 1024 drive_config_data['max_put_size_bytes'] = prompt.query('Maximum size, in KB, for a single upload request?', default=str(drive_config_data['max_put_size_bytes'] >> 10), validators=[validators.IntegerValidator()]) * 1024 try: while not prompt.yn('Do you have ignore list files specific to this Drive to add?', default='n'): ignore_file_path = prompt.query('Path to the ignore list file (hit [Ctrl+C] to skip): ', validators=[validators.FileValidator()]) drive_config_data['ignore_files'].add(ignore_file_path) puts(colored.green('Recorded ignore list file: "{}"' % ignore_file_path)) except KeyboardInterrupt: pass drive_conf = drive_config.DriveConfig.load(drive_config_data) drive.config = drive_conf drive_store.add_record(drive)
def dispatch_task(): puts('\n' + colored.blue('-' * 80) + '\n') puts( colored.green('Preference wizard supports the following tasks:\n', bold=True)) option_descriptions = [ 'Connect a new OneDrive Personal Account', # 0 'Connect a new OneDrive for Business Account', # 1 'View / Delete connected OneDrive accounts', # 2 'Add a remote Drive to sync', # 3 'View / Edit / Delete existing Drives', # 4 'Edit global ignore list files', # 5 'Edit HTTPS proxies', # 6 'Configure synchronization workload (resync interval, etc.)', # 7 'Exit wizard' # 8 ] for i in range(0, len(option_descriptions)): puts('[{}] {}'.format(i, option_descriptions[i])) puts() task_id = prompt.query('Please enter the task index and hit [ENTER]: ', validators=[ validators.IntegerValidator(), validators.OptionValidator( range(len(option_descriptions))) ]) tasks = [ add_personal_account, add_business_account, list_existing_accounts, add_new_drive, list_existing_drives, edit_default_ignore_list, edit_proxies, edit_sync_params, bye ] if task_id < len(option_descriptions) - 1: puts('\n' + colored.blue('-' * 80) + '\n') tasks[task_id]()
def _do_game(): game = Game( players=[Player(name=name) for name in _get_players()], max_rounds=int( prompt.query('How many rounds would you like to play?', default=str(Game.DEFAULT_ROUNDS_PER_GAME), validators=[validators.IntegerValidator()])), ) puts() puts(colored.green('Awesome.')) while not game.is_finished: game.begin_round() puts() _puts_beginning_of_round_header(game) _init_round(game.current_round) while not game.current_round.is_finished: _do_turn(game.current_round) _puts_end_of_round_summary(game) _declare_winner(game)
def _get_players(): num_players = prompt.query('How many players?', default='2', validators=[validators.IntegerValidator()]) return [ prompt.query('Player %s name:' % (i + 1), default='Player %s' % (i + 1)) for i in range(int(num_players)) ]
def __config(self): global portSelection configList = [{ 'selector': '1', 'prompt': 'Set Baud Rate' }, { 'selector': '2', 'prompt': 'Set Login Details' }, { 'selector': '3', 'prompt': 'Set AT Library' }, { 'selector': '4', 'prompt': 'Change Device' }, { 'selector': '5', 'prompt': 'About' }, { 'selector': '0', 'prompt': 'Back' }] config = int(prompt.options("Config:", configList)) if config == 1: baudRate = prompt.query("Baud rate:", validators=[validators.IntegerValidator()]) self.__modifyConfigFiles('BaudRate', baudRate) elif config == 2: print 'Under Construction...' os.environ["SIGFOX_USR"] = prompt.query("Username:"******"SIGFOX_PWD"] = getpass.getpass('Password:'******'Error' raw_input("Press Enter to continue...") self.__config()
def prompt_delete_account(account_list): while True: id_to_delete = prompt.query('Type the index of the account to delete: ', validators=[validators.IntegerValidator(), validators.OptionValidator(range(len(account_list)))]) account_to_delete = account_list[id_to_delete] if account_to_delete is None: puts(colored.red('Error: The account has been deleted.')) else: drive_store.delete_records_by_account(account_to_delete.profile.user_id, account_to_delete.TYPE) account_store.delete_account(account_to_delete) account_list[id_to_delete] = None puts(colored.green('Successfully deleted the account.'))
def prompt_delete_account(account_list): while True: id_to_delete = prompt.query( 'Type the index of the account to delete: ', validators=[ validators.IntegerValidator(), validators.OptionValidator(range(len(account_list))) ]) account_to_delete = account_list[id_to_delete] if account_to_delete is None: puts(colored.red('Error: The account has been deleted.')) else: account_store.delete_account(account_to_delete) account_list[id_to_delete] = None
def prompt_add_drive(drive_list): drive_count = 0 while len(drive_list) > drive_count: puts() id_to_add = prompt.query('Type the index of the Drive to add: ', validators=[validators.IntegerValidator(), validators.OptionValidator(range(len(drive_list)))]) drive_to_add = drive_list[id_to_add] if drive_to_add is None: puts(colored.red('Error: The Drive has been added.')) else: prompt_drive_config(drive_to_add) drive_list[id_to_add] = None drive_count += 1 puts(colored.green('Successfully added Drive.')) puts()
def setup_user_input(): """ Setup configuration and database loading script by querying information from user. """ print( "#### Please answer the following questions to setup the folder ####") log_folder = prompt.query('Logging folder (must exist):', default='.', validators=[validators.PathValidator()]) loader_file = prompt.query('Loader file name:', default='loader') config_file = prompt.query('Config file name:', default='local') config_class = prompt.query('Config class name:', default='LocalConfig') print("#### Database configuration setup ####") dialect = prompt.options('Marcotti-Events Database backend:', dialect_options) if dialect == 'sqlite': dbname = prompt.query('Database filename (must exist):', validators=[validators.FileValidator()]) dbuser = '' hostname = '' dbport = 0 else: dbname = prompt.query('Database name:') dbuser = prompt.query('Database user:'******'') puts( colored.red( 'Database password is not defined -- You must define it in the config file!' )) hostname = prompt.query('Database hostname:', default='localhost') dbport = prompt.query('Database path:', default=db_ports.get(dialect)) print("#### Database season setup ####") start_yr = prompt.query('Start season year', default='1990', validators=[validators.IntegerValidator()]) end_yr = prompt.query('End season year', default='2020', validators=[validators.IntegerValidator()]) print("#### Data file setup ####") supplier = prompt.query('Name of data supplier:') is_club_db = prompt.options('Is this a club database?', binary_options) spanish = prompt.options('Are country names in Spanish?', binary_options) csv_data_dir = prompt.query('Directory containing CSV data files:', default='.', validators=[validators.PathValidator()]) supplier_data_path = path_query( 'Relative path of Suppliers CSV data files:') club_data_path = path_query('Relative path of Clubs CSV data files:') comp_data_path = path_query( 'Relative path of Competitions CSV data files:') season_data_path = path_query('Relative path of Seasons CSV data files:') venue_data_path = path_query('Relative path of Venues CSV data files:') position_data_path = path_query( 'Relative path of Player Positions CSV data files:') player_data_path = path_query('Relative path of Players CSV data files:') manager_data_path = path_query('Relative path of Managers CSV data files:') referee_data_path = path_query('Relative path of Referees CSV data files:') league_match_data_path = path_query( 'Relative path of League Matches CSV data files:') group_match_data_path = path_query( 'Relative path of Group Matches CSV data files:') knockout_match_data_path = path_query( 'Relative path of Knockout Matches CSV data files:') goal_data_path = path_query('Relative path of Goals CSV data files:') penalty_data_path = path_query( 'Relative path of Penalties CSV data files:') bookable_data_path = path_query( 'Relative path of Bookables CSV data files:') substitution_data_path = path_query( 'Relative path of Substitutions CSV data files:') shootout_data_path = path_query( 'Relative path of Penalty Shootouts CSV data files:') player_stats_data_path = path_query( 'Relative path of Player Statistics CSV data files:') print("#### End setup questions ####") setup_dict = { 'loader_file': loader_file.lower(), 'config_file': config_file.lower(), 'config_class': config_class, 'supplier': supplier, 'dialect': dialect, 'dbname': dbname, 'dbuser': dbuser, 'dbhost': hostname, 'dbport': dbport, 'start_yr': start_yr, 'end_yr': end_yr, 'logging_dir': log_folder, 'log_file_path': os.path.join(log_folder, 'marcotti.log'), 'club_db': is_club_db, 'country_prefix': 'es' * (spanish is True), 'csv_data_dir': csv_data_dir, 'csv_data': { 'suppliers': supplier_data_path, 'competitions': comp_data_path, 'seasons': season_data_path, 'clubs': club_data_path, 'venues': venue_data_path, 'positions': position_data_path, 'players': player_data_path, 'managers': manager_data_path, 'referees': referee_data_path, 'league_matches': league_match_data_path, 'group_matches': group_match_data_path, 'knockout_matches': knockout_match_data_path, 'goals': goal_data_path, 'penalties': penalty_data_path, 'bookables': bookable_data_path, 'substitutions': substitution_data_path, 'shootouts': shootout_data_path, 'statistics': player_stats_data_path } } return setup_dict
def setup_user_input(): """ Setup configuration and database loading script by querying information from user. """ print( "#### Please answer the following questions to setup the folder ####") log_folder = prompt.query('Logging folder (must exist):', default='.', validators=[validators.PathValidator()]) loader_file = prompt.query('Loader file name:', default='loader') config_file = prompt.query('Config file name:', default='local') config_class = prompt.query('Config class name:', default='LocalConfig') print("#### Database configuration setup ####") dialect = prompt.options('Marcotti-Events Database backend:', dialect_options) if dialect == 'sqlite': dbname = prompt.query('Database filename (must exist):', validators=[validators.FileValidator()]) dbuser = '' hostname = '' dbport = 0 else: dbname = prompt.query('Database name:') dbuser = prompt.query('Database user:'******'') puts( colored.red( 'Database password is not defined -- You must define it in the config file!' )) hostname = prompt.query('Database hostname:', default='localhost') dbport = prompt.query('Database path:', default=db_ports.get(dialect)) print("#### Database season setup ####") start_yr = prompt.query('Start season year', default='1990', validators=[validators.IntegerValidator()]) end_yr = prompt.query('End season year', default='2020', validators=[validators.IntegerValidator()]) print("#### Data file setup ####") supplier = prompt.query('Name of data supplier:') is_club_db = prompt.options('Is this a club database?') spanish = prompt.options('Are country names in Spanish?') using_xml = prompt.options('Are XML files stored locally?', binary_options) if using_xml: xml_data_dir = prompt.query('Directory containing XML data files:', default='.', validators=[validators.PathValidator()]) xml_squads = path_query('Relative path of Squad XML data files:') xml_summaries = path_query( 'Relative path of Match Summary XML data files:') xml_events = path_query('Relative path of Match Event XML data files:') else: xml_data_dir = None xml_squads = None xml_summaries = None xml_events = None csv_data_dir = prompt.query('Directory containing CSV data files:', default='.', validators=[validators.PathValidator()]) supplier_data_path = path_query( 'Relative path of Suppliers CSV data files:') club_data_path = path_query('Relative path of Clubs CSV data files:') comp_data_path = path_query( 'Relative path of Competitions CSV data files:') season_data_path = path_query('Relative path of Seasons CSV data files:') venue_data_path = path_query('Relative path of Venues CSV data files:') player_data_path = path_query('Relative path of Players CSV data files:') manager_data_path = path_query('Relative path of Managers CSV data files:') referee_data_path = path_query('Relative path of Referees CSV data files:') summary_data_path = path_query( 'Relative path of Match Summary CSV data files:') event_data_path = path_query( 'Relative path of Match Event CSV data files:') print("#### End setup questions ####") setup_dict = { 'loader_file': loader_file.lower(), 'config_file': config_file.lower(), 'config_class': config_class, 'supplier': supplier, 'dialect': dialect, 'dbname': dbname, 'dbuser': dbuser, 'dbhost': hostname, 'dbport': dbport, 'start_yr': start_yr, 'end_yr': end_yr, 'logging_dir': log_folder, 'log_file_path': os.path.join(log_folder, 'marcotti.log'), 'club_db': is_club_db, 'country_prefix': 'es' * (spanish is True), 'xml_data_dir': xml_data_dir, 'xml_data': { 'squads': xml_squads, 'matches': xml_summaries, 'events': xml_events }, 'csv_data_dir': csv_data_dir, 'csv_data': { 'suppliers': supplier_data_path, 'competitions': comp_data_path, 'seasons': season_data_path, 'clubs': club_data_path, 'venues': venue_data_path, 'players': player_data_path, 'managers': manager_data_path, 'referees': referee_data_path, 'matches': summary_data_path, 'events': event_data_path } } return setup_dict
def setup_user_input(): """ Setup configuration and database loading script by querying information from user. :return: """ print "#### Please answer the following questions to setup the folder ####" log_folder = prompt.query('Logging folder (must exist):', default='.', validators=[validators.PathValidator()]) loader_file = prompt.query('Loader file name:', default='loader') config_file = prompt.query('Config file name:', default='local') config_class = prompt.query('Config class name:', default='LocalConfig') print "#### Database configuration setup ####" dialect = prompt.options('Marcotti-MLS Database backend:', dialect_options) if dialect == 'sqlite': dbname = prompt.query('Database filename (must exist):', validators=[validators.FileValidator()]) dbuser = '' hostname = '' dbport = 0 else: dbname = prompt.query('Database name:') dbuser = prompt.query('Database user:'******'') puts( colored.red( 'Database password is not defined -- You must define it in the config file!' )) hostname = prompt.query('Database hostname:', default='localhost') dbport = prompt.query('Database path:', default=db_ports.get(dialect)) print "#### Database season setup ####" start_yr = prompt.query('Start season year', default='1990', validators=[validators.IntegerValidator()]) end_yr = prompt.query('End season year', default='2020', validators=[validators.IntegerValidator()]) print "#### Data file setup ####" top_level_data_dir = prompt.query('Directory containing CSV data files:', default='.', validators=[validators.PathValidator()]) club_data_path = path_query('Relative path of Clubs data files:') comp_data_path = path_query('Relative path of Competitions data files:') comp_season_data_path = path_query( 'Relative path of CompetitionSeasons data files:') player_data_path = path_query('Relative path of Players data files:') acq_data_path = path_query( 'Relative path of Player Acquisitions data files:') salary_data_path = path_query('Relative path of Salaries data files:') partial_data_path = path_query( 'Relative path of Partial Tenure data files:') minutes_data_path = path_query( 'Relative path of Player Minutes data files:') field_stat_data_path = path_query( 'Relative path of Field Player Statistics data files:') gk_stat_data_path = path_query( 'Relative path of Goalkeeper Statistics data files:') points_data_path = path_query('Relative path of League Points data files:') print "#### End setup questions ####" setup_dict = { 'loader_file': loader_file.lower(), 'config_file': config_file.lower(), 'config_class': config_class, 'dialect': dialect, 'dbname': dbname, 'dbuser': dbuser, 'dbhost': hostname, 'dbport': dbport, 'start_yr': start_yr, 'end_yr': end_yr, 'logging_dir': log_folder, 'log_file_path': os.path.join(log_folder, 'marcotti.log'), 'data_dir': top_level_data_dir, 'data': { 'clubs': club_data_path, 'competitions': comp_data_path, 'comp_seasons': comp_season_data_path, 'players': player_data_path, 'acquisitions': acq_data_path, 'salaries': salary_data_path, 'partials': partial_data_path, 'minutes': minutes_data_path, 'field_stats': field_stat_data_path, 'gk_stats': gk_stat_data_path, 'points': points_data_path } } return setup_dict
def mainLoop(): cmd_status = 'status' cmd_randkill = 'randkill' cmd_randstart = 'randstart' cmd_deeprestart = 'deeprestart' cmd_randworkload = 'randworkload' cmd_exit = 'exit' cmd_start = 'start' cmd_kill = 'kill' cmd_strobetime = 'strobetime' init() while True: # cmds cmd_options = [ { 'selector': '0', 'prompt': 'start/restart the cluster', 'return': cmd_deeprestart }, { 'selector': '9', 'prompt': '(gracefully) exit', 'return': cmd_exit }, { 'selector': '1', 'prompt': 'show status', 'return': cmd_status }, { 'selector': '2', 'prompt': 'random kill/start workload', 'return': cmd_randworkload }, { 'selector': '3', 'prompt': 'random kill one node', 'return': cmd_randkill }, { 'selector': '4', 'prompt': 'random start one node', 'return': cmd_randstart }, { 'selector': '5', 'prompt': 'start one node', 'return': cmd_start }, { 'selector': '6', 'prompt': 'kill one node', 'return': cmd_kill }, { 'selector': '7', 'prompt': 'strobe time yak', 'return': cmd_strobetime }, ] cmd = prompt.options("Cockroach cracker commands:", cmd_options) if cmd == cmd_status: show_status() elif cmd == cmd_randkill: cockroach.random_kill() elif cmd == cmd_randstart: cockroach.random_start() elif cmd == cmd_randworkload: cockroach.kill_start_workload(30) elif cmd == cmd_deeprestart: init() elif cmd == cmd_start: i = prompt.query('which node id?', validators=[validators.IntegerValidator()]) cockroach.start_node(i) elif cmd == cmd_kill: i = prompt.query('which node id?', validators=[validators.IntegerValidator()]) cockroach.kill_node(i) elif cmd == cmd_exit: cockroach.gracefully_exit() break elif cmd == cmd_strobetime: cobra_time.strobe_time('yak', 1000, 1000, 60) puts(colored.blue("-------"))