Skip to content

Commit 18c17dc

Browse files
committed
added visibility settings to API
1 parent 49dcd3c commit 18c17dc

File tree

4 files changed

+55
-9
lines changed

4 files changed

+55
-9
lines changed

in2lambda/api/set.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,3 +160,16 @@ def set_description(self, description: str) -> None:
160160
'This is my question set.'
161161
"""
162162
self._description = description
163+
164+
def __repr__(self):
165+
"""Custom representation showing visibility status values instead of memory addresses."""
166+
return (
167+
f"Set("
168+
f"_name={self._name!r}, "
169+
f"_description={self._description!r}, "
170+
f"_finalAnswerVisibility={str(self._finalAnswerVisibility)!r}, "
171+
f"_workedSolutionVisibility={str(self._workedSolutionVisibility)!r}, "
172+
f"_structuredTutorialVisibility={str(self._structuredTutorialVisibility)!r}, "
173+
f"questions={self.questions!r}"
174+
f")"
175+
)

in2lambda/api/visibility_status.py

Lines changed: 37 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@ class VisibilityStatus(Enum):
99
def __str__(self):
1010
return self.value
1111

12+
def __repr__(self) -> str:
13+
"""Return a string representation for debugging."""
14+
return str(self)
15+
1216
class VisibilityController:
1317
"""Controller for managing visibility status with easy-to-use methods."""
1418

@@ -20,19 +24,45 @@ def status(self) -> VisibilityStatus:
2024
return self._status
2125

2226
def to_open(self):
23-
"""Change status to OPEN."""
27+
"""Change status to OPEN.
28+
29+
Example:
30+
>>> vc = VisibilityController()
31+
>>> vc.to_open()
32+
>>> vc.status
33+
OPEN
34+
"""
2435
self._status = VisibilityStatus.OPEN
25-
return self
2636

2737
def to_hide(self):
28-
"""Change status to HIDE."""
38+
"""Change status to HIDE.
39+
40+
Example:
41+
>>> vc = VisibilityController()
42+
>>> vc.to_hide()
43+
>>> vc.status
44+
HIDE
45+
"""
2946
self._status = VisibilityStatus.HIDE
30-
return self
3147

3248
def to_open_with_warnings(self):
33-
"""Change status to OPEN_WITH_WARNINGS."""
49+
"""Change status to OPEN_WITH_WARNINGS.
50+
51+
Example:
52+
>>> vc = VisibilityController()
53+
>>> vc.to_open_with_warnings()
54+
>>> vc.status
55+
OPEN_WITH_WARNINGS
56+
"""
3457
self._status = VisibilityStatus.OPEN_WITH_WARNINGS
35-
return self
3658

3759
def __str__(self):
38-
return str(self._status)
60+
return str(self._status)
61+
62+
def __repr__(self) -> str:
63+
"""Return a string representation for debugging."""
64+
return str(self)
65+
66+
def to_dict(self):
67+
"""Convert VisibilityController to dictionary for JSON serialization."""
68+
return {"status": str(self._status)}

in2lambda/json_convert/json_convert.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,9 @@ def converter(
5555

5656
set_template["name"] = set_name
5757
set_template["description"] = set_description
58+
set_template["finalAnswerVisibility"] = str(SetQuestions._finalAnswerVisibility.status)
59+
set_template["workedSolutionVisibility"] = str(SetQuestions._workedSolutionVisibility.status)
60+
set_template["structuredTutorialVisibility"] = str(SetQuestions._structuredTutorialVisibility.status)
5861
# create the set file
5962
with open(f"{output_question}/set_{set_name}.json", "w") as file:
6063
json.dump(set_template, file)

in2lambda/main.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,9 +100,9 @@ def runner(
100100
>>> from in2lambda.main import runner
101101
>>> # Retrieve an example TeX file and run the given filter.
102102
>>> runner(f"{os.path.dirname(in2lambda.__file__)}/filters/PartsSepSol/example.tex", "PartsSepSol") # doctest: +ELLIPSIS
103-
Set(_name='set', _description='', questions=[Question(title='', parts=[Part(text=..., worked_solution=''), ...], images=[], main_text='This is a sample question\n\n'), ...])
103+
Set(_name='set', _description='', _finalAnswerVisibility='OPEN_WITH_WARNINGS', _workedSolutionVisibility='OPEN_WITH_WARNINGS', _structuredTutorialVisibility='OPEN', questions=[Question(title='', parts=[Part(text=..., worked_solution=''), ...], images=[], main_text='This is a sample question\n\n'), ...])
104104
>>> runner(f"{os.path.dirname(in2lambda.__file__)}/filters/PartsOneSol/example.tex", "PartsOneSol") # doctest: +ELLIPSIS
105-
Set(_name='set', _description='', questions=[Question(title='', parts=[Part(text='This is part (a)\n\n', worked_solution=''), ...], images=[], main_text='Here is some preliminary question information that might be useful.'), ...)
105+
Set(_name='set', _description='', _finalAnswerVisibility='OPEN_WITH_WARNINGS', _workedSolutionVisibility='OPEN_WITH_WARNINGS', _structuredTutorialVisibility='OPEN', questions=[Question(title='', parts=[Part(text=..., worked_solution=''), ...], images=[], main_text='Here is some preliminary question information that might be useful.'), ...])
106106
"""
107107
# The list of questions for Lambda Feedback as a Python API.
108108
set_obj = Set()

0 commit comments

Comments
 (0)