ripple-down-rules 0.6.45__tar.gz → 0.6.47__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 (166) hide show
  1. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/PKG-INFO +1 -1
  2. ripple_down_rules-0.6.47/src/ripple_down_rules/__init__.py +5 -0
  3. ripple_down_rules-0.6.47/src/ripple_down_rules/failures.py +4 -0
  4. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/src/ripple_down_rules/rdr.py +4 -4
  5. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/src/ripple_down_rules/rdr_decorators.py +1 -3
  6. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/src/ripple_down_rules/utils.py +5 -0
  7. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/src/ripple_down_rules.egg-info/PKG-INFO +1 -1
  8. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/src/ripple_down_rules.egg-info/SOURCES.txt +1 -1
  9. ripple_down_rules-0.6.47/test/test_results/datasets_physical_object_is_a_robot/physical_object_is_a_robot_output__scrdr_defs.py +19 -0
  10. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_results/datasets_physical_object_is_a_robot/rdr_metadata/datasets_physical_object_is_a_robot.json +2 -2
  11. ripple_down_rules-0.6.47/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 +19 -0
  12. ripple_down_rules-0.6.45/src/ripple_down_rules/__init__.py +0 -5
  13. ripple_down_rules-0.6.45/test/test_results/datasets_physical_object_is_a_robot/physical_object_is_a_robot_output__scrdr_defs.py +0 -19
  14. ripple_down_rules-0.6.45/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 -19
  15. ripple_down_rules-0.6.45/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 -59
  16. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/.github/workflows/build_and_deploy_doc.yml +0 -0
  17. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/.github/workflows/ci.yml +0 -0
  18. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/.github/workflows/publish-to-test-pypi.yml +0 -0
  19. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/.gitignore +0 -0
  20. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/.idea/shelf/Uncommitted_changes_before_Checkout_at_2_4_25,_6_32_PM_[Changes]/shelved.patch +0 -0
  21. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/.idea/shelf/Uncommitted_changes_before_Checkout_at_2_4_25,_6_32_PM_[Changes]1/shelved.patch +0 -0
  22. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/LICENSE +0 -0
  23. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/README.md +0 -0
  24. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/doc/_config.yml +0 -0
  25. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/doc/_toc.yml +0 -0
  26. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/doc/bibliography.md +0 -0
  27. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/doc/intro.md +0 -0
  28. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/doc/references.bib +0 -0
  29. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/doc/requirements.txt +0 -0
  30. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/examples/__init__.py +0 -0
  31. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/examples/animal_species.py +0 -0
  32. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/examples/part_containment_rdr/__init__.py +0 -0
  33. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/examples/part_containment_rdr/rdr_metadata/part_containment_rdr.json +0 -0
  34. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/examples/part_containment_rdr/robot_contained_objects_mcrdr.py +0 -0
  35. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/examples/part_containment_rdr/robot_contained_objects_mcrdr_defs.py +0 -0
  36. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/examples/part_containment_rdr/robot_rdr.py +0 -0
  37. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/examples/relational_example.py +0 -0
  38. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/images/scrdr.dot +0 -0
  39. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/images/scrdr.png +0 -0
  40. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/images/thinking_pr2.jpg +0 -0
  41. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/pyproject.toml +0 -0
  42. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/pytest.ini +0 -0
  43. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/requirements-dev-ci.txt +0 -0
  44. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/requirements-dev.txt +0 -0
  45. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/requirements-gui.txt +0 -0
  46. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/requirements-viz.txt +0 -0
  47. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/requirements.txt +0 -0
  48. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/results/complete_mcrdr_extra.dot +0 -0
  49. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/results/complete_mcrdr_extra.png +0 -0
  50. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/results/complete_mcrdr_stop_only.dot +0 -0
  51. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/results/complete_mcrdr_stop_only.png +0 -0
  52. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/results/complete_mcrdr_stop_plus_rule.dot +0 -0
  53. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/results/complete_mcrdr_stop_plus_rule.png +0 -0
  54. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/results/complete_scrdr.dot +0 -0
  55. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/results/complete_scrdr.png +0 -0
  56. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/results/complete_scrdr_2.dot +0 -0
  57. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/results/complete_scrdr_2.png +0 -0
  58. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/results/complete_scrdr_3.dot +0 -0
  59. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/results/complete_scrdr_3.png +0 -0
  60. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/results/grdr_Habitat.dot +0 -0
  61. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/results/grdr_Habitat.png +0 -0
  62. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/results/grdr_Species.dot +0 -0
  63. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/results/grdr_Species.png +0 -0
  64. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/results/mcrdr_extra.dot +0 -0
  65. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/results/mcrdr_extra.png +0 -0
  66. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/results/mcrdr_extra_classify.dot +0 -0
  67. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/results/mcrdr_extra_classify.png +0 -0
  68. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/results/mcrdr_stop_plus_rule_combined.dot +0 -0
  69. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/results/mcrdr_stop_plus_rule_combined.png +0 -0
  70. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/results/partial_mcrdr_extra.dot +0 -0
  71. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/results/partial_mcrdr_extra.png +0 -0
  72. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/results/relational_scrdr_classify.dot +0 -0
  73. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/results/relational_scrdr_classify.png +0 -0
  74. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/scripts/live_dot_server_client.py +0 -0
  75. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/setup.cfg +0 -0
  76. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/src/ripple_down_rules/datastructures/__init__.py +0 -0
  77. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/src/ripple_down_rules/datastructures/callable_expression.py +0 -0
  78. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/src/ripple_down_rules/datastructures/case.py +0 -0
  79. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/src/ripple_down_rules/datastructures/dataclasses.py +0 -0
  80. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/src/ripple_down_rules/datastructures/enums.py +0 -0
  81. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/src/ripple_down_rules/experts.py +0 -0
  82. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/src/ripple_down_rules/helpers.py +0 -0
  83. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/src/ripple_down_rules/rules.py +0 -0
  84. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/src/ripple_down_rules/start-code-server.sh +0 -0
  85. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/src/ripple_down_rules/user_interface/__init__.py +0 -0
  86. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/src/ripple_down_rules/user_interface/gui.py +0 -0
  87. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/src/ripple_down_rules/user_interface/ipython_custom_shell.py +0 -0
  88. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/src/ripple_down_rules/user_interface/object_diagram.py +0 -0
  89. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/src/ripple_down_rules/user_interface/prompt.py +0 -0
  90. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/src/ripple_down_rules/user_interface/template_file_creator.py +0 -0
  91. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/src/ripple_down_rules.egg-info/dependency_links.txt +0 -0
  92. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/src/ripple_down_rules.egg-info/requires.txt +0 -0
  93. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/src/ripple_down_rules.egg-info/top_level.txt +0 -0
  94. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/__init__.py +0 -0
  95. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/conf/__init__.py +0 -0
  96. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/conf/world/__init__.py +0 -0
  97. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/conf/world/base_config.py +0 -0
  98. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/conf/world/handles_and_containers.py +0 -0
  99. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/conftest.py +0 -0
  100. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/datasets.py +0 -0
  101. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/factories/__init__.py +0 -0
  102. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/factories/world/__init__.py +0 -0
  103. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/factories/world/handles_and_containers.py +0 -0
  104. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_expert_answers/__init__.py +0 -0
  105. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_expert_answers/correct_drawer_rdr_expert_answers_fit.json +0 -0
  106. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_expert_answers/drawer_cabinet_expert_answers_fit.json +0 -0
  107. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_expert_answers/grdr_expert_answers_classify.json +0 -0
  108. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_expert_answers/grdr_expert_answers_fit.json +0 -0
  109. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_expert_answers/grdr_expert_answers_fit.py +0 -0
  110. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_expert_answers/grdr_expert_answers_fit_extra.json +0 -0
  111. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_expert_answers/grdr_expert_answers_fit_no_targets.json +0 -0
  112. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_expert_answers/grdr_expert_answers_fit_no_targets.py +0 -0
  113. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_expert_answers/mcrdr_expert_answers_classify.json +0 -0
  114. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_expert_answers/mcrdr_expert_answers_fit_no_targets.json +0 -0
  115. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_expert_answers/mcrdr_expert_answers_fit_no_targets.py +0 -0
  116. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_expert_answers/mcrdr_expert_answers_stop_only_fit.json +0 -0
  117. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_expert_answers/mcrdr_expert_answers_stop_only_fit.py +0 -0
  118. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_expert_answers/mcrdr_extra_expert_answers_classify.json +0 -0
  119. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_expert_answers/mcrdr_extra_expert_answers_fit.json +0 -0
  120. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_expert_answers/mcrdr_multi_line_expert_answers_fit.json +0 -0
  121. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_expert_answers/mcrdr_multi_line_expert_answers_fit.py +0 -0
  122. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_expert_answers/mcrdr_stop_only_answers_fit.json +0 -0
  123. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_expert_answers/mcrdr_stop_plus_rule_answers_fit.json +0 -0
  124. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_expert_answers/mcrdr_stop_plus_rule_combined_expert_answers_fit.json +0 -0
  125. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_expert_answers/mcrdr_stop_plus_rule_expert_answers_fit.json +0 -0
  126. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_expert_answers/mutagenic_expert_answers.json +0 -0
  127. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_expert_answers/relational_scrdr_expert_answers_classify.json +0 -0
  128. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_expert_answers/scrdr_expert_answers_classify.json +0 -0
  129. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_expert_answers/scrdr_expert_answers_fit.json +0 -0
  130. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_expert_answers/scrdr_expert_answers_fit.py +0 -0
  131. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_expert_answers/scrdr_expert_answers_fit_no_targets.json +0 -0
  132. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_expert_answers/scrdr_expert_answers_fit_no_targets.py +0 -0
  133. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_expert_answers/scrdr_multi_line_expert_answers_fit.json +0 -0
  134. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_expert_answers/scrdr_multi_line_expert_answers_fit.py +0 -0
  135. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_expert_answers/scrdr_world_expert_answers_fit.json +0 -0
  136. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_generated_rdrs/__init__.py +0 -0
  137. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_helpers/__init__.py +0 -0
  138. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_helpers/helpers.py +0 -0
  139. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_helpers/object_diagram_case_query.png +0 -0
  140. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_helpers/object_diagram_person.png +0 -0
  141. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_json_serialization.py +0 -0
  142. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_object_diagram.py +0 -0
  143. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_on_mutagenic.py +0 -0
  144. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_rdr.py +0 -0
  145. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_rdr_alchemy.py +0 -0
  146. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_rdr_decorators.py +0 -0
  147. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_rdr_helpers_rdrs.py +0 -0
  148. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_rdr_world/__init__.py +0 -0
  149. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_rdr_world/conftest.py +0 -0
  150. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_rdr_world/test_rdr_world.py +0 -0
  151. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_relational_rdr.py +0 -0
  152. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_relational_rdr_alchemy.py +0 -0
  153. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_results/datasets_physical_object_is_a_robot/__init__.py +0 -0
  154. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_results/datasets_physical_object_is_a_robot/physical_object_is_a_robot_output__scrdr.py +0 -0
  155. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_results/datasets_physical_object_is_a_robot/physical_object_is_a_robot_rdr.py +1 -1
  156. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_results/datasets_physical_object_select_objects_that_are_parts_of_robot/__init__.py +0 -0
  157. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/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 +1 -1
  158. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_results/datasets_physical_object_select_objects_that_are_parts_of_robot/physical_object_select_objects_that_are_parts_of_robot_rdr.py +1 -1
  159. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_sql_model.py +0 -0
  160. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_template_file_creator.py +0 -0
  161. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_user_interface/__init__.py +0 -0
  162. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_user_interface/test_ipython.py +0 -0
  163. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_user_interface/test_ipython_copilot.py +0 -0
  164. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_user_interface/test_prompt.py +0 -0
  165. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/test/test_user_interface/test_qt_gui_inline.py +0 -0
  166. {ripple_down_rules-0.6.45 → ripple_down_rules-0.6.47}/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.45
