certbot/linter_plugin.py

30 lines
813 B
Python
Raw Normal View History

2016-04-14 13:20:23 -04:00
"""Certbot ACME PyLint plugin.
2015-02-06 17:54:28 -05:00
http://docs.pylint.org/plugins.html
"""
from astroid import MANAGER
from astroid import nodes
def register(unused_linter):
"""Register this module as PyLint plugin."""
def _transform(cls):
2015-02-15 06:49:07 -05:00
# fix the "no-member" error on instances of
# letsencrypt.acme.util.ImmutableMap subclasses (instance
# attributes are initialized dynamically based on __slots__)
2015-02-12 03:47:17 -05:00
# TODO: this is too broad and applies to any tested class...
if cls.slots() is not None:
2015-02-06 17:54:28 -05:00
for slot in cls.slots():
cls.locals[slot.value] = [nodes.EmptyNode()]
if cls.name == 'JSONObjectWithFields':
# _fields is magically introduced by JSONObjectWithFieldsMeta
cls.locals['_fields'] = [nodes.EmptyNode()]
2015-02-06 17:54:28 -05:00
MANAGER.register_transform(nodes.Class, _transform)