Issue 4845: warnings system and inspect module disagree about (original) (raw)

Issue4845

This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

This issue has been migrated to GitHub: https://github.com/python/cpython/issues/49095

classification

Title: warnings system and inspect module disagree about
Type: behavior Stage:
Components: Library (Lib) Versions:

process

Status: closed Resolution: duplicate
Dependencies: Superseder: broken pyc files View:1180193
Assigned To: Nosy List: amaury.forgeotdarc, exarkun
Priority: normal Keywords:

Created on 2009-01-05 16:00 by exarkun, last changed 2022-04-11 14:56 by admin. This issue is now closed.

Messages (4)
msg79159 - (view) Author: Jean-Paul Calderone (exarkun) * (Python committer) 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) * (Python committer) 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) * (Python committer) Date: 2009-01-05 16:55
This is a duplicate of . Does the patch there correct your problem?
msg79168 - (view) Author: Jean-Paul Calderone (exarkun) * (Python committer) 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.
History
Date User Action Args
2022-04-11 14:56:43 admin set github: 49095
2009-01-05 17:12:23 exarkun set messages: +
2009-01-05 16:55:35 amaury.forgeotdarc set status: open -> closedresolution: duplicatesuperseder: broken pyc filesmessages: + nosy: + amaury.forgeotdarc
2009-01-05 16:40:20 exarkun set messages: +
2009-01-05 16:00:39 exarkun create