INodeTypeForwarding

class omni.graph.core.INodeTypeForwarding

Bases: _INodeTypeForwarding

@brief Interface that creates a forward on a request for a node type to a different node type

There are a couple of different common use cases for needing a forward: - Node type gets renamed - Node type moves from one extension to another

The node type forward specifies the unique node type name so if extension omni.my.extension has a node whose type is specified as “MyNode” then the forward must be from “omni.my.extension.MyNode”.

The forwarding is version-based as well, where the version is a minimum number required for forwarding, the usual node version update mechanism not withstanding. For example, if you set up a forward from “omni.nodes.MyNode” version 2 to “omni.my_nodes.MyNode” version 3 then any larger version number is forwarded to the same location: - omni.nodes.MyNode(2) -> omni.my_nodes.MyNode(3) - omni.nodes.MyNode(3) -> omni.my_nodes.MyNode(3) - omni.nodes.MyNode(4) -> omni.my_nodes.MyNode(3)

The forwards can also have multiple versions forwarding to different locations, so if on top of the above forward you also add a forward from “omni.nodes.MyNode” version 3 to “omni.new_nodes.MyNode” version 4 then these become the example forward locations: - omni.nodes.MyNode(2) -> omni.my_nodes.MyNode(3) - omni.nodes.MyNode(3) -> omni.new_nodes.MyNode(4) - omni.nodes.MyNode(4) -> omni.new_nodes.MyNode(4)

Version numbers lower than the first forward are left as-is - omni.nodes.MyNode(1) -> omni.nodes.MyNode(1)

@note The usual mechanism of calling updateVersionNumber on a node is only applied after a forward so in the above

cases requesting omni.nodes.MyNode(2) does not call updateVersionNumber(1,2) on your omni.nodes.MyNode implementation.

Node type forwards are associative, so if A forwards to B and B forwards to C then when you request A you get C. Adding a new forward from omni.my_nodes.MyNode(3) to omni.new_nodes.MyNode(2) above yields this forwarding: - omni.nodes.MyNode(2) -> omni.my_nodes.MyNode(3) -> omni.new_nodes.MyNode(2) - omni.nodes.MyNode(3) -> omni.new_nodes.MyNode(4) - omni.nodes.MyNode(4) -> omni.new_nodes.MyNode(4)

Methods

__init__(*args, **kwargs)

Overloaded function.

define_forward(self, forward_name, ...)

@brief Define a new node type forward.

find_forward(forward_name, forward_version)

Find a node type name replacement corresponding to the given node type forward name and version.

get_forwarding()

Get the list of available node type forwarding.

remove_forward(self, forward_name, ...)

@brief Remove an existing node type forward.

remove_forwarded_type(self, referenced_name, ...)

@brief Remove forwards referencing a given node type name.

Attributes

forward_count

__init__(*args, **kwargs)

Overloaded function.

  1. __init__(self: omni.graph.core._omni_graph_core.INodeTypeForwarding, arg0: omni.core._core.IObject) -> None

  2. __init__(self: omni.graph.core._omni_graph_core.INodeTypeForwarding) -> None

define_forward(self: omni.graph.core._omni_graph_core.INodeTypeForwarding, forward_name: str, forward_version: int, replacement_name: str, replacement_version: int, replacement_extension_id: str) bool

@brief Define a new node type forward. It is allowed to have the same forwardName to be defined more than once, however the “forwardVersion” must be different from any existing ones. Later “forwardVersion” numbers will supersede earlier ones in this case. For example if you have these two forwards set up: - OldNode,1 -> BetterNode,1,omni.better.extension - OldNode,2 -> MuchBetterNode,1,omni.much_better.extension

then when version 1 of “OldNode” is requested it will treat it as if you requested “BetterNode”, but when versions 2 or later are requested it will instead treat it as if you requested “MuchBetterNode”. These can be chained together: - OldNode,1 -> BetterNode,1,omni.better.extension - BetterNode,1 -> MuchBetterNode,1,omni.much_better.extension

@param[in] forwardName Name to be replaced @param[in] forwardVersion The first version of the forward name to be replaced @param[in] replacementName Node type name that replaces the forwarded name @param[in] replacementVersion Version of the node type that replaces the forwarded name @param[in] extensionId Extension ID in which the replacement node type can be found @return false if there was already an forward with the given name and initial version number

static find_forward(forward_name: str, forward_version: int) tuple

Find a node type name replacement corresponding to the given node type forward name and version.

Parameters
  • forward_name – Name of the node type forward to look up

  • forward_version – Version number of the node type forward being looked up

Returns

Matching forward as (new_name, new_version, new_extension) if one was found, else None.

e.g. find_forward(“OldNode”, 2) -> (“NewNode”, 1, “omni.my.extension”)

Return type

tuple[str,int,str] | None

Raises

ValueError – if there was no forward for the given name/version combination

static get_forwarding() object

Get the list of available node type forwarding.

Returns

Dictionary of all defined forwarding as

(forwarded_name, forwarded_version): (new_name, new_version, new_extension) if it succeeded, else None. e.g. {(“OldNode”, 2): (“NewNode”, 1, “omni.my.extension”)}

Return type

dict[tuple[str,str], tuple[str,int,str]] | None

Raises

ValueError – if retrieval of the forwarding failed

remove_forward(self: omni.graph.core._omni_graph_core.INodeTypeForwarding, forward_name: str, forward_version: int) bool

@brief Remove an existing node type forward. Since an forwardName + forwardVersion combination is unique there is no need to pass in the replacement information. Only the forward with the matching version is removed. Any others with the same name remain untouched.

@param[in] forwardName Forward to be removed @param[in] forwardVersion The version at which the forward is to be removed @return false if there was already an forward with the given name and initial version number

remove_forwarded_type(self: omni.graph.core._omni_graph_core.INodeTypeForwarding, referenced_name: str, referenced_version: int) int

@brief Remove forwards referencing a given node type name.

@param[in] referencedName Forward to be removed @param[in] referencedVersion The version at which the forward is to be removed @return number of forwards to the given type that were removed