-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add endpoint for chapter display (#170)
* Update dependencies * Extract method to get chapter title * Remove spurious commas * Upgrade black and format It works with pypy again: psf/black#727 * Add model for cahpter display * Move ChapterIdSchema to id_schemas * Add schema for ChapterDisplay * Add methods for finding chapters for display * 'Refactored by Sourcery' (#176) Co-authored-by: Sourcery AI <> * Add route for chapter display * Remove Theia settings * Add title to ChapterDisplay * Add title to ChapterDisplay schema * Add intertext to line display * Get intertext from database * Add is_single_stage to ChapterDisplay Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com>
- Loading branch information
1 parent
da676cc
commit 7b0f1e1
Showing
32 changed files
with
674 additions
and
182 deletions.
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
from marshmallow import Schema, fields, post_load | ||
|
||
from ebl.corpus.application.id_schemas import ChapterIdSchema | ||
from ebl.corpus.domain.chapter_display import ChapterDisplay, LineDisplay | ||
from ebl.transliteration.application.line_number_schemas import OneOfLineNumberSchema | ||
from ebl.transliteration.application.note_line_part_schemas import ( | ||
OneOfNoteLinePartSchema, | ||
) | ||
from ebl.transliteration.application.token_schemas import OneOfTokenSchema | ||
|
||
|
||
class LineDisplaySchema(Schema): | ||
number = fields.Nested(OneOfLineNumberSchema, required=True) | ||
intertext = fields.List( | ||
fields.Nested(OneOfNoteLinePartSchema), load_default=tuple() | ||
) | ||
reconstruction = fields.List(fields.Nested(OneOfTokenSchema), load_default=tuple()) | ||
translation = fields.List( | ||
fields.Nested(OneOfNoteLinePartSchema), load_default=tuple() | ||
) | ||
|
||
@post_load | ||
def make_line(self, data: dict, **kwargs) -> LineDisplay: | ||
return LineDisplay( | ||
data["number"], | ||
tuple(data["intertext"]), | ||
tuple(data["reconstruction"]), | ||
tuple(data["translation"]), | ||
) | ||
|
||
|
||
class ChapterDisplaySchema(Schema): | ||
id_ = fields.Nested(ChapterIdSchema, required=True, data_key="id") | ||
text_name = fields.String(required=True, data_key="textName") | ||
is_single_stage = fields.Boolean(required=True, data_key="isSingleStage") | ||
title = fields.List(fields.Nested(OneOfNoteLinePartSchema), dump_only=True) | ||
lines = fields.Nested(LineDisplaySchema, many=True, required=True) | ||
|
||
@post_load | ||
def make_chapter(self, data: dict, **kwargs) -> ChapterDisplay: | ||
return ChapterDisplay( | ||
data["id_"], | ||
data["text_name"], | ||
data["is_single_stage"], | ||
tuple(data["lines"]), | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
from typing import Iterable, Sequence | ||
import attr | ||
|
||
from ebl.corpus.domain.chapter import ChapterId, Chapter | ||
from ebl.corpus.domain.line import Line | ||
from ebl.corpus.domain.text import Text | ||
from ebl.transliteration.domain.translation_line import ( | ||
DEFAULT_LANGUAGE, | ||
TranslationLine, | ||
) | ||
from ebl.transliteration.domain.line_number import AbstractLineNumber | ||
from ebl.transliteration.domain.tokens import Token | ||
from ebl.transliteration.domain.markup import MarkupPart, to_title | ||
|
||
|
||
def get_default_translation( | ||
translations: Iterable[TranslationLine], | ||
) -> Sequence[MarkupPart]: | ||
return next( | ||
( | ||
translation_line.parts | ||
for translation_line in translations | ||
if translation_line.language == DEFAULT_LANGUAGE | ||
), | ||
tuple(), | ||
) | ||
|
||
|
||
@attr.s(frozen=True, auto_attribs=True) | ||
class LineDisplay: | ||
number: AbstractLineNumber | ||
intertext: Sequence[MarkupPart] | ||
reconstruction: Sequence[Token] | ||
translation: Sequence[MarkupPart] | ||
|
||
@property | ||
def title(self) -> Sequence[MarkupPart]: | ||
return to_title(self.translation) | ||
|
||
@staticmethod | ||
def of_line(line: Line) -> "LineDisplay": | ||
return LineDisplay( | ||
line.number, | ||
line.variants[0].intertext, | ||
line.variants[0].reconstruction, | ||
get_default_translation(line.translation), | ||
) | ||
|
||
|
||
@attr.s(frozen=True, auto_attribs=True) | ||
class ChapterDisplay: | ||
id_: ChapterId | ||
text_name: str | ||
is_single_stage: bool | ||
lines: Sequence[LineDisplay] | ||
|
||
@property | ||
def title(self) -> Sequence[MarkupPart]: | ||
return self.lines[0].title if self.lines else tuple() | ||
|
||
@staticmethod | ||
def of_chapter(text: Text, chapter: Chapter) -> "ChapterDisplay": | ||
return ChapterDisplay( | ||
chapter.id_, | ||
text.name, | ||
not text.has_multiple_stages, | ||
tuple(map(LineDisplay.of_line, chapter.lines)), | ||
) |
Oops, something went wrong.