Skip to content

Commit 5cd69ef

Browse files
committed
Add doc rendering public action
1 parent 54f1876 commit 5cd69ef

File tree

7 files changed

+86
-15
lines changed

7 files changed

+86
-15
lines changed

.github/workflows/docs.yml

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
name: website
2+
3+
# build the documentation whenever there are new commits on main
4+
on:
5+
push:
6+
branches:
7+
- main
8+
# Alternative: only build for tags.
9+
# tags:
10+
# - '*'
11+
12+
# security: restrict permissions for CI jobs.
13+
permissions:
14+
contents: read
15+
16+
jobs:
17+
# Build the documentation and upload the static HTML files as an artifact.
18+
build:
19+
runs-on: ubuntu-latest
20+
steps:
21+
- uses: actions/checkout@v4
22+
- uses: actions/setup-python@v5
23+
with:
24+
python-version: '3.13'
25+
26+
# ADJUST THIS: install all dependencies (including pdoc)
27+
- run: pip install -e .
28+
- run: pip install pdoc
29+
# ADJUST THIS: build your documentation into docs/.
30+
# We use a custom build script for pdoc itself, ideally you just run `pdoc -o docs/ ...` here.
31+
- run: pdoc pyrdfrules -o docs/
32+
33+
- uses: actions/upload-pages-artifact@v3
34+
with:
35+
path: docs/
36+
37+
# Deploy the artifact to GitHub pages.
38+
# This is a separate job so that only actions/deploy-pages has the necessary permissions.
39+
deploy:
40+
needs: build
41+
runs-on: ubuntu-latest
42+
permissions:
43+
pages: write
44+
id-token: write
45+
environment:
46+
name: github-pages
47+
url: ${{ steps.deployment.outputs.page_url }}
48+
steps:
49+
- id: deployment
50+
uses: actions/deploy-pages@v4

src/pyrdfrules/common/result/result.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11

22
from pyrdfrules.common.rule.resultrule import ResultRule
3-
from pyrdfrules.common.rule.rule.body import RuleBody
4-
from pyrdfrules.common.rule.rule.head import RuleHead
53
from pyrdfrules.common.rule.ruleset import Ruleset
64

75

@@ -27,14 +25,14 @@ def _parse_data(self):
2725
match item:
2826
case {'body': _, 'head': __, 'measures': ___}:
2927
# Item is a rule
30-
31-
rule = ResultRule.model_construct(item)
32-
33-
print(rule)
34-
28+
rule = ResultRule.model_validate(item)
29+
rules.append(rule)
3530
pass
3631
case _:
32+
print("Unknown item")
3733
pass
34+
35+
self.ruleset = Ruleset(rules = rules)
3836

3937
def get_ruleset(self) -> Ruleset:
40-
pass
38+
return self.ruleset
Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
11
from typing import List
22
from pydantic import BaseModel
33

4+
from pyrdfrules.common.rule.rule.object import Object
5+
from pyrdfrules.common.rule.rule.predicate import Predicate
6+
from pyrdfrules.common.rule.rule.subject import Subject
7+
48
class RuleBody(BaseModel):
5-
graphs: str
9+
graphs: List[str]
10+
11+
object: Object
612

7-
object: str
13+
predicate: Predicate
814

9-
items: List[dict]
15+
subject: Subject

src/pyrdfrules/common/rule/rule/head.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@ class RuleHead(BaseModel):
1111

1212
object: Object
1313

14-
predicate: Predicate
14+
predicate: str
1515

1616
subject: Subject

src/pyrdfrules/common/rule/ruleset.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,7 @@ class Ruleset(BaseModel):
3434
__iterator_index: int = 0
3535

3636
def get_rules(self) -> List[ResultRule]:
37-
# return all rules
38-
pass
37+
return self.rules
3938

4039
def as_json(self) -> str:
4140
return ''

src/pyrdfrules/common/task/task.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import datetime
22

33
from pyrdfrules.common.event.event_dispatcher import EventDispatcher
4+
from pyrdfrules.common.result.result import Result
45
from pyrdfrules.common.task.event.task_finished_message import TaskFinishedMessage
56
from pyrdfrules.common.task.event.task_log_message import TaskLogMessage
67

@@ -82,6 +83,18 @@ def update_from_dict(self, data: dict) -> None:
8283

8384
self.last_updated = datetime.datetime.now()
8485

86+
def get_result(self) -> Result:
87+
"""Returns formatted result of the task.
88+
89+
Returns:
90+
Result: Result of the task.
91+
"""
92+
93+
if not self.is_finished():
94+
raise Exception("Task is not finished yet.")
95+
96+
return Result(self.result)
97+
8598
def _stop(self) -> None:
8699
"""Stops the task.
87100
"""

src/tests/test_parsing.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,12 @@ def test_rule_parsing(self):
2121

2222
result = Result(rules)
2323

24-
print(rules)
24+
for rule in result.get_ruleset().get_rules():
25+
self.assertEqual(rule.head.predicate, "<created>")
26+
self.assertEqual(rule.head.subject.value, "?a")
27+
self.assertEqual(rule.head.object.value, "?b")
28+
self.assertEqual(rule.head.graphs, ["<yago>"])
29+
self.assertEqual(rule.body[0].subject.value, "?c")
2530

2631

2732
if __name__ == '__main__':

0 commit comments

Comments
 (0)