Description
Describe the bug
It would seem that the following error is encountered when importing torchvision
or transformers.models.distilbert.DistilBertModel
(which basically imports torch._dynamo
):
No source for code: '/private/var/folders/lh/yz1yvyvx5nd2vqq6t9t3qbmw0000gn/T/tmpavruueea/_remote_module_non_scriptable.py'.
To Reproduce
How can we reproduce the problem? Please be specific. Don't link to a failing CI job. Answer the questions below:
- What version of Python are you using? Python 3.13.1
- What version of coverage.py shows the problem? 7.6.10
- What versions of what packages do you have installed?
torch==2.6.0
,torchvision==0.2.1
,transformers==4.48.2
Install the latest versions of these packages: pip install torch torchvision transformers
.
Create 2 files with these contents:
foo.py
def say_hello():
return "hello"
test_foo.py
from foo import say_hello
def test_foo():
assert say_hello() == "hello"
Now, if we run the following code, it's all good ✅:
coverage run test_foo.py
coverage report
However, when adding any the following imports test_foo.py:
import torchvision
from transformers.models.distilbert import DistilBertModel
import torch._dynamo
... then coverage report
results in the "No source for code: ..." error (status code of 1). ❌
Expected behavior
In this example, the mere imports of the given modules are enough to cause the issue.
Additional context
It was discovered in bazel-contrib/rules_python#2575.
It can be solved by having the --ignore-errors
flag as was recommended by the author in https://stackoverflow.com/a/2401206.
However, it's still worth documenting this weird behavior.
Activity
bazel coverage
fails when using certain Python packages bazel-contrib/rules_python#2575[-]No source for code when dealing with PyTorch's Dynamo[/-][+]"No source for code" error when dealing with PyTorch's Dynamo[/+]nedbat commentedon Feb 1, 2025
Thanks for the reproducible report. It seems that torch creates and executes a file in your temp directory.
Some other ways to avoid the message:
I'm wondering if there's something coverage could do for this as a default.
nedbat commentedon Feb 2, 2025
I'm not sure what you want added to the documentation. This behavior is due to an intricacy of PyTorch.
BurnzZ commentedon Feb 2, 2025
Thanks for checking it out @nedbat 🎉
Indeed. Though I think it might be useful if there was a hint about the error, since
No source for code: ...
isn't clear upfront what it means. Perhaps another log msg pointing to https://coverage.readthedocs.io/en/7.6.10/cmd.html#reporting?nedbat commentedon Feb 2, 2025
I see what you mean. The message could be longer: "Couldn't find source for code observed at ...." or something? I'm not coming up with a one-line message that explains it.
BurnzZ commentedon Feb 4, 2025
Yeah, expanding it would be great. I think it would be clearer if we change " ... code observed at ... " into "... code executed ...".
Would this technically still be correct?
nedbat commentedon Feb 4, 2025
"Source file no longer available. Was executed at ..." ?
BurnzZ commentedon Feb 4, 2025
+1 much better.
Fix: Bugs caused by incompatibility between PyTorch and Coverage.
Fix: Bugs caused by incompatibility between PyTorch and Coverage.