refactor: fix various missing and broken type hints (#901)

* fix type hints

* text_wrapper.py type fix and minor improvements

* fields.py fixes
This commit is contained in:
VasigaranAndAngel
2025-03-31 23:44:15 +05:30
committed by GitHub
parent 1939f118f1
commit 46996d50e5
4 changed files with 26 additions and 24 deletions

View File

@@ -35,7 +35,7 @@ def theme_fg_overlay(image: Image.Image, use_alpha: bool = True) -> Image.Image:
return _apply_overlay(image, im)
def gradient_overlay(image: Image.Image, gradient=list[str]) -> Image.Image:
def gradient_overlay(image: Image.Image, gradient: list[str]) -> Image.Image:
"""Overlay a color gradient onto an image.
Args:

View File

@@ -49,8 +49,8 @@ def four_corner_gradient(
def linear_gradient(
size=tuple[int, int],
colors=list[str],
size: tuple[int, int],
colors: list[str],
interpolation: Image.Resampling = Image.Resampling.BICUBIC,
) -> Image.Image:
seed: Image.Image = Image.new(mode="RGBA", size=(len(colors), 1), color="#000000")

View File

@@ -6,11 +6,11 @@
from PIL import Image, ImageDraw, ImageFont
def wrap_line( # type: ignore
def wrap_line(
text: str,
font: ImageFont.ImageFont,
width: int = 256,
draw: ImageDraw.ImageDraw = None,
draw: ImageDraw.ImageDraw | None = None,
) -> int:
"""Take in a single text line and return the index it should be broken up at.
@@ -27,15 +27,14 @@ def wrap_line( # type: ignore
):
if draw.textlength(text[:i], font=font) < width:
return i
else:
return -1
return -1
def wrap_full_text(
text: str,
font: ImageFont.ImageFont,
width: int = 256,
draw: ImageDraw.ImageDraw = None,
draw: ImageDraw.ImageDraw | None = None,
) -> str:
"""Break up a string to fit the canvas given a kerning value, font size, etc."""
lines = []

View File

@@ -5,7 +5,7 @@
import math
from pathlib import Path
from typing import Callable
from typing import Callable, override
from warnings import catch_warnings
import structlog
@@ -54,9 +54,9 @@ class FieldContainer(QWidget):
self.setObjectName("fieldContainer")
self.title: str = title
self.inline: bool = inline
self.copy_callback: Callable = None
self.edit_callback: Callable = None
self.remove_callback: Callable = None
self.copy_callback: Callable[[], None] | None = None
self.edit_callback: Callable[[], None] | None = None
self.remove_callback: Callable[[], None] | None = None
button_size = 24
self.root_layout = QVBoxLayout(self)
@@ -129,7 +129,7 @@ class FieldContainer(QWidget):
self.set_title(title)
self.setStyleSheet(FieldContainer.container_style)
def set_copy_callback(self, callback: Callable | None = None):
def set_copy_callback(self, callback: Callable[[], None] | None = None) -> None:
with catch_warnings(record=True):
self.copy_button.clicked.disconnect()
@@ -137,7 +137,7 @@ class FieldContainer(QWidget):
if callback:
self.copy_button.clicked.connect(callback)
def set_edit_callback(self, callback: Callable | None = None):
def set_edit_callback(self, callback: Callable[[], None] | None = None) -> None:
with catch_warnings(record=True):
self.edit_button.clicked.disconnect()
@@ -145,7 +145,7 @@ class FieldContainer(QWidget):
if callback:
self.edit_button.clicked.connect(callback)
def set_remove_callback(self, callback: Callable | None = None):
def set_remove_callback(self, callback: Callable[[], None] | None = None) -> None:
with catch_warnings(record=True):
self.remove_button.clicked.disconnect()
@@ -153,7 +153,7 @@ class FieldContainer(QWidget):
if callback:
self.remove_button.clicked.connect(callback)
def set_inner_widget(self, widget: "FieldWidget"):
def set_inner_widget(self, widget: "FieldWidget") -> None:
if self.field_layout.itemAt(0):
old: QWidget = self.field_layout.itemAt(0).widget()
self.field_layout.removeWidget(old)
@@ -161,19 +161,20 @@ class FieldContainer(QWidget):
self.field_layout.addWidget(widget)
def get_inner_widget(self):
def get_inner_widget(self) -> QWidget | None:
if self.field_layout.itemAt(0):
return self.field_layout.itemAt(0).widget()
return None
def set_title(self, title: str):
def set_title(self, title: str) -> None:
self.title = self.title = f"<h4>{title}</h4>"
self.title_widget.setText(self.title)
def set_inline(self, inline: bool):
def set_inline(self, inline: bool) -> None:
self.inline = inline
def enterEvent(self, event: QEnterEvent) -> None: # noqa: N802
@override
def enterEvent(self, event: QEnterEvent) -> None:
# NOTE: You could pass the hover event to the FieldWidget if needed.
if self.copy_callback:
self.copy_button.setHidden(False)
@@ -183,7 +184,8 @@ class FieldContainer(QWidget):
self.remove_button.setHidden(False)
return super().enterEvent(event)
def leaveEvent(self, event: QEvent) -> None: # noqa: N802
@override
def leaveEvent(self, event: QEvent) -> None:
if self.copy_callback:
self.copy_button.setHidden(True)
if self.edit_callback:
@@ -192,12 +194,13 @@ class FieldContainer(QWidget):
self.remove_button.setHidden(True)
return super().leaveEvent(event)
def resizeEvent(self, event: QResizeEvent) -> None: # noqa: N802
@override
def resizeEvent(self, event: QResizeEvent) -> None:
self.title_widget.setFixedWidth(int(event.size().width() // 1.5))
return super().resizeEvent(event)
class FieldWidget(QWidget):
def __init__(self, title) -> None:
def __init__(self, title: str) -> None:
super().__init__()
self.title = title
self.title: str = title