Issue4845
Created on 2009-01-05 16:00 by exarkun, last changed 2009-01-05 17:12 by exarkun.
|
msg79159 - (view) |
Author: Jean-Paul Calderone (exarkun) |
Date: 2009-01-05 16:00 |
|
Here's a transcript demonstrating the disagreement:
exarkun@charm:~$ mkdir warningexample
exarkun@charm:~$ cd warningexample/
exarkun@charm:~/warningexample$ mkdir foo
exarkun@charm:~/warningexample$ touch foo/__init__.py
exarkun@charm:~/warningexample$ cat > foo/bar.py
import warnings
def foo():
warnings.warn("foo")
exarkun@charm:~/warningexample$ python -c 'import foo.bar'
exarkun@charm:~/warningexample$ mv foo bar
exarkun@charm:~/warningexample$ python -c 'import bar.bar; bar.bar.foo()'
bar/bar.py:3: UserWarning: foo
warnings.warn("foo")
exarkun@charm:~/warningexample$ python -c 'import bar.bar, inspect;
print inspect.getabsfile(bar.bar.foo)'
/home/exarkun/warningexample/foo/bar.py
exarkun@charm:~/warningexample$
Notice that the warning is emitted for the file bar/bar.py but the
inspect module claims that the function which emitted the warning is
defined in /home/exarkun/warningexample/foo/bar.py. It seems that the
warning system has somehow noticed that the .pyc file has the wrong
source file listed and has figured out the correct file name, whereas
the inspect module is blindly following the contents of the .pyc file.
It would be great if the inspect module were at least as good at
figuring out filenames as the warnings system.
|
|
msg79161 - (view) |
Author: Jean-Paul Calderone (exarkun) |
Date: 2009-01-05 16:40 |
|
Perhaps even more disconcerting is the disagreement between
inspect.getabsfile(f) and inspect.getabsfile(inspect.getmodule(f)). The
latter agrees with the warnings system, unlike the former which just
looks at the filename in the .pyc.
|
|
msg79164 - (view) |
Author: Amaury Forgeot d'Arc (amaury.forgeotdarc) |
Date: 2009-01-05 16:55 |
|
This is a duplicate of issue1180193. Does the patch there correct your
problem?
|
|
msg79168 - (view) |
Author: Jean-Paul Calderone (exarkun) |
Date: 2009-01-05 17:12 |
|
After updating the patch there so that it can be applied, it does seem
to address my issue. I added a comment there.
|
|
| Date |
User |
Action |
Args |
| 2009-01-05 17:12:23 | exarkun | set | messages:
+ msg79168 |
| 2009-01-05 16:55:35 | amaury.forgeotdarc | set | status: open -> closed resolution: duplicate superseder: broken pyc files messages:
+ msg79164 nosy:
+ amaury.forgeotdarc |
| 2009-01-05 16:40:20 | exarkun | set | messages:
+ msg79161 |
| 2009-01-05 16:00:39 | exarkun | create | |
|