Removing all Optional instances.

This commit is contained in:
2026-04-17 16:58:05 +01:00
parent 8b241e09cd
commit 42093be21f
4 changed files with 21 additions and 20 deletions

View File

@@ -5,7 +5,7 @@ import logging
from collections import OrderedDict
from dataclasses import dataclass
from pathlib import Path
from typing import Any, Callable, Optional
from typing import Any, Callable
import cv2
import numpy as np
@@ -41,9 +41,9 @@ def load_metadata(p: Path, key_id="image", key_proc_fn=None) -> dict[str, dict[s
def load_dataset(
root: Path,
meta_path: Optional[Path] = None,
imname_proc_fn: Optional[Callable]=None
) -> tuple[dict[Path, np.ndarray], Optional[dict[str, dict[str, Any]]]]:
meta_path: Path | None,
imname_proc_fn: Callable |None
) -> tuple[dict[str, np.ndarray], dict[str, dict[str, Any]] | None]:
"""
if `meta_path` is `None`, we won't attempt to read it.
@@ -53,20 +53,22 @@ def load_dataset(
Root path to the images. We assume that the images are positioned in a
flat directory under `root`.
meta_path: Optional[Path]
meta_path: Path | None
Path to the metadata file on the dataset. Default is `None`.
imname_proc_fn: Optional[Callable]
imname_proc_fn: Callable | None
Function to apply to the image filenames when building the output
dictionary. Use it to uniformize it with the metadata file. Default
is `None`.
Returns
-------
data: dict[Path, np.ndarray]
metadata, Optional[dict[str, dict[str, Any]]]
data: dict[str, np.ndarray]
metadata, dict[str, dict[str, Any]] | None
If metadata was not found, or not set to load (by leaving `meta_path`
as `None`), then we simply return `None`.
"""
metadata = dict()
metadata = None
paths = set([p for p in root.iterdir() if not p.is_dir()])
if meta_path is not None and meta_path in paths:
# Just read the metadata and avoid needing to test for it in the main loop.
@@ -74,14 +76,13 @@ def load_dataset(
paths.remove(meta_path)
ims = OrderedDict()
# TODO(gschardong): Paralellize this?
for p in paths:
try:
im = cv2.cvtColor(cv2.imread(p), cv2.COLOR_BGR2RGB)
except cv2.error:
logger.info(f'File "{p}" is not an image. Skipping.')
else:
proc_imname = imname_proc_fn(p.name) if imname_proc_fn is not None else p.name
proc_imname = imname_proc_fn(p.name) if imname_proc_fn is not None else str(p.name)
ims[proc_imname] = im
if not metadata:

View File

@@ -15,7 +15,7 @@ class MediapipeDetector(BaseFaceDetector):
Parameters
----------
model_path: str, PathLike
mode: Optional[mediapipe.tasks.python.vision.RunningMode]
mode: mediapipe.tasks.python.vision.RunningMode
"""
def __init__(self, model_path: str, mode=vision.RunningMode.IMAGE) -> None:

View File

@@ -2,7 +2,7 @@
from collections import OrderedDict
from pathlib import Path
from typing import Any, Optional
from typing import Any
import numpy as np
import torch
@@ -24,10 +24,10 @@ class FairFace(BaseEstimator):
Parameters
----------
checkpoint_path: Optional[Path]
checkpoint_path: Path | None
Path to the model weights stored as a PyTorch file.
device: Optional[torch.device]
device: torch.device
The device to load the model into. By default is `"cpu"`
Reference
@@ -36,8 +36,8 @@ class FairFace(BaseEstimator):
"""
def __init__(
self,
checkpoint_path: Optional[Path]=None,
device: Optional[torch.device]=torch.device("cpu")
checkpoint_path: Path | None,
device: torch.device=torch.device("cpu")
):
self.T = transforms.Compose([
transforms.ToPILImage(),

View File

@@ -2,7 +2,7 @@
from collections import OrderedDict
from pathlib import Path
from typing import Any, Optional
from typing import Any
import numpy as np
import torch
@@ -24,7 +24,7 @@ class MiVOLOv1(BaseEstimator):
Path to the saved checkpoint. Note that we expect the checkpoint to be
in PyTorch format.
device: Optional[torch.device]
device: torch.device
Device to load the checkpoints into. By default is "cpu".
Reference
@@ -34,7 +34,7 @@ class MiVOLOv1(BaseEstimator):
def __init__(
self,
checkpoint_path: Path,
device: Optional[torch.device]=torch.device("cpu")
device: torch.device=torch.device("cpu")
):
self.T = transforms.Compose([
transforms.ToPILImage(),