Fix pylint warnings inconsistent-return-statements

Add consistent return to all functions and methods that are covered by
tox -e pylint[23]. I haven't checked if return None is always a good
idea or if we should rather raise an error.

See: https://pagure.io/freeipa/issue/7326
Signed-off-by: Christian Heimes <cheimes@redhat.com>
Reviewed-By: Alexander Bokovoy <abokovoy@redhat.com>
This commit is contained in:
Christian Heimes
2017-12-18 11:51:14 +01:00
parent a7ae2dbc5f
commit 8cb756a229
14 changed files with 85 additions and 26 deletions
+1
View File
@@ -77,3 +77,4 @@ can use their Kerberos accounts.''')
ldapuri) ldapuri)
return 1 return 1
textui.print_plain(unicode(self.pwd_migration_msg)) textui.print_plain(unicode(self.pwd_migration_msg))
return None
+4
View File
@@ -118,6 +118,8 @@ def encrypt(data, symmetric_key=None, public_key=None):
label=None label=None
) )
) )
else:
return None
def decrypt(data, symmetric_key=None, private_key=None): def decrypt(data, symmetric_key=None, private_key=None):
@@ -150,6 +152,8 @@ def decrypt(data, symmetric_key=None, private_key=None):
except ValueError: except ValueError:
raise errors.AuthenticationError( raise errors.AuthenticationError(
message=_('Invalid credentials')) message=_('Invalid credentials'))
else:
return None
@register(no_fail=True) @register(no_fail=True)
+6 -10
View File
@@ -135,20 +135,16 @@ class Executioner(Backend):
destroy_context() destroy_context()
def execute(self, _name, *args, **options): def execute(self, _name, *args, **options):
error = None
try: try:
if _name not in self.Command: if _name not in self.Command:
raise CommandError(name=_name) raise CommandError(name=_name)
result = self.Command[_name](*args, **options) return self.Command[_name](*args, **options)
except PublicError as e: except PublicError:
error = e raise
except Exception as e: except Exception as e:
logger.exception( logger.exception(
'non-public: %s: %s', e.__class__.__name__, str(e) 'non-public: %s: %s', e.__class__.__name__, str(e)
) )
error = InternalError() raise InternalError()
destroy_context() finally:
if error is None: destroy_context()
return result
assert isinstance(error, PublicError)
raise error #pylint: disable=E0702
+10 -4
View File
@@ -103,7 +103,8 @@ class textui(backend.Backend):
struct.pack('HHHH', 0, 0, 0, 0)) struct.pack('HHHH', 0, 0, 0, 0))
return struct.unpack('HHHH', winsize)[1] return struct.unpack('HHHH', winsize)[1]
except IOError: except IOError:
return None pass
return None
def max_col_width(self, rows, col=None): def max_col_width(self, rows, col=None):
""" """
@@ -607,6 +608,8 @@ class textui(backend.Backend):
elif default is not None and data == u'': elif default is not None and data == u'':
return default return default
return default # pylint consinstent return statements
def prompt_password(self, label, confirm=True): def prompt_password(self, label, confirm=True):
""" """
Prompt user for a password or read it in via stdin depending Prompt user for a password or read it in via stdin depending
@@ -622,7 +625,9 @@ class textui(backend.Backend):
pw2 = self.prompt_helper(repeat_prompt, label, prompt_func=getpass.getpass) pw2 = self.prompt_helper(repeat_prompt, label, prompt_func=getpass.getpass)
if pw1 == pw2: if pw1 == pw2:
return pw1 return pw1
self.print_error( _('Passwords do not match!')) else:
self.print_error(_('Passwords do not match!'))
return None
else: else:
return self.decode(sys.stdin.readline().strip()) return self.decode(sys.stdin.readline().strip())
@@ -1146,7 +1151,7 @@ class cli(backend.Executioner):
def run(self, argv): def run(self, argv):
cmd = self.get_command(argv) cmd = self.get_command(argv)
if cmd is None: if cmd is None:
return return None
name = cmd.full_name name = cmd.full_name
kw = self.parse(cmd, argv[1:]) kw = self.parse(cmd, argv[1:])
if not isinstance(cmd, frontend.Local): if not isinstance(cmd, frontend.Local):
@@ -1166,6 +1171,7 @@ class cli(backend.Executioner):
return 0 return 0
finally: finally:
self.destroy_context() self.destroy_context()
return None
def parse(self, cmd, argv): def parse(self, cmd, argv):
parser = self.build_parser(cmd) parser = self.build_parser(cmd)
@@ -1249,7 +1255,7 @@ class cli(backend.Executioner):
def __get_arg_name(self, arg, format_name=True): def __get_arg_name(self, arg, format_name=True):
if arg.password: if arg.password:
return return None
name = to_cli(arg.cli_name).upper() name = to_cli(arg.cli_name).upper()
if not format_name: if not format_name:
+6 -4
View File
@@ -368,17 +368,17 @@ class Env(object):
:param config_file: Path of the configuration file to load. :param config_file: Path of the configuration file to load.
""" """
if not path.isfile(config_file): if not path.isfile(config_file):
return return None
parser = RawConfigParser() parser = RawConfigParser()
try: try:
parser.read(config_file) parser.read(config_file)
except ParsingError: except ParsingError:
return return None
if not parser.has_section(CONFIG_SECTION): if not parser.has_section(CONFIG_SECTION):
parser.add_section(CONFIG_SECTION) parser.add_section(CONFIG_SECTION)
items = parser.items(CONFIG_SECTION) items = parser.items(CONFIG_SECTION)
if len(items) == 0: if len(items) == 0:
return (0, 0) return 0, 0
i = 0 i = 0
for (key, value) in items: for (key, value) in items:
if key not in self: if key not in self:
@@ -386,7 +386,7 @@ class Env(object):
i += 1 i += 1
if 'config_loaded' not in self: # we loaded at least 1 file if 'config_loaded' not in self: # we loaded at least 1 file
self['config_loaded'] = True self['config_loaded'] = True
return (i, len(items)) return i, len(items)
def _join(self, key, *parts): def _join(self, key, *parts):
""" """
@@ -401,6 +401,8 @@ class Env(object):
""" """
if key in self and self[key] is not None: if key in self and self[key] is not None:
return path.join(self[key], *parts) return path.join(self[key], *parts)
else:
return None
def __doing(self, name): def __doing(self, name):
if name in self.__done: if name in self.__done:
+3 -1
View File
@@ -1005,6 +1005,8 @@ class Command(HasParam):
def get_summary_default(self, output): def get_summary_default(self, output):
if self.msg_summary: if self.msg_summary:
return self.msg_summary % output return self.msg_summary % output
else:
return None
def log_messages(self, output): def log_messages(self, output):
logger_functions = dict( logger_functions = dict(
@@ -1035,7 +1037,7 @@ class Command(HasParam):
Subclasses can override this method, if custom output is needed. Subclasses can override this method, if custom output is needed.
""" """
if not isinstance(output, dict): if not isinstance(output, dict):
return return None
rv = 0 rv = 0
+33 -2
View File
@@ -255,11 +255,12 @@ class DefaultFrom(ReadOnly):
""" """
vals = tuple(kw.get(k, None) for k in self.keys) vals = tuple(kw.get(k, None) for k in self.keys)
if None in vals: if None in vals:
return return None
try: try:
return self.callback(*vals) return self.callback(*vals)
except Exception: except Exception:
pass pass
return None
def __json__(self): def __json__(self):
return self.keys return self.keys
@@ -1139,6 +1140,8 @@ class Int(Number):
return _('must be at least %(minvalue)d') % dict( return _('must be at least %(minvalue)d') % dict(
minvalue=self.minvalue, minvalue=self.minvalue,
) )
else:
return None
def _rule_maxvalue(self, _, value): def _rule_maxvalue(self, _, value):
""" """
@@ -1149,6 +1152,8 @@ class Int(Number):
return _('can be at most %(maxvalue)d') % dict( return _('can be at most %(maxvalue)d') % dict(
maxvalue=self.maxvalue, maxvalue=self.maxvalue,
) )
else:
return None
class Decimal(Number): class Decimal(Number):
@@ -1211,6 +1216,8 @@ class Decimal(Number):
return _('must be at least %(minvalue)s') % dict( return _('must be at least %(minvalue)s') % dict(
minvalue=self.minvalue, minvalue=self.minvalue,
) )
else:
return None
def _rule_maxvalue(self, _, value): def _rule_maxvalue(self, _, value):
""" """
@@ -1221,6 +1228,8 @@ class Decimal(Number):
return _('can be at most %(maxvalue)s') % dict( return _('can be at most %(maxvalue)s') % dict(
maxvalue=self.maxvalue, maxvalue=self.maxvalue,
) )
else:
return None
def _enforce_numberclass(self, value): def _enforce_numberclass(self, value):
numberclass = value.number_class() numberclass = value.number_class()
@@ -1352,6 +1361,8 @@ class Data(Param):
return _('must match pattern "%(pattern)s"') % dict( return _('must match pattern "%(pattern)s"') % dict(
pattern=self.pattern, pattern=self.pattern,
) )
else:
return None
class Bytes(Data): class Bytes(Data):
@@ -1389,6 +1400,8 @@ class Bytes(Data):
return _('must be at least %(minlength)d bytes') % dict( return _('must be at least %(minlength)d bytes') % dict(
minlength=self.minlength, minlength=self.minlength,
) )
else:
return None
def _rule_maxlength(self, _, value): def _rule_maxlength(self, _, value):
""" """
@@ -1399,6 +1412,8 @@ class Bytes(Data):
return _('can be at most %(maxlength)d bytes') % dict( return _('can be at most %(maxlength)d bytes') % dict(
maxlength=self.maxlength, maxlength=self.maxlength,
) )
else:
return None
def _rule_length(self, _, value): def _rule_length(self, _, value):
""" """
@@ -1409,6 +1424,8 @@ class Bytes(Data):
return _('must be exactly %(length)d bytes') % dict( return _('must be exactly %(length)d bytes') % dict(
length=self.length, length=self.length,
) )
else:
return None
def _convert_scalar(self, value, index=None): def _convert_scalar(self, value, index=None):
if isinstance(value, unicode): if isinstance(value, unicode):
@@ -1556,9 +1573,11 @@ class Str(Data):
""" """
assert type(value) is unicode assert type(value) is unicode
if self.noextrawhitespace is False: if self.noextrawhitespace is False:
return return None
if len(value) != len(value.strip()): if len(value) != len(value.strip()):
return _('Leading and trailing spaces are not allowed') return _('Leading and trailing spaces are not allowed')
else:
return None
def _rule_minlength(self, _, value): def _rule_minlength(self, _, value):
""" """
@@ -1569,6 +1588,8 @@ class Str(Data):
return _('must be at least %(minlength)d characters') % dict( return _('must be at least %(minlength)d characters') % dict(
minlength=self.minlength, minlength=self.minlength,
) )
else:
return None
def _rule_maxlength(self, _, value): def _rule_maxlength(self, _, value):
""" """
@@ -1579,6 +1600,8 @@ class Str(Data):
return _('can be at most %(maxlength)d characters') % dict( return _('can be at most %(maxlength)d characters') % dict(
maxlength=self.maxlength, maxlength=self.maxlength,
) )
else:
return None
def _rule_length(self, _, value): def _rule_length(self, _, value):
""" """
@@ -1589,6 +1612,8 @@ class Str(Data):
return _('must be exactly %(length)d characters') % dict( return _('must be exactly %(length)d characters') % dict(
length=self.length, length=self.length,
) )
else:
return None
def sort_key(self, value): def sort_key(self, value):
return value.lower() return value.lower()
@@ -1658,6 +1683,8 @@ class Enum(Param):
else: else:
values = u', '.join("'%s'" % value for value in self.values) values = u', '.join("'%s'" % value for value in self.values)
return _('must be one of %(values)s') % dict(values=values) return _('must be one of %(values)s') % dict(values=values)
else:
return None
class BytesEnum(Enum): class BytesEnum(Enum):
""" """
@@ -2064,10 +2091,14 @@ class DNSNameParam(Param):
def _rule_only_absolute(self, _, value): def _rule_only_absolute(self, _, value):
if self.only_absolute and not value.is_absolute(): if self.only_absolute and not value.is_absolute():
return _('must be absolute') return _('must be absolute')
else:
return None
def _rule_only_relative(self, _, value): def _rule_only_relative(self, _, value):
if self.only_relative and value.is_absolute(): if self.only_relative and value.is_absolute():
return _('must be relative') return _('must be relative')
else:
return None
class Dict(Param): class Dict(Param):
+1 -1
View File
@@ -907,7 +907,7 @@ class RPCClient(Connectible):
try: try:
cookie_string = read_persistent_client_session_data(principal) cookie_string = read_persistent_client_session_data(principal)
if cookie_string is None: if cookie_string is None:
return return None
cookie_string = cookie_string.decode('utf-8') cookie_string = cookie_string.decode('utf-8')
except Exception as e: except Exception as e:
logger.debug('Error reading client session data: %s', e) logger.debug('Error reading client session data: %s', e)
+12 -1
View File
@@ -452,11 +452,15 @@ def validate_hostname(hostname, check_fqdn=True, allow_underscore=False, allow_s
def normalize_sshpubkey(value): def normalize_sshpubkey(value):
return SSHPublicKey(value).openssh() return SSHPublicKey(value).openssh()
def validate_sshpubkey(ugettext, value): def validate_sshpubkey(ugettext, value):
try: try:
SSHPublicKey(value) SSHPublicKey(value)
except (ValueError, UnicodeDecodeError): except (ValueError, UnicodeDecodeError):
return _('invalid SSH public key') return _('invalid SSH public key')
else:
return None
def validate_sshpubkey_no_options(ugettext, value): def validate_sshpubkey_no_options(ugettext, value):
try: try:
@@ -466,6 +470,8 @@ def validate_sshpubkey_no_options(ugettext, value):
if pubkey.has_options(): if pubkey.has_options():
return _('options are not allowed') return _('options are not allowed')
else:
return None
def convert_sshpubkey_post(entry_attrs): def convert_sshpubkey_post(entry_attrs):
@@ -685,18 +691,23 @@ def get_reverse_zone_default(ip_address):
return normalize_zone('.'.join(items)) return normalize_zone('.'.join(items))
def validate_rdn_param(ugettext, value): def validate_rdn_param(ugettext, value):
try: try:
RDN(value) RDN(value)
except Exception as e: except Exception as e:
return str(e) return str(e)
return None else:
return None
def validate_hostmask(ugettext, hostmask): def validate_hostmask(ugettext, hostmask):
try: try:
netaddr.IPNetwork(hostmask) netaddr.IPNetwork(hostmask)
except (ValueError, AddrFormatError): except (ValueError, AddrFormatError):
return _('invalid hostmask') return _('invalid hostmask')
else:
return None
class ForwarderValidationError(Exception): class ForwarderValidationError(Exception):
+1 -1
View File
@@ -276,7 +276,7 @@ class IPACertificate(object):
def extended_key_usage_bytes(self): def extended_key_usage_bytes(self):
eku = self.extended_key_usage eku = self.extended_key_usage
if eku is None: if eku is None:
return return None
ekurfc = rfc2459.ExtKeyUsageSyntax() ekurfc = rfc2459.ExtKeyUsageSyntax()
for i, oid in enumerate(eku): for i, oid in enumerate(eku):
+2
View File
@@ -246,6 +246,8 @@ def __discover_config(discover_server = True):
except Exception: except Exception:
pass pass
return None
def add_standard_options(parser): def add_standard_options(parser):
parser.add_option("--realm", dest="realm", help="Override default IPA realm") parser.add_option("--realm", dest="realm", help="Override default IPA realm")
+4 -1
View File
@@ -232,6 +232,7 @@ class CheckedIPAddress(UnsafeIPAddress):
if ifnet.ip == self: if ifnet.ip == self:
return InterfaceDetails(interface, ifnet) return InterfaceDetails(interface, ifnet)
return None
def set_ip_net(self, ifnet): def set_ip_net(self, ifnet):
"""Set IP Network details for this address. IPNetwork is valid only """Set IP Network details for this address. IPNetwork is valid only
@@ -928,7 +929,7 @@ def ipa_generate_password(entropy_bits=256, uppercase=1, lowercase=1, digits=1,
def user_input(prompt, default = None, allow_empty = True): def user_input(prompt, default = None, allow_empty = True):
if default == None: if default is None:
while True: while True:
try: try:
ret = input("%s: " % prompt) ret = input("%s: " % prompt)
@@ -980,6 +981,8 @@ def user_input(prompt, default = None, allow_empty = True):
else: else:
return ret return ret
return None
def host_port_open(host, port, socket_type=socket.SOCK_STREAM, def host_port_open(host, port, socket_type=socket.SOCK_STREAM,
socket_timeout=None, log_errors=False, socket_timeout=None, log_errors=False,
+1
View File
@@ -353,6 +353,7 @@ def get_data(princ_name, key):
krb5_cc_close(context, ccache) krb5_cc_close(context, ccache)
if context: if context:
krb5_free_context(context) krb5_free_context(context)
return None
def remove_data(princ_name, key): def remove_data(princ_name, key):
+1 -1
View File
@@ -205,7 +205,7 @@ class SSHPublicKey(object):
elif self._keytype == 'ssh-ed25519': elif self._keytype == 'ssh-ed25519':
keytype = 4 keytype = 4
else: else:
return return None
fp = fpfunc(self._key).hexdigest().upper() fp = fpfunc(self._key).hexdigest().upper()
return u'%d %d %s' % (keytype, fptype, fp) return u'%d %d %s' % (keytype, fptype, fp)