Pylint cleanup.

Add more dynamic attribute info to IPATypeChecker in make-lint. Remove
unnecessary pylint comments. Fix false positivies introduced by Pylint 0.26.

https://fedorahosted.org/freeipa/ticket/3379
This commit is contained in:
Jan Cholasta 2013-01-28 14:55:20 +01:00 committed by Martin Kosek
parent 41d11f443b
commit 77bb4b5177
10 changed files with 78 additions and 76 deletions

View File

@ -1350,7 +1350,6 @@ def get_ca_cert_from_file(url):
Raises errors.FileError if unable to write cert.
'''
# pylint: disable=E1101
try:
parsed = urlparse.urlparse(url, 'file')
except Exception, e:

View File

@ -478,10 +478,10 @@ class Command(HasParam):
>>> list(c._repr_iter(login=u'Okay.', passwd=u'Private!'))
["u'Okay.'", "passwd=u'********'"]
"""
for arg in self.args(): #pylint: disable=E1102
for arg in self.args():
value = params.get(arg.name, None)
yield repr(arg.safe_value(value))
for option in self.options(): #pylint: disable=E1102
for option in self.options():
if option.name not in params:
continue
value = params[option.name]
@ -506,7 +506,7 @@ class Command(HasParam):
def __args_2_params(self, values):
multivalue = False
for (i, arg) in enumerate(self.args()): #pylint: disable=E1102
for (i, arg) in enumerate(self.args()):
assert not multivalue
if len(values) > i:
if arg.multivalue:
@ -784,7 +784,7 @@ class Command(HasParam):
else:
self.max_args = None
self._create_param_namespace('options')
params_nosort = tuple(self.args()) + tuple(self.options()) #pylint: disable=E1102
params_nosort = tuple(self.args()) + tuple(self.options())
def get_key(p):
if p.required:
if p.sortorder < 0:
@ -963,7 +963,7 @@ class Command(HasParam):
rv = 0
order = [p.name for p in self.output_params()] #pylint: disable=E1102
order = [p.name for p in self.output_params()]
if options.get('all', False):
order.insert(0, 'dn')
print_all = True
@ -973,8 +973,8 @@ class Command(HasParam):
if options.get('raw', False):
labels = None
else:
labels = dict((p.name, unicode(p.label)) for p in self.output_params()) #pylint: disable=E1102
flags = dict((p.name, p.flags) for p in self.output_params()) #pylint: disable=E1102
labels = dict((p.name, unicode(p.label)) for p in self.output_params())
flags = dict((p.name, p.flags) for p in self.output_params())
for o in self.output:
outp = self.output[o]
@ -1112,7 +1112,7 @@ class Object(HasParam):
self.__get_attrs('Property'), sort=False, name_attr='attr_name'
)
self._create_param_namespace('params')
pkeys = filter(lambda p: p.primary_key, self.params()) #pylint: disable=E1102
pkeys = filter(lambda p: p.primary_key, self.params())
if len(pkeys) > 1:
raise ValueError(
'%s (Object) has multiple primary keys: %s' % (
@ -1123,7 +1123,7 @@ class Object(HasParam):
if len(pkeys) == 1:
self.primary_key = pkeys[0]
self.params_minus_pk = NameSpace(
filter(lambda p: not p.primary_key, self.params()), sort=False #pylint: disable=E1102
filter(lambda p: not p.primary_key, self.params()), sort=False
)
else:
self.primary_key = None
@ -1141,7 +1141,7 @@ class Object(HasParam):
if len(names) == 1 and not isinstance(names[0], (Param, str)):
names = names[0]
minus = frozenset(names)
for param in self.params(): #pylint: disable=E1102
for param in self.params():
if param.name in minus or param in minus:
continue
yield param

View File

@ -231,7 +231,7 @@ class KRB5_CCache(object):
error_code = e.args[0]
if error_code == KRB5_CC_NOTFOUND:
raise KeyError('"%s" credential not found in "%s" ccache' % \
(krbV_principal.name, self.ccache_str())) #pylint: disable=E1103
(krbV_principal.name, self.ccache_str()))
raise e
except Exception, e:
raise e
@ -282,7 +282,7 @@ class KRB5_CCache(object):
authtime, starttime, endtime, renew_till = cred[3]
self.debug('get_credential_times: principal=%s, authtime=%s, starttime=%s, endtime=%s, renew_till=%s',
krbV_principal.name, #pylint: disable=E1103
krbV_principal.name,
krb5_format_time(authtime), krb5_format_time(starttime),
krb5_format_time(endtime), krb5_format_time(renew_till))
@ -291,7 +291,7 @@ class KRB5_CCache(object):
except KeyError, e:
raise e
except Exception, e:
self.error('get_credential_times failed, principal="%s" error="%s"', krbV_principal.name, e) #pylint: disable=E1103
self.error('get_credential_times failed, principal="%s" error="%s"', krbV_principal.name, e)
raise e
def credential_is_valid(self, principal):

View File

@ -1101,8 +1101,7 @@ class Int(Number):
)
def __init__(self, name, *rules, **kw):
#pylint: disable=E1003
super(Number, self).__init__(name, *rules, **kw)
super(Int, self).__init__(name, *rules, **kw)
if (self.minvalue > self.maxvalue) and (self.minvalue is not None and self.maxvalue is not None):
raise ValueError(
@ -1257,7 +1256,6 @@ class Decimal(Number):
)
def _enforce_numberclass(self, value):
#pylint: disable=E1101
numberclass = value.number_class()
if numberclass not in self.numberclass:
raise ValidationError(name=self.get_param_name(),
@ -1281,7 +1279,7 @@ class Decimal(Number):
def _remove_exponent(self, value):
assert type(value) is decimal.Decimal
if not self.exponential: #pylint: disable=E1101
if not self.exponential:
try:
# adopted from http://docs.python.org/library/decimal.html
value = value.quantize(decimal.Decimal(1)) \
@ -1499,7 +1497,7 @@ class Str(Data):
Do not allow leading/trailing spaces.
"""
assert type(value) is unicode
if self.noextrawhitespace is False: #pylint: disable=E1101
if self.noextrawhitespace is False:
return
if len(value) != len(value.strip()):
return _('Leading and trailing spaces are not allowed')

View File

@ -630,7 +630,7 @@ class DNSRecord(Str):
return super(DNSRecord, self)._convert_scalar(value, index)
def normalize(self, value):
if self.normalizedns: #pylint: disable=E1101
if self.normalizedns:
if isinstance(value, (tuple, list)):
value = tuple(
self._normalize_parts(v) for v in value \
@ -667,7 +667,7 @@ class DNSRecord(Str):
return value
def _rule_validatedns(self, _, value):
if not self.validatedns: #pylint: disable=E1101
if not self.validatedns:
return
if value is None:

View File

@ -64,12 +64,6 @@ escaping and unescapin.
#-------------------------------------------------------------------------------
# FIXME: The use of properties for the attributes timestamp, expires
# and max_age produce a pylint error which is a false positive, this
# is a known bug in pylint (http://www.logilab.org/ticket/89092,
# http://www.logilab.org/ticket/89786) after the pylint bug is fixed
# the disables for E0202 should be removed.
class Cookie(object):
'''
A Cookie object has the following attributes:
@ -366,7 +360,7 @@ class Cookie(object):
self.timestamp = timestamp
@property
def timestamp(self): #pylint: disable=E0202
def timestamp(self):
'''
The UTC moment at which cookie was received for purposes of
computing the expiration given a Max-Age offset. The
@ -389,7 +383,7 @@ class Cookie(object):
return self._timestamp
@timestamp.setter
def timestamp(self, value): #pylint: disable=E0202
def timestamp(self, value):
if value is None:
self._timestamp = None
elif isinstance(value, datetime.datetime):
@ -403,7 +397,7 @@ class Cookie(object):
value.__class__.__name__)
@property
def expires(self): #pylint: disable=E0202
def expires(self):
'''
The expiration timestamp (in UTC) as a datetime object for the
cookie, or None if not set.
@ -415,7 +409,7 @@ class Cookie(object):
return self._expires
@expires.setter
def expires(self, value): #pylint: disable=E0202
def expires(self, value):
if value is None:
self._expires = None
elif isinstance(value, datetime.datetime):
@ -429,7 +423,7 @@ class Cookie(object):
value.__class__.__name__)
@property
def max_age(self): #pylint: disable=E0202
def max_age(self):
'''
The lifetime duration of the cookie. Computed as an offset
from the cookie's timestamp.
@ -437,7 +431,7 @@ class Cookie(object):
return self._max_age
@max_age.setter
def max_age(self, value): #pylint: disable=E0202
def max_age(self, value):
if value is None:
self._max_age = None
else:

View File

@ -775,7 +775,7 @@ def bind_port_responder(port, socket_type=socket.SOCK_STREAM, socket_timeout=Non
connection, client_address = s.accept()
try:
if responder_data:
connection.sendall(responder_data) #pylint: disable=E1101
connection.sendall(responder_data)
finally:
connection.close()
elif socket_type == socket.SOCK_DGRAM:

View File

@ -200,14 +200,15 @@ class NSSConnection(httplib.HTTPConnection, NSSAddressFamilyFallback):
def _create_socket(self):
# TODO: remove the try block once python-nss is guaranteed to contain
# these values
try :
ssl_enable_renegotiation = SSL_ENABLE_RENEGOTIATION #pylint: disable=E0602
ssl_require_safe_negotiation = SSL_REQUIRE_SAFE_NEGOTIATION #pylint: disable=E0602
ssl_renegotiate_requires_xtn = SSL_RENEGOTIATE_REQUIRES_XTN #pylint: disable=E0602
except :
ssl_enable_renegotiation = 20
ssl_require_safe_negotiation = 21
ssl_renegotiate_requires_xtn = 2
try:
#pylint: disable=E1101
ssl_enable_renegotiation = ssl.SSL_ENABLE_RENEGOTIATION
ssl_require_safe_negotiation = ssl.SSL_REQUIRE_SAFE_NEGOTIATION
ssl_renegotiate_requires_xtn = ssl.SSL_RENEGOTIATE_REQUIRES_XTN
except:
ssl_enable_renegotiation = 20
ssl_require_safe_negotiation = 21
ssl_renegotiate_requires_xtn = 2
# Create the socket here so we can do things like let the caller
# override the NSS callbacks

View File

@ -109,7 +109,7 @@ class updateclient(backend.Executioner):
def order(self, updatetype):
"""Return plugins of the given updatetype in sorted order.
"""
ordered = [plugin for plugin in api.Updater() # pylint: disable=E1101
ordered = [plugin for plugin in api.Updater()
if plugin.updatetype == updatetype]
ordered.sort(key=lambda p: p.order)
return ordered
@ -143,7 +143,7 @@ class updateclient(backend.Executioner):
"""
Execute the update plugin.
"""
return self.Updater[method](**kw) #pylint: disable=E1101
return self.Updater[method](**kw)
def restart(self, dm_password, live_run):
dsrestart = DSRestart()

View File

@ -37,49 +37,59 @@ except ImportError:
# File names to ignore when searching for python source files
IGNORE_FILES = ('.*', '*~', '*.in', '*.pyc', '*.pyo')
IGNORE_PATHS = ('build', 'rpmbuild', 'dist', 'install/po/test_i18n.py', 'lite-server.py',
'make-lint', 'make-test', 'tests')
IGNORE_PATHS = ('build', 'rpmbuild', 'dist', 'install/po/test_i18n.py',
'lite-server.py', 'make-lint', 'make-test', 'tests')
class IPATypeChecker(TypeChecker):
# 'class': ('generated', 'properties',)
NAMESPACE_ATTRS = ['Command', 'Object', 'Method', 'Property', 'Backend',
'Updater']
LOGGING_ATTRS = ['log', 'debug', 'info', 'warning', 'error', 'exception',
'critical']
# 'class': ['generated', 'properties']
ignore = {
'ipalib.base.NameSpace': ['find'],
# Python standard library & 3rd party classes
'krbV.Principal': ['name'],
'socket._socketobject': ['sendall'],
# should be 'subprocess.Popen'
'.Popen': ['stdin', 'stdout', 'stderr', 'pid', 'returncode', 'poll',
'wait', 'communicate'],
'urlparse.ResultMixin': ['scheme', 'netloc', 'path', 'query',
'fragment', 'username', 'password', 'hostname', 'port'],
'urlparse.ParseResult': ['params'],
# IPA classes
'ipapython.admintool.AdminTool': LOGGING_ATTRS,
'ipalib.base.NameSpace': ['add', 'mod', 'del', 'show', 'find'],
'ipalib.cli.Collector': ['__options'],
'ipalib.config.Env': ['*'],
'ipalib.plugable.API': ['Command', 'Object', 'Method', 'Property',
'Backend', 'log', 'plugins'],
'ipalib.plugable.Plugin': ['Command', 'Object', 'Method', 'Property',
'Backend', 'env', 'debug', 'info', 'warning', 'error', 'critical',
'exception', 'context', 'log'],
'ipalib.plugins.misc.env': ['env'],
'ipalib.krb_utils.KRB5_CCache': LOGGING_ATTRS,
'ipalib.parameters.Param': ['cli_name', 'cli_short_name', 'label',
'doc', 'required', 'multivalue', 'primary_key', 'normalizer',
'default', 'default_from', 'autofill', 'query', 'attribute',
'default', 'doc', 'required', 'multivalue', 'primary_key',
'normalizer', 'default_from', 'autofill', 'query', 'attribute',
'include', 'exclude', 'flags', 'hint', 'alwaysask', 'sortorder',
'csv', 'csv_separator', 'csv_skipspace'],
'csv', 'csv_separator', 'csv_skipspace', 'option_group'],
'ipalib.parameters.Bool': ['truths', 'falsehoods'],
'ipalib.parameters.Int': ['minvalue', 'maxvalue'],
'ipalib.parameters.Decimal': ['minvalue', 'maxvalue', 'precision'],
'ipalib.parameters.Data': ['minlength', 'maxlength', 'length',
'pattern', 'pattern_errmsg'],
'ipalib.parameters.Enum': ['values'],
'ipalib.parameters.Str': ['noextrawhitespace'],
'ipalib.parameters.Password': ['confirm'],
'ipalib.parameters.File': ['stdin_if_missing'],
'urlparse.SplitResult': ['scheme', 'netloc', 'path', 'query', 'fragment', 'username', 'password', 'hostname', 'port'],
'urlparse.ParseResult': ['scheme', 'netloc', 'path', 'params', 'query', 'fragment', 'username', 'password', 'hostname', 'port'],
'ipaserver.install.ldapupdate.LDAPUpdate' : ['log', 'debug', 'info', 'warning', 'error', 'critical', 'exception'],
'ipaserver.plugins.ldap2.SchemaCache' : ['log', 'debug', 'info', 'warning', 'error', 'critical', 'exception'],
'ipaserver.plugins.ldap2.IPASimpleLDAPObject' : ['log', 'debug', 'info', 'warning', 'error', 'critical', 'exception'],
'ipaserver.plugins.ldap2.ldap2' : ['log', 'debug', 'info', 'warning', 'error', 'critical', 'exception'],
'ipaserver.rpcserver.KerberosSession' : ['api', 'log', 'debug', 'info', 'warning', 'error', 'critical', 'exception'],
'ipaserver.rpcserver.HTTP_Status' : ['log', 'debug', 'info', 'warning', 'error', 'critical', 'exception'],
'ipalib.krb_utils.KRB5_CCache' : ['log', 'debug', 'info', 'warning', 'error', 'critical', 'exception'],
'ipalib.session.AuthManager' : ['log', 'debug', 'info', 'warning', 'error', 'critical', 'exception'],
'ipalib.session.SessionAuthManager' : ['log', 'debug', 'info', 'warning', 'error', 'critical', 'exception'],
'ipalib.session.SessionManager' : ['log', 'debug', 'info', 'warning', 'error', 'critical', 'exception'],
'ipalib.session.SessionCCache' : ['log', 'debug', 'info', 'warning', 'error', 'critical', 'exception'],
'ipalib.session.MemcacheSessionManager' : ['log', 'debug', 'info', 'warning', 'error', 'critical', 'exception'],
'ipapython.admintool.AdminTool' : ['log', 'debug', 'info', 'warning', 'error', 'critical', 'exception'],
'ipapython.cookie.Cookie' : ['log', 'debug', 'info', 'warning', 'error', 'critical', 'exception'],
'ipalib.plugins.dns.DNSRecord': ['validatedns', 'normalizedns'],
'ipalib.parameters.Enum': ['values'],
'ipalib.parameters.Number': ['minvalue', 'maxvalue'],
'ipalib.parameters.Decimal': ['precision', 'exponential',
'numberclass'],
'ipalib.plugable.API': NAMESPACE_ATTRS + LOGGING_ATTRS,
'ipalib.plugable.Plugin': ['api', 'env'] + NAMESPACE_ATTRS +
LOGGING_ATTRS,
'ipalib.session.AuthManager': LOGGING_ATTRS,
'ipalib.session.SessionAuthManager': LOGGING_ATTRS,
'ipalib.session.SessionManager': LOGGING_ATTRS,
'ipaserver.install.ldapupdate.LDAPUpdate': LOGGING_ATTRS,
'ipaserver.plugins.ldap2.IPASimpleLDAPObject': LOGGING_ATTRS,
'ipaserver.plugins.ldap2.SchemaCache': LOGGING_ATTRS,
'ipaserver.rpcserver.KerberosSession': ['api'] + LOGGING_ATTRS,
}
def _related_classes(self, klass):