ripple-down-rules 0.6.50__tar.gz → 0.6.52__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 (178) hide show
  1. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/PKG-INFO +1 -1
  2. ripple_down_rules-0.6.52/examples/decorator_model_robot_get_contained_objects/rdr_metadata/decorator_model_robot_get_contained_objects.json +60 -0
  3. ripple_down_rules-0.6.52/examples/decorator_model_robot_get_contained_objects/robot_get_contained_objects_output__mcrdr.py +23 -0
  4. ripple_down_rules-0.6.52/examples/decorator_model_robot_get_contained_objects/robot_get_contained_objects_output__mcrdr_cases.py +7 -0
  5. ripple_down_rules-0.6.52/examples/decorator_model_robot_get_contained_objects/robot_get_contained_objects_output__mcrdr_defs.py +23 -0
  6. ripple_down_rules-0.6.52/examples/decorator_model_robot_get_contained_objects/robot_get_contained_objects_rdr.py +16 -0
  7. ripple_down_rules-0.6.52/examples/part_containment_rdr/__init__.py +1 -0
  8. ripple_down_rules-0.6.52/examples/part_containment_rdr/rdr_metadata/part_containment_rdr.json +59 -0
  9. ripple_down_rules-0.6.52/examples/part_containment_rdr/robot_contained_objects_mcrdr.py +23 -0
  10. ripple_down_rules-0.6.52/examples/part_containment_rdr/robot_contained_objects_mcrdr_cases.py +7 -0
  11. ripple_down_rules-0.6.52/examples/part_containment_rdr/robot_contained_objects_mcrdr_defs.py +21 -0
  12. ripple_down_rules-0.6.52/examples/part_containment_rdr/robot_rdr.py +17 -0
  13. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/src/ripple_down_rules/__init__.py +1 -1
  14. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/src/ripple_down_rules/datastructures/callable_expression.py +6 -3
  15. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/src/ripple_down_rules/rdr_decorators.py +1 -2
  16. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/src/ripple_down_rules.egg-info/PKG-INFO +1 -1
  17. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/src/ripple_down_rules.egg-info/SOURCES.txt +12 -0
  18. ripple_down_rules-0.6.52/test/test_results/__init__.py +1 -0
  19. ripple_down_rules-0.6.52/test/test_results/datasets_physical_object_select_objects_that_are_parts_of_robot/__init__.py +1 -0
  20. ripple_down_rules-0.6.50/test/test_results/__init__.py +0 -1
  21. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/.github/workflows/build_and_deploy_doc.yml +0 -0
  22. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/.github/workflows/ci.yml +0 -0
  23. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/.github/workflows/publish-to-test-pypi.yml +0 -0
  24. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/.gitignore +0 -0
  25. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/.idea/shelf/Uncommitted_changes_before_Checkout_at_2_4_25,_6_32_PM_[Changes]/shelved.patch +0 -0
  26. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/.idea/shelf/Uncommitted_changes_before_Checkout_at_2_4_25,_6_32_PM_[Changes]1/shelved.patch +0 -0
  27. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/LICENSE +0 -0
  28. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/README.md +0 -0
  29. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/doc/_config.yml +0 -0
  30. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/doc/_toc.yml +0 -0
  31. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/doc/bibliography.md +0 -0
  32. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/doc/intro.md +0 -0
  33. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/doc/propositional_example_tutorial.md +0 -0
  34. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/doc/references.bib +0 -0
  35. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/doc/relational_example_tutorial.md +0 -0
  36. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/doc/relational_example_with_decorator_tutorial.md +0 -0
  37. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/doc/requirements.txt +0 -0
  38. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/doc/test_driven_rdr_fitting_tutorial.md +0 -0
  39. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/examples/__init__.py +0 -0
  40. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/examples/animal_species.py +0 -0
  41. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/examples/decorator_example.py +0 -0
  42. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/examples/decorator_model.py +0 -0
  43. {ripple_down_rules-0.6.50/test/test_expert_answers → ripple_down_rules-0.6.52/examples/decorator_model_robot_get_contained_objects}/__init__.py +0 -0
  44. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/examples/relational_example.py +0 -0
  45. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/examples/relational_model.py +0 -0
  46. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/examples/test_relational_example.py +0 -0
  47. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/images/scrdr.dot +0 -0
  48. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/images/scrdr.png +0 -0
  49. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/images/thinking_pr2.jpg +0 -0
  50. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/pyproject.toml +0 -0
  51. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/pytest.ini +0 -0
  52. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/requirements-dev-ci.txt +0 -0
  53. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/requirements-dev.txt +0 -0
  54. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/requirements-gui.txt +0 -0
  55. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/requirements-viz.txt +0 -0
  56. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/requirements.txt +0 -0
  57. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/results/complete_mcrdr_extra.dot +0 -0
  58. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/results/complete_mcrdr_extra.png +0 -0
  59. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/results/complete_mcrdr_stop_only.dot +0 -0
  60. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/results/complete_mcrdr_stop_only.png +0 -0
  61. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/results/complete_mcrdr_stop_plus_rule.dot +0 -0
  62. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/results/complete_mcrdr_stop_plus_rule.png +0 -0
  63. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/results/complete_scrdr.dot +0 -0
  64. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/results/complete_scrdr.png +0 -0
  65. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/results/complete_scrdr_2.dot +0 -0
  66. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/results/complete_scrdr_2.png +0 -0
  67. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/results/complete_scrdr_3.dot +0 -0
  68. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/results/complete_scrdr_3.png +0 -0
  69. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/results/grdr_Habitat.dot +0 -0
  70. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/results/grdr_Habitat.png +0 -0
  71. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/results/grdr_Species.dot +0 -0
  72. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/results/grdr_Species.png +0 -0
  73. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/results/mcrdr_extra.dot +0 -0
  74. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/results/mcrdr_extra.png +0 -0
  75. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/results/mcrdr_extra_classify.dot +0 -0
  76. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/results/mcrdr_extra_classify.png +0 -0
  77. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/results/mcrdr_stop_plus_rule_combined.dot +0 -0
  78. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/results/mcrdr_stop_plus_rule_combined.png +0 -0
  79. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/results/partial_mcrdr_extra.dot +0 -0
  80. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/results/partial_mcrdr_extra.png +0 -0
  81. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/results/relational_scrdr_classify.dot +0 -0
  82. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/results/relational_scrdr_classify.png +0 -0
  83. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/scripts/live_dot_server_client.py +0 -0
  84. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/setup.cfg +0 -0
  85. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/src/ripple_down_rules/datastructures/__init__.py +0 -0
  86. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/src/ripple_down_rules/datastructures/case.py +0 -0
  87. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/src/ripple_down_rules/datastructures/dataclasses.py +0 -0
  88. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/src/ripple_down_rules/datastructures/enums.py +0 -0
  89. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/src/ripple_down_rules/experts.py +0 -0
  90. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/src/ripple_down_rules/failures.py +0 -0
  91. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/src/ripple_down_rules/helpers.py +0 -0
  92. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/src/ripple_down_rules/rdr.py +0 -0
  93. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/src/ripple_down_rules/rules.py +0 -0
  94. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/src/ripple_down_rules/start-code-server.sh +0 -0
  95. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/src/ripple_down_rules/user_interface/__init__.py +0 -0
  96. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/src/ripple_down_rules/user_interface/gui.py +0 -0
  97. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/src/ripple_down_rules/user_interface/ipython_custom_shell.py +0 -0
  98. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/src/ripple_down_rules/user_interface/object_diagram.py +0 -0
  99. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/src/ripple_down_rules/user_interface/prompt.py +0 -0
  100. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/src/ripple_down_rules/user_interface/template_file_creator.py +0 -0
  101. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/src/ripple_down_rules/utils.py +0 -0
  102. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/src/ripple_down_rules.egg-info/dependency_links.txt +0 -0
  103. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/src/ripple_down_rules.egg-info/requires.txt +0 -0
  104. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/src/ripple_down_rules.egg-info/top_level.txt +0 -0
  105. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/__init__.py +0 -0
  106. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/conf/__init__.py +0 -0
  107. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/conf/world/__init__.py +0 -0
  108. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/conf/world/base_config.py +0 -0
  109. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/conf/world/handles_and_containers.py +0 -0
  110. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/conftest.py +0 -0
  111. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/datasets.py +0 -0
  112. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/factories/__init__.py +0 -0
  113. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/factories/world/__init__.py +0 -0
  114. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/factories/world/handles_and_containers.py +0 -0
  115. {ripple_down_rules-0.6.50/test/test_results/datasets_physical_object_is_a_robot → ripple_down_rules-0.6.52/test/test_expert_answers}/__init__.py +0 -0
  116. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_expert_answers/correct_drawer_rdr_expert_answers_fit.json +0 -0
  117. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_expert_answers/drawer_cabinet_expert_answers_fit.json +0 -0
  118. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_expert_answers/grdr_expert_answers_classify.json +0 -0
  119. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_expert_answers/grdr_expert_answers_fit.json +0 -0
  120. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_expert_answers/grdr_expert_answers_fit.py +0 -0
  121. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_expert_answers/grdr_expert_answers_fit_extra.json +0 -0
  122. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_expert_answers/grdr_expert_answers_fit_no_targets.json +0 -0
  123. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_expert_answers/grdr_expert_answers_fit_no_targets.py +0 -0
  124. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_expert_answers/mcrdr_expert_answers_classify.json +0 -0
  125. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_expert_answers/mcrdr_expert_answers_fit_no_targets.json +0 -0
  126. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_expert_answers/mcrdr_expert_answers_fit_no_targets.py +0 -0
  127. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_expert_answers/mcrdr_expert_answers_stop_only_fit.json +0 -0
  128. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_expert_answers/mcrdr_expert_answers_stop_only_fit.py +0 -0
  129. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_expert_answers/mcrdr_extra_expert_answers_classify.json +0 -0
  130. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_expert_answers/mcrdr_extra_expert_answers_fit.json +0 -0
  131. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_expert_answers/mcrdr_multi_line_expert_answers_fit.json +0 -0
  132. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_expert_answers/mcrdr_multi_line_expert_answers_fit.py +0 -0
  133. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_expert_answers/mcrdr_stop_only_answers_fit.json +0 -0
  134. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_expert_answers/mcrdr_stop_plus_rule_answers_fit.json +0 -0
  135. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_expert_answers/mcrdr_stop_plus_rule_combined_expert_answers_fit.json +0 -0
  136. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_expert_answers/mcrdr_stop_plus_rule_expert_answers_fit.json +0 -0
  137. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_expert_answers/mutagenic_expert_answers.json +0 -0
  138. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_expert_answers/relational_scrdr_expert_answers_classify.json +0 -0
  139. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_expert_answers/scrdr_expert_answers_classify.json +0 -0
  140. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_expert_answers/scrdr_expert_answers_fit.json +0 -0
  141. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_expert_answers/scrdr_expert_answers_fit.py +0 -0
  142. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_expert_answers/scrdr_expert_answers_fit_no_targets.json +0 -0
  143. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_expert_answers/scrdr_expert_answers_fit_no_targets.py +0 -0
  144. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_expert_answers/scrdr_multi_line_expert_answers_fit.json +0 -0
  145. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_expert_answers/scrdr_multi_line_expert_answers_fit.py +0 -0
  146. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_expert_answers/scrdr_world_expert_answers_fit.json +0 -0
  147. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_generated_rdrs/__init__.py +0 -0
  148. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_helpers/__init__.py +0 -0
  149. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_helpers/helpers.py +0 -0
  150. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_helpers/object_diagram_case_query.png +0 -0
  151. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_helpers/object_diagram_person.png +0 -0
  152. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_json_serialization.py +0 -0
  153. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_object_diagram.py +0 -0
  154. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_on_mutagenic.py +0 -0
  155. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_rdr.py +0 -0
  156. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_rdr_alchemy.py +0 -0
  157. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_rdr_decorators.py +0 -0
  158. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_rdr_helpers_rdrs.py +0 -0
  159. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_rdr_world/__init__.py +0 -0
  160. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_rdr_world/conftest.py +0 -0
  161. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_rdr_world/test_rdr_world.py +0 -0
  162. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_relational_rdr.py +0 -0
  163. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_relational_rdr_alchemy.py +0 -0
  164. {ripple_down_rules-0.6.50/test/test_results/datasets_physical_object_select_objects_that_are_parts_of_robot → ripple_down_rules-0.6.52/test/test_results/datasets_physical_object_is_a_robot}/__init__.py +0 -0
  165. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_results/datasets_physical_object_is_a_robot/physical_object_is_a_robot_output__scrdr.py +0 -0
  166. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_results/datasets_physical_object_is_a_robot/physical_object_is_a_robot_output__scrdr_defs.py +0 -0
  167. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_results/datasets_physical_object_is_a_robot/physical_object_is_a_robot_rdr.py +0 -0
  168. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/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
  169. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/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
  170. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/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
  171. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_sql_model.py +0 -0
  172. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_template_file_creator.py +0 -0
  173. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_user_interface/__init__.py +0 -0
  174. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_user_interface/test_ipython.py +0 -0
  175. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_user_interface/test_ipython_copilot.py +0 -0
  176. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_user_interface/test_prompt.py +0 -0
  177. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/test/test_user_interface/test_qt_gui_inline.py +0 -0
  178. {ripple_down_rules-0.6.50 → ripple_down_rules-0.6.52}/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.50
