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.

classification
Title: Call not visited in ast.NodeTransformer
Type: behavior Stage:
Components: Library (Lib) Versions: Python 3.10, Python 3.9, Python 3.8, Python 3.7
process
Status: open Resolution:
Dependencies: Superseder:
Assigned To: Nosy List: BTaskaya, davidcastells
Priority: normal Keywords:

Created on 2022-02-11 13:29 by davidcastells, last changed 2022-04-11 14:59 by admin.

Messages (2)
msg413069 - (view) Author: David Castells-Rufas (davidcastells) Date: 2022-02-11 13:29
If I create a class derived from ast.NodeTransformer and implement the visit_Call.
When run on the below code, the visit_Call function is only called once (for the print function, and not for ord). It looks like calls in function arguments are ignored.

def main():
    print(ord('A'))


On the other hand, on the following code it correctly visits both functions (print and ord).

def main():
    c = org('A')
    print(c)
msg413070 - (view) Author: Batuhan Taskaya (BTaskaya) * (Python committer) Date: 2022-02-11 13:40
> It looks like calls in function arguments are ignored.

Please share a small, self-contained reproducer.

From what I can assume by this message, the problem is that you are not calling self.generic_visit(node) on the first call you are handling. If you don't call visit/generic_visit on the rood node that you are handling (print(ord('A')), then it will never visit ord('A') in a standalone fashion.
History
Date User Action Args
2022-04-11 14:59:56adminsetgithub: 90875
2022-02-11 13:40:39BTaskayasetnosy: + BTaskaya
messages: + msg413070
2022-02-11 13:29:14davidcastellscreate