ripple-down-rules 0.4.84__tar.gz → 0.4.85__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 (115) hide show
  1. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/PKG-INFO +6 -5
  2. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/pyproject.toml +1 -2
  3. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/requirements-dev.txt +0 -1
  4. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/requirements.txt +3 -1
  5. ripple_down_rules-0.4.85/src/ripple_down_rules/__init__.py +1 -0
  6. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/src/ripple_down_rules/datastructures/case.py +1 -1
  7. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/src/ripple_down_rules/user_interface/gui.py +1 -2
  8. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/src/ripple_down_rules/user_interface/ipython_custom_shell.py +1 -1
  9. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/src/ripple_down_rules/user_interface/template_file_creator.py +1 -3
  10. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/src/ripple_down_rules.egg-info/PKG-INFO +6 -5
  11. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/src/ripple_down_rules.egg-info/requires.txt +3 -2
  12. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/test/test_rdr.py +12 -7
  13. ripple_down_rules-0.4.84/src/ripple_down_rules/__init__.py +0 -1
  14. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/.github/workflows/publish-to-test-pypi.yml +0 -0
  15. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/.idea/shelf/Uncommitted_changes_before_Checkout_at_2_4_25,_6_32_PM_[Changes]/shelved.patch +0 -0
  16. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/.idea/shelf/Uncommitted_changes_before_Checkout_at_2_4_25,_6_32_PM_[Changes]1/shelved.patch +0 -0
  17. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/LICENSE +0 -0
  18. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/README.md +0 -0
  19. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/examples/readme_example.py +0 -0
  20. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/images/thinking_pr2.jpg +0 -0
  21. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/requirements-gui.txt +0 -0
  22. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/requirements-viz.txt +0 -0
  23. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/results/complete_mcrdr_extra.dot +0 -0
  24. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/results/complete_mcrdr_extra.png +0 -0
  25. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/results/complete_mcrdr_stop_only.dot +0 -0
  26. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/results/complete_mcrdr_stop_only.png +0 -0
  27. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/results/complete_mcrdr_stop_plus_rule.dot +0 -0
  28. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/results/complete_mcrdr_stop_plus_rule.png +0 -0
  29. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/results/complete_scrdr.dot +0 -0
  30. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/results/complete_scrdr.png +0 -0
  31. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/results/complete_scrdr_2.dot +0 -0
  32. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/results/complete_scrdr_2.png +0 -0
  33. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/results/complete_scrdr_3.dot +0 -0
  34. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/results/complete_scrdr_3.png +0 -0
  35. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/results/grdr_Habitat.dot +0 -0
  36. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/results/grdr_Habitat.png +0 -0
  37. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/results/grdr_Species.dot +0 -0
  38. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/results/grdr_Species.png +0 -0
  39. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/results/mcrdr_extra.dot +0 -0
  40. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/results/mcrdr_extra.png +0 -0
  41. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/results/mcrdr_extra_classify.dot +0 -0
  42. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/results/mcrdr_extra_classify.png +0 -0
  43. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/results/mcrdr_stop_plus_rule_combined.dot +0 -0
  44. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/results/mcrdr_stop_plus_rule_combined.png +0 -0
  45. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/results/partial_mcrdr_extra.dot +0 -0
  46. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/results/partial_mcrdr_extra.png +0 -0
  47. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/results/relational_scrdr_classify.dot +0 -0
  48. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/results/relational_scrdr_classify.png +0 -0
  49. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/setup.cfg +0 -0
  50. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/src/ripple_down_rules/datasets.py +0 -0
  51. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/src/ripple_down_rules/datastructures/__init__.py +0 -0
  52. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/src/ripple_down_rules/datastructures/callable_expression.py +0 -0
  53. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/src/ripple_down_rules/datastructures/dataclasses.py +0 -0
  54. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/src/ripple_down_rules/datastructures/enums.py +0 -0
  55. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/src/ripple_down_rules/experts.py +0 -0
  56. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/src/ripple_down_rules/failures.py +0 -0
  57. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/src/ripple_down_rules/helpers.py +0 -0
  58. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/src/ripple_down_rules/rdr.py +0 -0
  59. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/src/ripple_down_rules/rdr_decorators.py +0 -0
  60. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/src/ripple_down_rules/rules.py +0 -0
  61. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/src/ripple_down_rules/start-code-server.sh +0 -0
  62. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/src/ripple_down_rules/user_interface/__init__.py +0 -0
  63. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/src/ripple_down_rules/user_interface/object_diagram.py +0 -0
  64. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/src/ripple_down_rules/user_interface/prompt.py +0 -0
  65. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/src/ripple_down_rules/utils.py +0 -0
  66. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/src/ripple_down_rules.egg-info/SOURCES.txt +0 -0
  67. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/src/ripple_down_rules.egg-info/dependency_links.txt +0 -0
  68. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/src/ripple_down_rules.egg-info/top_level.txt +0 -0
  69. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/test/test_expert_answers/correct_drawer_rdr_expert_answers_fit.json +0 -0
  70. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/test/test_expert_answers/grdr_expert_answers_classify.json +0 -0
  71. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/test/test_expert_answers/grdr_expert_answers_fit.json +0 -0
  72. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/test/test_expert_answers/grdr_expert_answers_fit_extra.json +0 -0
  73. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/test/test_expert_answers/grdr_expert_answers_fit_no_targets.json +0 -0
  74. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/test/test_expert_answers/mcrdr_expert_answers_classify.json +0 -0
  75. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/test/test_expert_answers/mcrdr_expert_answers_fit_no_targets.json +0 -0
  76. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/test/test_expert_answers/mcrdr_expert_answers_stop_only_fit.json +0 -0
  77. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/test/test_expert_answers/mcrdr_extra_expert_answers_classify.json +0 -0
  78. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/test/test_expert_answers/mcrdr_extra_expert_answers_fit.json +0 -0
  79. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/test/test_expert_answers/mcrdr_multi_line_expert_answers_fit.json +0 -0
  80. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/test/test_expert_answers/mcrdr_stop_only_answers_fit.json +0 -0
  81. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/test/test_expert_answers/mcrdr_stop_plus_rule_answers_fit.json +0 -0
  82. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/test/test_expert_answers/mcrdr_stop_plus_rule_combined_expert_answers_fit.json +0 -0
  83. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/test/test_expert_answers/mcrdr_stop_plus_rule_expert_answers_fit.json +0 -0
  84. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/test/test_expert_answers/mutagenic_expert_answers.json +0 -0
  85. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/test/test_expert_answers/relational_scrdr_expert_answers_classify.json +0 -0
  86. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/test/test_expert_answers/scrdr_expert_answers_classify.json +0 -0
  87. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/test/test_expert_answers/scrdr_expert_answers_fit.json +0 -0
  88. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/test/test_expert_answers/scrdr_expert_answers_fit_no_targets.json +0 -0
  89. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/test/test_expert_answers/scrdr_multi_line_expert_answers_fit.json +0 -0
  90. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/test/test_expert_answers/scrdr_world_expert_answers_fit.json +0 -0
  91. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/test/test_expert_answers/view_rdr_expert_answers_fit.json +0 -0
  92. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/test/test_generated_rdrs/__init__.py +0 -0
  93. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/test/test_helpers/__init__.py +0 -0
  94. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/test/test_helpers/helpers.py +0 -0
  95. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/test/test_helpers/object_diagram_case_query.png +0 -0
  96. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/test/test_helpers/object_diagram_person.png +0 -0
  97. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/test/test_json_serialization.py +0 -0
  98. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/test/test_object_diagram.py +0 -0
  99. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/test/test_on_mutagenic.py +0 -0
  100. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/test/test_rdr_alchemy.py +0 -0
  101. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/test/test_rdr_decorators.py +0 -0
  102. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/test/test_rdr_world.py +0 -0
  103. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/test/test_relational_rdr.py +0 -0
  104. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/test/test_relational_rdr_alchemy.py +0 -0
  105. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/test/test_results/datasets_physical_object_is_a_robot.json +0 -0
  106. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/test/test_results/datasets_physical_object_select_objects_that_are_parts_of_robot.json +0 -0
  107. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/test/test_sql_model.py +0 -0
  108. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/test/test_template_file_creator.py +0 -0
  109. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/test/test_user_interface/__init__.py +0 -0
  110. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/test/test_user_interface/test_ipython.py +0 -0
  111. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/test/test_user_interface/test_ipython_copilot.py +0 -0
  112. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/test/test_user_interface/test_pdb.py +0 -0
  113. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/test/test_user_interface/test_qt_gui.py +0 -0
  114. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/test/test_user_interface/test_qt_gui_inline.py +0 -0
  115. {ripple_down_rules-0.4.84 → ripple_down_rules-0.4.85}/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.4.84