3
+ Version: 0.6.52
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,60 @@
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_robot_get_contained_objects(self_: Robot, output_: PhysicalObject) -> bool:\n \"\"\"Get conditions on whether it's possible to conclude a value for Robot_get_contained_objects.output_ of type PhysicalObject.\"\"\"\n return len(self_.parts) > 0\n return conditions_for_robot_get_contained_objects(**case)\n ",
11
+ "conclusion_type": [
12
+ "builtins.bool"
13
+ ],
14
+ "scope": {
15
+ "PhysicalObject": "relational_model.PhysicalObject",
16
+ "Robot": "decorator_model.Robot"
17
+ },
18
+ "conclusion": {
19
+ "_type": "builtins.NoneType",
20
+ "value": null
21
+ },
22
+ "mutually_exclusive": false
23
+ },
24
+ "conclusion": {
25
+ "_type": "ripple_down_rules.datastructures.callable_expression.CallableExpression",
26
+ "user_input": "def _get_value(case):\n def robot_get_contained_objects(self_: Robot, output_: PhysicalObject) -> List[PhysicalObject]:\n \"\"\"Get possible value(s) for Robot_get_contained_objects.output_ of type PhysicalObject.\"\"\"\n contained_objects = []\n for part in self_.parts:\n contained_objects.extend(part.contained_objects)\n return contained_objects\n return robot_get_contained_objects(**case)\n ",
27
+ "conclusion_type": [
28
+ "relational_model.PhysicalObject",
29
+ "builtins.set",
30
+ "builtins.list"
31
+ ],
32
+ "scope": {
33
+ "PhysicalObject": "relational_model.PhysicalObject",
34
+ "List": "typing.List",
35
+ "Robot": "decorator_model.Robot"
36
+ },
37
+ "conclusion": {
38
+ "_type": "builtins.NoneType",
39
+ "value": null
40
+ },
41
+ "mutually_exclusive": false
42
+ },
43
+ "parent": null,
44
+ "conclusion_name": "output_",
45
+ "weight": "",
46
+ "uid": "167615852950279355863004646114673699744",
47
+ "refinement": null,
48
+ "alternative": null
49
+ },
50
+ "generated_python_file_name": "robot_get_contained_objects_output__mcrdr",
51
+ "name": "output_",
52
+ "case_type": "typing.Dict",
53
+ "case_name": "Robot_get_contained_objects"
54
+ }
55
+ },
56
+ "generated_python_file_name": "robot_get_contained_objects_rdr",
57
+ "name": "output_",
58
+ "case_type": "typing.Dict",
59
+ "case_name": "Robot_get_contained_objects"
60
+ }
@@ -0,0 +1,23 @@
1
+ from ripple_down_rules.datastructures.case import Case, create_case
2
+ from typing_extensions import Optional, Set
3
+ from ripple_down_rules.utils import make_set
4
+ from ripple_down_rules.helpers import get_an_updated_case_copy
5
+ from .robot_get_contained_objects_output__mcrdr_defs import *
6
+
7
+
8
+ attribute_name = 'output_'
9
+ conclusion_type = (set, list, PhysicalObject,)
10
+ mutually_exclusive = False
11
+ name = 'output_'
12
+ case_type = Dict
13
+ case_name = 'Robot_get_contained_objects'
14
+
15
+
16
+ def classify(case: Dict, **kwargs) -> Set[PhysicalObject]:
17
+ if not isinstance(case, Case):
18
+ case = create_case(case, max_recursion_idx=3)
19
+ conclusions = set()
20
+
21
+ if conditions_167615852950279355863004646114673699744(case):
22
+ conclusions.update(make_set(conclusion_167615852950279355863004646114673699744(case)))
23
+ return conclusions
@@ -0,0 +1,7 @@
1
+ # This file contains the corner cases for the rules.
2
+ from ripple_down_rules.datastructures.dataclasses import CaseFactoryMetaData
3
+
4
+
5
+ corner_case_167615852950279355863004646114673699744 = CaseFactoryMetaData(factory_method=None, factory_idx=None, case_conf=None, scenario=None)
6
+
7
+
@@ -0,0 +1,23 @@
1
+ from ripple_down_rules.datastructures.case import Case
2
+ from typing_extensions import Dict, List, Set, Union
3
+ from decorator_model import Robot
4
+ from relational_model import PhysicalObject
5
+
6
+
7
+ def conditions_167615852950279355863004646114673699744(case) -> bool:
8
+ def conditions_for_robot_get_contained_objects(self_: Robot, output_: PhysicalObject) -> bool:
9
+ """Get conditions on whether it's possible to conclude a value for Robot_get_contained_objects.output_ of type PhysicalObject."""
10
+ return len(self_.parts) > 0
11
+ return conditions_for_robot_get_contained_objects(**case)
12
+
13
+
14
+ def conclusion_167615852950279355863004646114673699744(case) -> List[PhysicalObject]:
15
+ def robot_get_contained_objects(self_: Robot, output_: PhysicalObject) -> List[PhysicalObject]:
16
+ """Get possible value(s) for Robot_get_contained_objects.output_ of type PhysicalObject."""
17
+ contained_objects = []
18
+ for part in self_.parts:
19
+ contained_objects.extend(part.contained_objects)
20
+ return contained_objects
21
+ return robot_get_contained_objects(**case)
22
+
23
+
@@ -0,0 +1,16 @@
1
+ from typing_extensions import Any, Dict
2
+ from ripple_down_rules.helpers import general_rdr_classify
3
+ from ripple_down_rules.datastructures.case import Case, create_case
4
+ from . import robot_get_contained_objects_output__mcrdr as output__classifier
5
+
6
+ name = 'output_'
7
+ case_type = Dict
8
+ case_name = 'Robot_get_contained_objects'
9
+ classifiers_dict = dict()
10
+ classifiers_dict['output_'] = output__classifier
11
+
12
+
13
+ def classify(case: Dict, **kwargs) -> Dict[str, Any]:
14
+ if not isinstance(case, Case):
15
+ case = create_case(case, max_recursion_idx=3)
16
+ return general_rdr_classify(classifiers_dict, case, **kwargs)
@@ -0,0 +1 @@
1
+ from . import *
@@ -0,0 +1,59 @@
1
+ {
2
+ "_type": "ripple_down_rules.rdr.GeneralRDR",
3
+ "start_rules": {
4
+ "contained_objects": {
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_robot_contained_objects_of_type_physical_object(case: Robot) -> bool:\n \"\"\"Get conditions on whether it's possible to conclude a value for Robot.contained_objects of type PhysicalObject.\"\"\"\n return len(case.parts) > 0\n return conditions_for_robot_contained_objects_of_type_physical_object(case)\n ",
11
+ "conclusion_type": [
12
+ "builtins.bool"
13
+ ],
14
+ "scope": {
15
+ "Robot": "relational_model.Robot"
16
+ },
17
+ "conclusion": {
18
+ "_type": "builtins.NoneType",
19
+ "value": null
20
+ },
21
+ "mutually_exclusive": false
22
+ },
23
+ "conclusion": {
24
+ "_type": "ripple_down_rules.datastructures.callable_expression.CallableExpression",
25
+ "user_input": "def _get_value(case):\n def robot_contained_objects_of_type_physical_object(case: Robot) -> List[PhysicalObject]:\n \"\"\"Get possible value(s) for Robot.contained_objects of type PhysicalObject.\"\"\"\n contained_objects: List[PhysicalObject] = []\n for part in case.parts:\n contained_objects.extend(part.contained_objects)\n return contained_objects\n return robot_contained_objects_of_type_physical_object(case)\n ",
26
+ "conclusion_type": [
27
+ "relational_model.PhysicalObject",
28
+ "builtins.set",
29
+ "builtins.list"
30
+ ],
31
+ "scope": {
32
+ "Robot": "relational_model.Robot",
33
+ "PhysicalObject": "relational_model.PhysicalObject",
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": "contained_objects",
44
+ "weight": "",
45
+ "uid": "298609776593271728826836208156881692889",
46
+ "refinement": null,
47
+ "alternative": null
48
+ },
49
+ "generated_python_file_name": "robot_contained_objects_mcrdr",
50
+ "name": "contained_objects",
51
+ "case_type": "relational_model.Robot",
52
+ "case_name": "Robot"
53
+ }
54
+ },
55
+ "generated_python_file_name": "robot_rdr",
56
+ "name": "contained_objects",
57
+ "case_type": "relational_model.Robot",
58
+ "case_name": "Robot"
59
+ }
@@ -0,0 +1,23 @@
1
+ from ripple_down_rules.utils import make_set
2
+ from ripple_down_rules.helpers import get_an_updated_case_copy
3
+ from typing_extensions import Optional, Set
4
+ from ripple_down_rules.datastructures.case import Case, create_case
5
+ from .robot_contained_objects_mcrdr_defs import *
6
+
7
+
8
+ attribute_name = 'contained_objects'
9
+ conclusion_type = (set, PhysicalObject, list,)
10
+ mutually_exclusive = False
11
+ name = 'contained_objects'
12
+ case_type = Robot
13
+ case_name = 'Robot'
14
+
15
+
16
+ def classify(case: Robot, **kwargs) -> Set[PhysicalObject]:
17
+ if not isinstance(case, Case):
18
+ case = create_case(case, max_recursion_idx=3)
19
+ conclusions = set()
20
+
21
+ if conditions_298609776593271728826836208156881692889(case):
22
+ conclusions.update(make_set(conclusion_298609776593271728826836208156881692889(case)))
23
+ return conclusions
@@ -0,0 +1,7 @@
1
+ # This file contains the corner cases for the rules.
2
+ from ripple_down_rules.datastructures.dataclasses import CaseFactoryMetaData
3
+
4
+
5
+ corner_case_298609776593271728826836208156881692889 = CaseFactoryMetaData(factory_method=None, factory_idx=None, case_conf=None, scenario=None)
6
+
7
+
@@ -0,0 +1,21 @@
1
+ from typing_extensions import List, Set, Union
2
+ from relational_model import PhysicalObject, Robot
3
+
4
+
5
+ def conditions_298609776593271728826836208156881692889(case) -> bool:
6
+ def conditions_for_robot_contained_objects_of_type_physical_object(case: Robot) -> bool:
7
+ """Get conditions on whether it's possible to conclude a value for Robot.contained_objects of type PhysicalObject."""
8
+ return len(case.parts) > 0
9
+ return conditions_for_robot_contained_objects_of_type_physical_object(case)
10
+
11
+
12
+ def conclusion_298609776593271728826836208156881692889(case) -> List[PhysicalObject]:
13
+ def robot_contained_objects_of_type_physical_object(case: Robot) -> List[PhysicalObject]:
14
+ """Get possible value(s) for Robot.contained_objects of type PhysicalObject."""
15
+ contained_objects: List[PhysicalObject] = []
16
+ for part in case.parts:
17
+ contained_objects.extend(part.contained_objects)
18
+ return contained_objects
19
+ return robot_contained_objects_of_type_physical_object(case)
20
+
21
+
@@ -0,0 +1,17 @@
1
+ from typing_extensions import Any, Dict
2
+ from ripple_down_rules.helpers import general_rdr_classify
3
+ from ripple_down_rules.datastructures.case import Case, create_case
4
+ from relational_model import Robot
5
+ from . import robot_contained_objects_mcrdr as contained_objects_classifier
6
+
7
+ name = 'contained_objects'
8
+ case_type = Robot
9
+ case_name = 'Robot'
10
+ classifiers_dict = dict()
11
+ classifiers_dict['contained_objects'] = contained_objects_classifier
12
+
13
+
14
+ def classify(case: Robot, **kwargs) -> Dict[str, Any]:
15
+ if not isinstance(case, Case):
16
+ case = create_case(case, max_recursion_idx=3)
17
+ return general_rdr_classify(classifiers_dict, case, **kwargs)
@@ -1,4 +1,4 @@
1
- __version__ = "0.6.50"
1
+ __version__ = "0.6.52"
2
2
 
