Skip to content

Commit 0a32916

Browse files
committed
Add 'parent' property
1 parent 318bd1f commit 0a32916

File tree

4 files changed

+15
-18
lines changed

4 files changed

+15
-18
lines changed

machine/corpora/paratext_project_settings.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class ParatextProjectSettings:
2424
translation_type: str
2525
parent_guid: Optional[str] = None
2626
parent_name: Optional[str] = None
27-
_parent_has_been_set: bool = False
27+
_parent: Optional["ParatextProjectSettings"] = None
2828

2929
def get_book_id(self, file_name: str) -> Optional[str]:
3030
"""Returns None when the file name doesn't match the pattern of a book file name for the project."""
@@ -67,19 +67,21 @@ def has_parent(self) -> bool:
6767
return self.parent_guid is not None
6868

6969
@property
70-
def parent_has_been_set(self) -> bool:
71-
return self._parent_has_been_set
70+
def parent(self) -> Optional["ParatextProjectSettings"]:
71+
return self._parent
72+
73+
@parent.setter
74+
def parent(self, value: "ParatextProjectSettings"):
75+
if not self.is_daughter_project_of(value):
76+
raise ValueError(f"Project {value.name} is not the parent project of project {self.name}.")
77+
self._parent = value
78+
self.versification = value.versification
7279

7380
def is_daughter_project_of(self, other_project: "ParatextProjectSettings") -> bool:
7481
if not self.has_parent:
7582
return False
7683
return self.parent_guid == other_project.guid
7784

78-
def set_parent_project(self, other_project: "ParatextProjectSettings"):
79-
# TODO anything else we should set? From what I can tell, stylesheets are not inherited
80-
self.versification = other_project.versification
81-
self._parent_has_been_set = True
82-
8385

8486
def _get_book_file_name_digits(book_id: str) -> str:
8587
book_num = book_id_to_number(book_id)

machine/corpora/paratext_project_settings_parser_base.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -118,11 +118,6 @@ def parse(self) -> ParatextProjectSettings:
118118
)
119119

120120
if self.parent_paratext_project_settings is not None and settings.has_parent:
121-
if not settings.is_daughter_project_of(self.parent_paratext_project_settings):
122-
raise ValueError(
123-
f"Project {self.parent_paratext_project_settings.name} is "
124-
f"not the parent project of project {settings.name}."
125-
)
126-
settings.set_parent_project(self.parent_paratext_project_settings)
121+
settings.parent = self.parent_paratext_project_settings
127122

128123
return settings

tests/corpora/test_file_paratext_project_settings_parser.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@ def test_is_daughter_project() -> None:
1717
assert settings.has_parent
1818
assert settings.is_daughter_project_of(settings)
1919
assert settings.translation_type == "Standard"
20-
assert not settings.parent_has_been_set
20+
assert settings.parent is None
2121

2222
parser = FileParatextProjectSettingsParser(USFM_TEST_PROJECT_PATH, settings)
2323
settings = parser.parse()
2424
assert settings.has_parent
2525
assert settings.is_daughter_project_of(settings)
2626
assert settings.translation_type == "Standard"
27-
assert settings.parent_has_been_set
27+
assert settings.parent is not None

tests/corpora/test_zip_paratext_project_settings_parser.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,15 @@ def test_is_daughter_project() -> None:
2424
assert settings.has_parent
2525
assert settings.is_daughter_project_of(settings)
2626
assert settings.translation_type == "Standard"
27-
assert not settings.parent_has_been_set
27+
assert settings.parent is None
2828

2929
env.parser = ZipParatextProjectSettingsParser(env.zip_file, settings)
3030

3131
settings = env.parser.parse()
3232
assert settings.has_parent
3333
assert settings.is_daughter_project_of(settings)
3434
assert settings.translation_type == "Standard"
35-
assert settings.parent_has_been_set
35+
assert settings.parent is not None
3636

3737

3838
class _TestEnvironment(ContextManager["_TestEnvironment"]):

0 commit comments

Comments
 (0)