mirror of
https://github.com/alicevision/Meshroom.git
synced 2025-07-24 20:17:17 +02:00
[core][graphIO] Improve node type version handling
* Deserialization: Replace the logic that defaulted the node type version to "0.0" when unspecified, and assume that unspecified version on a node is targetting current node type version. * Serialization: Only serialize node type versions for which a version info is available. * Test suites: * Add helper context manager to manually override the version of a given node type. * Add new unit tests to cover version conflicts handling is various scenarios.
This commit is contained in:
parent
d9e59e330a
commit
87fbcee06d
7 changed files with 98 additions and 9 deletions
|
@ -326,12 +326,13 @@ class Graph(BaseObject):
|
|||
return graphContent
|
||||
|
||||
def _deserializeNode(self, nodeData: dict, nodeName: str, fromGraph: "Graph"):
|
||||
# Retrieve version from
|
||||
# Retrieve version info from:
|
||||
# 1. nodeData: node saved from a CompatibilityNode
|
||||
# 2. nodesVersion in file header: node saved from a Node
|
||||
# 3. fallback behavior: default to "0.0"
|
||||
# If unvailable, the "version" field will not be set in `nodeData`.
|
||||
if "version" not in nodeData:
|
||||
nodeData["version"] = fromGraph._getNodeTypeVersionFromHeader(nodeData["nodeType"], "0.0")
|
||||
if version := fromGraph._getNodeTypeVersionFromHeader(nodeData["nodeType"]):
|
||||
nodeData["version"] = version
|
||||
inTemplate = fromGraph.header.get(GraphIO.Keys.Template, False)
|
||||
node = nodeFactory(nodeData, nodeName, inTemplate=inTemplate)
|
||||
self._addNode(node, nodeName)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue