私が興味を持っているのは、可能な限り、推論された変数の実際の値を把握することです。たとえば、関数に渡される値または引数が何であるかを知りたい
arg = True
f(param=arg)
またはより複雑なケースでは、そのような情報をkwargs
kwargs = {'param': True}
f(**kwargs)
jedi.inference.compiled
などのクラスが含まれていることに気付き、そのCompiledValue
ようなスキームを使用して推論からそれらにアクセスすることができました
from jedi import Script
code = """
kwargs = {'param': True}
f(**kwargs)
"""
comp_vals = [infer._name.infer() for infer in Script(code).infer(2, 5)]
print([v.get_safe_value() for v in comp_vals[0].py__simple_getitem__('param')])
これにより価値を抽出できます[True]
が、プライベートメンバーにアクセスせずに、より普遍的な方法でそれを達成するためのより良い方法があるかどうかに興味があります.