Commit graph

159 commits

Author SHA1 Message Date
Yann Lanthony
e38f112c55 [core] fix memory management
* parent Nodes, Edges and Attributes to their respective models
* use weakrefs for those objects to avoid cyclic references
* add 'root' property on Attribute for parenting to List/GroupAttribute (parent still exists for Qt-style parenting)
* UI: update commands to match those changes
2017-11-07 20:18:17 +01:00
Fabien Castan
1e4f8f8a61 Add chunk notion for parallelization and implement specific updateInternals in CameraInit node
* Add chunk notion for parallelization
* Allows Node desc to implement custom updateInternals
* CameraInit node implement a specific updateInternals to update the
input image list
* FeatureExtraction, FeatureMatching, DepthMap, DepthMapFilter:
implement parallelization
2017-11-07 15:47:14 +01:00
Fabien Castan
1472baa477 [core] Graph.update fix: return when the update is disabled 2017-11-06 20:49:07 +01:00
Fabien Castan
0847a80bdc [core] Attribute: add isDefault and getPrimitiveValue 2017-11-06 20:46:59 +01:00
Fabien Castan
3a6473b78f [core] Attribute: getExportValue give the expression on output attributes
On output attributes, we export the desc value which contains the
expression and not the locally evaluated value.
2017-11-06 20:46:26 +01:00
Fabien Castan
ee7c0d0fd5 [core] Attribute: change isLink check for _applyExpr() 2017-11-06 20:41:29 +01:00
Yann Lanthony
95471e3e1b [graph] parent root Attributes to the Node
Guarantee Python ownership on objects when using Qt backend. Otherwise, the ownership could be transferred to QML when getting objects via a Slot, leading to their destruction at gargabe collection.
2017-11-02 11:12:14 +01:00
Fabien Castan
9d3f7252c1 [core] move process code into the node description
Now CommandLineNode contains the code to launch the command line as a
subprocess.
2017-10-31 21:28:44 +01:00
Fabien Castan
eec52e45e3 [core] implement _applyExpr for List/GroupAttributes 2017-10-31 20:55:56 +01:00
Yann Lanthony
fbebecd463 [graph] default uidIndex value for Attribute.uid method
This index only makes sense on ListAttributes and GroupAttributes
2017-10-31 19:50:29 +01:00
Yann Lanthony
16e8037fd7 [core] change Attributes declaration on Node description
Inputs and outputs Attributes are now declared in two separate lists
* no more isOutput field on Attribute description
* guarantee attributes order (was not the case in Python2 with class attributes)
* Attribute's name is now part of its description

Note: for now, input and output Attributes are still stored in a single model inside a Graph.
2017-10-31 19:47:32 +01:00
Fabien Castan
329dcba3a5 [core] add validator per attribute type 2017-10-31 16:50:31 +01:00
Fabien Castan
46f6865a25 [core] implement uid computation for ListAttributes and GroupAttributes 2017-10-31 10:46:32 +01:00
Yann Lanthony
f1fdd34b6c [graph] Attribute: robust UIDs for list of elements as value
Fix variable UIDs for non-exclusive choices, which could be affected by different string encodings
2017-10-30 19:23:50 +01:00
Yann Lanthony
7e2d37c819 [graph] fix Node status update from cache
updateStatusFromCache reset Node's status to NONE is status file does not exist, but does not save it on disk anymore.
2017-10-30 19:18:41 +01:00
Yann Lanthony
f051148d7a [graph] update cacheDir property on load
use property setter instead of changing the value internally
2017-10-30 17:08:25 +01:00
Yann Lanthony
5e4b26fa5e [graph] automatically trigger Graph updates
* update graph internals / node status when:
 - an input attribute is set
 - edges are added/removed
