ripple-down-rules 0.6.12__tar.gz → 0.6.14__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/PKG-INFO +1 -1
  2. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/src/ripple_down_rules/__init__.py +1 -1
  3. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/src/ripple_down_rules/helpers.py +1 -1
  4. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/src/ripple_down_rules/rdr.py +15 -2
  5. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/src/ripple_down_rules/rdr_decorators.py +4 -5
  6. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/src/ripple_down_rules/user_interface/gui.py +3 -0
  7. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/src/ripple_down_rules.egg-info/PKG-INFO +1 -1
  8. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/.github/workflows/build_and_deploy_doc.yml +0 -0
  9. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/.github/workflows/ci.yml +0 -0
  10. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/.github/workflows/publish-to-test-pypi.yml +0 -0
  11. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/.gitignore +0 -0
  12. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/.idea/shelf/Uncommitted_changes_before_Checkout_at_2_4_25,_6_32_PM_[Changes]/shelved.patch +0 -0
  13. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/.idea/shelf/Uncommitted_changes_before_Checkout_at_2_4_25,_6_32_PM_[Changes]1/shelved.patch +0 -0
  14. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/LICENSE +0 -0
  15. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/README.md +0 -0
  16. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/doc/_config.yml +0 -0
  17. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/doc/_toc.yml +0 -0
  18. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/doc/bibliography.md +0 -0
  19. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/doc/intro.md +0 -0
  20. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/doc/references.bib +0 -0
  21. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/doc/requirements.txt +0 -0
  22. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/examples/__init__.py +0 -0
  23. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/examples/animal_species.py +0 -0
  24. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/examples/part_containment_rdr/__init__.py +0 -0
  25. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/examples/part_containment_rdr/rdr_metadata/part_containment_rdr.json +0 -0
  26. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/examples/part_containment_rdr/robot_contained_objects_mcrdr.py +0 -0
  27. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/examples/part_containment_rdr/robot_contained_objects_mcrdr_defs.py +0 -0
  28. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/examples/part_containment_rdr/robot_rdr.py +0 -0
  29. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/examples/relational_example.py +0 -0
  30. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/images/scrdr.dot +0 -0
  31. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/images/scrdr.png +0 -0
  32. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/images/thinking_pr2.jpg +0 -0
  33. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/pyproject.toml +0 -0
  34. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/pytest.ini +0 -0
  35. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/requirements-dev-ci.txt +0 -0
  36. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/requirements-dev.txt +0 -0
  37. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/requirements-gui.txt +0 -0
  38. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/requirements-viz.txt +0 -0
  39. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/requirements.txt +0 -0
  40. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/results/complete_mcrdr_extra.dot +0 -0
  41. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/results/complete_mcrdr_extra.png +0 -0
  42. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/results/complete_mcrdr_stop_only.dot +0 -0
  43. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/results/complete_mcrdr_stop_only.png +0 -0
  44. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/results/complete_mcrdr_stop_plus_rule.dot +0 -0
  45. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/results/complete_mcrdr_stop_plus_rule.png +0 -0
  46. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/results/complete_scrdr.dot +0 -0
  47. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/results/complete_scrdr.png +0 -0
  48. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/results/complete_scrdr_2.dot +0 -0
  49. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/results/complete_scrdr_2.png +0 -0
  50. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/results/complete_scrdr_3.dot +0 -0
  51. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/results/complete_scrdr_3.png +0 -0
  52. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/results/grdr_Habitat.dot +0 -0
  53. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/results/grdr_Habitat.png +0 -0
  54. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/results/grdr_Species.dot +0 -0
  55. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/results/grdr_Species.png +0 -0
  56. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/results/mcrdr_extra.dot +0 -0
  57. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/results/mcrdr_extra.png +0 -0
  58. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/results/mcrdr_extra_classify.dot +0 -0
  59. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/results/mcrdr_extra_classify.png +0 -0
  60. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/results/mcrdr_stop_plus_rule_combined.dot +0 -0
  61. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/results/mcrdr_stop_plus_rule_combined.png +0 -0
  62. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/results/partial_mcrdr_extra.dot +0 -0
  63. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/results/partial_mcrdr_extra.png +0 -0
  64. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/results/relational_scrdr_classify.dot +0 -0
  65. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/results/relational_scrdr_classify.png +0 -0
  66. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/setup.cfg +0 -0
  67. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/src/ripple_down_rules/datastructures/__init__.py +0 -0
  68. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/src/ripple_down_rules/datastructures/callable_expression.py +0 -0
  69. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/src/ripple_down_rules/datastructures/case.py +0 -0
  70. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/src/ripple_down_rules/datastructures/dataclasses.py +0 -0
  71. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/src/ripple_down_rules/datastructures/enums.py +0 -0
  72. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/src/ripple_down_rules/experts.py +0 -0
  73. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/src/ripple_down_rules/rules.py +0 -0
  74. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/src/ripple_down_rules/start-code-server.sh +0 -0
  75. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/src/ripple_down_rules/user_interface/__init__.py +0 -0
  76. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/src/ripple_down_rules/user_interface/ipython_custom_shell.py +0 -0
  77. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/src/ripple_down_rules/user_interface/object_diagram.py +0 -0
  78. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/src/ripple_down_rules/user_interface/prompt.py +0 -0
  79. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/src/ripple_down_rules/user_interface/template_file_creator.py +0 -0
  80. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/src/ripple_down_rules/utils.py +0 -0
  81. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/src/ripple_down_rules.egg-info/SOURCES.txt +0 -0
  82. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/src/ripple_down_rules.egg-info/dependency_links.txt +0 -0
  83. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/src/ripple_down_rules.egg-info/requires.txt +0 -0
  84. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/src/ripple_down_rules.egg-info/top_level.txt +0 -0
  85. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/__init__.py +0 -0
  86. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/conf/__init__.py +0 -0
  87. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/conf/world/__init__.py +0 -0
  88. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/conf/world/base_config.py +0 -0
  89. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/conf/world/handles_and_containers.py +0 -0
  90. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/conftest.py +0 -0
  91. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/datasets.py +0 -0
  92. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/factories/__init__.py +0 -0
  93. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/factories/world/__init__.py +0 -0
  94. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/factories/world/handles_and_containers.py +0 -0
  95. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_expert_answers/correct_drawer_rdr_expert_answers_fit.json +0 -0
  96. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_expert_answers/drawer_cabinet_expert_answers_fit.json +0 -0
  97. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_expert_answers/grdr_expert_answers_classify.json +0 -0
  98. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_expert_answers/grdr_expert_answers_fit.json +0 -0
  99. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_expert_answers/grdr_expert_answers_fit_extra.json +0 -0
  100. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_expert_answers/grdr_expert_answers_fit_no_targets.json +0 -0
  101. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_expert_answers/mcrdr_expert_answers_classify.json +0 -0
  102. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_expert_answers/mcrdr_expert_answers_fit_no_targets.json +0 -0
  103. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_expert_answers/mcrdr_expert_answers_stop_only_fit.json +0 -0
  104. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_expert_answers/mcrdr_extra_expert_answers_classify.json +0 -0
  105. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_expert_answers/mcrdr_extra_expert_answers_fit.json +0 -0
  106. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_expert_answers/mcrdr_multi_line_expert_answers_fit.json +0 -0
  107. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_expert_answers/mcrdr_stop_only_answers_fit.json +0 -0
  108. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_expert_answers/mcrdr_stop_plus_rule_answers_fit.json +0 -0
  109. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_expert_answers/mcrdr_stop_plus_rule_combined_expert_answers_fit.json +0 -0
  110. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_expert_answers/mcrdr_stop_plus_rule_expert_answers_fit.json +0 -0
  111. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_expert_answers/mutagenic_expert_answers.json +0 -0
  112. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_expert_answers/relational_scrdr_expert_answers_classify.json +0 -0
  113. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_expert_answers/scrdr_expert_answers_classify.json +0 -0
  114. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_expert_answers/scrdr_expert_answers_fit.json +0 -0
  115. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_expert_answers/scrdr_expert_answers_fit_no_targets.json +0 -0
  116. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_expert_answers/scrdr_multi_line_expert_answers_fit.json +0 -0
  117. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_expert_answers/scrdr_world_expert_answers_fit.json +0 -0
  118. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_generated_rdrs/__init__.py +0 -0
  119. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_helpers/__init__.py +0 -0
  120. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_helpers/helpers.py +0 -0
  121. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_helpers/object_diagram_case_query.png +0 -0
  122. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_helpers/object_diagram_person.png +0 -0
  123. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_json_serialization.py +0 -0
  124. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_object_diagram.py +0 -0
  125. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_on_mutagenic.py +0 -0
  126. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_rdr.py +0 -0
  127. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_rdr_alchemy.py +0 -0
  128. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_rdr_decorators.py +0 -0
  129. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_rdr_helpers_rdrs.py +0 -0
  130. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_rdr_world/__init__.py +0 -0
  131. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_rdr_world/conftest.py +0 -0
  132. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_rdr_world/test_rdr_world.py +0 -0
  133. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_relational_rdr.py +0 -0
  134. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_relational_rdr_alchemy.py +0 -0
  135. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_results/datasets_physical_object_is_a_robot/__init__.py +0 -0
  136. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_results/datasets_physical_object_is_a_robot/physical_object_is_a_robot_output__scrdr.py +0 -0
  137. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_results/datasets_physical_object_is_a_robot/physical_object_is_a_robot_output__scrdr_defs.py +0 -0
  138. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_results/datasets_physical_object_is_a_robot/physical_object_is_a_robot_rdr.py +0 -0
  139. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_results/datasets_physical_object_is_a_robot/rdr_metadata/datasets_physical_object_is_a_robot.json +0 -0
  140. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_results/datasets_physical_object_select_objects_that_are_parts_of_robot/__init__.py +0 -0
  141. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_results/datasets_physical_object_select_objects_that_are_parts_of_robot/physical_object_select_objects_that_are_parts_of_robot_output__mcrdr.py +0 -0
  142. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_results/datasets_physical_object_select_objects_that_are_parts_of_robot/physical_object_select_objects_that_are_parts_of_robot_output__mcrdr_defs.py +0 -0
  143. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_results/datasets_physical_object_select_objects_that_are_parts_of_robot/physical_object_select_objects_that_are_parts_of_robot_rdr.py +0 -0
  144. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_results/datasets_physical_object_select_objects_that_are_parts_of_robot/rdr_metadata/datasets_physical_object_select_objects_that_are_parts_of_robot.json +0 -0
  145. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_sql_model.py +0 -0
  146. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_template_file_creator.py +0 -0
  147. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_user_interface/__init__.py +0 -0
  148. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_user_interface/test_ipython.py +0 -0
  149. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_user_interface/test_ipython_copilot.py +0 -0
  150. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_user_interface/test_prompt.py +0 -0
  151. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_user_interface/test_qt_gui_inline.py +0 -0
  152. {ripple_down_rules-0.6.12 → ripple_down_rules-0.6.14}/test/test_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ripple_down_rules