3
+ Version: 0.6.47
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
@@ -0,0 +1,5 @@
1
+ __version__ = "0.6.47"
2
+
3
+ import logging
4
+ logger = logging.Logger("rdr")
5
+ logger.setLevel(logging.INFO)
@@ -0,0 +1,4 @@
1
+
2
+
3
+ class RDRLoadError(Exception):
4
+ pass
@@ -15,6 +15,7 @@ from types import NoneType, ModuleType
15
15
 
16
16
  from ripple_down_rules.datastructures.dataclasses import CaseFactoryMetaData
17
17
  from . import logger
18
+ from .failures import RDRLoadError
18
19
 
19
20
  try:
20
21
  from matplotlib import pyplot as plt
@@ -217,17 +218,16 @@ class RippleDownRules(SubclassJSONSerializer, ABC):
217
218
  if os.path.exists(json_file + ".json"):
218
219
  rdr = cls.from_json_file(json_file)
219
220
  try:
220
- acronym = cls.get_acronym().lower()
221
- python_file_name = get_file_that_ends_with(model_dir, f"_{acronym}.py")
222
- python_file_path = os.path.join(model_dir, python_file_name)
223
221
  if rdr is None:
224
- rdr = cls.from_python(model_dir, parent_package_name=package_name, python_file_path=python_file_path)
222
+ rdr = cls.from_python(model_dir, parent_package_name=package_name)
225
223
  else:
