-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: visualize list of FSWs #11
Changes from 5 commits
b252627
727820e
e69d881
f0ecdd5
0676cc6
66e9577
c105643
a133edc
cbcf54f
0c97c5c
c6c0de2
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
This file was deleted.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
name: Lint and Test | ||
|
||
on: | ||
push: | ||
branches: [master, main] | ||
pull_request: | ||
branches: [master, main] | ||
|
||
jobs: | ||
lint_and_test: | ||
name: Lint and Test | ||
runs-on: ubuntu-latest | ||
|
||
strategy: | ||
matrix: | ||
python-version: ["3.8"] # "3.10", "3.12" can be added when we figure out to add pylint: diable=too-many-positional-arguments to 3.8 | ||
|
||
steps: | ||
- uses: actions/checkout@v3 | ||
- uses: actions/setup-python@v4 | ||
with: | ||
python-version: ${{ matrix.python-version }} | ||
|
||
- name: Install Requirements | ||
run: pip install .[dev,mouthing,server] | ||
|
||
- name: Lint Code | ||
run: pylint signwriting | ||
|
||
- name: Test Code | ||
run: pytest signwriting |
This file was deleted.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,8 @@ | ||
# pylint: disable=unnecessary-lambda-assignment | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ideally, this should be near the affected line, otherwise in the pyproject There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. there were 4 lines using There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. either project config or next to each line There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. done |
||
|
||
from functools import lru_cache | ||
from pathlib import Path | ||
from typing import Tuple | ||
from typing import Tuple, List, Literal | ||
|
||
from PIL import Image, ImageDraw, ImageFont | ||
|
||
|
@@ -65,3 +67,35 @@ def signwriting_to_image(fsw: str, antialiasing=True, trust_box=True, embedded_c | |
font=line_font, embedded_color=embedded_color) | ||
|
||
return img | ||
|
||
|
||
# pylint: disable=too-many-locals, too-many-arguments | ||
def signwritings_to_image(fsw_list: List[str], antialiasing: bool = True, trust_box: bool = True, | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "signwritings" is very not elegant imo. def signwriting_to_image(fsw: Union[str, List[str]], antialiasing=True, trust_box=True, embedded_color=False,
line_color: RGBA = (0, 0, 0, 255),
fill_color: RGBA = (255, 255, 255, 255),
direction: Literal["horizontal", "vertical"] = "horizontal") -> Image:
if isinstance(fsw, list):
images = [
signwriting_to_image(fsw_string, antialiasing, trust_box, embedded_color, line_color, fill_color)
for fsw_string in fsw_list
]
return layout_signwriting(images, direction)
..... There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. done |
||
embedded_color: bool = False, line_color: Tuple[int, int, int, int] = (0, 0, 0, 255), | ||
fill_color: Tuple[int, int, int, int] = (255, 255, 255, 255), | ||
direction: Literal["horizontal", "vertical"] = "horizontal") -> Image: | ||
images = [ | ||
signwriting_to_image(fsw_string, antialiasing, trust_box, embedded_color, line_color, fill_color) | ||
for fsw_string in fsw_list | ||
] | ||
|
||
if direction == "horizontal": | ||
max_height = max(img.height for img in images) | ||
total_width = sum(img.width for img in images) | ||
size = (total_width, max_height) | ||
paste_position = lambda offset: (offset, 0) | ||
offset_increment = lambda img: img.width | ||
else: | ||
max_width = max(img.width for img in images) | ||
total_height = sum(img.height for img in images) | ||
size = (max_width, total_height) | ||
paste_position = lambda offset: (0, offset) | ||
offset_increment = lambda img: img.height | ||
|
||
final_image = Image.new("RGBA", size, (255, 255, 255, 0)) | ||
offset = 0 | ||
for img in images: | ||
final_image.paste(img, paste_position(offset)) | ||
offset += offset_increment(img) | ||
|
||
return final_image | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I do not like the output of this layout function. When multiple signs, there are rules on how to lay them out. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. you mean to say i should add gaps in between? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. and center the images in the "lane" There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. done |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why lint and test? when separate, they give two different information types, and when together it will first fail on lint, then test and not communicate
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I did not get you? do you not want check lint and test in same run? because it doesn't stop if one fails?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
i prefer checking them in separate runs because i would like to know the status of both.
so having the two workflows gives me two status indicators
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done