3
- Version: 0.6.12
3
+ Version: 0.6.14
4
4
  Summary: Implements the various versions of Ripple Down Rules (RDR) for knowledge representation and reasoning.
5
5
  Author-email: Abdelrhman Bassiouny <abassiou@uni-bremen.de>
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -1,4 +1,4 @@
1
- __version__ = "0.6.12"
1
+ __version__ = "0.6.14"
2
2
 
3
3
  import logging
4
4
  logger = logging.Logger("rdr")
@@ -55,7 +55,7 @@ def general_rdr_classify(classifiers_dict: Dict[str, Union[ModuleType, RippleDow
55
55
  if attribute_name in new_conclusions:
56
56
  temp_case_query = CaseQuery(case_cp, attribute_name, rdr.conclusion_type, rdr.mutually_exclusive)
57
57
  update_case(temp_case_query, new_conclusions)
58
- if len(new_conclusions) == 0: #or (len(classifiers_dict) == 1 and all(rdr.mutually_exclusive for rdr in classifiers_dict.values())):
58
+ if len(new_conclusions) == 0 or len(classifiers_dict) == 1:
59
59
  break
60
60
  return conclusions
61
61
 
@@ -92,8 +92,21 @@ class RippleDownRules(SubclassJSONSerializer, ABC):
92
92
  self.start_rule = start_rule
93
93
  self.fig: Optional[Figure] = None
94
94
  self.viewer: Optional[RDRCaseViewer] = viewer
95
- if self.viewer is not None:
96
- self.viewer.set_save_function(self.save)
95
+ if viewer is None:
96
+ if len(RDRCaseViewer.instances) > 0:
97
+ self.viewer = RDRCaseViewer.instances[0]
98
+ logger.error("No viewer was provided, but there is already an existing viewer. "
99
+ "Using the existing viewer.")
100
+
101
+ @property
102
+ def viewer(self):
103
+ return self._viewer
104
+
105
+ @viewer.setter
106
+ def viewer(self, value):
107
+ self._viewer = value
108
+ if value is not None:
109
+ value.set_save_function(self.save)
97
110
 
98
111
  def save(self, save_dir: Optional[str] = None, model_name: Optional[str] = None,
99
112
  package_name: Optional[str] = None) -> str:
@@ -33,7 +33,7 @@ class RDRDecorator:
33
33
  viewer: Optional[RDRCaseViewer] = None,
34
34
  package_name: Optional[str] = None,
35
35
  use_generated_classifier: bool = False,
36
- ask_now: Callable[[Any, Any], bool] = lambda _,n: True,
36
+ ask_now: Callable[Dict[str, Any], bool] = lambda _: True,
37
37
  fitting_decorator: Optional[Callable] = None):
38
38
  """
39
39
  :param models_dir: The directory to save/load the RDR models.
@@ -99,7 +99,7 @@ class RDRDecorator:
99
99
  viewer=self.viewer)
100
100
  return output
101
101
 
102
- if self.fit and not self.use_generated_classifier and self.ask_now(case_dict, self.rdr.classify(case)):
102
+ if self.fit and not self.use_generated_classifier and self.ask_now(case_dict):
103
103
  output = fit()
104
104
  else:
105
105
  if self.use_generated_classifier:
@@ -167,6 +167,7 @@ class RDRDecorator:
167
167
  return Case(dict, id(case_dict), case_name, case_dict, **case_dict), case_dict
168
168
 
169
169
  def initialize_rdr_model_name_and_load(self, func: Callable) -> None:
170
+ self.viewer = RDRCaseViewer.instances[0] if len(RDRCaseViewer.instances) > 0 else self.viewer
170
171
  model_file_name = get_func_rdr_model_name(func, include_file_name=True)
171
172
  self.model_name = str_to_snake_case(model_file_name)
172
173
  self.load()
@@ -201,10 +202,8 @@ class RDRDecorator:
201
202
  model_path = os.path.join(self.rdr_models_dir, self.model_name + f"/rdr_metadata/{self.model_name}.json")
202
203
  if os.path.exists(os.path.join(self.rdr_models_dir, model_path)):
203
204
  self.rdr = GeneralRDR.load(self.rdr_models_dir, self.model_name, package_name=self.package_name)
204
- self.rdr.set_viewer(self.viewer)
205
205
  if self.rdr is None:
206
- self.rdr = GeneralRDR(save_dir=self.rdr_models_dir, model_name=self.model_name,
207
- viewer=self.viewer)
206
+ self.rdr = GeneralRDR(save_dir=self.rdr_models_dir, model_name=self.model_name)
208
207
 
209
208
  def update_from_python(self):
210
209
  """
@@ -282,11 +282,14 @@ class RDRCaseViewer(QMainWindow):
282
282
  user_input: Optional[str] = None
283
283
  attributes_widget: Optional[QWidget] = None
284
284
  save_function: Optional[Callable[str, str], None] = None
285
+ instances: List[RDRCaseViewer] = []
285
286
 
286
287
  def __init__(self, parent=None,
287
288
  save_dir: Optional[str] = None,
288
289
  save_model_name: Optional[str] = None):
289
290
  super().__init__(parent)
291
+ self.instances.clear()
292
+ self.instances.append(self)
290
293
  self.save_dir = save_dir
291
294
  self.save_model_name = save_model_name
292
295
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ripple_down_rules
3
- Version: 0.6.12
3
+ Version: 0.6.14
4
4
  Summary: Implements the various versions of Ripple Down Rules (RDR) for knowledge representation and reasoning.
5
5
  Author-email: Abdelrhman Bassiouny <abassiou@uni-bremen.de>
6
6
  License: GNU GENERAL PUBLIC LICENSE