* add GraphModification context manager to group graph updates
2017-10-30 16:37:09 +01:00
Yann Lanthony
a0cdc65143 [core] add isInput property in Attribute desc 2017-10-30 16:21:51 +01:00
Yann Lanthony
b22c2b5a62 [graph] minor clean 2017-10-30 11:56:29 +01:00
Yann Lanthony
454b19ed0f [graph] dummy override of List/GroupAttribute uid methods
TODO: implement the real uid mechanism based on child attributes
2017-10-30 11:40:40 +01:00
Yann Lanthony
263ad6b4f5 [graph] remove uid on node, use name as unique identifier 2017-10-30 11:38:42 +01:00
Yann Lanthony
c1a0f43ee3 [graph] handle invalidation value for output attributes
output attributes UIDs are only based on the hash of their values without the cache folder
2017-10-30 11:35:07 +01:00
Fabien Castan
6f2ea4c8ef [core] support killed job
* add KILLED status
* register atexit function to update the status of running nodes to
KILLED
2017-10-27 11:24:12 +02:00
Fabien Castan
99ec7ab386 [doc] cosmetic 2017-10-26 18:47:27 +02:00
Fabien Castan
486d1081c8 [core] if rez is in env use it for command line creation 2017-10-26 18:47:01 +02:00
Fabien Castan
0b0ef01997 [core] add package and package version notion 2017-10-26 18:02:28 +02:00
Fabien Castan
40974149ee [core] cache directory per graph 2017-10-26 12:22:06 +02:00
Fabien Castan
e533c588dd [core] graph: add the notion of flowEdges and minMaxDepthPerNode
- flowEdges: Compute a transitive reduction of the graph to provide
node-level minimal dependencies to create an execution workflow for
renderfarm.
- minMaxDepthPerNode: compute the min and max depth per node
2017-10-24 20:22:39 +02:00
Fabien Castan
5d8771f07e [core] graph: retrieve nodes and edges at the same time 2017-10-24 20:19:24 +02:00
Yann Lanthony
61ade5bfa7 [graph] simplify methods related to Attribute values and links 2017-10-24 19:02:38 +02:00
Yann Lanthony
75ddea0329 [graph] expose Attribute's description type as a property 2017-10-23 19:55:33 +02:00
Yann Lanthony
05be8932ca [graph] fix call to property nodeType 2017-10-23 19:55:33 +02:00
Yann Lanthony
e42e04fd9d [graph] handle ListAttribute and GroupAttribute 2017-10-23 19:55:33 +02:00
Yann Lanthony
1e306f8408 rename Model to DictModel + augment API
* add "update" and "reset" methods
* core: no more default keyAttrName
* qt: if keyAttrName is empty, don't register items in internal dictionnary
2017-10-23 19:54:55 +02:00
Yann Lanthony
9c7d0c1b1c [desc] Attribute inherits BaseObject and expose members as properties
* also expose graph.Attribute's desc as a property
* introduce Variant in data structure backend API
2017-10-23 15:07:09 +02:00
Yann Lanthony
473141ebed [core] fix graph file loading
Only resolve attribute expressions (containing edges description) once all nodes have been created
2017-10-23 14:33:42 +02:00
Yann Lanthony
7f78fac119 [core] add Graph.attribute method
shortcut to get an attribute from its fullname
2017-10-19 17:45:02 +02:00
Yann Lanthony
925d2e71f6 [core] turn Node.nodeType into a property 2017-10-19 17:35:32 +02:00
Fabien Castan
48e3e4cfa1 Merge branch 'dev_processGraph' of https://github.com/alicevision/meshroom into dev_processGraph 2017-10-19 12:30:48 +02:00
Fabien Castan
76fad411a4 [core] support for non-exclusive choice params 2017-10-19 12:26:31 +02:00
Yann Lanthony
e49fdf457c [core] reset status of submitted nodes when a node computation fails
* catch Exception and stop graph execution
* report error using logging.error
* misc: fix indentation issues
2017-10-17 16:53:52 +02:00
Yann Lanthony
fd0c209837 [commands] only re-create out edges when undoing RemoveNode
"in" edges are automatically recreated since serialized as a connection expression in Node's dict representation and resolved by addNode
2017-10-17 16:32:57 +02:00
Fabien Castan
977a6b1507 [core] fix indent 2017-10-16 19:56:58 +02:00
Fabien Castan
6e270ad6a9 Use imageMatching node in the multiview pipeline 2017-10-16 18:18:35 +02:00
Yann Lanthony
ce6925117a [core] fix node depth computation 2017-10-16 15:30:13 +02:00
Fabien Castan
fd1b9f2cea Merge branch 'dev_processGraph' of https://github.com/alicevision/meshroom into dev_processGraph
Conflicts:
	meshroom/core/graph.py
2017-10-16 12:30:15 +02:00
Fabien Castan
0655d1b7d1 [bin] add toNode argument with partial name support 2017-10-16 12:24:02 +02:00
Fabien Castan
18d2e4bd39 [core] Node: add missing initialization in constructor 2017-10-16 12:24:02 +02:00
Fabien Castan
c291e0d6bf [core] process: change output formatting and add a timer 2017-10-16 12:24:01 +02:00
Fabien Castan
3ca3a794fe [core] graph: re-implement getDepth to return the correct value 2017-10-16 12:24:01 +02:00