The main goal of this patch is to turn `node.inputs[...]` and `node.outputs[...]` into
the main way to lookup sockets on a node. Currently, it's used for that sometimes,
but often it is not, because it does not work in all cases. More specifically, it does
not work when a node has multiple sockets with the same name but different
identifiers, which is relatively common.
This patch proposes to make the string lookup more convenient, more useful and
less prone to breaking after changes in Blender.
This is achieved by changing how the lookup works:
* First, it tries to find an available socket with an identifier that matches the given
key. This is checked first, it makes sure that every socket can be accessed by its
identifier. The identifier matching is currently disabled in some nodes where we
want to change identifiers soonish.
* If that didn't work, it tries to find an available socket with a matching name. This
is often convenient because it generally matches what can be seen in the UI.
Furthermore, it's also necessary to avoid breakage with old usages of this lookup
function.
* If both options above didn't work, it checks whether the given key matches any
socket name/identifier that the node used to have in the past, but has been
renamed for whatever reason. This mainly exists to avoid breaking scripts by certain
kinds of changes in the future. This is not included in this patch.
Note, previously, string lookup would also find unavailable sockets. This is disabled
now, because the way we handle unavailable sockets internally is likely to change.
Therefor, any use of unavailable sockets might break (unavailable != hidden). For
the time being, it's still possible to find unavailable sockets by iterating over all sockets.
This change has a small chance to break existing scripts because the behavior
changes for some inputs in some nodes. However, for the cases where the function
is used in practice, I don't really expect any breakage.
This patch also allows us to give a better answer to reports like #113106.
Pull Request: https://projects.blender.org/blender/blender/pulls/113984