ripple-down-rules 0.6.44__tar.gz → 0.6.46__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.
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/PKG-INFO +1 -1
- ripple_down_rules-0.6.46/src/ripple_down_rules/__init__.py +5 -0
- ripple_down_rules-0.6.46/src/ripple_down_rules/failures.py +4 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/src/ripple_down_rules/rdr.py +43 -10
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/src/ripple_down_rules/rdr_decorators.py +1 -3
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/src/ripple_down_rules/utils.py +16 -4
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/src/ripple_down_rules.egg-info/PKG-INFO +1 -1
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/src/ripple_down_rules.egg-info/SOURCES.txt +1 -1
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_rdr.py +4 -4
- ripple_down_rules-0.6.46/test/test_results/datasets_physical_object_is_a_robot/physical_object_is_a_robot_output__scrdr_defs.py +19 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_results/datasets_physical_object_is_a_robot/rdr_metadata/datasets_physical_object_is_a_robot.json +2 -2
- ripple_down_rules-0.6.46/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
- ripple_down_rules-0.6.44/src/ripple_down_rules/__init__.py +0 -5
- ripple_down_rules-0.6.44/test/test_results/datasets_physical_object_is_a_robot/physical_object_is_a_robot_output__scrdr_defs.py +0 -19
- ripple_down_rules-0.6.44/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
- ripple_down_rules-0.6.44/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
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/.github/workflows/build_and_deploy_doc.yml +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/.github/workflows/ci.yml +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/.github/workflows/publish-to-test-pypi.yml +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/.gitignore +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/.idea/shelf/Uncommitted_changes_before_Checkout_at_2_4_25,_6_32_PM_[Changes]/shelved.patch +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/.idea/shelf/Uncommitted_changes_before_Checkout_at_2_4_25,_6_32_PM_[Changes]1/shelved.patch +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/LICENSE +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/README.md +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/doc/_config.yml +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/doc/_toc.yml +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/doc/bibliography.md +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/doc/intro.md +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/doc/references.bib +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/doc/requirements.txt +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/examples/__init__.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/examples/animal_species.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/examples/part_containment_rdr/__init__.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/examples/part_containment_rdr/rdr_metadata/part_containment_rdr.json +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/examples/part_containment_rdr/robot_contained_objects_mcrdr.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/examples/part_containment_rdr/robot_contained_objects_mcrdr_defs.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/examples/part_containment_rdr/robot_rdr.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/examples/relational_example.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/images/scrdr.dot +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/images/scrdr.png +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/images/thinking_pr2.jpg +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/pyproject.toml +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/pytest.ini +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/requirements-dev-ci.txt +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/requirements-dev.txt +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/requirements-gui.txt +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/requirements-viz.txt +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/requirements.txt +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/results/complete_mcrdr_extra.dot +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/results/complete_mcrdr_extra.png +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/results/complete_mcrdr_stop_only.dot +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/results/complete_mcrdr_stop_only.png +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/results/complete_mcrdr_stop_plus_rule.dot +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/results/complete_mcrdr_stop_plus_rule.png +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/results/complete_scrdr.dot +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/results/complete_scrdr.png +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/results/complete_scrdr_2.dot +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/results/complete_scrdr_2.png +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/results/complete_scrdr_3.dot +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/results/complete_scrdr_3.png +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/results/grdr_Habitat.dot +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/results/grdr_Habitat.png +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/results/grdr_Species.dot +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/results/grdr_Species.png +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/results/mcrdr_extra.dot +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/results/mcrdr_extra.png +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/results/mcrdr_extra_classify.dot +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/results/mcrdr_extra_classify.png +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/results/mcrdr_stop_plus_rule_combined.dot +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/results/mcrdr_stop_plus_rule_combined.png +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/results/partial_mcrdr_extra.dot +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/results/partial_mcrdr_extra.png +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/results/relational_scrdr_classify.dot +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/results/relational_scrdr_classify.png +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/scripts/live_dot_server_client.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/setup.cfg +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/src/ripple_down_rules/datastructures/__init__.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/src/ripple_down_rules/datastructures/callable_expression.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/src/ripple_down_rules/datastructures/case.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/src/ripple_down_rules/datastructures/dataclasses.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/src/ripple_down_rules/datastructures/enums.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/src/ripple_down_rules/experts.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/src/ripple_down_rules/helpers.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/src/ripple_down_rules/rules.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/src/ripple_down_rules/start-code-server.sh +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/src/ripple_down_rules/user_interface/__init__.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/src/ripple_down_rules/user_interface/gui.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/src/ripple_down_rules/user_interface/ipython_custom_shell.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/src/ripple_down_rules/user_interface/object_diagram.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/src/ripple_down_rules/user_interface/prompt.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/src/ripple_down_rules/user_interface/template_file_creator.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/src/ripple_down_rules.egg-info/dependency_links.txt +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/src/ripple_down_rules.egg-info/requires.txt +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/src/ripple_down_rules.egg-info/top_level.txt +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/__init__.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/conf/__init__.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/conf/world/__init__.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/conf/world/base_config.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/conf/world/handles_and_containers.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/conftest.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/datasets.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/factories/__init__.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/factories/world/__init__.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/factories/world/handles_and_containers.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_expert_answers/__init__.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_expert_answers/correct_drawer_rdr_expert_answers_fit.json +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_expert_answers/drawer_cabinet_expert_answers_fit.json +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_expert_answers/grdr_expert_answers_classify.json +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_expert_answers/grdr_expert_answers_fit.json +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_expert_answers/grdr_expert_answers_fit.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_expert_answers/grdr_expert_answers_fit_extra.json +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_expert_answers/grdr_expert_answers_fit_no_targets.json +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_expert_answers/grdr_expert_answers_fit_no_targets.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_expert_answers/mcrdr_expert_answers_classify.json +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_expert_answers/mcrdr_expert_answers_fit_no_targets.json +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_expert_answers/mcrdr_expert_answers_fit_no_targets.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_expert_answers/mcrdr_expert_answers_stop_only_fit.json +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_expert_answers/mcrdr_expert_answers_stop_only_fit.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_expert_answers/mcrdr_extra_expert_answers_classify.json +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_expert_answers/mcrdr_extra_expert_answers_fit.json +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_expert_answers/mcrdr_multi_line_expert_answers_fit.json +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_expert_answers/mcrdr_multi_line_expert_answers_fit.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_expert_answers/mcrdr_stop_only_answers_fit.json +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_expert_answers/mcrdr_stop_plus_rule_answers_fit.json +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_expert_answers/mcrdr_stop_plus_rule_combined_expert_answers_fit.json +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_expert_answers/mcrdr_stop_plus_rule_expert_answers_fit.json +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_expert_answers/mutagenic_expert_answers.json +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_expert_answers/relational_scrdr_expert_answers_classify.json +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_expert_answers/scrdr_expert_answers_classify.json +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_expert_answers/scrdr_expert_answers_fit.json +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_expert_answers/scrdr_expert_answers_fit.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_expert_answers/scrdr_expert_answers_fit_no_targets.json +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_expert_answers/scrdr_expert_answers_fit_no_targets.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_expert_answers/scrdr_multi_line_expert_answers_fit.json +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_expert_answers/scrdr_multi_line_expert_answers_fit.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_expert_answers/scrdr_world_expert_answers_fit.json +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_generated_rdrs/__init__.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_helpers/__init__.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_helpers/helpers.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_helpers/object_diagram_case_query.png +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_helpers/object_diagram_person.png +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_json_serialization.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_object_diagram.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_on_mutagenic.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_rdr_alchemy.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_rdr_decorators.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_rdr_helpers_rdrs.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_rdr_world/__init__.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_rdr_world/conftest.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_rdr_world/test_rdr_world.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_relational_rdr.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_relational_rdr_alchemy.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_results/datasets_physical_object_is_a_robot/__init__.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_results/datasets_physical_object_is_a_robot/physical_object_is_a_robot_output__scrdr.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_results/datasets_physical_object_is_a_robot/physical_object_is_a_robot_rdr.py +1 -1
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_results/datasets_physical_object_select_objects_that_are_parts_of_robot/__init__.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/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
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/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
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_sql_model.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_template_file_creator.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_user_interface/__init__.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_user_interface/test_ipython.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_user_interface/test_ipython_copilot.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_user_interface/test_prompt.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_user_interface/test_qt_gui_inline.py +0 -0
- {ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/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.
|
3
|
+
Version: 0.6.46
|
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
|
@@ -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
|
@@ -45,7 +46,7 @@ from .utils import draw_tree, make_set, SubclassJSONSerializer, make_list, get_t
|
|
45
46
|
is_value_conflicting, extract_function_source, extract_imports, get_full_class_name, \
|
46
47
|
is_iterable, str_to_snake_case, get_import_path_from_path, get_imports_from_types, render_tree, \
|
47
48
|
get_types_to_import_from_func_type_hints, get_function_return_type, get_file_that_ends_with, \
|
48
|
-
get_and_import_python_module, get_and_import_python_modules_in_a_package
|
49
|
+
get_and_import_python_module, get_and_import_python_modules_in_a_package, get_type_from_type_hint
|
49
50
|
|
50
51
|
|
51
52
|
class RippleDownRules(SubclassJSONSerializer, ABC):
|
@@ -217,10 +218,10 @@ 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:
|
221
|
+
acronym = cls.get_acronym().lower()
|
222
|
+
python_file_name = get_file_that_ends_with(model_dir, f"_{acronym}.py")
|
223
|
+
python_file_path = os.path.join(model_dir, python_file_name)
|
220
224
|
if rdr is None:
|
221
|
-
acronym = cls.get_acronym().lower()
|
222
|
-
python_file_name = get_file_that_ends_with(model_dir, f"_{acronym}.py")
|
223
|
-
python_file_path = os.path.join(model_dir, python_file_name)
|
224
225
|
rdr = cls.from_python(model_dir, parent_package_name=package_name, python_file_path=python_file_path)
|
225
226
|
else:
|
226
227
|
rdr.update_from_python(model_dir, package_name=package_name)
|
@@ -228,6 +229,8 @@ class RippleDownRules(SubclassJSONSerializer, ABC):
|
|
228
229
|
except (FileNotFoundError, ValueError, SyntaxError, ModuleNotFoundError) as e:
|
229
230
|
logger.warning(f"Could not load the python file for the model {model_name} from {model_dir}. "
|
230
231
|
f"Make sure the file exists and is valid.")
|
232
|
+
if rdr is None:
|
233
|
+
raise RDRLoadError(f"Could not load the rdr model {model_name} from {model_dir}, error is {e}")
|
231
234
|
rdr.save(save_dir=load_dir, model_name=model_name, package_name=package_name)
|
232
235
|
rdr.save_dir = load_dir
|
233
236
|
rdr.model_name = model_name
|
@@ -886,22 +889,52 @@ class RDRWithCodeWriter(RippleDownRules, ABC):
|
|
886
889
|
self.update_rdr_metadata_from_python(main_module)
|
887
890
|
|
888
891
|
functions_source = extract_function_source(defs_module.__file__,
|
889
|
-
all_func_names, include_signature=
|
892
|
+
all_func_names, include_signature=True)
|
890
893
|
scope = extract_imports(defs_module.__file__, package_name=package_name)
|
891
894
|
|
895
|
+
cases_source, cases_scope = None, None
|
896
|
+
if cases_module:
|
897
|
+
with open(cases_module.__file__, "r") as f:
|
898
|
+
cases_source = f.read()
|
899
|
+
cases_scope = extract_imports(cases_module.__file__, package_name=package_name)
|
900
|
+
|
901
|
+
with open(main_module.__file__, "r") as f:
|
902
|
+
main_source = f.read()
|
903
|
+
main_scope = extract_imports(main_module.__file__, package_name=package_name)
|
904
|
+
attribute_name_line = [l for l in main_source.split('\n') if "attribute_name = " in l]
|
905
|
+
conclusion_name = None
|
906
|
+
if len(attribute_name_line) > 0:
|
907
|
+
conclusion_name = eval(attribute_name_line[0].split('=')[-1].strip(), main_scope)
|
908
|
+
|
892
909
|
for rule in all_rules:
|
893
910
|
if rule.conditions is not None:
|
894
911
|
conditions_wrapper_func_name = rule.generated_conditions_function_name
|
895
912
|
user_input = functions_source[conditions_wrapper_func_name]
|
913
|
+
user_input = '\n'.join(user_input.split("\n")[1:]) # Remove the function signature line
|
896
914
|
rule.conditions = CallableExpression(user_input, (bool,), scope=scope)
|
897
915
|
if cases_module:
|
898
|
-
|
916
|
+
try:
|
917
|
+
rule.corner_case_metadata = cases_module.__dict__[rule.generated_corner_case_object_name]
|
918
|
+
except KeyError:
|
919
|
+
case_def_lines = [l for l in cases_source.split('\n') if rule.generated_corner_case_object_name in l]
|
920
|
+
if len(case_def_lines) > 0:
|
921
|
+
case_def_line = case_def_lines[0].split('=')[-1].strip()
|
922
|
+
rule.corner_case_metadata = eval(case_def_line, cases_scope)
|
923
|
+
|
899
924
|
if not isinstance(rule, MultiClassStopRule):
|
900
|
-
|
901
|
-
|
902
|
-
user_input = functions_source[
|
925
|
+
if conclusion_name:
|
926
|
+
rule.conclusion_name = conclusion_name
|
927
|
+
user_input = functions_source[rule.generated_conclusion_function_name]
|
928
|
+
split_user_input = user_input.split("\n")
|
929
|
+
user_input = '\n'.join(split_user_input[1:])
|
903
930
|
conclusion_func = defs_module.__dict__.get(rule.generated_conclusion_function_name)
|
904
|
-
|
931
|
+
if conclusion_func is None:
|
932
|
+
function_signature = split_user_input[0]
|
933
|
+
return_type_hint_str = function_signature.split('->')[-1].strip(' :')
|
934
|
+
return_type_hint = eval(return_type_hint_str, scope)
|
935
|
+
conclusion_type = get_type_from_type_hint(return_type_hint)
|
936
|
+
else:
|
937
|
+
conclusion_type = get_function_return_type(conclusion_func)
|
905
938
|
rule.conclusion = CallableExpression(user_input, conclusion_type, scope=scope,
|
906
939
|
mutually_exclusive=self.mutually_exclusive)
|
907
940
|
|
{ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/src/ripple_down_rules/rdr_decorators.py
RENAMED
@@ -213,9 +213,7 @@ class RDRDecorator:
|
|
213
213
|
"""
|
214
214
|
self.rdr = None
|
215
215
|
if self.model_name is not None:
|
216
|
-
|
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
|
|
@@ -168,20 +168,28 @@ def extract_imports(file_path: Optional[str] = None, tree: Optional[ast.AST] = N
|
|
168
168
|
try:
|
169
169
|
scope[asname] = importlib.import_module(module_name, package=package_name)
|
170
170
|
except ImportError as e:
|
171
|
-
|
171
|
+
logger.warning(f"Could not import {module_name}: {e}")
|
172
172
|
elif isinstance(node, ast.ImportFrom):
|
173
173
|
module_name = node.module
|
174
174
|
for alias in node.names:
|
175
175
|
name = alias.name
|
176
176
|
asname = alias.asname or name
|
177
177
|
try:
|
178
|
+
if node.level > 0: # Handle relative imports
|
179
|
+
package_name = get_import_path_from_path(Path(os.path.join(file_path, *['..'] * node.level)).resolve())
|
178
180
|
if package_name is not None and node.level > 0: # Handle relative imports
|
179
181
|
module_rel_path = Path(os.path.join(file_path, *['..'] * node.level, module_name)).resolve()
|
180
182
|
idx = str(module_rel_path).rfind(package_name)
|
181
183
|
if idx != -1:
|
182
184
|
module_name = str(module_rel_path)[idx:].replace(os.path.sep, '.')
|
183
|
-
|
184
|
-
|
185
|
+
try:
|
186
|
+
module = importlib.import_module(module_name, package=package_name)
|
187
|
+
except ModuleNotFoundError:
|
188
|
+
module = importlib.import_module(f"{package_name}.{module_name}")
|
189
|
+
if name == "*":
|
190
|
+
scope.update(module.__dict__)
|
191
|
+
else:
|
192
|
+
scope[asname] = getattr(module, name)
|
185
193
|
except (ImportError, AttributeError) as e:
|
186
194
|
logger.warning(f"Could not import {module_name}: {e} while extracting imports from {file_path}")
|
187
195
|
|
@@ -782,10 +790,14 @@ def get_function_return_type(func: Callable) -> Union[Type, None, Tuple[Type, ..
|
|
782
790
|
if sig.return_annotation == inspect.Signature.empty:
|
783
791
|
return None
|
784
792
|
type_hint = sig.return_annotation
|
793
|
+
return get_type_from_type_hint(type_hint)
|
794
|
+
|
795
|
+
|
796
|
+
def get_type_from_type_hint(type_hint: Type) -> Union[Type, Tuple[Type, ...]]:
|
785
797
|
origin = get_origin(type_hint)
|
786
798
|
args = get_args(type_hint)
|
787
799
|
if origin not in [list, set, None, Union]:
|
788
|
-
raise TypeError(f"{origin} is not a handled return type for
|
800
|
+
raise TypeError(f"{origin} is not a handled return type for type hint {type_hint}")
|
789
801
|
if origin is None:
|
790
802
|
return typing_to_python_type(type_hint)
|
791
803
|
if args is None or len(args) == 0:
|
{ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/src/ripple_down_rules.egg-info/PKG-INFO
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: ripple_down_rules
|
3
|
-
Version: 0.6.
|
3
|
+
Version: 0.6.46
|
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
|
{ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/src/ripple_down_rules.egg-info/SOURCES.txt
RENAMED
@@ -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
|
@@ -106,8 +106,8 @@ class TestRDR(TestCase):
|
|
106
106
|
def test_read_mcrdr_tree(self):
|
107
107
|
original_mcrdr = get_fit_mcrdr(self.all_cases, self.targets)
|
108
108
|
save_dir = self.generated_rdrs_dir
|
109
|
-
model_name = original_mcrdr.save(save_dir)
|
110
|
-
scrdr_loaded = MultiClassRDR.load(save_dir,
|
109
|
+
model_name = original_mcrdr.save(save_dir, 'test_read_mcrdr_tree')
|
110
|
+
scrdr_loaded = MultiClassRDR.load(save_dir, model_name, package_name=f"test.test_generated_rdrs.{model_name}")
|
111
111
|
model_path = os.path.join(save_dir, model_name)
|
112
112
|
rules_root = MultiClassRDR.read_rule_tree_from_python(model_path)
|
113
113
|
for rule, og_rule in zip([rules_root] + list(rules_root.descendants),
|
@@ -130,7 +130,7 @@ class TestRDR(TestCase):
|
|
130
130
|
def test_load_mcrdr_from_python(self):
|
131
131
|
original_mcrdr = get_fit_mcrdr(self.all_cases, self.targets)
|
132
132
|
save_dir = self.generated_rdrs_dir
|
133
|
-
model_name = original_mcrdr.save(save_dir)
|
133
|
+
model_name = original_mcrdr.save(save_dir, 'test_load_mcrdr_from_python')
|
134
134
|
model_path = os.path.join(save_dir, model_name)
|
135
135
|
mcrdr_loaded = MultiClassRDR.from_python(model_path)
|
136
136
|
for case, target in zip(self.all_cases, self.targets):
|
@@ -139,7 +139,7 @@ class TestRDR(TestCase):
|
|
139
139
|
def test_load_grdr_from_python(self):
|
140
140
|
original_grdr, targets = get_fit_grdr(self.all_cases, self.targets)
|
141
141
|
save_dir = self.generated_rdrs_dir
|
142
|
-
model_name = original_grdr.save(save_dir)
|
142
|
+
model_name = original_grdr.save(save_dir, 'test_load_grdr_from_python')
|
143
143
|
model_path = os.path.join(save_dir, model_name)
|
144
144
|
grdr_loaded = GeneralRDR.from_python(model_path)
|
145
145
|
for case, target in zip(self.all_cases[:len(targets)], targets):
|
@@ -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
|
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
|
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,19 +0,0 @@
|
|
1
|
-
from typing_extensions import Dict, Optional, Union
|
2
|
-
from types import NoneType
|
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 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,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
|
-
"Robot": "test.datasets.Robot",
|
16
|
-
"List": "typing.List",
|
17
|
-
"PhysicalObject": "test.datasets.PhysicalObject"
|
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
|
-
"Robot": "test.datasets.Robot",
|
33
|
-
"List": "typing.List",
|
34
|
-
"PhysicalObject": "test.datasets.PhysicalObject"
|
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
|
-
}
|
{ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/.github/workflows/build_and_deploy_doc.yml
RENAMED
File without changes
|
File without changes
|
{ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/.github/workflows/publish-to-test-pypi.yml
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/examples/part_containment_rdr/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/examples/part_containment_rdr/robot_rdr.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/results/complete_mcrdr_stop_plus_rule.dot
RENAMED
File without changes
|
{ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/results/complete_mcrdr_stop_plus_rule.png
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/results/mcrdr_stop_plus_rule_combined.dot
RENAMED
File without changes
|
{ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/results/mcrdr_stop_plus_rule_combined.png
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/src/ripple_down_rules/datastructures/case.py
RENAMED
File without changes
|
File without changes
|
{ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/src/ripple_down_rules/datastructures/enums.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/src/ripple_down_rules/start-code-server.sh
RENAMED
File without changes
|
File without changes
|
{ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/src/ripple_down_rules/user_interface/gui.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/src/ripple_down_rules/user_interface/prompt.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/src/ripple_down_rules.egg-info/requires.txt
RENAMED
File without changes
|
{ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/src/ripple_down_rules.egg-info/top_level.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/conf/world/handles_and_containers.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/factories/world/handles_and_containers.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_helpers/object_diagram_person.png
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -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_'
|
File without changes
|
@@ -1,7 +1,7 @@
|
|
1
1
|
from ripple_down_rules.datastructures.case import Case, create_case
|
2
2
|
from typing_extensions import Optional, Set
|
3
|
-
from ripple_down_rules.helpers import get_an_updated_case_copy
|
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_'
|
File without changes
|
File without changes
|
File without changes
|
{ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_user_interface/test_ipython.py
RENAMED
File without changes
|
File without changes
|
{ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_user_interface/test_prompt.py
RENAMED
File without changes
|
{ripple_down_rules-0.6.44 → ripple_down_rules-0.6.46}/test/test_user_interface/test_qt_gui_inline.py
RENAMED
File without changes
|
File without changes
|