226
224
  rdr.update_from_python(model_dir, package_name=package_name)
227
225
  rdr.to_json_file(json_file)
228
226
  except (FileNotFoundError, ValueError, SyntaxError, ModuleNotFoundError) as e:
229
227
  logger.warning(f"Could not load the python file for the model {model_name} from {model_dir}. "
230
228
  f"Make sure the file exists and is valid.")
229
+ if rdr is None:
230
+ raise RDRLoadError(f"Could not load the rdr model {model_name} from {model_dir}, error is {e}")
231
231
  rdr.save(save_dir=load_dir, model_name=model_name, package_name=package_name)
232
232
  rdr.save_dir = load_dir
233
233
  rdr.model_name = model_name
@@ -213,9 +213,7 @@ class RDRDecorator:
213
213
  """
214
214
  self.rdr = None
215
215
  if self.model_name is not None:
216
- model_path = os.path.join(self.rdr_models_dir, self.model_name + f"/rdr_metadata/{self.model_name}.json")
217
- if os.path.exists(os.path.join(self.rdr_models_dir, model_path)):
218
- self.rdr = GeneralRDR.load(self.rdr_models_dir, self.model_name, package_name=self.package_name)
216
+ self.rdr = GeneralRDR.load(self.rdr_models_dir, self.model_name, package_name=self.package_name)
219
217
  if self.rdr is None:
220
218
  self.rdr = GeneralRDR(save_dir=self.rdr_models_dir, model_name=self.model_name)
221
219
 
@@ -177,6 +177,11 @@ def extract_imports(file_path: Optional[str] = None, tree: Optional[ast.AST] = N
177
177
  try:
178
178
  if node.level > 0: # Handle relative imports
179
179
  package_name = get_import_path_from_path(Path(os.path.join(file_path, *['..'] * node.level)).resolve())
180
+ if package_name is not None and node.level > 0: # Handle relative imports
181
+ module_rel_path = Path(os.path.join(file_path, *['..'] * node.level, module_name)).resolve()
182
+ idx = str(module_rel_path).rfind(package_name)
183
+ if idx != -1:
184
+ module_name = str(module_rel_path)[idx:].replace(os.path.sep, '.')
180
185
  try:
181
186
  module = importlib.import_module(module_name, package=package_name)
182
187
  except ModuleNotFoundError:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ripple_down_rules
3
- Version: 0.6.45
3
+ Version: 0.6.47
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
@@ -59,6 +59,7 @@ results/relational_scrdr_classify.png
59
59
  scripts/live_dot_server_client.py
60
60
  src/ripple_down_rules/__init__.py
61
61
  src/ripple_down_rules/experts.py
62
+ src/ripple_down_rules/failures.py
62
63
  src/ripple_down_rules/helpers.py
63
64
  src/ripple_down_rules/rdr.py
64
65
  src/ripple_down_rules/rdr_decorators.py
@@ -152,7 +153,6 @@ test/test_results/datasets_physical_object_select_objects_that_are_parts_of_robo
152
153
  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
153
154
  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
154
155
  test/test_results/datasets_physical_object_select_objects_that_are_parts_of_robot/physical_object_select_objects_that_are_parts_of_robot_rdr.py
155
- 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
156
156
  test/test_user_interface/__init__.py
157
157
  test/test_user_interface/test_ipython.py
158
158
  test/test_user_interface/test_ipython_copilot.py
@@ -0,0 +1,19 @@
1
+ from ...datasets import PhysicalObject, Robot
2
+ from types import NoneType
3
+ from typing_extensions import Dict, Optional, Union
4
+
5
+
6
+ def conditions_226969243620390858682731042391766665817(case) -> bool:
7
+ def conditions_for_physical_object_is_a_robot(self_: PhysicalObject, output_: bool) -> bool:
8
+ """Get conditions on whether it's possible to conclude a value for PhysicalObject_is_a_robot.output_ of type ."""
9
+ return True
10
+ return conditions_for_physical_object_is_a_robot(**case)
11
+
12
+
13
+ def conclusion_226969243620390858682731042391766665817(case) -> bool:
14
+ def physical_object_is_a_robot(self_: PhysicalObject, output_: bool) -> bool:
15
+ """Get possible value(s) for PhysicalObject_is_a_robot.output_ of type ."""
16
+ return isinstance(self_, Robot)
17
+ return physical_object_is_a_robot(**case)
18
+
19
+
@@ -7,7 +7,7 @@
7
7
  "_type": "ripple_down_rules.rules.SingleClassRule",
