[Freeipa-devel] [PATCH 0407] WIP: make-lint migration to config file and pylint plugin due pylint 1.5.2

Martin Basti mbasti at redhat.com
Tue Jan 19 16:01:33 UTC 2016



On 19.01.2016 16:34, Christian Heimes wrote:
> On 2016-01-19 13:43, Martin Basti wrote:
>> +
>> +def fake_class(name_or_class_obj, members=[]):
> Please use a non-mutable argument here. members=() will do the job just
> fine.
Fixed.
>> +    if isinstance(name_or_class_obj, scoped_nodes.Class):
>> +        cl = name_or_class_obj
>> +    else:
>> +        cl = scoped_nodes.Class(name_or_class_obj, None)
>> +
>> +    for m in members:
>> +        if isinstance(m, str):
>> +            if m in cl.locals:
>> +                _warning_already_exists(cl, m)
>> +            else:
>> +                cl.locals[m] = [scoped_nodes.Class(m, None)]
>> +        elif isinstance(m, dict):
>> +            for key, val in m.items():
>> +                assert isinstance(key, str), "key must be string"
>> +                if key in cl.locals:
>> +                    _warning_already_exists(cl, key)
>> +                    fake_class(cl.locals[key], val)
>> +                else:
>> +                    cl.locals[key] = [fake_class(key, val)]
>> +        else:
>> +            # here can be used any astroid type
>> +            if m.name in cl.locals:
>> +                _warning_already_exists(cl, m.name)
>> +            else:
>> +                cl.locals[m.name] = [copy.copy(m)]
>> +    return cl
> ...
>
>> +ipa_class_members = {
>> +    # Python standard library & 3rd party classes
>> +    'socket._socketobject': ['sendall'],
>> +# !!!    'datetime.tzinfo': ['houroffset', 'minoffset', 'utcoffset', 'dst'],
>> +# !!!    'nss.nss.subject_public_key_info': ['public_key'],
>> +
>> +    # IPA classes
>> +    'ipalib.base.NameSpace': [
>> +        'add',
>> +        'mod',
>> +        'del',
>> +        'show',
>> +        'find'
>> +    ],
>> +    'ipalib.cli.Collector': ['__options'],
>> +    'ipalib.config.Env': [
>> +        {'__d': ['get']},
>> +        {'__done': ['add']},
>> +        'xmlrpc_uri',
>> +        'validate_api',
>> +        'startup_traceback',
>> +        'verbose'
>> +    ] + LOGGING_ATTRS,
> The rules for __options, __d and __done may lead to false detection.
> Class member and attribute names with leading double underscore are
> mangled, so Collector.__options is turned into __Collector_options.
> self.__options works because it's also mangled. But from other classes,
> the attribute must be referred to as __Collector_options.
>
> Christian
>
This doesn't work for pylint

     'ipalib.config.Env': [
         {'_Env__d': ['get']},
         {'_Env__done': ['add']},
         'xmlrpc_uri',
         'validate_api',
         'startup_traceback',
         'verbose'
     ] + LOGGING_ATTRS,

************* Module ipalib.config
ipalib/config.py:240: [E1101(no-member), Env.__setitem__] Instance of 
'Env' has no '__d' member)
ipalib/config.py:242: [E1101(no-member), Env.__setitem__] Instance of 
'Env' has no '__d' member)
ipalib/config.py:263: [E1101(no-member), Env.__setitem__] Instance of 
'Env' has no '__d' member)
ipalib/config.py:269: [E1101(no-member), Env.__getitem__] Instance of 
'Env' has no '__d' member)
ipalib/config.py:292: [E1101(no-member), Env.__contains__] Instance of 
'Env' has no '__d' member)
ipalib/config.py:298: [E1101(no-member), Env.__len__] Instance of 'Env' 
has no '__d' member)
ipalib/config.py:304: [E1101(no-member), Env.__iter__] Instance of 'Env' 
has no '__d' member)
ipalib/config.py:408: [E1101(no-member), Env.__doing] Instance of 'Env' 
has no '__done' member)
ipalib/config.py:412: [E1101(no-member), Env.__doing] Instance of 'Env' 
has no '__done' member)
ipalib/config.py:415: [E1101(no-member), Env.__do_if_not_done] Instance 
of 'Env' has no '__done' member)
ipalib/config.py:419: [E1101(no-member), Env._isdone] Instance of 'Env' 
has no '__done' member)
ipalib/config.py:534: [E1101(no-member), Env._finalize_core] Instance of 
'Env' has no '__d' member)





More information about the Freeipa-devel mailing list