ripple-down-rules 0.4.83__tar.gz → 0.4.85__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ripple_down_rules-0.4.85/.github/workflows/publish-to-test-pypi.yml +121 -0
- ripple_down_rules-0.4.85/.idea/shelf/Uncommitted_changes_before_Checkout_at_2_4_25,_6_32_PM_[Changes]/shelved.patch +203 -0
- {ripple_down_rules-0.4.83 → ripple_down_rules-0.4.85}/PKG-INFO +18 -8
- ripple_down_rules-0.4.85/examples/readme_example.py +19 -0
- ripple_down_rules-0.4.85/images/thinking_pr2.jpg +0 -0
- {ripple_down_rules-0.4.83 → ripple_down_rules-0.4.85}/pyproject.toml +25 -17
- ripple_down_rules-0.4.85/requirements-dev.txt +6 -0
- ripple_down_rules-0.4.85/requirements-gui.txt +2 -0
- ripple_down_rules-0.4.85/requirements-viz.txt +2 -0
- ripple_down_rules-0.4.83/src/ripple_down_rules.egg-info/requires.txt → ripple_down_rules-0.4.85/requirements.txt +3 -7
- ripple_down_rules-0.4.85/results/complete_mcrdr_extra.dot +487 -0
- ripple_down_rules-0.4.85/results/complete_mcrdr_extra.png +0 -0
- ripple_down_rules-0.4.85/results/complete_mcrdr_stop_only.dot +194 -0
- ripple_down_rules-0.4.85/results/complete_mcrdr_stop_only.png +0 -0
- ripple_down_rules-0.4.85/results/complete_mcrdr_stop_plus_rule.dot +167 -0
- ripple_down_rules-0.4.85/results/complete_mcrdr_stop_plus_rule.png +0 -0
- ripple_down_rules-0.4.85/results/complete_scrdr.dot +105 -0
- ripple_down_rules-0.4.85/results/complete_scrdr.png +0 -0
- ripple_down_rules-0.4.85/results/complete_scrdr_2.dot +91 -0
- ripple_down_rules-0.4.85/results/complete_scrdr_2.png +0 -0
- ripple_down_rules-0.4.85/results/complete_scrdr_3.dot +90 -0
- ripple_down_rules-0.4.85/results/complete_scrdr_3.png +0 -0
- ripple_down_rules-0.4.85/results/grdr_Habitat.dot +83 -0
- ripple_down_rules-0.4.85/results/grdr_Habitat.png +0 -0
- ripple_down_rules-0.4.85/results/grdr_Species.dot +96 -0
- ripple_down_rules-0.4.85/results/grdr_Species.png +0 -0
- ripple_down_rules-0.4.85/results/mcrdr_extra.dot +216 -0
- ripple_down_rules-0.4.85/results/mcrdr_extra.png +0 -0
- ripple_down_rules-0.4.85/results/mcrdr_extra_classify.dot +11 -0
- ripple_down_rules-0.4.85/results/mcrdr_extra_classify.png +0 -0
- ripple_down_rules-0.4.85/results/mcrdr_stop_plus_rule_combined.dot +345 -0
- ripple_down_rules-0.4.85/results/mcrdr_stop_plus_rule_combined.png +0 -0
- ripple_down_rules-0.4.85/results/partial_mcrdr_extra.dot +218 -0
- ripple_down_rules-0.4.85/results/partial_mcrdr_extra.png +0 -0
- ripple_down_rules-0.4.85/results/relational_scrdr_classify.dot +4 -0
- ripple_down_rules-0.4.85/results/relational_scrdr_classify.png +0 -0
- ripple_down_rules-0.4.85/src/ripple_down_rules/__init__.py +1 -0
- {ripple_down_rules-0.4.83 → ripple_down_rules-0.4.85}/src/ripple_down_rules/datastructures/case.py +1 -1
- {ripple_down_rules-0.4.83 → ripple_down_rules-0.4.85}/src/ripple_down_rules/experts.py +5 -1
- {ripple_down_rules-0.4.83 → ripple_down_rules-0.4.85}/src/ripple_down_rules/rdr.py +19 -5
- ripple_down_rules-0.4.85/src/ripple_down_rules/start-code-server.sh +27 -0
- {ripple_down_rules-0.4.83 → ripple_down_rules-0.4.85}/src/ripple_down_rules/user_interface/gui.py +17 -34
- {ripple_down_rules-0.4.83 → ripple_down_rules-0.4.85}/src/ripple_down_rules/user_interface/ipython_custom_shell.py +2 -3
- {ripple_down_rules-0.4.83 → ripple_down_rules-0.4.85}/src/ripple_down_rules/user_interface/object_diagram.py +7 -1
- {ripple_down_rules-0.4.83 → ripple_down_rules-0.4.85}/src/ripple_down_rules/user_interface/prompt.py +2 -1
- {ripple_down_rules-0.4.83 → ripple_down_rules-0.4.85}/src/ripple_down_rules/user_interface/template_file_creator.py +1 -3
- {ripple_down_rules-0.4.83 → ripple_down_rules-0.4.85}/src/ripple_down_rules/utils.py +40 -4
- {ripple_down_rules-0.4.83 → ripple_down_rules-0.4.85}/src/ripple_down_rules.egg-info/PKG-INFO +18 -8
- ripple_down_rules-0.4.85/src/ripple_down_rules.egg-info/SOURCES.txt +112 -0
- ripple_down_rules-0.4.85/src/ripple_down_rules.egg-info/requires.txt +29 -0
- ripple_down_rules-0.4.85/test/test_expert_answers/correct_drawer_rdr_expert_answers_fit.json +1 -0
- ripple_down_rules-0.4.85/test/test_expert_answers/grdr_expert_answers_classify.json +1 -0
- ripple_down_rules-0.4.85/test/test_expert_answers/grdr_expert_answers_fit.json +7 -0
- ripple_down_rules-0.4.85/test/test_expert_answers/grdr_expert_answers_fit_extra.json +42 -0
- ripple_down_rules-0.4.85/test/test_expert_answers/grdr_expert_answers_fit_no_targets.json +1 -0
- ripple_down_rules-0.4.85/test/test_expert_answers/mcrdr_expert_answers_classify.json +1 -0
- ripple_down_rules-0.4.85/test/test_expert_answers/mcrdr_expert_answers_fit_no_targets.json +1 -0
- ripple_down_rules-0.4.85/test/test_expert_answers/mcrdr_expert_answers_stop_only_fit.json +20 -0
- ripple_down_rules-0.4.85/test/test_expert_answers/mcrdr_extra_expert_answers_classify.json +7 -0
- ripple_down_rules-0.4.85/test/test_expert_answers/mcrdr_extra_expert_answers_fit.json +26 -0
- ripple_down_rules-0.4.85/test/test_expert_answers/mcrdr_multi_line_expert_answers_fit.json +8 -0
- ripple_down_rules-0.4.85/test/test_expert_answers/mcrdr_stop_only_answers_fit.json +89 -0
- ripple_down_rules-0.4.85/test/test_expert_answers/mcrdr_stop_plus_rule_answers_fit.json +80 -0
- ripple_down_rules-0.4.85/test/test_expert_answers/mcrdr_stop_plus_rule_combined_expert_answers_fit.json +28 -0
- ripple_down_rules-0.4.85/test/test_expert_answers/mcrdr_stop_plus_rule_expert_answers_fit.json +24 -0
- ripple_down_rules-0.4.85/test/test_expert_answers/mutagenic_expert_answers.json +1 -0
- ripple_down_rules-0.4.85/test/test_expert_answers/relational_scrdr_expert_answers_classify.json +4 -0
- ripple_down_rules-0.4.85/test/test_expert_answers/scrdr_expert_answers_classify.json +1 -0
- ripple_down_rules-0.4.85/test/test_expert_answers/scrdr_expert_answers_fit.json +14 -0
- ripple_down_rules-0.4.85/test/test_expert_answers/scrdr_expert_answers_fit_no_targets.json +27 -0
- ripple_down_rules-0.4.85/test/test_expert_answers/scrdr_multi_line_expert_answers_fit.json +7 -0
- ripple_down_rules-0.4.85/test/test_expert_answers/scrdr_world_expert_answers_fit.json +1 -0
- ripple_down_rules-0.4.85/test/test_expert_answers/view_rdr_expert_answers_fit.json +6 -0
- ripple_down_rules-0.4.85/test/test_generated_rdrs/__init__.py +0 -0
- ripple_down_rules-0.4.85/test/test_helpers/__init__.py +0 -0
- ripple_down_rules-0.4.85/test/test_helpers/helpers.py +121 -0
- ripple_down_rules-0.4.85/test/test_helpers/object_diagram_case_query.png +0 -0
- ripple_down_rules-0.4.85/test/test_helpers/object_diagram_person.png +0 -0
- {ripple_down_rules-0.4.83 → ripple_down_rules-0.4.85}/test/test_rdr.py +12 -7
- ripple_down_rules-0.4.85/test/test_results/datasets_physical_object_is_a_robot.json +62 -0
- ripple_down_rules-0.4.85/test/test_results/datasets_physical_object_select_objects_that_are_parts_of_robot.json +74 -0
- ripple_down_rules-0.4.85/test/test_user_interface/__init__.py +0 -0
- ripple_down_rules-0.4.85/test/test_user_interface/test_ipython.py +69 -0
- ripple_down_rules-0.4.85/test/test_user_interface/test_ipython_copilot.py +118 -0
- ripple_down_rules-0.4.85/test/test_user_interface/test_pdb.py +37 -0
- ripple_down_rules-0.4.85/test/test_user_interface/test_qt_gui.py +333 -0
- ripple_down_rules-0.4.85/test/test_user_interface/test_qt_gui_inline.py +65 -0
- ripple_down_rules-0.4.83/src/ripple_down_rules.egg-info/SOURCES.txt +0 -40
- /ripple_down_rules-0.4.83/src/ripple_down_rules/__init__.py → /ripple_down_rules-0.4.85/.idea/shelf/Uncommitted_changes_before_Checkout_at_2_4_25,_6_32_PM_[Changes]1/shelved.patch +0 -0
- {ripple_down_rules-0.4.83 → ripple_down_rules-0.4.85}/LICENSE +0 -0
- {ripple_down_rules-0.4.83 → ripple_down_rules-0.4.85}/README.md +0 -0
- {ripple_down_rules-0.4.83 → ripple_down_rules-0.4.85}/setup.cfg +0 -0
- {ripple_down_rules-0.4.83 → ripple_down_rules-0.4.85}/src/ripple_down_rules/datasets.py +0 -0
- {ripple_down_rules-0.4.83 → ripple_down_rules-0.4.85}/src/ripple_down_rules/datastructures/__init__.py +0 -0
- {ripple_down_rules-0.4.83 → ripple_down_rules-0.4.85}/src/ripple_down_rules/datastructures/callable_expression.py +0 -0
- {ripple_down_rules-0.4.83 → ripple_down_rules-0.4.85}/src/ripple_down_rules/datastructures/dataclasses.py +0 -0
- {ripple_down_rules-0.4.83 → ripple_down_rules-0.4.85}/src/ripple_down_rules/datastructures/enums.py +0 -0
- {ripple_down_rules-0.4.83 → ripple_down_rules-0.4.85}/src/ripple_down_rules/failures.py +0 -0
- {ripple_down_rules-0.4.83 → ripple_down_rules-0.4.85}/src/ripple_down_rules/helpers.py +0 -0
- {ripple_down_rules-0.4.83 → ripple_down_rules-0.4.85}/src/ripple_down_rules/rdr_decorators.py +0 -0
- {ripple_down_rules-0.4.83 → ripple_down_rules-0.4.85}/src/ripple_down_rules/rules.py +0 -0
- {ripple_down_rules-0.4.83 → ripple_down_rules-0.4.85}/src/ripple_down_rules/user_interface/__init__.py +0 -0
- {ripple_down_rules-0.4.83 → ripple_down_rules-0.4.85}/src/ripple_down_rules.egg-info/dependency_links.txt +0 -0
- {ripple_down_rules-0.4.83 → ripple_down_rules-0.4.85}/src/ripple_down_rules.egg-info/top_level.txt +0 -0
- {ripple_down_rules-0.4.83 → ripple_down_rules-0.4.85}/test/test_json_serialization.py +0 -0
- {ripple_down_rules-0.4.83 → ripple_down_rules-0.4.85}/test/test_object_diagram.py +0 -0
- {ripple_down_rules-0.4.83 → ripple_down_rules-0.4.85}/test/test_on_mutagenic.py +0 -0
- {ripple_down_rules-0.4.83 → ripple_down_rules-0.4.85}/test/test_rdr_alchemy.py +0 -0
- {ripple_down_rules-0.4.83 → ripple_down_rules-0.4.85}/test/test_rdr_decorators.py +0 -0
- {ripple_down_rules-0.4.83 → ripple_down_rules-0.4.85}/test/test_rdr_world.py +0 -0
- {ripple_down_rules-0.4.83 → ripple_down_rules-0.4.85}/test/test_relational_rdr.py +0 -0
- {ripple_down_rules-0.4.83 → ripple_down_rules-0.4.85}/test/test_relational_rdr_alchemy.py +0 -0
- {ripple_down_rules-0.4.83 → ripple_down_rules-0.4.85}/test/test_sql_model.py +0 -0
- {ripple_down_rules-0.4.83 → ripple_down_rules-0.4.85}/test/test_template_file_creator.py +0 -0
- {ripple_down_rules-0.4.83 → ripple_down_rules-0.4.85}/test/test_utils.py +0 -0
@@ -0,0 +1,121 @@
|
|
1
|
+
name: Publish Python distribution to PyPI and TestPyPI
|
2
|
+
on:
|
3
|
+
push:
|
4
|
+
branches:
|
5
|
+
- main # Only run on pushes to the main branch
|
6
|
+
jobs:
|
7
|
+
build:
|
8
|
+
name: Build distribution
|
9
|
+
runs-on: ubuntu-latest
|
10
|
+
|
11
|
+
steps:
|
12
|
+
- uses: actions/checkout@v4
|
13
|
+
- name: Set up Python
|
14
|
+
uses: actions/setup-python@v5
|
15
|
+
with:
|
16
|
+
python-version: "3.x"
|
17
|
+
|
18
|
+
- name: Install pypa/build
|
19
|
+
run: >-
|
20
|
+
python3 -m
|
21
|
+
pip install
|
22
|
+
build
|
23
|
+
--user
|
24
|
+
|
25
|
+
- name: Build a binary wheel and a source tarball
|
26
|
+
run: python3 -m build
|
27
|
+
|
28
|
+
- name: Store the distribution packages
|
29
|
+
uses: actions/upload-artifact@v4
|
30
|
+
with:
|
31
|
+
name: python-package-distributions
|
32
|
+
path: dist/
|
33
|
+
|
34
|
+
publish-to-pypi:
|
35
|
+
name: >-
|
36
|
+
Publish Python distribution to PyPI
|
37
|
+
# if: startsWith(github.ref, 'refs/tags/') # only publish to PyPI on tag pushes
|
38
|
+
needs:
|
39
|
+
- build
|
40
|
+
runs-on: ubuntu-latest
|
41
|
+
environment:
|
42
|
+
name: pypi
|
43
|
+
url: https://pypi.org/p/ripple_down_rules # Replace <package-name> with your PyPI project name
|
44
|
+
permissions:
|
45
|
+
id-token: write # IMPORTANT: mandatory for trusted publishing
|
46
|
+
|
47
|
+
steps:
|
48
|
+
- name: Download all the dists
|
49
|
+
uses: actions/download-artifact@v4
|
50
|
+
with:
|
51
|
+
name: python-package-distributions
|
52
|
+
path: dist/
|
53
|
+
- name: Publish distribution to PyPI
|
54
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
55
|
+
|
56
|
+
# github-release:
|
57
|
+
# name: >-
|
58
|
+
# Sign the Python distribution with Sigstore
|
59
|
+
# and upload them to GitHub Release
|
60
|
+
# needs:
|
61
|
+
# - publish-to-pypi
|
62
|
+
# runs-on: ubuntu-latest
|
63
|
+
#
|
64
|
+
# permissions:
|
65
|
+
# contents: write # IMPORTANT: mandatory for making GitHub Releases
|
66
|
+
# id-token: write # IMPORTANT: mandatory for sigstore
|
67
|
+
#
|
68
|
+
# steps:
|
69
|
+
# - name: Download all the dists
|
70
|
+
# uses: actions/download-artifact@v3
|
71
|
+
# with:
|
72
|
+
# name: python-package-distributions
|
73
|
+
# path: dist/
|
74
|
+
# - name: Sign the dists with Sigstore
|
75
|
+
# uses: sigstore/gh-action-sigstore-python@v2.1.1
|
76
|
+
# with:
|
77
|
+
# inputs: >-
|
78
|
+
# ./dist/*.tar.gz
|
79
|
+
# ./dist/*.whl
|
80
|
+
# - name: Create GitHub Release
|
81
|
+
# env:
|
82
|
+
# GITHUB_TOKEN: ${{ github.token }}
|
83
|
+
# run: >-
|
84
|
+
# gh release create
|
85
|
+
# '${{ github.ref_name }}'
|
86
|
+
# --repo '${{ github.repository }}'
|
87
|
+
# --notes ""
|
88
|
+
# - name: Upload artifact signatures to GitHub Release
|
89
|
+
# env:
|
90
|
+
# GITHUB_TOKEN: ${{ github.token }}
|
91
|
+
# # Upload to GitHub Release using the `gh` CLI.
|
92
|
+
# # `dist/` contains the built packages, and the
|
93
|
+
# # sigstore-produced signatures and certificates.
|
94
|
+
# run: >-
|
95
|
+
# gh release upload
|
96
|
+
# '${{ github.ref_name }}' dist/**
|
97
|
+
# --repo '${{ github.repository }}'
|
98
|
+
|
99
|
+
# publish-to-testpypi:
|
100
|
+
# name: Publish Python distribution to TestPyPI
|
101
|
+
# needs:
|
102
|
+
# - build
|
103
|
+
# runs-on: ubuntu-latest
|
104
|
+
#
|
105
|
+
# environment:
|
106
|
+
# name: testpypi
|
107
|
+
# url: https://test.pypi.org/p/ripple_down_rules
|
108
|
+
#
|
109
|
+
# permissions:
|
110
|
+
# id-token: write #mandatory for trusted publishing
|
111
|
+
#
|
112
|
+
# steps:
|
113
|
+
# - name: Download all the dists
|
114
|
+
# uses: actions/download-artifact@v4
|
115
|
+
# with:
|
116
|
+
# name: python-package-distributions
|
117
|
+
# path: dist/
|
118
|
+
# - name: Publish distribution to TestPyPI
|
119
|
+
# uses: pypa/gh-action-pypi-publish@release/v1
|
120
|
+
# with:
|
121
|
+
# repository-url: https://test.pypi.org/legacy/
|
@@ -0,0 +1,203 @@
|
|
1
|
+
Index: .idea/workspace.xml
|
2
|
+
IDEA additional info:
|
3
|
+
Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
|
4
|
+
<+><?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n <component name=\"AutoImportSettings\">\n <option name=\"autoReloadType\" value=\"SELECTIVE\" />\n </component>\n <component name=\"ChangeListManager\">\n <list default=\"true\" id=\"d2f036b6-02b2-42cb-99f5-ad1ea77b9d5a\" name=\"Changes\" comment=\"\">\n <changelist_data name=\"A_Bassiouny\" email=\"abdelrhman_bassuny@hotmail.com\" date=\"1738438521000\" />\n <change afterPath=\"$PROJECT_DIR$/.gitignore\" afterDir=\"false\" />\n <change afterPath=\"$PROJECT_DIR$/LICENSE\" afterDir=\"false\" />\n <change afterPath=\"$PROJECT_DIR$/requirements-dev.txt\" afterDir=\"false\" />\n <change afterPath=\"$PROJECT_DIR$/requirements.txt\" afterDir=\"false\" />\n <change afterPath=\"$PROJECT_DIR$/results/complete_mcrdr_extra.dot\" afterDir=\"false\" />\n <change afterPath=\"$PROJECT_DIR$/results/complete_mcrdr_extra.png\" afterDir=\"false\" />\n <change afterPath=\"$PROJECT_DIR$/results/complete_mcrdr_stop_only.dot\" afterDir=\"false\" />\n <change afterPath=\"$PROJECT_DIR$/results/complete_mcrdr_stop_only.png\" afterDir=\"false\" />\n <change afterPath=\"$PROJECT_DIR$/results/complete_mcrdr_stop_plus_rule.dot\" afterDir=\"false\" />\n <change afterPath=\"$PROJECT_DIR$/results/complete_mcrdr_stop_plus_rule.png\" afterDir=\"false\" />\n <change afterPath=\"$PROJECT_DIR$/results/complete_scrdr.dot\" afterDir=\"false\" />\n <change afterPath=\"$PROJECT_DIR$/results/complete_scrdr.png\" afterDir=\"false\" />\n <change afterPath=\"$PROJECT_DIR$/results/complete_scrdr_2.dot\" afterDir=\"false\" />\n <change afterPath=\"$PROJECT_DIR$/results/complete_scrdr_2.png\" afterDir=\"false\" />\n <change afterPath=\"$PROJECT_DIR$/results/complete_scrdr_3.dot\" afterDir=\"false\" />\n <change afterPath=\"$PROJECT_DIR$/results/complete_scrdr_3.png\" afterDir=\"false\" />\n <change afterPath=\"$PROJECT_DIR$/results/partial_mcrdr_extra.dot\" afterDir=\"false\" />\n <change afterPath=\"$PROJECT_DIR$/results/partial_mcrdr_extra.png\" afterDir=\"false\" />\n <change afterPath=\"$PROJECT_DIR$/src/__init__.py\" afterDir=\"false\" />\n <change afterPath=\"$PROJECT_DIR$/src/pyrdr/__init__.py\" afterDir=\"false\" />\n <change afterPath=\"$PROJECT_DIR$/src/pyrdr/datastructures.py\" afterDir=\"false\" />\n <change afterPath=\"$PROJECT_DIR$/src/pyrdr/experts.py\" afterDir=\"false\" />\n <change afterPath=\"$PROJECT_DIR$/src/pyrdr/failures.py\" afterDir=\"false\" />\n <change afterPath=\"$PROJECT_DIR$/src/pyrdr/helpers.py\" afterDir=\"false\" />\n <change afterPath=\"$PROJECT_DIR$/src/pyrdr/rdr.py\" afterDir=\"false\" />\n <change afterPath=\"$PROJECT_DIR$/src/pyrdr/utils.py\" afterDir=\"false\" />\n <change afterPath=\"$PROJECT_DIR$/test/mcrdr_expert_answers_classify.json\" afterDir=\"false\" />\n <change afterPath=\"$PROJECT_DIR$/test/mcrdr_extra_expert_answers_classify.json\" afterDir=\"false\" />\n <change afterPath=\"$PROJECT_DIR$/test/mcrdr_extra_expert_answers_fit.json\" afterDir=\"false\" />\n <change afterPath=\"$PROJECT_DIR$/test/mcrdr_stop_only_answers_fit.json\" afterDir=\"false\" />\n <change afterPath=\"$PROJECT_DIR$/test/mcrdr_stop_plus_rule_answers_fit.json\" afterDir=\"false\" />\n <change afterPath=\"$PROJECT_DIR$/test/scrdr_expert_answers_classify.json\" afterDir=\"false\" />\n <change afterPath=\"$PROJECT_DIR$/test/scrdr_expert_answers_fit.json\" afterDir=\"false\" />\n <change afterPath=\"$PROJECT_DIR$/test/test_rdr.py\" afterDir=\"false\" />\n </list>\n <option name=\"SHOW_DIALOG\" value=\"false\" />\n <option name=\"HIGHLIGHT_CONFLICTS\" value=\"true\" />\n <option name=\"HIGHLIGHT_NON_ACTIVE_CHANGELIST\" value=\"false\" />\n <option name=\"LAST_RESOLUTION\" value=\"IGNORE\" />\n </component>\n <component name=\"FileTemplateManagerImpl\">\n <option name=\"RECENT_TEMPLATES\">\n <list>\n <option value=\"Python Script\" />\n </list>\n </option>\n </component>\n <component name=\"Git.Settings\">\n <option name=\"RECENT_BRANCH_BY_REPOSITORY\">\n <map>\n <entry key=\"$PROJECT_DIR$\" value=\"temp_branch\" />\n </map>\n </option>\n <option name=\"RECENT_GIT_ROOT_PATH\" value=\"$PROJECT_DIR$\" />\n <option name=\"RESET_MODE\" value=\"HARD\" />\n </component>\n <component name=\"MarkdownSettingsMigration\">\n <option name=\"stateVersion\" value=\"1\" />\n </component>\n <component name=\"ProjectColorInfo\">{\n "associatedIndex": 5\n}</component>\n <component name=\"ProjectId\" id=\"2saIUNn6UfpjY0Paj61bNBzr6Xo\" />\n <component name=\"ProjectViewState\">\n <option name=\"hideEmptyMiddlePackages\" value=\"true\" />\n <option name=\"showLibraryContents\" value=\"true\" />\n </component>\n <component name=\"PropertiesComponent\">{\n "keyToString": {\n "Python.test_example.executor": "Run",\n "RunOnceActivity.OpenProjectViewOnStart": "true",\n "RunOnceActivity.ShowReadmeOnStart": "true",\n "git-widget-placeholder": "ripple__down__rules",\n "last_opened_file_path": "/home/bassioun/Documents/repos/ripple_down_rules",\n "node.js.detected.package.eslint": "true",\n "node.js.detected.package.tslint": "true",\n "node.js.selected.package.eslint": "(autodetect)",\n "node.js.selected.package.tslint": "(autodetect)",\n "nodejs_package_manager_path": "npm",\n "settings.editor.selected.configurable": "PyScientificConfigurable",\n "vue.rearranger.settings.migration": "true"\n }\n}</component>\n <component name=\"RunManager\">\n <configuration name=\"test_example\" type=\"PythonConfigurationType\" factoryName=\"Python\" temporary=\"true\" nameIsGenerated=\"true\">\n <module name=\"ripple_down_rules\" />\n <option name=\"ENV_FILES\" value=\"\" />\n <option name=\"INTERPRETER_OPTIONS\" value=\"\" />\n <option name=\"PARENT_ENVS\" value=\"true\" />\n <envs>\n <env name=\"PYTHONUNBUFFERED\" value=\"1\" />\n </envs>\n <option name=\"SDK_HOME\" value=\"\" />\n <option name=\"WORKING_DIRECTORY\" value=\"$PROJECT_DIR$/test\" />\n <option name=\"IS_MODULE_SDK\" value=\"true\" />\n <option name=\"ADD_CONTENT_ROOTS\" value=\"true\" />\n <option name=\"ADD_SOURCE_ROOTS\" value=\"true\" />\n <EXTENSION ID=\"PythonCoverageRunConfigurationExtension\" runner=\"coverage.py\" />\n <option name=\"SCRIPT_NAME\" value=\"$PROJECT_DIR$/test/test_example.py\" />\n <option name=\"PARAMETERS\" value=\"\" />\n <option name=\"SHOW_COMMAND_LINE\" value=\"false\" />\n <option name=\"EMULATE_TERMINAL\" value=\"false\" />\n <option name=\"MODULE_MODE\" value=\"false\" />\n <option name=\"REDIRECT_INPUT\" value=\"false\" />\n <option name=\"INPUT_FILE\" value=\"\" />\n <method v=\"2\" />\n </configuration>\n <recent_temporary>\n <list>\n <item itemvalue=\"Python.test_example\" />\n </list>\n </recent_temporary>\n </component>\n <component name=\"SharedIndexes\">\n <attachedChunks>\n <set>\n <option value=\"bundled-python-sdk-50da183f06c8-2887949eec09-com.jetbrains.pycharm.pro.sharedIndexes.bundled-PY-233.13135.95\" />\n </set>\n </attachedChunks>\n </component>\n <component name=\"SpellCheckerSettings\" RuntimeDictionaries=\"0\" Folders=\"0\" CustomDictionaries=\"0\" DefaultDictionary=\"application-level\" UseSingleDictionary=\"true\" transferred=\"true\" />\n <component name=\"TaskManager\">\n <task active=\"true\" id=\"Default\" summary=\"Default task\">\n <changelist id=\"d2f036b6-02b2-42cb-99f5-ad1ea77b9d5a\" name=\"Changes\" comment=\"\" />\n <created>1738687274047</created>\n <option name=\"number\" value=\"Default\" />\n <option name=\"presentableId\" value=\"Default\" />\n <updated>1738687274047</updated>\n <workItem from=\"1738687275097\" duration=\"2126000\" />\n <workItem from=\"1738689408666\" duration=\"515000\" />\n </task>\n <servers />\n </component>\n <component name=\"TypeScriptGeneratedFilesManager\">\n <option name=\"version\" value=\"3\" />\n </component>\n <component name=\"Vcs.Log.Tabs.Properties\">\n <option name=\"TAB_STATES\">\n <map>\n <entry key=\"MAIN\">\n <value>\n <State>\n <option name=\"FILTERS\">\n <map>\n <entry key=\"branch\">\n <value>\n <list>\n <option value=\"origin/ripple_down_rules\" />\n </list>\n </value>\n </entry>\n </map>\n </option>\n </State>\n </value>\n </entry>\n </map>\n </option>\n </component>\n <component name=\"com.intellij.coverage.CoverageDataManagerImpl\">\n <SUITE FILE_PATH=\"coverage/ripple_down_rules$test_example.coverage\" NAME=\"test_example Coverage Results\" MODIFIED=\"1738688894371\" SOURCE_PROVIDER=\"com.intellij.coverage.DefaultCoverageFileProvider\" RUNNER=\"coverage.py\" COVERAGE_BY_TEST_ENABLED=\"true\" COVERAGE_TRACING_ENABLED=\"false\" WORKING_DIRECTORY=\"$PROJECT_DIR$/test\" />\n </component>\n</project>
|
5
|
+
===================================================================
|
6
|
+
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
|
7
|
+
--- a/.idea/workspace.xml
|
8
|
+
+++ b/.idea/workspace.xml
|
9
|
+
@@ -5,41 +5,7 @@
|
10
|
+
</component>
|
11
|
+
<component name="ChangeListManager">
|
12
|
+
<list default="true" id="d2f036b6-02b2-42cb-99f5-ad1ea77b9d5a" name="Changes" comment="">
|
13
|
+
- <changelist_data name="A_Bassiouny" email="abdelrhman_bassuny@hotmail.com" date="1738438521000" />
|
14
|
+
- <change afterPath="$PROJECT_DIR$/.gitignore" afterDir="false" />
|
15
|
+
- <change afterPath="$PROJECT_DIR$/LICENSE" afterDir="false" />
|
16
|
+
- <change afterPath="$PROJECT_DIR$/requirements-dev.txt" afterDir="false" />
|
17
|
+
- <change afterPath="$PROJECT_DIR$/requirements.txt" afterDir="false" />
|
18
|
+
- <change afterPath="$PROJECT_DIR$/results/complete_mcrdr_extra.dot" afterDir="false" />
|
19
|
+
- <change afterPath="$PROJECT_DIR$/results/complete_mcrdr_extra.png" afterDir="false" />
|
20
|
+
- <change afterPath="$PROJECT_DIR$/results/complete_mcrdr_stop_only.dot" afterDir="false" />
|
21
|
+
- <change afterPath="$PROJECT_DIR$/results/complete_mcrdr_stop_only.png" afterDir="false" />
|
22
|
+
- <change afterPath="$PROJECT_DIR$/results/complete_mcrdr_stop_plus_rule.dot" afterDir="false" />
|
23
|
+
- <change afterPath="$PROJECT_DIR$/results/complete_mcrdr_stop_plus_rule.png" afterDir="false" />
|
24
|
+
- <change afterPath="$PROJECT_DIR$/results/complete_scrdr.dot" afterDir="false" />
|
25
|
+
- <change afterPath="$PROJECT_DIR$/results/complete_scrdr.png" afterDir="false" />
|
26
|
+
- <change afterPath="$PROJECT_DIR$/results/complete_scrdr_2.dot" afterDir="false" />
|
27
|
+
- <change afterPath="$PROJECT_DIR$/results/complete_scrdr_2.png" afterDir="false" />
|
28
|
+
- <change afterPath="$PROJECT_DIR$/results/complete_scrdr_3.dot" afterDir="false" />
|
29
|
+
- <change afterPath="$PROJECT_DIR$/results/complete_scrdr_3.png" afterDir="false" />
|
30
|
+
- <change afterPath="$PROJECT_DIR$/results/partial_mcrdr_extra.dot" afterDir="false" />
|
31
|
+
- <change afterPath="$PROJECT_DIR$/results/partial_mcrdr_extra.png" afterDir="false" />
|
32
|
+
- <change afterPath="$PROJECT_DIR$/src/__init__.py" afterDir="false" />
|
33
|
+
- <change afterPath="$PROJECT_DIR$/src/pyrdr/__init__.py" afterDir="false" />
|
34
|
+
- <change afterPath="$PROJECT_DIR$/src/pyrdr/datastructures.py" afterDir="false" />
|
35
|
+
- <change afterPath="$PROJECT_DIR$/src/pyrdr/experts.py" afterDir="false" />
|
36
|
+
- <change afterPath="$PROJECT_DIR$/src/pyrdr/failures.py" afterDir="false" />
|
37
|
+
- <change afterPath="$PROJECT_DIR$/src/pyrdr/helpers.py" afterDir="false" />
|
38
|
+
- <change afterPath="$PROJECT_DIR$/src/pyrdr/rdr.py" afterDir="false" />
|
39
|
+
- <change afterPath="$PROJECT_DIR$/src/pyrdr/utils.py" afterDir="false" />
|
40
|
+
- <change afterPath="$PROJECT_DIR$/test/mcrdr_expert_answers_classify.json" afterDir="false" />
|
41
|
+
- <change afterPath="$PROJECT_DIR$/test/mcrdr_extra_expert_answers_classify.json" afterDir="false" />
|
42
|
+
- <change afterPath="$PROJECT_DIR$/test/mcrdr_extra_expert_answers_fit.json" afterDir="false" />
|
43
|
+
- <change afterPath="$PROJECT_DIR$/test/mcrdr_stop_only_answers_fit.json" afterDir="false" />
|
44
|
+
- <change afterPath="$PROJECT_DIR$/test/mcrdr_stop_plus_rule_answers_fit.json" afterDir="false" />
|
45
|
+
- <change afterPath="$PROJECT_DIR$/test/scrdr_expert_answers_classify.json" afterDir="false" />
|
46
|
+
- <change afterPath="$PROJECT_DIR$/test/scrdr_expert_answers_fit.json" afterDir="false" />
|
47
|
+
- <change afterPath="$PROJECT_DIR$/test/test_rdr.py" afterDir="false" />
|
48
|
+
+ <change beforePath="$PROJECT_DIR$/test/test_rdr.py" beforeDir="false" afterPath="$PROJECT_DIR$/test/test_rdr.py" afterDir="false" />
|
49
|
+
</list>
|
50
|
+
<option name="SHOW_DIALOG" value="false" />
|
51
|
+
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
52
|
+
@@ -54,6 +20,11 @@
|
53
|
+
</option>
|
54
|
+
</component>
|
55
|
+
<component name="Git.Settings">
|
56
|
+
+ <option name="PREVIOUS_COMMIT_AUTHORS">
|
57
|
+
+ <list>
|
58
|
+
+ <option value="A_Bassiouny <abdelrhman_bassuny@hotmail.com>" />
|
59
|
+
+ </list>
|
60
|
+
+ </option>
|
61
|
+
<option name="RECENT_BRANCH_BY_REPOSITORY">
|
62
|
+
<map>
|
63
|
+
<entry key="$PROJECT_DIR$" value="temp_branch" />
|
64
|
+
@@ -73,22 +44,22 @@
|
65
|
+
<option name="hideEmptyMiddlePackages" value="true" />
|
66
|
+
<option name="showLibraryContents" value="true" />
|
67
|
+
</component>
|
68
|
+
- <component name="PropertiesComponent">{
|
69
|
+
- "keyToString": {
|
70
|
+
- "Python.test_example.executor": "Run",
|
71
|
+
- "RunOnceActivity.OpenProjectViewOnStart": "true",
|
72
|
+
- "RunOnceActivity.ShowReadmeOnStart": "true",
|
73
|
+
- "git-widget-placeholder": "ripple__down__rules",
|
74
|
+
- "last_opened_file_path": "/home/bassioun/Documents/repos/ripple_down_rules",
|
75
|
+
- "node.js.detected.package.eslint": "true",
|
76
|
+
- "node.js.detected.package.tslint": "true",
|
77
|
+
- "node.js.selected.package.eslint": "(autodetect)",
|
78
|
+
- "node.js.selected.package.tslint": "(autodetect)",
|
79
|
+
- "nodejs_package_manager_path": "npm",
|
80
|
+
- "settings.editor.selected.configurable": "PyScientificConfigurable",
|
81
|
+
- "vue.rearranger.settings.migration": "true"
|
82
|
+
+ <component name="PropertiesComponent"><![CDATA[{
|
83
|
+
+ "keyToString": {
|
84
|
+
+ "Python.test_example.executor": "Run",
|
85
|
+
+ "RunOnceActivity.OpenProjectViewOnStart": "true",
|
86
|
+
+ "RunOnceActivity.ShowReadmeOnStart": "true",
|
87
|
+
+ "git-widget-placeholder": "Cherry-picking in temp__branch",
|
88
|
+
+ "last_opened_file_path": "/home/bassioun/Documents/repos/ripple_down_rules",
|
89
|
+
+ "node.js.detected.package.eslint": "true",
|
90
|
+
+ "node.js.detected.package.tslint": "true",
|
91
|
+
+ "node.js.selected.package.eslint": "(autodetect)",
|
92
|
+
+ "node.js.selected.package.tslint": "(autodetect)",
|
93
|
+
+ "nodejs_package_manager_path": "npm",
|
94
|
+
+ "settings.editor.selected.configurable": "PyScientificConfigurable",
|
95
|
+
+ "vue.rearranger.settings.migration": "true"
|
96
|
+
}
|
97
|
+
-}</component>
|
98
|
+
+}]]></component>
|
99
|
+
<component name="RunManager">
|
100
|
+
<configuration name="test_example" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
101
|
+
<module name="ripple_down_rules" />
|
102
|
+
@@ -135,8 +106,73 @@
|
103
|
+
<option name="presentableId" value="Default" />
|
104
|
+
<updated>1738687274047</updated>
|
105
|
+
<workItem from="1738687275097" duration="2126000" />
|
106
|
+
- <workItem from="1738689408666" duration="515000" />
|
107
|
+
+ <workItem from="1738689408666" duration="895000" />
|
108
|
+
</task>
|
109
|
+
+ <task id="LOCAL-00001" summary="[RDR] (WIP) first implementation.">
|
110
|
+
+ <option name="closed" value="true" />
|
111
|
+
+ <created>1738690124439</created>
|
112
|
+
+ <option name="number" value="00001" />
|
113
|
+
+ <option name="presentableId" value="LOCAL-00001" />
|
114
|
+
+ <option name="project" value="LOCAL" />
|
115
|
+
+ <updated>1738690124439</updated>
|
116
|
+
+ </task>
|
117
|
+
+ <task id="LOCAL-00002" summary="[RDR] first implementation seems to converge.">
|
118
|
+
+ <option name="closed" value="true" />
|
119
|
+
+ <created>1738690130538</created>
|
120
|
+
+ <option name="number" value="00002" />
|
121
|
+
+ <option name="presentableId" value="LOCAL-00002" />
|
122
|
+
+ <option name="project" value="LOCAL" />
|
123
|
+
+ <updated>1738690130538</updated>
|
124
|
+
+ </task>
|
125
|
+
+ <task id="LOCAL-00003" summary="[RDR] render tree implemented.">
|
126
|
+
+ <option name="closed" value="true" />
|
127
|
+
+ <created>1738690133821</created>
|
128
|
+
+ <option name="number" value="00003" />
|
129
|
+
+ <option name="presentableId" value="LOCAL-00003" />
|
130
|
+
+ <option name="project" value="LOCAL" />
|
131
|
+
+ <updated>1738690133821</updated>
|
132
|
+
+ </task>
|
133
|
+
+ <task id="LOCAL-00004" summary="[RDR] restructured plus some refinements.">
|
134
|
+
+ <option name="closed" value="true" />
|
135
|
+
+ <created>1738690137056</created>
|
136
|
+
+ <option name="number" value="00004" />
|
137
|
+
+ <option name="presentableId" value="LOCAL-00004" />
|
138
|
+
+ <option name="project" value="LOCAL" />
|
139
|
+
+ <updated>1738690137056</updated>
|
140
|
+
+ </task>
|
141
|
+
+ <task id="LOCAL-00005" summary="[RDR] restructure.">
|
142
|
+
+ <option name="closed" value="true" />
|
143
|
+
+ <created>1738690145083</created>
|
144
|
+
+ <option name="number" value="00005" />
|
145
|
+
+ <option name="presentableId" value="LOCAL-00005" />
|
146
|
+
+ <option name="project" value="LOCAL" />
|
147
|
+
+ <updated>1738690145083</updated>
|
148
|
+
+ </task>
|
149
|
+
+ <task id="LOCAL-00006" summary="[RDR] MultiClassRDR corrected and tested.">
|
150
|
+
+ <option name="closed" value="true" />
|
151
|
+
+ <created>1738690150544</created>
|
152
|
+
+ <option name="number" value="00006" />
|
153
|
+
+ <option name="presentableId" value="LOCAL-00006" />
|
154
|
+
+ <option name="project" value="LOCAL" />
|
155
|
+
+ <updated>1738690150544</updated>
|
156
|
+
+ </task>
|
157
|
+
+ <task id="LOCAL-00007" summary="[RDR] stop only mcrdr.">
|
158
|
+
+ <option name="closed" value="true" />
|
159
|
+
+ <created>1738690156583</created>
|
160
|
+
+ <option name="number" value="00007" />
|
161
|
+
+ <option name="presentableId" value="LOCAL-00007" />
|
162
|
+
+ <option name="project" value="LOCAL" />
|
163
|
+
+ <updated>1738690156583</updated>
|
164
|
+
+ </task>
|
165
|
+
+ <task id="LOCAL-00008" summary="[RDR] created expert class.">
|
166
|
+
+ <option name="closed" value="true" />
|
167
|
+
+ <created>1738690160856</created>
|
168
|
+
+ <option name="number" value="00008" />
|
169
|
+
+ <option name="presentableId" value="LOCAL-00008" />
|
170
|
+
+ <option name="project" value="LOCAL" />
|
171
|
+
+ <updated>1738690160856</updated>
|
172
|
+
+ </task>
|
173
|
+
+ <option name="localTasksCounter" value="9" />
|
174
|
+
<servers />
|
175
|
+
</component>
|
176
|
+
<component name="TypeScriptGeneratedFilesManager">
|
177
|
+
@@ -153,7 +189,7 @@
|
178
|
+
<entry key="branch">
|
179
|
+
<value>
|
180
|
+
<list>
|
181
|
+
- <option value="origin/ripple_down_rules" />
|
182
|
+
+ <option value="ripple_down_rules" />
|
183
|
+
</list>
|
184
|
+
</value>
|
185
|
+
</entry>
|
186
|
+
@@ -164,6 +200,17 @@
|
187
|
+
</entry>
|
188
|
+
</map>
|
189
|
+
</option>
|
190
|
+
+ </component>
|
191
|
+
+ <component name="VcsManagerConfiguration">
|
192
|
+
+ <MESSAGE value="[RDR] (WIP) first implementation." />
|
193
|
+
+ <MESSAGE value="[RDR] first implementation seems to converge." />
|
194
|
+
+ <MESSAGE value="[RDR] render tree implemented." />
|
195
|
+
+ <MESSAGE value="[RDR] restructured plus some refinements." />
|
196
|
+
+ <MESSAGE value="[RDR] restructure." />
|
197
|
+
+ <MESSAGE value="[RDR] MultiClassRDR corrected and tested." />
|
198
|
+
+ <MESSAGE value="[RDR] stop only mcrdr." />
|
199
|
+
+ <MESSAGE value="[RDR] created expert class." />
|
200
|
+
+ <option name="LAST_COMMIT_MESSAGE" value="[RDR] created expert class." />
|
201
|
+
</component>
|
202
|
+
<component name="com.intellij.coverage.CoverageDataManagerImpl">
|
203
|
+
<SUITE FILE_PATH="coverage/ripple_down_rules$test_example.coverage" NAME="test_example Coverage Results" MODIFIED="1738688894371" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/test" />
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: ripple_down_rules
|
3
|
-
Version: 0.4.
|
3
|
+
Version: 0.4.85
|
4
4
|
Summary: Implements the various versions of Ripple Down Rules (RDR) for knowledge representation and reasoning.
|
5
5
|
Author-email: Abdelrhman Bassiouny <abassiou@uni-bremen.de>
|
6
6
|
License: GNU GENERAL PUBLIC LICENSE
|
@@ -682,21 +682,31 @@ Classifier: Programming Language :: Python :: 3
|
|
682
682
|
Description-Content-Type: text/markdown
|
683
683
|
License-File: LICENSE
|
684
684
|
Requires-Dist: anytree>=2.8.0
|
685
|
-
Requires-Dist: pandas>=2.0.3
|
686
|
-
Requires-Dist: networkx>=3.1
|
687
685
|
Requires-Dist: ordered_set>=4
|
688
686
|
Requires-Dist: pygraphviz>=1.7
|
689
|
-
Requires-Dist: ucimlrepo>=0.0.7
|
690
687
|
Requires-Dist: typing-extensions>=4.12.2
|
691
|
-
Requires-Dist: matplotlib>=3.7.5
|
692
|
-
Requires-Dist: sqlalchemy
|
693
|
-
Requires-Dist: pyqt6
|
694
|
-
Requires-Dist: qtconsole
|
695
688
|
Requires-Dist: graphviz
|
696
689
|
Requires-Dist: tabulate
|
697
690
|
Requires-Dist: ipython
|
698
691
|
Requires-Dist: requests
|
699
692
|
Requires-Dist: colorama
|
693
|
+
Requires-Dist: pygments
|
694
|
+
Requires-Dist: sqlalchemy
|
695
|
+
Requires-Dist: pandas
|
696
|
+
Provides-Extra: gui
|
697
|
+
Requires-Dist: pyqt6; extra == "gui"
|
698
|
+
Requires-Dist: qtconsole; extra == "gui"
|
699
|
+
Provides-Extra: viz
|
700
|
+
Requires-Dist: matplotlib; extra == "viz"
|
701
|
+
Requires-Dist: networkx; extra == "viz"
|
702
|
+
Provides-Extra: dev
|
703
|
+
Requires-Dist: pyqt6; extra == "dev"
|
704
|
+
Requires-Dist: qtconsole; extra == "dev"
|
705
|
+
Requires-Dist: matplotlib; extra == "dev"
|
706
|
+
Requires-Dist: networkx; extra == "dev"
|
707
|
+
Requires-Dist: pytest; extra == "dev"
|
708
|
+
Requires-Dist: ucimlrepo>=0.0.7; extra == "dev"
|
709
|
+
Requires-Dist: pdbpp; extra == "dev"
|
700
710
|
Dynamic: license-file
|
701
711
|
|
702
712
|
# Ripple Down Rules (RDR)
|
@@ -0,0 +1,19 @@
|
|
1
|
+
from ripple_down_rules.datastructures.dataclasses import CaseQuery
|
2
|
+
from ripple_down_rules.rdr import SingleClassRDR
|
3
|
+
from ripple_down_rules.datasets import load_zoo_dataset
|
4
|
+
from ripple_down_rules.utils import render_tree
|
5
|
+
|
6
|
+
all_cases, targets = load_zoo_dataset()
|
7
|
+
|
8
|
+
scrdr = SingleClassRDR()
|
9
|
+
|
10
|
+
# Fit the SCRDR to the data
|
11
|
+
case_queries = [CaseQuery(case, 'species', type(target), True, _target=target)
|
12
|
+
for case, target in zip(all_cases[:10], targets[:10])]
|
13
|
+
scrdr.fit(case_queries, animate_tree=True)
|
14
|
+
|
15
|
+
# Render the tree to a file
|
16
|
+
render_tree(scrdr.start_rule, use_dot_exporter=True, filename="scrdr")
|
17
|
+
|
18
|
+
cat = scrdr.classify(all_cases[50])
|
19
|
+
assert cat == targets[50]
|
Binary file
|
@@ -1,12 +1,12 @@
|
|
1
1
|
# pyproject.toml
|
2
2
|
|
3
3
|
[build-system]
|
4
|
-
requires = ["setuptools
|
4
|
+
requires = ["setuptools", "setuptools-scm"]
|
5
5
|
build-backend = "setuptools.build_meta"
|
6
6
|
|
7
7
|
[project]
|
8
8
|
name = "ripple_down_rules"
|
9
|
-
|
9
|
+
dynamic = ["version", "dependencies"]
|
10
10
|
description = "Implements the various versions of Ripple Down Rules (RDR) for knowledge representation and reasoning."
|
11
11
|
readme = "README.md"
|
12
12
|
authors = [{ name = "Abdelrhman Bassiouny", email = "abassiou@uni-bremen.de" }]
|
@@ -15,21 +15,29 @@ classifiers = [
|
|
15
15
|
"Programming Language :: Python :: 3",
|
16
16
|
]
|
17
17
|
keywords = ["robotics", "knowledge", "reasoning", "representation"]
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
18
|
+
|
19
|
+
[tool.setuptools.packages.find]
|
20
|
+
where = ["src"]
|
21
|
+
include = ["ripple_down_rules*"]
|
22
|
+
|
23
|
+
[tool.setuptools.dynamic]
|
24
|
+
version = {attr = "ripple_down_rules.__version__"}
|
25
|
+
dependencies = {file = "requirements.txt"}
|
26
|
+
|
27
|
+
[project.optional-dependencies]
|
28
|
+
gui = [
|
28
29
|
"pyqt6",
|
29
30
|
"qtconsole",
|
30
|
-
"graphviz",
|
31
|
-
"tabulate",
|
32
|
-
"ipython",
|
33
|
-
"requests",
|
34
|
-
"colorama",
|
35
31
|
]
|
32
|
+
viz = [
|
33
|
+
"matplotlib",
|
34
|
+
"networkx",
|
35
|
+
]
|
36
|
+
dev = [
|
37
|
+
"pyqt6",
|
38
|
+
"qtconsole",
|
39
|
+
"matplotlib",
|
40
|
+
"networkx",
|
41
|
+
"pytest",
|
42
|
+
"ucimlrepo>=0.0.7",
|
43
|
+
"pdbpp"]
|
@@ -1,16 +1,12 @@
|
|
1
1
|
anytree>=2.8.0
|
2
|
-
pandas>=2.0.3
|
3
|
-
networkx>=3.1
|
4
2
|
ordered_set>=4
|
5
3
|
pygraphviz>=1.7
|
6
|
-
ucimlrepo>=0.0.7
|
7
4
|
typing-extensions>=4.12.2
|
8
|
-
matplotlib>=3.7.5
|
9
|
-
sqlalchemy
|
10
|
-
pyqt6
|
11
|
-
qtconsole
|
12
5
|
graphviz
|
13
6
|
tabulate
|
14
7
|
ipython
|
15
8
|
requests
|
16
9
|
colorama
|
10
|
+
pygments
|
11
|
+
sqlalchemy
|
12
|
+
pandas
|