3
3
  import logging
4
4
  import sys
@@ -130,8 +130,10 @@ class CallableExpression(SubclassJSONSerializer):
130
130
  conclusion_type = (conclusion_type,)
131
131
  self.conclusion_type = conclusion_type
132
132
  self.expected_types: Set[Type] = set(conclusion_type) if conclusion_type is not None else set()
133
- if not mutually_exclusive:
134
- self.expected_types.update({list, set})
133
+ if list in self.expected_types:
134
+ self.expected_types.remove(list)
135
+ if set in self.expected_types:
136
+ self.expected_types.add(set)
135
137
  self.scope: Optional[Dict[str, Any]] = scope if scope is not None else {}
136
138
  self.scope = get_used_scope(self.user_input, self.scope)
137
139
  self.expression_tree: AST = expression_tree if expression_tree else parse_string_to_expression(self.user_input)
@@ -149,6 +151,8 @@ class CallableExpression(SubclassJSONSerializer):
149
151
 
150
152
  def __call__(self, case: Any, **kwargs) -> Any:
151
153
  try:
154
+ # if not self.mutually_exclusive:
155
+ # self.expected_types.update({list, set})
152
156
  if self.user_input is not None:
153
157
  if not isinstance(case, Case):
154
158
  case = create_case(case, max_recursion_idx=3)
