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