Pytorch: [Minor Bug] Pylint E1101 Module 'torch' has no 'from_numpy' member

Created on 8 Feb 2017  ·  14Comments  ·  Source: pytorch/pytorch

Very minor but worth mentioning.

Pylint isn't picking up that torch has the member function from_numpy. It's because torch.from_numpy is actually torch._C.from_numpy as far as Pylint is concerned.

According to this stackoverflow thread numpy also suffers from this problem.

For reference, you can have Pylint ignore these by wrapping "problematic" calls with the following comments.

# pylint: disable=E1101
tensor = torch.from_numpy(np_array)
# pylint: enable=E1101
todo

Most helpful comment

generated-members=numpy.,torch.

For those using vscode, add to user settings

"python.linting.pylintArgs": [
"--errors-only",
"--generated-members=numpy.* ,torch.* ,cv2.* , cv.*"
]

errors-only is not realted to the issue but is useful to supres pep 8/formatting "errors" if you want to

All 14 comments

the workaround seems pretty ugly. is there no way to tell pylint to filter certain errors?

I may add that pylint (1.6.5) does not pick up cat, topk and masked_select as member functions either.

i dont think we'll be fixing this. (i dont know if there's a way to do it either).

You can suppress all such messages for these modules by editing the appropriate lines of .pylintrc to be like this:

[MASTER]
extension-pkg-whitelist=numpy,torch

[TYPECHECK]
ignored-modules=numpy,torch
ignored-classes=numpy,torch

mypy seems to be able to pick up these members.

Instead of ignoring, you can now do:

[TYPECHECK]

# List of members which are set dynamically and missed by pylint inference
# system, and so shouldn't trigger E1101 when accessed. Python regular
# expressions are accepted.
generated-members=numpy.*,torch.*

generated-members=numpy.,torch.

For those using vscode, add to user settings

"python.linting.pylintArgs": [
"--errors-only",
"--generated-members=numpy.* ,torch.* ,cv2.* , cv.*"
]

errors-only is not realted to the issue but is useful to supres pep 8/formatting "errors" if you want to

It would be nice to allow the inspection of the module, also for auto-completion. Maybe one could change from torch._C import * to from torch._C import from_numpy, ...?

Maybe one could change from torch._C import * to from torch._C import from_numpy, ...?

This seems simple enough. Are we certain this is the way to go?
I thought we'd need type hints (which would be way harder to convince people to use).
Should we open another issue to discuss @moi90's solution?

generated-members=numpy._,torch._

For those using vscode, add to user settings

"python.linting.pylintArgs": [
"--errors-only",
"--generated-members=numpy.* ,torch.* ,cv2.* , cv.*"
]

errors-only is not realted to the issue but is useful to supres pep 8/formatting "errors" if you want to

You saved part of my life! hahahaha

On VS code:
Adding "python.linting.enabled": false also worked in this case.

Disabling linting all together (as suggested by @miranthajayatilake ) is not a good solution. Seems pylinthas issues with pytorch but for me flake8 works well.
In VS Code, one can select flake8 by Ctrl + Shift + P ->Select linter -> flake8.

i dont think we'll be fixing this. (i dont know if there's a way to do it either).

Closing issues by "I don't know how to hence not going to" is very naughty.

generated-members=numpy._,torch._

For those using vscode, add to user settings

"python.linting.pylintArgs": [
"--errors-only",
"--generated-members=numpy.* ,torch.* ,cv2.* , cv.*"
]

errors-only is not realted to the issue but is useful to supres pep 8/formatting "errors" if you want to

If you're using Coc, you can use put the same rule in your coc-settings.json.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

eliabruni picture eliabruni  ·  3Comments

NgPDat picture NgPDat  ·  3Comments

Coderx7 picture Coderx7  ·  3Comments

szagoruyko picture szagoruyko  ·  3Comments

bartolsthoorn picture bartolsthoorn  ·  3Comments