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) * ![]() |
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 . 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. |
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 |