8
8
  "conditions": {
9
9
  "_type": "ripple_down_rules.datastructures.callable_expression.CallableExpression",
10
- "user_input": "def _get_value(case):\n def conditions_for_physical_object_is_a_robot(self_: PhysicalObject, output_: bool) -> bool:\n \"\"\"Get conditions on whether it's possible to conclude a value for PhysicalObject_is_a_robot.output_ of type .\"\"\"\n return True\n return conditions_for_physical_object_is_a_robot(**case)\n ",
10
+ "user_input": "def _get_value(case):\n def conditions_for_physical_object_is_a_robot(self_: PhysicalObject, output_: bool) -> bool:\n \"\"\"Get conditions on whether it's possible to conclude a value for PhysicalObject_is_a_robot.output_ of type .\"\"\"\n return True\n return conditions_for_physical_object_is_a_robot(**case)\n ",
11
11
  "conclusion_type": [
12
12
  "builtins.bool"
13
13
  ],
@@ -22,7 +22,7 @@
22
22
  },
23
23
  "conclusion": {
24
24
  "_type": "ripple_down_rules.datastructures.callable_expression.CallableExpression",
25
- "user_input": "def _get_value(case):\n def physical_object_is_a_robot(self_: PhysicalObject, output_: bool) -> bool:\n \"\"\"Get possible value(s) for PhysicalObject_is_a_robot.output_ of type .\"\"\"\n return isinstance(self_, Robot)\n return physical_object_is_a_robot(**case)\n ",
25
+ "user_input": "def _get_value(case):\n def physical_object_is_a_robot(self_: PhysicalObject, output_: bool) -> bool:\n \"\"\"Get possible value(s) for PhysicalObject_is_a_robot.output_ of type .\"\"\"\n return isinstance(self_, Robot)\n return physical_object_is_a_robot(**case)\n ",
26
26
  "conclusion_type": [
27
27
  "builtins.bool"
28
28
  ],
@@ -0,0 +1,19 @@
1
+ from typing_extensions import Dict, List, Set, Union
2
+ from ...datasets import PhysicalObject, Robot
3
+
4
+
5
+ def conditions_164855806603893754507167918997373216146(case) -> bool:
6
+ def conditions_for_physical_object_select_objects_that_are_parts_of_robot(self_: PhysicalObject, objects: List[PhysicalObject], robot: Robot, output_: PhysicalObject) -> bool:
7
+ """Get conditions on whether it's possible to conclude a value for PhysicalObject_select_objects_that_are_parts_of_robot.output_ of type PhysicalObject."""
8
+ return robot is not None
9
+ return conditions_for_physical_object_select_objects_that_are_parts_of_robot(**case)
10
+
11
+
12
+ def conclusion_164855806603893754507167918997373216146(case) -> List[PhysicalObject]:
13
+ def physical_object_select_objects_that_are_parts_of_robot(self_: PhysicalObject, objects: List[PhysicalObject], robot: Robot, output_: PhysicalObject) -> List[PhysicalObject]:
14
+ """Get possible value(s) for PhysicalObject_select_objects_that_are_parts_of_robot.output_ of type PhysicalObject."""
15
+ robot_parts = [obj for obj in objects if obj in robot.parts]
16
+ return robot_parts
17
+ return physical_object_select_objects_that_are_parts_of_robot(**case)
18
+
19
+
@@ -1,5 +0,0 @@
1
- __version__ = "0.6.45"
2
-
3
- import logging
4
- logger = logging.Logger("rdr")
5
- logger.setLevel(logging.INFO)
@@ -1,19 +0,0 @@
1
- from types import NoneType
2
- from typing_extensions import Dict, Optional, Union
3
- from ...datasets import PhysicalObject, Robot
4
-
5
-
6
- def conditions_226969243620390858682731042391766665817(case) -> bool:
7
- def conditions_for_physical_object_is_a_robot(self_: PhysicalObject, output_: bool) -> bool:
8
- """Get conditions on whether it's possible to conclude a value for PhysicalObject_is_a_robot.output_ of type ."""
9
- return True
10
- return conditions_for_physical_object_is_a_robot(**case)
11
-
12
-
13
- def conclusion_226969243620390858682731042391766665817(case) -> bool:
14
- def physical_object_is_a_robot(self_: PhysicalObject, output_: bool) -> bool:
15
- """Get possible value(s) for PhysicalObject_is_a_robot.output_ of type ."""
16
- return isinstance(self_, Robot)
17
- return physical_object_is_a_robot(**case)
18
-
19
-
@@ -1,19 +0,0 @@
1
- from ...datasets import PhysicalObject, Robot
2
- from typing_extensions import Dict, List, Set, Union
3
-
4
-
5
- def conditions_164855806603893754507167918997373216146(case) -> bool:
6
- def conditions_for_physical_object_select_objects_that_are_parts_of_robot(self_: PhysicalObject, objects: List[PhysicalObject], robot: Robot, output_: PhysicalObject) -> bool:
7
- """Get conditions on whether it's possible to conclude a value for PhysicalObject_select_objects_that_are_parts_of_robot.output_ of type PhysicalObject."""
8
- return robot is not None
9
- return conditions_for_physical_object_select_objects_that_are_parts_of_robot(**case)
10
-
11
-
12
- def conclusion_164855806603893754507167918997373216146(case) -> List[PhysicalObject]:
13
- def physical_object_select_objects_that_are_parts_of_robot(self_: PhysicalObject, objects: List[PhysicalObject], robot: Robot, output_: PhysicalObject) -> List[PhysicalObject]:
14
- """Get possible value(s) for PhysicalObject_select_objects_that_are_parts_of_robot.output_ of type PhysicalObject."""
15
- robot_parts = [obj for obj in objects if obj in robot.parts]
16
- return robot_parts
17
- return physical_object_select_objects_that_are_parts_of_robot(**case)
18
-
19
-
@@ -1,59 +0,0 @@
1
- {
2
- "_type": "ripple_down_rules.rdr.GeneralRDR",
3
- "start_rules": {
4
- "output_": {
5
- "_type": "ripple_down_rules.rdr.MultiClassRDR",
6
- "start_rule": {
7
- "_type": "ripple_down_rules.rules.MultiClassTopRule",
8
- "conditions": {
9
- "_type": "ripple_down_rules.datastructures.callable_expression.CallableExpression",
10
- "user_input": "def _get_value(case):\n def conditions_for_physical_object_select_objects_that_are_parts_of_robot(self_: PhysicalObject, objects: List[PhysicalObject], robot: Robot, output_: PhysicalObject) -> bool:\n \"\"\"Get conditions on whether it's possible to conclude a value for PhysicalObject_select_objects_that_are_parts_of_robot.output_ of type PhysicalObject.\"\"\"\n return robot is not None\n return conditions_for_physical_object_select_objects_that_are_parts_of_robot(**case)\n ",
11
- "conclusion_type": [
12
- "builtins.bool"
13
- ],
14
- "scope": {
15
- "PhysicalObject": "test.datasets.PhysicalObject",
16
- "Robot": "test.datasets.Robot",
17
- "List": "typing.List"
18
- },
19
- "conclusion": {
20
- "_type": "builtins.NoneType",
21
- "value": null
22
- },
23
- "mutually_exclusive": true
24
- },
25
- "conclusion": {
26
- "_type": "ripple_down_rules.datastructures.callable_expression.CallableExpression",
27
- "user_input": "def _get_value(case):\n def physical_object_select_objects_that_are_parts_of_robot(self_: PhysicalObject, objects: List[PhysicalObject], robot: Robot, output_: PhysicalObject) -> List[PhysicalObject]:\n \"\"\"Get possible value(s) for PhysicalObject_select_objects_that_are_parts_of_robot.output_ of type PhysicalObject.\"\"\"\n robot_parts = [obj for obj in objects if obj in robot.parts]\n return robot_parts\n return physical_object_select_objects_that_are_parts_of_robot(**case)\n ",
28
- "conclusion_type": [
29
- "test.datasets.PhysicalObject"
30
- ],
31
- "scope": {
32
- "PhysicalObject": "test.datasets.PhysicalObject",
33
- "Robot": "test.datasets.Robot",
34
- "List": "typing.List"
35
- },
36
- "conclusion": {
37
- "_type": "builtins.NoneType",
38
- "value": null
39
- },
40
- "mutually_exclusive": false
41
- },
42
- "parent": null,
43
- "conclusion_name": "output_",
44
- "weight": "",
45
- "uid": "164855806603893754507167918997373216146",
46
- "refinement": null,
47
- "alternative": null
48
- },
49
- "generated_python_file_name": "physical_object_select_objects_that_are_parts_of_robot_output__mcrdr",
50
- "name": "output_",
51
- "case_type": "typing.Dict",
52
- "case_name": "PhysicalObject_select_objects_that_are_parts_of_robot"
53
- }
54
- },
55
- "generated_python_file_name": "physical_object_select_objects_that_are_parts_of_robot_rdr",
56
- "name": "output_",
57
- "case_type": "typing.Dict",
58
- "case_name": "PhysicalObject_select_objects_that_are_parts_of_robot"
59
- }
@@ -1,6 +1,6 @@
1
1
  from typing_extensions import Any, Dict
2
- from ripple_down_rules.datastructures.case import Case, create_case
3
2
  from ripple_down_rules.helpers import general_rdr_classify
3
+ from ripple_down_rules.datastructures.case import Case, create_case
4
4
  from . import physical_object_is_a_robot_output__scrdr as output__classifier
5
5
 
6
6
  name = 'output_'
@@ -1,7 +1,7 @@
1
- from ripple_down_rules.helpers import get_an_updated_case_copy
2
1
  from ripple_down_rules.datastructures.case import Case, create_case
3
2
  from typing_extensions import Optional, Set
4
3
  from ripple_down_rules.utils import make_set
4
+ from ripple_down_rules.helpers import get_an_updated_case_copy
5
5
  from .physical_object_select_objects_that_are_parts_of_robot_output__mcrdr_defs import *
6
6
 
7
7
 
@@ -1,6 +1,6 @@
1
1
  from typing_extensions import Any, Dict
2
- from ripple_down_rules.datastructures.case import Case, create_case
3
2
  from ripple_down_rules.helpers import general_rdr_classify
3
+ from ripple_down_rules.datastructures.case import Case, create_case
4
4
  from . import physical_object_select_objects_that_are_parts_of_robot_output__mcrdr as output__classifier
5
5
 
6
6
  name = 'output_'