[Bf-blender-cvs] [46f5cf2b418] functions: remove code that is not used currently
Jacques Lucke
noreply at git.blender.org
Wed Mar 20 13:04:19 CET 2019
Commit: 46f5cf2b418bd722b78e2006e1a33fe7917ccbf0
Author: Jacques Lucke
Date: Wed Mar 20 12:53:04 2019 +0100
Branches: functions
https://developer.blender.org/rB46f5cf2b418bd722b78e2006e1a33fe7917ccbf0
remove code that is not used currently
===================================================================
D release/scripts/startup/function_nodes/inferencer.py
D release/scripts/startup/function_nodes/test_inferencer.py
M release/scripts/startup/function_nodes/update_sockets.py
M source/blender/functions/CMakeLists.txt
M source/blender/functions/FN_core.hpp
D source/blender/functions/core/type_inferencing.cpp
D source/blender/functions/core/type_inferencing.hpp
D source/blender/functions/core/type_relations.cpp
D source/blender/functions/core/type_relations.hpp
===================================================================
diff --git a/release/scripts/startup/function_nodes/inferencer.py b/release/scripts/startup/function_nodes/inferencer.py
deleted file mode 100644
index e720f1fb179..00000000000
--- a/release/scripts/startup/function_nodes/inferencer.py
+++ /dev/null
@@ -1,171 +0,0 @@
-from . sockets import type_infos
-
-class Inferencer:
- def __init__(self):
- self.finalized_ids = dict()
- self.constraints = set()
- self.decisions = dict()
-
- def insert_final_type(self, id, data_type):
- self.finalized_ids[id] = data_type
-
- def insert_equality_constraint(self, ids, decision_id=None):
- constraint = EqualityConstraint(ids, decision_id)
- self.constraints.add(constraint)
-
- def insert_list_constraint(self, list_ids, base_ids=tuple(), decision_id=None):
- constraint = ListConstraint(list_ids, base_ids, decision_id)
- self.constraints.add(constraint)
-
- def insert_union_constraint(self, ids, allowed_types, decision_id=None):
- constraint = UnionConstraint(ids, decision_id, allowed_types)
- self.constraints.add(constraint)
-
- def insert_list_or_base_constraint(self, id, base_type, decision_id=None):
- constraint = ListOrBaseConstraint(id, decision_id, base_type)
- self.constraints.add(constraint)
-
- def finalize_id(self, id, data_type):
- if id in self.finalized_ids:
- if self.finalized_ids[id] != data_type:
- msg = f"Conflicting type for {id}: {self.finalized_ids[id]} vs. {data_type}"
- raise ConflictingTypesError(msg)
- else:
- self.finalized_ids[id] = data_type
-
- def finalize_ids(self, ids, data_type):
- for id in ids:
- self.finalize_id(id, data_type)
-
- def make_decision(self, decision_id, value):
- if decision_id is None:
- return
- assert decision_id not in self.decisions
- self.decisions[decision_id] = value
-
- def inference(self):
- '''
- Tries to find a solution for all constraints.
- Raises InferencingError when it is impossible
- to find a solutions.
- Returns True, when every id has been mapped to
- a data type. Otherwise False.
- '''
- while len(self.constraints) > 0:
- handled_constraints = set()
-
- for constraint in self.constraints:
- if constraint.try_finalize(self.finalized_ids, self.finalize_ids, self.make_decision):
- handled_constraints.add(constraint)
-
- if len(handled_constraints) == 0:
- return False
-
- self.constraints -= handled_constraints
-
- return True
-
- def get_final_type(self, id):
- return self.finalized_ids.get(id, None)
-
- def get_decisions(self):
- return self.decisions
-
-
-class Constraint:
- def try_finalize(self, finalized_ids, do_finalize, make_decision):
- raise NotImplementedError()
-
-class EqualityConstraint(Constraint):
- def __init__(self, ids, decision_id):
- self.ids = set(ids)
- self.decision_id = decision_id
-
- def try_finalize(self, finalized_ids, finalize_do, make_decision):
- for id in self.ids:
- if id in finalized_ids:
- data_type = finalized_ids[id]
- finalize_do(self.ids, data_type)
- make_decision(self.decision_id, data_type)
- return True
- return False
-
-class UnionConstraint(Constraint):
- def __init__(self, ids, decision_id, allowed_types):
- self.ids = set(ids)
- self.decision_id = decision_id
- self.allowed_types = set(allowed_types)
-
- def try_finalize(self, finalized_ids, finalize_do, make_decision):
- for id in self.ids:
- if id in finalized_ids:
- data_type = finalized_ids[id]
- if data_type not in self.allowed_types:
- raise InferencingError()
- finalize_do(self.ids, data_type)
- make_decision(self.decision_id, data_type)
- return True
- return False
-
-class ListConstraint(Constraint):
- def __init__(self, list_ids, base_ids, decision_id):
- self.list_ids = set(list_ids)
- self.base_ids = set(base_ids)
- self.decision_id = decision_id
-
- def try_finalize(self, finalized_ids, finalize_do, make_decision):
- for id in self.list_ids:
- if id in finalized_ids:
- list_type = finalized_ids[id]
- if not type_infos.is_list(list_type):
- raise NoListTypeError()
- base_type = type_infos.to_base(list_type)
- finalize_do(self.list_ids, list_type)
- finalize_do(self.base_ids, base_type)
- make_decision(self.decision_id, base_type)
- return True
- for id in self.base_ids:
- if id in finalized_ids:
- base_type = finalized_ids[id]
- if not type_infos.is_base(base_type):
- raise NoBaseTypeError()
- list_type = type_infos.to_list(base_type)
- finalize_do(self.base_ids, base_type)
- finalize_do(self.list_ids, list_type)
- make_decision(self.decision_id, base_type)
- return True
- return False
-
-class ListOrBaseConstraint(Constraint):
- def __init__(self, id, decision_id, base_type):
- self.id = id
- self.decision_id = decision_id
- self.base_type = base_type
- self.list_type = type_infos.to_list(base_type)
-
- def try_finalize(self, finalized_ids, finalize_do, make_decision):
- if self.id in finalized_ids:
- data_type = finalized_ids[self.id]
- if data_type == self.base_type:
- make_decision(self.decision_id, "BASE")
- return True
- elif data_type == self.list_type:
- make_decision(self.decision_id, "LIST")
- return True
- else:
- msg = f"{data_type} is not {self.base_type} or {self.list_type}"
- raise ConflictingTypesError(msg)
- return False
-
-
-class InferencingError(Exception):
- pass
-
-class ConflictingTypesError(InferencingError):
- pass
-
-class NoListTypeError(InferencingError):
- pass
-
-class NoBaseTypeError(InferencingError):
- pass
\ No newline at end of file
diff --git a/release/scripts/startup/function_nodes/test_inferencer.py b/release/scripts/startup/function_nodes/test_inferencer.py
deleted file mode 100644
index 58cc4a11c91..00000000000
--- a/release/scripts/startup/function_nodes/test_inferencer.py
+++ /dev/null
@@ -1,51 +0,0 @@
-import unittest
-from . inferencer import Inferencer, ConflictingTypesError
-
-class TestInferencer(unittest.TestCase):
- def setUp(self):
- self.inferencer = Inferencer()
-
- def test_single_equality(self):
- self.inferencer.insert_equality_constraint((1, 2))
- self.inferencer.insert_final_type(1, "Float")
-
- self.assertTrue(self.inferencer.inference())
-
- self.assertEqual(self.inferencer.get_final_type(1), "Float")
- self.assertEqual(self.inferencer.get_final_type(2), "Float")
-
- def test_multiple_equality(self):
- self.inferencer.insert_equality_constraint((1, 2, 3))
- self.inferencer.insert_equality_constraint((3, 4, 5))
- self.inferencer.insert_final_type(4, "Integer")
-
- self.assertTrue(self.inferencer.inference())
- self.assertEqual(self.inferencer.get_final_type(1), "Integer")
- self.assertEqual(self.inferencer.get_final_type(3), "Integer")
- self.assertEqual(self.inferencer.get_final_type(5), "Integer")
-
- def test_find_base(self):
- self.inferencer.insert_list_constraint((1, ), (2,))
- self.inferencer.insert_final_type(1, "Float List")
-
- self.assertTrue(self.inferencer.inference())
- self.assertEqual(self.inferencer.get_final_type(2), "Float")
-
- def test_find_list(self):
- self.inferencer.insert_list_constraint((1, ), (2, ))
- self.inferencer.insert_final_type(2, "Vector")
-
- self.assertTrue(self.inferencer.inference())
- self.assertEqual(self.inferencer.get_final_type(1), "Vector List")
-
- def test_invalid_equality(self):
- self.inferencer.insert_equality_constraint((1, 2))
- self.inferencer.insert_final_type(1, "Float")
- self.inferencer.insert_final_type(2, "Integer")
-
- with self.assertRaises(ConflictingTypesError):
- self.inferencer.inference()
-
- def test_cannot_finalize_all(self):
- self.inferencer.insert_list_constraint((1, 2))
- self.assertFalse(self.inferencer.inference())
diff --git a/release/scripts/startup/function_nodes/update_sockets.py b/release/scripts/startup/function_nodes/update_sockets.py
index a941133bcd5..c013104d225 100644
--- a/release/scripts/startup/function_nodes/update_sockets.py
+++ b/release/scripts/startup/function_nodes/update_sockets.py
@@ -1,6 +1,5 @@
import bpy
from . base import FunctionNode, DataSocket
-from . inferencer import Inferencer
from collections import defaultdict
from . sockets import type_infos, OperatorSocket, DataSocket
from pprint import pprint
diff --git a/source/blender/functions/CMakeLists.txt b/source/blender/functions/CMakeLists.txt
index 4bb90c34997..fc5339aca51 100644
--- a/source/blender/functions/CMakeLists.txt
+++ b/source/blender/functions/CMakeLists.txt
@@ -32,10 +32,6 @@ set(SRC
core/data_flow_graph.hpp
core/data_flow_graph.cpp
core/dot_export.cpp
- core/type_inferencing.hpp
- core/type_inferencing.cpp
- core/type_relations.hpp
- core/type_relations.cpp
backends/tuple_call/cpp_types.hpp
backends/tuple_call/cpp_types.cpp
diff --git a/source/blender/functions/FN_core.hpp b/source/blender/functions/FN_core.hpp
index eec539caab9..47b2e4322d4 100644
--- a/source/blender/functions/FN_core.hpp
+++ b/source/blender/functions/FN_core.hpp
@@ -4,6 +4,4 @@
#include "core/parameter.hpp"
#include "core/signature.hpp"
#include "core/function.hpp"
-#include "core/data_flow_graph.hpp
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list