3
+ Version: 0.4.85
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
@@ -691,19 +691,20 @@ Requires-Dist: ipython
691
691
  Requires-Dist: requests
692
692
  Requires-Dist: colorama
693
693
  Requires-Dist: pygments
694
+ Requires-Dist: sqlalchemy
695
+ Requires-Dist: pandas
694
696
  Provides-Extra: gui
695
697
  Requires-Dist: pyqt6; extra == "gui"
696
698
  Requires-Dist: qtconsole; extra == "gui"
697
- Provides-Extra: visualization
698
- Requires-Dist: matplotlib; extra == "visualization"
699
- Requires-Dist: networkx; extra == "visualization"
699
+ Provides-Extra: viz
700
+ Requires-Dist: matplotlib; extra == "viz"
701
+ Requires-Dist: networkx; extra == "viz"
700
702
  Provides-Extra: dev
701
703
  Requires-Dist: pyqt6; extra == "dev"
702
704
  Requires-Dist: qtconsole; extra == "dev"
703
705
  Requires-Dist: matplotlib; extra == "dev"
704
706
  Requires-Dist: networkx; extra == "dev"
705
707
  Requires-Dist: pytest; extra == "dev"
706
- Requires-Dist: sqlalchemy; extra == "dev"
707
708
  Requires-Dist: ucimlrepo>=0.0.7; extra == "dev"