@@ -160,7 +164,6 @@ class CallableExpression(SubclassJSONSerializer):
160
164
  if self.mutually_exclusive and issubclass(type(output), (list, set)):
161
165
  raise ValueError(f"Mutually exclusive types cannot be lists or sets, got {type(output)}")
162
166
  output_types = {type(o) for o in make_list(output)}
163
- output_types.add(type(output))
164
167
  if not are_results_subclass_of_types(output_types, self.expected_types):
165
168
  raise ValueError(f"Not all result types {output_types} are subclasses of expected types"
166
169
  f" {self.conclusion_type}")
@@ -102,8 +102,7 @@ class RDRDecorator:
102
102
  """
103
103
  This is used to refer to the output value of the decorated function, this is used as part of the case as input to
104
104
  the rdr model, but is never used in the rule logic to prevent cycles from happening. The correct way to use the
105
- output of an rdr in the rules logic is in the case when mutually exclusive is False, or through refinements of
106
- existing rules when mutually exclusive is True, which happens automatically by the rdr prompting for refinements.
105
+ output of an rdr is through refinement rules which happens automatically by the rdr prompting for refinements.
107
106
  """
108
107
  _not_none_output_found: bool = field(init=False, default=False)
109
108
  """
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ripple_down_rules
3
- Version: 0.6.50
3
+ Version: 0.6.52
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
@@ -30,6 +30,18 @@ examples/decorator_model.py
30
30
  examples/relational_example.py
31
31
  examples/relational_model.py
32
32
  examples/test_relational_example.py
33
+ examples/decorator_model_robot_get_contained_objects/__init__.py
34
+ examples/decorator_model_robot_get_contained_objects/robot_get_contained_objects_output__mcrdr.py
35
+ examples/decorator_model_robot_get_contained_objects/robot_get_contained_objects_output__mcrdr_cases.py
36
+ examples/decorator_model_robot_get_contained_objects/robot_get_contained_objects_output__mcrdr_defs.py
37
+ examples/decorator_model_robot_get_contained_objects/robot_get_contained_objects_rdr.py
38
+ examples/decorator_model_robot_get_contained_objects/rdr_metadata/decorator_model_robot_get_contained_objects.json
39
+ examples/part_containment_rdr/__init__.py
40
+ examples/part_containment_rdr/robot_contained_objects_mcrdr.py
41
+ examples/part_containment_rdr/robot_contained_objects_mcrdr_cases.py
42
+ examples/part_containment_rdr/robot_contained_objects_mcrdr_defs.py
43
+ examples/part_containment_rdr/robot_rdr.py
44
+ examples/part_containment_rdr/rdr_metadata/part_containment_rdr.json
33
45
  images/scrdr.dot
34
46
  images/scrdr.png
35
47
  images/thinking_pr2.jpg
@@ -0,0 +1 @@
1
+ from . import *
@@ -0,0 +1 @@
1
+ # This is an empty init file to make the directory a package.
@@ -1 +0,0 @@
1
- # This is an empty __init__.py file to make the directory a package.