_dispatchable#

_dispatchable(func=None, *, name=None, graphs='G', edge_attrs=None, node_attrs=None, preserve_edge_attrs=False, preserve_node_attrs=False, preserve_graph_attrs=False, preserve_all_attrs=False, mutates_input=False, returns_graph=False)[source]#

一个装饰器函数,用于将 func 函数的执行重定向到其后台实现。

此装饰器函数根据输入图的类型分派到不同的后台实现,并管理所有 backend_kwargs 。使用方式可以是以下任何一种装饰器形式:

  • @_dispatchable

  • @_dispatchable()

  • @_dispatchable(name="override_name")

  • @_dispatchable(graphs="graph_var_name")

  • @_dispatchable(edge_attrs="weight")

  • @_dispatchable(graphs={"G": 0, "H": 1}, edge_attrs={"weight": "default"})

    其中0和1表示图对象在签名函数中的位置。当 edge_attrs 是字典时,键是关键字名称,值是默认值。

Parameters:
funccallable, 可选

要装饰的函数。如果未提供 func ,则返回一个可用于稍后装饰函数的偏函数对象。如果提供了 func ,则返回一个新的可调用对象,该对象根据输入图的类型分派到后台算法。

namestr, 可选

用于分派算法的名称。如果未提供,则使用 func 的名称。 name 有助于避免名称冲突,因为所有分派的算法都存在于单个命名空间中。例如, tournament.is_strongly_connected 与标准的 nx.is_strongly_connected 存在名称冲突,因此我们使用了 @_dispatchable(name="tournament_is_strongly_connected")

graphsstr 或 dict 或 None, 默认 “G”

如果是字符串,则为图的参数名称,该参数必须是包装函数的第一个参数。如果算法需要多个图(或者图不是第一个参数),则提供一个以参数名称为键,参数位置为值的字典。例如, @_dispatchable(graphs={"G": 0, "auxiliary?": 4}) 表示函数的第0个参数 G 是一个必需的图,第4个参数 auxiliary? 是一个可选的图。要表示参数是一个图列表,请使用 "[graphs]" 。如果*没有*参数是NetworkX图(例如图生成器、读取器和转换函数),请使用 graphs=None

edge_attrsstr 或 dict, 可选

edge_attrs 包含有关边属性参数和这些边属性的默认值的信息。如果是字符串, edge_attrs 包含指示要包含在转换图中的单个边属性的函数参数名称。此属性的默认值为1。要表示参数是一个属性列表(所有属性的默认值为1),请使用例如 "[attrs]" 。如果是字典, edge_attrs 包含一个以参数名称为键的字典,值为默认值或字符串形式的参数名称,指示默认值。

node_attrsstr 或 dict, 可选

类似于 edge_attrs ,但用于节点属性。

preserve_edge_attrsbool 或 str 或 dict, 可选

对于布尔值,是否保留所有边属性。对于字符串,参数名称可能指示(通过 True 或可调用参数)在转换时是否应保留所有边属性。对于 {graph_name: {attr: default}} 的字典,指示要保留的预定义边属性(和默认值)。

preserve_node_attrsbool 或 str 或 dict, 可选

类似于 preserve_edge_attrs ,但用于节点属性。

preserve_graph_attrsbool 或 set

对于布尔值,是否保留所有图属性。对于集合,指示要保留图属性的输入图参数。

preserve_all_attrsbool

是否保留所有边、节点和图属性。这将覆盖所有其他preserve_*_attrs。

mutates_inputbool 或 dict, 默认 False

对于布尔值,函数是否修改输入图参数。对于 {arg_name: arg_pos} 的字典,指示输入图是否会被修改的参数, arg_name 可能以 "not " 开头以否定逻辑(例如,这用于 copy= 参数)。默认情况下,对于修改输入图的函数,分派不会将输入图转换为不同的后台。

returns_graphbool, 默认 False

函数是否可以返回或生成图对象。默认情况下,对于返回图的函数,分派不会将输入图转换为不同的后台。