-
-
Notifications
You must be signed in to change notification settings - Fork 276
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Progress context.clone
#960
Comments
I was thinking the same thing. Suggested edits: unsupported-membership-testReason: not-callable (1)Reason: invalid-sequence-indexReason: |
unsupported-membership-testStatus: I've updated #941 to fix the issue with |
@nelfin @hippo91 @Pierre-Sassoulas I was thinking again about this issue. At the moment we don't really get anywhere with it. There is #927 which itself is a good change, but it results in previously undetected errors becoming visible. @nelfin You have done a fantastic job already finding the original issue and debugging / fixing the new ones. Thanks for that! IMO opinion we should decide how to best continue now. The way I see it, it's unlikely that we find solutions for all of these issue (at least not in the next few days). Since #927 itself is correct, I suggest to merge it and accept the errors we'll introduce. After that #941 is probably a good followup as it fixes the What do you guys think? --
|
Just to be clear, I don't think we need to merge them. It's just that every time I come back to it, I have lost the overview about the current status 😅 Merging what's already done might help, since I would only need to keep track of what doesn't work currently. Tbh I would even be fine releasing astroid / pylint with the two remaining errors. I wouldn't prefer it, but sometimes we can't fix everything 🤷🏻♂️ |
Yeah, the new release don't need to be perfect, only better than the old one (often it's slower because we added checks). We have a blocker on pylint right now (pylint-dev/pylint#4412), but releasing astroid is possible I guess. |
Update for data = {
'abc': None,
}
data['abc'] = lambda: print("Callback called")
data['abc']() # false-positive `not-callable`
|
* Change Instance.getitem to return all inference results pylint-dev#960
I was looking at the MR to fix
context.clone
and noticed that I didn't really knew anymore what the current status is, which bugs exist, and which have been fixed.Lets try to gather the information here. Ideally that will make reviewing and working on the remaining issues a lot easier.
/CC: @hippo91, @nelfin, @Pierre-Sassoulas
Original MR
Fix strong references to mutable objects in context.clone #927
Idea: Fix cycles in
context.path
Fixes: #926
pylint
MR to update tests: pylint-dev/pylint#4325Issues
unsupported-membership-test
=> FixedReason:
property
members defined on a metaclass were not inferred as data descriptors in a class context on derived classes (e.g.EnumMeta
->Enum
->ExampleEnum(Enum)
)Ideas: related to brain_namedtuple_enum?
Open Issue: @property members defined in metaclasses of a base class are not correctly inferred #940
Open MR: Inferring property fields in a class context when metaclass is present #941
Status: Inferring property fields in a class context when metaclass is present #941 fixes the underlying issue, but in the specific case of
Enum
classes, the__members__
property reverts to being lUninferable
. This means thatunsupported-membership-test
will not be raised, but also any checks on the actual content of__members__
for subclass-Enum class definitions are not otherwise useful. I have a wip fix for brain_namedtuple_enum at https://github.com/nelfin/astroid/tree/fix/XXX-enum-class-members-brain but I hadn't progressed any further than that@nelfin: I've updated Inferring property fields in a class context when metaclass is present #941 to fix the issue with
Enum.__members__
and added a MR to pylint for the corresponding testsUpdate regression tests for PyCQA/astroid#940 pylint#4466
Assigned: -
not-callable
(1) => FixedReason:
delayed_assattr
allowed setting attributes on thebultins.object
class. Incorrect inference of a type in thecollections.OrderedDict.pop
method (imported bytyping
, hence some observations) meant thatobject.prev = None
andobject.next = None
had been "set". (see the sentinel__marker = object()
onOrderedDict
and its usage inpop
and__delitem__
)Open Issue: Delayed attribute assignment to object() may cause incorrect inference of instance attributes #945
Open MR: Update _can_assign_attr to return False for builtins.object #946
Open MR
pylint
: Add regression tests of instance attribute inference on builtins.object pylint#4348Fixed
pylint
issues: Regression with not-callable pylint#3595, not-callable: false positive due to conflit between "next" user-function and "collections.abc" pylint#3970, False positive E1102 when adding a non-callable attribute to object pylint#4221, False positive on E1102 (not-callable) for methods called prev or next pylint#4232Status: Fixed
Assigned: @nelfin
not-callable
(2)Not a regression with infer_stmts cannot infer multiple uses of the same AssignName #926 and Update _can_assign_attr to return False for builtins.object #946, that test case fails on current master without those changes.
Reason:
data['abc']
is inferred asNone
. The reason seems to be that the name lookup does only find the initial assignment. Thus the change tolambda: ...
isn't know during the check. A fix would probably require changing theinfer_name
andlookup
methods.Status: ?
Assigned: -
invalid-sequence-index
Reason:
instance_getitem
only returns the first call result. Since pylintsafe_infer
only sees one type it assumes that it can go ahead with theinvalid-sequence-index
checkStatus: No fix yet, need to discuss. I assume that we should "fix"/update
instance_getitem
to return all call results orUninferable
if there are multiple types? Shouldinstance_getitem
just returnmethod.infer_call_result(...)
instead ofnext(method.infer_call_result(...))
. Then pylint_check_sequence_index
should be updated to check that all inferred types are sequences (a lano-member
checking if any inferred type has that member)Assigned: -
no-member
=> FixedReason: Regression noticed after change in inference of
typing.Generic
Status: Fixed with Fix strong references to mutable objects in context.clone #927 and Update _can_assign_attr to return False for builtins.object #946
Open Issue: member lookup with Generic base class in 2.5.3 #942
MR for test cases: Add regression test for no-member with generic base class pylint#4471
Assigned: -
Related
pylint
MR with regression test cases (not yet fixed): Add regression tests for inference bug repros pylint#4387PRs with fixed test cases
#992
pylint-dev/pylint#4325
pylint-dev/pylint#4348
pylint-dev/pylint#4471
pylint-dev/pylint#4473
The text was updated successfully, but these errors were encountered: