From 6d123b93fc386596d680bfe64157af727c5fbf4b Mon Sep 17 00:00:00 2001 From: Kevin Froman Date: Thu, 19 Dec 2019 04:32:40 -0600 Subject: [PATCH] made parser flake8 compliant --- src/onionrcommands/parser/__init__.py | 69 +++++++++++++++--------- src/onionrcommands/parser/arguments.py | 73 +++++++++++++++----------- src/onionrcommands/parser/recommend.py | 8 ++- 3 files changed, 92 insertions(+), 58 deletions(-) diff --git a/src/onionrcommands/parser/__init__.py b/src/onionrcommands/parser/__init__.py index cc99ebb9..62855519 100644 --- a/src/onionrcommands/parser/__init__.py +++ b/src/onionrcommands/parser/__init__.py @@ -1,9 +1,17 @@ -''' +""" Onionr - Private P2P Communication This module loads in the Onionr arguments and their help messages -''' -''' +""" +import sys +import os + +import logger +import onionrexceptions +import onionrplugins +from onionrplugins import onionrpluginapi +from . import arguments, recommend +""" This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or @@ -16,19 +24,14 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . -''' -import sys -import os +""" -from etc import onionrvalues -import logger, onionrexceptions -import onionrplugins -from onionrplugins import onionrpluginapi -from . import arguments, recommend -plugin_command = lambda cmd: 'on_%s_cmd' % (cmd,) +def plugin_command(cmd): + return f'on_{cmd}_cmd' -def register_plugin_commands(cmd)->bool: + +def register_plugin_commands(cmd) -> bool: plugin_cmd = plugin_command(cmd) for pl in onionrplugins.get_enabled_plugins(): pl = onionrplugins.get_plugin(pl) @@ -37,10 +40,17 @@ def register_plugin_commands(cmd)->bool: return True return False + +def _show_term(msg: str): + logger.info(msg, terminal=True) + + def register(): """Registers commands and handles help command processing""" - def get_help_message(cmd: str, default: str = 'No help available for this command'): + def get_help_message(cmd: str, + default: str = 'No help available for this command'): """Return help message for a given command, supports plugin commands""" + pl_cmd = plugin_command(cmd) for pl in onionrplugins.get_enabled_plugins(): pl = onionrplugins.get_plugin(pl) @@ -49,14 +59,14 @@ def register(): return getattr(pl, pl_cmd).onionr_help except AttributeError: pass - + for i in arguments.get_arguments(): for alias in i: try: return arguments.get_help(cmd) except AttributeError: pass - return default # Return the help string + return default # Return the help string PROGRAM_NAME = "onionr" @@ -71,8 +81,9 @@ def register(): if cmd.replace('--', '').lower() == 'help': is_help_cmd = True try: - try: - if not cmd in ('start', 'details', 'show-details') : os.chdir(os.environ['ORIG_ONIONR_RUN_DIR']) + try: + if cmd not in ('start', 'details', 'show-details'): + os.chdir(os.environ['ORIG_ONIONR_RUN_DIR']) except KeyError: pass try: arguments.get_func(cmd)() @@ -81,29 +92,35 @@ def register(): if not register_plugin_commands(cmd) and not is_help_cmd: recommend.recommend() sys.exit(3) - + if is_help_cmd: try: sys.argv[2] except IndexError: for i in arguments.get_arguments(): - logger.info('%s <%s>: %s' % (PROGRAM_NAME, '/'.join(i), get_help_message(i[0])), terminal=True) + _show_term('%s <%s>: %s' % (PROGRAM_NAME, '/'.join(i), + get_help_message(i[0]))) for pl in onionrplugins.get_enabled_plugins(): pl = onionrplugins.get_plugin(pl) if hasattr(pl, 'ONIONR_COMMANDS'): print('') try: - logger.info('%s commands:' % (pl.plugin_name,), terminal=True) + _show_term('%s commands:' % (pl.plugin_name,)) except AttributeError: - logger.info('%s commands:' % (pl.__name__,), terminal=True) + _show_term('%s commands:' % (pl.__name__,)) for plugin_cmd in pl.ONIONR_COMMANDS: - logger.info('%s %s: %s' % (PROGRAM_NAME, plugin_cmd, get_help_message(plugin_cmd)), terminal=True) + _show_term('%s %s: %s' % + (PROGRAM_NAME, + plugin_cmd, + get_help_message(plugin_cmd)),) print('') else: try: - logger.info('%s %s: %s' % (PROGRAM_NAME, sys.argv[2], get_help_message(sys.argv[2])), terminal=True) + _show_term('%s %s: %s' % (PROGRAM_NAME, + sys.argv[2], + get_help_message(sys.argv[2]))) except KeyError: - logger.error('%s: command does not exist.' % [sys.argv[2]], terminal=True) + logger.error('%s: command does not exist.' % [sys.argv[2]], + terminal=True) sys.exit(3) return - \ No newline at end of file diff --git a/src/onionrcommands/parser/arguments.py b/src/onionrcommands/parser/arguments.py index 3d8c8c55..8f85fd0f 100644 --- a/src/onionrcommands/parser/arguments.py +++ b/src/onionrcommands/parser/arguments.py @@ -1,9 +1,27 @@ -''' +""" Onionr - Private P2P Communication Sets CLI arguments for Onionr -''' -''' +""" +from typing import Callable + +from .. import onionrstatistics, version, daemonlaunch, keyadders +from .. import openwebinterface +from .. import banblocks # Command to blacklist a block by its hash +from .. import filecommands # commands to share files with onionr +from .. import exportblocks # commands to export blocks +from .. import pubkeymanager # commands to add or change id +from .. import resettor # cmds to reset the tor data folder/transport keypair +from .. import resetplugins # command to reinstall default plugins +from .. import softreset # command to delete onionr blocks +from .. import restartonionr # command to restart Onionr +from .. import runtimetestcmd +from .. import motdcreator +from .. import sitecreator + +import onionrexceptions +from onionrutils import importnewblocks # func to import new blocks +""" This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or @@ -16,30 +34,15 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . -''' -from typing import Callable +""" -from .. import onionrstatistics, version, daemonlaunch, keyadders, openwebinterface -from .. import banblocks # Command to blacklist a block by its hash -from .. import filecommands # commands to share files with onionr -from .. import exportblocks # commands to export blocks -from .. import pubkeymanager # commands to add or change id -from .. import resettor # commands to reset the tor data directory or transport keypair -from .. import resetplugins # command to reinstall default plugins -from .. import softreset # command to delete onionr blocks -from .. import restartonionr # command to restart Onionr -from .. import runtimetestcmd -from .. import motdcreator -from .. import sitecreator -import onionrexceptions -from onionrutils import importnewblocks # func to import new blocks -from onionrplugins import onionrevents as events - -def get_arguments()->dict: - """This is a function because we need to be able to dynamically modify them with plugins""" +def get_arguments() -> dict: + """This is a function because we need to be able + to dynamically modify them with plugins""" args = { - ('blacklist', 'blacklist-block', 'remove-block', 'removeblock', 'banblock', 'ban-block'): banblocks.ban_block, + ('blacklist', 'blacklist-block', 'remove-block', + 'removeblock', 'banblock', 'ban-block'): banblocks.ban_block, ('details', 'info'): onionrstatistics.show_details, ('stats', 'statistics'): onionrstatistics.show_stats, ('version',): version.version, @@ -47,14 +50,17 @@ def get_arguments()->dict: ('stop', 'kill'): daemonlaunch.kill_daemon, ('restart',): restartonionr.restart, ('add-address', 'addaddress', 'addadder'): keyadders.add_address, - ('openhome', 'gui', 'openweb', 'open-home', 'open-web'): openwebinterface.open_home, + ('openhome', 'gui', 'openweb', + 'open-home', 'open-web'): openwebinterface.open_home, ('get-url', 'url', 'get-web'): openwebinterface.get_url, ('addhtml', 'add-html'): filecommands.add_html, - ('addsite', 'add-site', 'update-site', 'updatesite'): sitecreator.create_multipage_site, + ('addsite', 'add-site', + 'update-site', 'updatesite'): sitecreator.create_multipage_site, ('addfile', 'add-file'): filecommands.add_file, ('get-file', 'getfile'): filecommands.get_file, ('export-block', 'exportblock'): exportblocks.export_block, - ('importblocks', 'import-blocks', 'import-block'): importnewblocks.import_new_blocks, + ('importblocks', + 'import-blocks', 'import-block'): importnewblocks.import_new_blocks, ('addid', 'add-id'): pubkeymanager.add_ID, ('changeid', 'change-id'): pubkeymanager.change_ID, ('add-vanity', 'addvanity'): pubkeymanager.add_vanity, @@ -68,21 +74,28 @@ def get_arguments()->dict: } return args + def get_help(arg: str) -> str: """Returns the help info string from a given command""" arguments = get_arguments() # Iterate the command alias tuples for argument in arguments: # Return the help message if its found in a command alias tuple - if arg in argument: return arguments[argument].onionr_help + if arg in argument: + return arguments[argument].onionr_help raise KeyError + def get_func(argument: str) -> Callable: """Returns the function for a given command argument""" argument = argument.lower() args = get_arguments() - for arg in args.keys(): # Iterate command alias sets - if argument in arg: # If our argument is in the current alias set, return the command function + for arg in args.keys(): # Iterate command alias sets + """ + If our argument is in the current alias set, + return the command function + """ + if argument in arg: return args[arg] raise onionrexceptions.NotFound diff --git a/src/onionrcommands/parser/recommend.py b/src/onionrcommands/parser/recommend.py index a7cf05b3..7e23e342 100644 --- a/src/onionrcommands/parser/recommend.py +++ b/src/onionrcommands/parser/recommend.py @@ -3,6 +3,7 @@ from difflib import SequenceMatcher import logger from . import arguments + def recommend(print_default: bool = True): tried = sys.argv[1] args = arguments.get_arguments() @@ -10,6 +11,9 @@ def recommend(print_default: bool = True): for key in args.keys(): for word in key: if SequenceMatcher(None, tried, word).ratio() >= 0.75: - logger.warn('%s "%s", did you mean "%s"?' % (print_message, tried, word), terminal=True) + logger.warn(f'{print_message} "{tried}", ' + + 'did you mean "{word}"?', + terminal=True) return - if print_default: logger.error('%s "%s"' % (print_message, tried), terminal=True) + if print_default: logger.error('%s "%s"' % + (print_message, tried), terminal=True)