diff options
author | Sylvain Thénault <sylvain.thenault@logilab.fr> | 2008-03-27 12:21:47 +0100 |
---|---|---|
committer | Sylvain Thénault <sylvain.thenault@logilab.fr> | 2008-03-27 12:21:47 +0100 |
commit | 04f60edd9450ca0dca27944a661fea16ab6ad089 (patch) | |
tree | bcf514c6c4f5ae5ee8521d6d12edf796a39a03b1 | |
parent | 6fbbe18d627d451fd25ea815a612298207c341af (diff) | |
download | pylint-git-04f60edd9450ca0dca27944a661fea16ab6ad089.tar.gz |
* typecheck: acquired-members option has been dropped in favor of the more
generic generated-members option. If the zope option is set, the behaviour
is now to add some default values to generated-members.
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | checkers/typecheck.py | 24 |
2 files changed, 17 insertions, 10 deletions
@@ -5,6 +5,9 @@ ChangeLog for PyLint * included Stefan Rank's patch to deal with 2.4 relative import * included Robert Kirkpatrick's tutorial and typos fixes * fix bug in reenabling message + * typecheck: acquired-members option has been dropped in favor of the more + generic generated-members option. If the zope option is set, the behaviour + is now to add some default values to generated-members. 2008-01-14 -- 0.14.0 * fix #3733: Messages (dis)appear depending on order of file names diff --git a/checkers/typecheck.py b/checkers/typecheck.py index c0cc6d082..cbcbddd2d 100644 --- a/checkers/typecheck.py +++ b/checkers/typecheck.py @@ -70,20 +70,25 @@ should not be checked (useful for classes with attributes dynamicaly set).'} ('zope', {'default' : False, 'type' : 'yn', 'metavar': '<y_or_n>', - 'help' : 'When zope mode is activated, consider the \ -acquired-members option to ignore access to some undefined attributes.'} + 'help' : 'When zope mode is activated, add a predefined set \ +of Zope acquired attributes to generated-members.'} ), - ('acquired-members', + ('generated-members', {'default' : ( 'REQUEST', 'acl_users', 'aq_parent'), 'type' : 'csv', 'metavar' : '<members names>', - 'help' : 'List of members which are usually get through \ -zope\'s acquisition mecanism and so shouldn\'t trigger E0201 when accessed \ -(need zope=yes to be considered).'} + 'help' : 'List of members which are set dynamically and \ +missed by pylint inference system, and so shouldn\'t trigger E0201 when \ +accessed.'} ), ) - + def __init__(self, linter=None): + BaseChecker.__init__(self, linter) + self.generated_members = list(self.config.generated_members) + if self.config.zope: + self.generated_members.extend(('REQUEST', 'acl_users', 'aq_parent')) + def visit_getattr(self, node): """check that the accessed attribute exists @@ -92,9 +97,8 @@ zope\'s acquisition mecanism and so shouldn\'t trigger E0201 when accessed \ function/method, super call and metaclasses are ignored """ - # if we are running in zope mode and this is an acquired attribute, - # stop there - if self.config.zope and node.attrname in self.config.acquired_members: + if node.attrname in self.config.generated_members: + # attribute is marked as generated, stop here return try: infered = list(node.expr.infer()) |