什么是;fakesource“;请参阅python pdb调试会话中的?

什么是;fakesource“;请参阅python pdb调试会话中的?,python,pdb,Python,Pdb,我试图深入研究我的Bokeh应用程序的内部,看看AjaxDataSource是如何在幕后工作的,以获得一些灵感,通过对必要基类的自定义扩展来为我的应用程序概括远程源代码 我能够在函数的前面插入大量的pdb,但是当钻取圆函数时,我达到了一个极限,调试器落在fakesource上,如下所示。下面是python源代码 def modify_doc1(doc): # get model data from Flask url = "http://localhost:8080/se

我试图深入研究我的Bokeh应用程序的内部,看看AjaxDataSource是如何在幕后工作的,以获得一些灵感,通过对必要基类的自定义扩展来为我的应用程序概括远程源代码

我能够在函数的前面插入大量的pdb,但是当钻取
函数时,我达到了一个极限,调试器落在fakesource上,如下所示。下面是python源代码

def modify_doc1(doc):

    # get model data from Flask
    url    = "http://localhost:8080/sendModelData/"
    pdb.set_trace()
    source = AjaxDataSource( data             = dict( x=[] , y=[] ) ,
                             data_url         = url       ,
                             polling_interval = 5000      ,
                             mode             = 'replace' ,
                             method           = 'GET'     )
    # plot the model data
    plot = figure( )
    plot.circle( 'x' , 'y' , source=source , size=2 )
    doc.add_root(column(plot))


> C:\MyBokehApp\flask_embedjsonroute.py(43)modify_doc1()
-> plot.circle( 'x' , 'y' , source=source , size=2 )
(Pdb) s
--Call--
> C:\MyBokehApp\fakesource(2)circle()
(Pdb) n
> C:\MyBokehApp\fakesource(3)circle()
(Pdb) n
> C:\MyBokehApp\fakesource(4)circle()
(Pdb) n
> C:\MyBokehApp\fakesource(5)circle()
(Pdb) n
--Return--

我很好奇这到底是在传达什么?我在html文件输入上下文中看到了
fakepath
,但是
fakesource
对于python源代码和调试器意味着什么?这是说我正在使用二进制实现或汇编代码还是什么?

在本例中,
plot.circle
是由
bokeh
库在运行时生成的函数。为了生成此函数,
bokeh
动态创建了一些源代码,并将其编译成python函数

编译此类源代码时,可以指定一个文件名来指示其来源。这允许
pdb
等工具加载该源代码,以便将其显示给您。在这种情况下,
bokeh
已将此文件名设置为
fakesource


(负责此操作的代码是
bokeh.plotting.helpers
如果您想亲自查看它)

很有意思,那么请确认我们在本资料中讨论的内容是否正确?不,我们不是。。但是它是
helpers.py
中的代码,将在运行时动态编译函数。啊哈,明白了,看起来它是在
func\u code=compile(func\u text,“fakesource”,“exec”)
中引入的。看起来我不知何故错误地搜索了bokeh源以查找fakepath,并在没有点击的情况下被误导>