Commit graph

224 commits

Author SHA1 Message Date
Yann Lanthony
f6a42cb86e
[ui] Nodes status monitoring simplification
* store status file last modification time on NodeChunk
* ChunksMonitor: don't stop the underlying thread when changing chunks, only modify the list of monitored files + use a mutex for thread-safety
2019-07-24 18:02:29 +02:00
Fabien Castan
cc476d40ed
Merge pull request #464 from alicevision/dev_texturing_multiband
Multi-band blending texturing
2019-06-21 00:14:46 +02:00
Fabien Castan
889f7bc484
Merge pull request #454 from alicevision/dev_rangeBlockSize
Make range complete block size accessible to command line nodes
2019-06-07 12:25:02 +02:00
cclauss
09b28bbc2a
if v: 2019-05-14 12:30:37 +02:00
Clara
9f928e1ea0 [mesh] Texturing: set parameters for multi-band blending
Use only 3 parameters : useScore, multiBandDownscale, multiBandNbContrib
2019-05-13 17:04:26 +02:00
Yann Lanthony
275c4133fe
[core] make range complete block size accessible to command line nodes
* range 'blockSize' is now the complete block size (equal for all iterations)
* command lines nodes can use this complete block size to compute the iteration number on software side; delegate range cropping for last iteration to software.
* 'effectiveBlockSize' is still accessible through 'rangeEffectiveBlockSize' parameter
2019-04-26 10:49:47 +02:00
cclauss
d0c5a5ffb5
Avoid issue with use ==/!= to compare str, bytes, and int literals
[flake8](http://flake8.pycqa.org) testing of https://github.com/alicevision/meshroom on Python 3.7.1

$ __flake8 . --count --select=E9,F63,F72,F82 --show-source --statistics__
```
./meshroom/core/node.py:461:34: F632 use ==/!= to compare str, bytes, and int literals
            if v is not None and v is not '':
                                 ^
./meshroom/core/node.py:480:34: F632 use ==/!= to compare str, bytes, and int literals
            if v is not None and v is not '':
                                 ^
2     F632 use ==/!= to compare str, bytes, and int literals
2
```
2019-04-18 10:30:57 +02:00
Fabien Castan
c88c78b476
[cxFreeze] add comment 2019-04-11 11:40:08 +02:00
Fabien Castan
1c98e2afde [cxFreeze] add import of encodings to embed them in packaging 2019-04-08 10:17:13 +02:00
Yann Lanthony
0ab7d45607
[desc] allow List/GroupAttribute to be marked as advanced parameters 2019-03-26 12:09:16 +01:00
Yann Lanthony
1a22fc8ae8 [core] add GroupAttribute.childAttribute method
* easier access to child attributes
* callable from QML
2019-03-01 17:22:57 +01:00
Yann Lanthony
2a0b695ea7 [core] more thorough compatibility issues detection
* add 'matchDescription' method on desc.Attribute.
* desc.ListAttribute/desc.GroupAttribute: 'matchDescription' ensure that value perfectly match element/group description. Enable recursive checking for child attributes.
* nodeFactory: detect DescriptionConflicts in pre-process pass by checking that serialized node's attributes perfectly match their descriptions
* CompatibilityNode.attributeDescFromNameAttribute: consider link expressions as valid values
* test_compatibility: more complete description conflicts unit testing
2019-02-01 16:03:21 +01:00
Yann Lanthony
905ed48cf9 [core] fix flake8 error
remove type annotations
2019-01-30 09:36:02 +01:00
Yann Lanthony
026cd36ff4 [core.graph] update graph after load
Ensure graph internal data is updated after loading.
2019-01-29 16:04:39 +01:00
Yann Lanthony
34ca607261 [ui] GraphEditor : add "Clear Pending Status" tool at Graph level
* allow to clear status of all submitted nodes in the graph
* unify wording
2019-01-07 10:47:25 +01:00
Yann Lanthony
b09068dc68 [ui] Node: add "Clear Data From Here" menu entry + confirmation dialog 2019-01-07 10:47:25 +01:00
Yann Lanthony
6ac4a9d712 [desc][qt] use QVariantList for list-type properties
* required for PySide2 > 5.11.1 (and compatible with 5.11.1)
* AttributeItemDelegate: test for list length to determine whether to create a slider component (if range is set to None on Python side, it will be an empty list on the QML/JS side)
2019-01-04 17:30:38 +01:00
Yann Lanthony
8ada834447 [core] Attribute: new 'advanced' notion on parameters 2018-12-20 11:17:23 +01:00
Yann Lanthony
bc9abe3b07 Merge remote-tracking branch 'origin/develop' into dev_viewer3D_multi 2018-12-10 15:26:19 +01:00
Grégoire De Lillo
312e21c03a [core] BoolParam add int cast to handle string values ('0', '1') 2018-12-07 11:25:25 +01:00
Yann Lanthony
e80bdd1161 [core] Node: introduce 'globalStatus'
* add Node.globalStatus property: indicates the status of a Node based on the  status of its own NodeChunks
* remove obsolete 'statusNames' and 'getStatus' methods
2018-11-19 15:17:36 +01:00
Yann Lanthony
d2aba176dc [core] Node: add 'label' property
high-level label for nodes, without '_' and including index if > 1
2018-11-19 15:17:36 +01:00
Yann Lanthony
3dad1e3aac [core] Attribute: expose 'node' and 'linkParam' as properties 2018-11-19 15:17:36 +01:00
Yann Lanthony
400835d8f8 [core] Attribute: expose 'fullName' as property 2018-11-19 15:17:36 +01:00
cclauss
ca658ed745
Use feature detection instead of version detection
Python porting best practice is to Use feature detection instead of version detection
* https://docs.python.org/3/howto/pyporting.html#use-feature-detection-instead-of-version-detection
2018-08-11 08:29:44 +02:00
Yann Lanthony
fa631d8e7a [core] core: use pyCompatibility basestring instead of str 2018-07-28 13:09:16 +02:00
Yann Lanthony
41ea5a5423 [core][graph] store duplication result in an OrderedDict
allows to keep the order in which duplicated nodes were created
2018-07-27 19:05:25 +02:00
Yann Lanthony
830173047c [ui][commands] Duplicate/UpgradeNode: return created Node instances 2018-07-26 22:43:48 +02:00
Yann Lanthony
62dbf7df95 [core][io] return file features as tuple 2018-07-26 18:01:11 +02:00
Yann Lanthony
e2155ba962 [core][io] store nodes position in graph file
* increment file minor version (no incompatibility)
* nodeFactory: reload file position if available
2018-07-26 18:01:11 +02:00
Yann Lanthony
dfb0934ef4 [core] add node position property
Nodes can now be placed at a certain position
* add Position namedtuple
* expose 'position', 'x' and 'y' properties on BaseNode
2018-07-26 18:01:10 +02:00
Yann Lanthony
5843c36435 [core][io] add io version 'Features' mechanism
* centralize available features based on file version in 'IO' class
* add IO.Features enum
2018-07-26 18:01:10 +02:00
Yann Lanthony
ec08de812e [core][io] move file keys to an inner 'Keys' class 2018-07-26 17:45:03 +02:00
Fabien Castan
bb0155ba42
Merge pull request #150 from alicevision/dev_versionCompatibility
Introduce version compatibility handling
2018-07-26 12:50:15 +02:00
Yann Lanthony
93dd055f72 [clean] fix variable names and typos
* node_factory & attribute_factory to camelCase
* fix depths variable in updateNodesTopologicalData
2018-07-26 12:11:43 +02:00
Yann Lanthony
e0ad807d84 [core] add Version class to help manipulate version names 2018-07-25 11:22:31 +02:00
Yann Lanthony
20be401110 [core] CompatibilityNode: use original serialized inputs if not in graph
renamed 'actualInputs' property to 'inputs', which returns the serialized inputs depending on whether the node belongs to a graph or not
2018-07-24 17:28:14 +02:00
Yann Lanthony
6bb70895f3 [core] remove ABCMeta metaclass for Python 2 compatibility
mixing ABCMeta and QObject inheritance is problematic when using Python 2
2018-07-24 15:06:15 +02:00
Fabien Castan
9e06fd9661 [core] generic functions to create "writing" filepath and rename the file
* only try to remove the file on windows
* only except for specific exception
* use the same functions to create the statistics file
2018-07-24 14:32:24 +02:00
Fabien Castan
c6531bcc7b [core] multiple trials to replace the status file to avoid file conflicts on windows
On Windows, attempting to remove a file that is in use causes an exception to be raised. So we may need multiple trials.
2018-07-21 14:50:07 +02:00
Yann Lanthony
dd3d9cd54b [core][ui] add upgradeAllNodes methods
+ check if node is upgradable in UpgradeNodeCommand
2018-07-20 17:55:30 +02:00
Yann Lanthony
8679fd8bf7 [core] maintain a model with CompatibilityNodes on topology change 2018-07-20 17:52:30 +02:00
Yann Lanthony
3417f58335 [graph] add GraphModification inside upgradeNode method 2018-07-20 15:35:55 +02:00
Yann Lanthony
f5820b3eb1 [graph] expose fileReleaseVersion as property
+ clear header in Graph.clear method
2018-07-20 15:30:27 +02:00
Yann Lanthony
ae716602ab [core] update nodes topological data after nodes status update
evaluate nodes computability requires up-to-date status
2018-07-19 16:08:00 +02:00
Yann Lanthony
5897dc13b6 [core] verify chunk hosts a subprocess before killing it
a chunk can be marked as "RUNNING" without hosting a subprocess, if a node is duplicated in the graph
2018-07-19 13:50:45 +02:00
Yann Lanthony
f5d11a8a7a [node] CompatibilityNode: expose additional properties
* add 'issueDetails' to get a comprehensive text about the issue
2018-07-19 13:50:45 +02:00
Yann Lanthony
30cd8001fd [core][graph] update nodes computability on topology change
CompatibilityNodes introduce a new notion of computability per node.
An uncomputed (and therefore uncomputable) CompatibilityNode blocks the computation of all its successor.

* update nodes computability on topology change (in addition to min/max depth)
* evaluate leaves computability to determine if the whole graph can be processed
2018-07-19 13:50:45 +02:00
Yann Lanthony
89dd55f43b [core] dfsToProcess: stop branch visit when discovering a computed node 2018-07-19 13:50:45 +02:00
Yann Lanthony
ab4e82aa88 [core] add GraphVisitMessage exceptions mecanism
allow to stop branch or graph visit by throwing specific exceptions in visitor callbacks
2018-07-19 13:50:45 +02:00