708
709
  Requires-Dist: pdbpp; extra == "dev"
709
710
  Dynamic: license-file
@@ -29,7 +29,7 @@ gui = [
29
29
  "pyqt6",
30
30
  "qtconsole",
31
31
  ]
32
- visualization = [
32
+ viz = [
33
33
  "matplotlib",
34
34
  "networkx",
35
35
  ]
@@ -39,6 +39,5 @@ dev = [
39
39
  "matplotlib",
40
40
  "networkx",
41
41
  "pytest",
42
- "sqlalchemy",
43
42
  "ucimlrepo>=0.0.7",
44
43
  "pdbpp"]
@@ -1,7 +1,6 @@
1
1
  -r requirements.txt
2
2
  -r requirements-gui.txt
3
3
  -r requirements-viz.txt
4
- sqlalchemy
5
4
  ucimlrepo>=0.0.7
6
5
  pdbpp
7
6
  pytest
@@ -7,4 +7,6 @@ tabulate
7
7
  ipython
8
8
  requests
9
9
  colorama
10
- pygments
10
+ pygments
11
+ sqlalchemy
12
+ pandas
@@ -0,0 +1 @@
1
+ __version__ = "0.4.85"
@@ -7,7 +7,7 @@ from enum import Enum
7
7
 
8
8
  from pandas import DataFrame
9
9
  from sqlalchemy import MetaData
10
- from sqlalchemy.orm import DeclarativeBase as SQLTable, MappedColumn as SQLColumn, registry
10
+ from sqlalchemy.orm import DeclarativeBase as SQLTable, registry
11
11
  from typing_extensions import Any, Optional, Dict, Type, Set, Hashable, Union, List, TYPE_CHECKING
12
12
 
13
13
  from ..utils import make_set, row_to_dict, table_rows_as_str, get_value_type_from_type_hint, SubclassJSONSerializer, \
@@ -473,8 +473,7 @@ class RDRCaseViewer(QMainWindow):
473
473
  self.close()
474
474
 
475
475
  def _edit(self):
476
- self.template_file_creator = TemplateFileCreator(self.ipython_console.kernel.shell,
477
- self.case_query, self.prompt_for, self.code_to_modify,
476
+ self.template_file_creator = TemplateFileCreator(self.case_query, self.prompt_for, self.code_to_modify,
478
477
  self.print)
479
478
  self.template_file_creator.edit()
480
479
 
@@ -20,7 +20,7 @@ class MyMagics(Magics):
20
20
  prompt_for: Optional[PromptFor] = None,
21
21
  case_query: Optional[CaseQuery] = None):
22
22
  super().__init__(shell)
23
- self.rule_editor = TemplateFileCreator(shell, case_query, prompt_for=prompt_for, code_to_modify=code_to_modify)
23
+ self.rule_editor = TemplateFileCreator(case_query, prompt_for=prompt_for, code_to_modify=code_to_modify)
24
24
  self.all_code_lines: Optional[List[str]] = None
25
25
 
26
26
  @line_magic
@@ -8,7 +8,6 @@ from functools import cached_property
8
8
  from textwrap import indent, dedent
9
9
 
10
10
  from colorama import Fore, Style
11
- from ipykernel.inprocess.ipkernel import InProcessInteractiveShell
12
11
  from typing_extensions import Optional, Type, List, Callable, Tuple, Dict
13
12
 
14
13
  from ..datastructures.case import Case
@@ -73,10 +72,9 @@ class TemplateFileCreator:
73
72
  The list of all code lines in the function in the temporary file.
74
73
  """
75
74
 
76
- def __init__(self, shell: InProcessInteractiveShell, case_query: CaseQuery, prompt_for: PromptFor,
75
+ def __init__(self, case_query: CaseQuery, prompt_for: PromptFor,
77
76
  code_to_modify: Optional[str] = None, print_func: Callable[[str], None] = print):
78
77
  self.print_func = print_func
79
- self.shell = shell
80
78
  self.code_to_modify = code_to_modify
81
79
  self.prompt_for = prompt_for
82
80
  self.case_query = case_query
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ripple_down_rules
3
- Version: 0.4.84
3
+ Version: 0.4.85
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
@@ -691,19 +691,20 @@ Requires-Dist: ipython
691
691
  Requires-Dist: requests
692
692
  Requires-Dist: colorama
693
693
  Requires-Dist: pygments
694
+ Requires-Dist: sqlalchemy
695
+ Requires-Dist: pandas
694
696
  Provides-Extra: gui
695
697
  Requires-Dist: pyqt6; extra == "gui"
696
698
  Requires-Dist: qtconsole; extra == "gui"
697
- Provides-Extra: visualization
698
- Requires-Dist: matplotlib; extra == "visualization"
699
- Requires-Dist: networkx; extra == "visualization"
699
+ Provides-Extra: viz
700
+ Requires-Dist: matplotlib; extra == "viz"
701
+ Requires-Dist: networkx; extra == "viz"
700
702
  Provides-Extra: dev
701
703
  Requires-Dist: pyqt6; extra == "dev"
702
704
  Requires-Dist: qtconsole; extra == "dev"
703
705
  Requires-Dist: matplotlib; extra == "dev"
704
706
  Requires-Dist: networkx; extra == "dev"
705
707
  Requires-Dist: pytest; extra == "dev"
706
- Requires-Dist: sqlalchemy; extra == "dev"
707
708
  Requires-Dist: ucimlrepo>=0.0.7; extra == "dev"
708
709
  Requires-Dist: pdbpp; extra == "dev"
709
710
  Dynamic: license-file
@@ -8,6 +8,8 @@ ipython
8
8
  requests
9
9
  colorama
10
10
  pygments
11
+ sqlalchemy
12
+ pandas
11
13
 
12
14
  [dev]
13
15
  pyqt6
@@ -15,7 +17,6 @@ qtconsole
15
17
  matplotlib
16
18
  networkx
17
19
  pytest
18
- sqlalchemy
19
20
  ucimlrepo>=0.0.7
20
21
  pdbpp
21
22
 
@@ -23,6 +24,6 @@ pdbpp
23
24
  pyqt6
24
25
  qtconsole
25
26
 
26
- [visualization]
27
+ [viz]
27
28
  matplotlib
28
29
  networkx
@@ -2,7 +2,7 @@ import os
2
2
  import sys
3
3
  from unittest import TestCase
4
4
 
5
- from typing_extensions import List
5
+ from typing_extensions import List, Optional
6
6
 
7
7
  from ripple_down_rules.datasets import Habitat, Species
8
8
  from ripple_down_rules.datasets import load_zoo_dataset
@@ -10,12 +10,16 @@ from ripple_down_rules.datastructures.case import Case
10
10
  from ripple_down_rules.datastructures.dataclasses import CaseQuery
11
11
  from ripple_down_rules.datastructures.enums import MCRDRMode
12
12
  from ripple_down_rules.experts import Human
13
- from ripple_down_rules.user_interface.gui import RDRCaseViewer
14
13
  from ripple_down_rules.rdr import SingleClassRDR, MultiClassRDR, GeneralRDR, RDRWithCodeWriter
15
14
  from ripple_down_rules.utils import render_tree, make_set, extract_function_source
16
15
  from test_helpers.helpers import get_fit_scrdr, get_fit_mcrdr, get_fit_grdr
17
16
 
18
- from PyQt6.QtWidgets import QApplication
17
+ try:
18
+ from PyQt6.QtWidgets import QApplication
19
+ from ripple_down_rules.user_interface.gui import RDRCaseViewer
20
+ except ImportError as e:
21
+ RDRCaseViewer = None
22
+ QApplication = None
19
23
 
20
24
 
21
25
  class TestRDR(TestCase):
@@ -26,8 +30,8 @@ class TestRDR(TestCase):
26
30
  expert_answers_dir: str = "./test_expert_answers"
27
31
  generated_rdrs_dir: str = "./test_generated_rdrs"
28
32
  cache_file: str = f"{test_results_dir}/zoo_dataset.pkl"
29
- app: QApplication
30
- viewer: RDRCaseViewer
33
+ app: Optional[QApplication] = None
34
+ viewer: Optional[RDRCaseViewer] = None
31
35
 
32
36
  @classmethod
33
37
  def setUpClass(cls):
@@ -38,8 +42,9 @@ class TestRDR(TestCase):
38
42
  for test_dir in [cls.test_results_dir, cls.expert_answers_dir, cls.generated_rdrs_dir]:
39
43
  if not os.path.exists(test_dir):
40
44
  os.makedirs(test_dir)
41
- cls.app = QApplication(sys.argv)
42
- cls.viewer = RDRCaseViewer()
45
+ if RDRCaseViewer is not None:
46
+ cls.app = QApplication(sys.argv)
47
+ cls.viewer = RDRCaseViewer()
43
48
 
44
49
  def test_classify_scrdr(self):
45
50
  use_loaded_answers = True
@@ -1 +0,0 @@
1
- __version__ = "0.4.84"