- reconcile.py: re-escalate the < target branch from INFO to WARNING and add 'permanently unmapped' label. Both post-loop branches produce identical permanent mapping loss; v0.5.9 incorrectly treated the timeout case as recoverable. - executor.py: guard shutil.rmtree with 'not os.path.islink(person_dir)' so a race-replaced symlink-to-directory is skipped rather than raising an unhandled OSError that aborts all remaining jobs. Correct comment: rmtree raises OSError, not NotADirectoryError.
103 lines
2.8 KiB
TOML
103 lines
2.8 KiB
TOML
[project]
|
|
name = "winnow"
|
|
version = "0.5.10"
|
|
description = "Selects diverse, high-quality photos from Immich as training data for Frigate face recognition."
|
|
license = "AGPL-3.0-or-later"
|
|
requires-python = ">=3.13"
|
|
authors = [{ name = "Holden Salomon", email = "holden@arch.fyi" }]
|
|
keywords = ["immich", "frigate", "face-recognition", "training-data", "arcface", "insightface"]
|
|
classifiers = [
|
|
"Development Status :: 3 - Alpha",
|
|
"Intended Audience :: Developers",
|
|
"Intended Audience :: System Administrators",
|
|
"License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)",
|
|
"Programming Language :: Python :: 3.13",
|
|
"Topic :: Scientific/Engineering :: Image Recognition",
|
|
]
|
|
dependencies = [
|
|
"croniter>=5.0.2",
|
|
"insightface>=0.7.3",
|
|
"numpy>=2.2.6",
|
|
"opencv-python-headless>=4.12.0.88",
|
|
"pillow>=12.1.0",
|
|
"python-dotenv>=1.2.1",
|
|
"requests>=2.32.5",
|
|
"rich>=14.2.0",
|
|
]
|
|
|
|
[project.optional-dependencies]
|
|
gpu = [
|
|
"onnxruntime-gpu>=1.23.2; sys_platform == 'linux' and platform_machine == 'x86_64'",
|
|
"nvidia-cudnn-cu12>=9.0.0; sys_platform == 'linux' and platform_machine == 'x86_64'",
|
|
]
|
|
rocm = ["onnxruntime-rocm>=1.16.0; sys_platform == 'linux' and platform_machine == 'x86_64'"]
|
|
intel = ["onnxruntime-openvino>=1.20.0; sys_platform == 'linux' and platform_machine == 'x86_64'"]
|
|
cpu = ["onnxruntime>=1.23.2"]
|
|
|
|
[project.scripts]
|
|
winnow = "winnow.cli:main"
|
|
|
|
[project.urls]
|
|
Repository = "https://github.com/sudolulo/winnow"
|
|
Changelog = "https://github.com/sudolulo/winnow/blob/main/CHANGELOG.md"
|
|
Documentation = "https://github.com/sudolulo/winnow/wiki"
|
|
|
|
[tool.uv]
|
|
index-strategy = "unsafe-best-match"
|
|
conflicts = [
|
|
[
|
|
{ extra = "gpu" },
|
|
{ extra = "rocm" },
|
|
{ extra = "intel" },
|
|
{ extra = "cpu" },
|
|
],
|
|
]
|
|
required-environments = [
|
|
"sys_platform == 'linux' and platform_machine == 'x86_64'",
|
|
"sys_platform == 'linux' and platform_machine == 'aarch64'",
|
|
]
|
|
|
|
|
|
[dependency-groups]
|
|
dev = [
|
|
"pytest>=8.0",
|
|
"ruff>=0.15.17",
|
|
]
|
|
|
|
[tool.hatch.build.targets.wheel]
|
|
packages = ["winnow"]
|
|
|
|
[tool.ruff]
|
|
line-length = 120
|
|
target-version = "py313"
|
|
|
|
[tool.ruff.lint]
|
|
select = ["E", "F", "I"]
|
|
|
|
[tool.deptry]
|
|
pep621_dev_dependency_groups = ["dev"]
|
|
|
|
[tool.deptry.package_module_name_map]
|
|
pillow = "PIL"
|
|
opencv-python-headless = "cv2"
|
|
python-dotenv = "dotenv"
|
|
insightface = "insightface"
|
|
numpy = "numpy"
|
|
nvidia-cudnn-cu12 = "nvidia.cudnn"
|
|
onnxruntime-gpu = "onnxruntime"
|
|
onnxruntime-rocm = "onnxruntime"
|
|
onnxruntime-openvino = "onnxruntime"
|
|
onnxruntime = "onnxruntime"
|
|
requests = "requests"
|
|
rich = "rich"
|
|
|
|
[tool.deptry.per_rule_ignores]
|
|
DEP002 = ["onnxruntime-gpu", "nvidia-cudnn-cu12", "onnxruntime-rocm", "onnxruntime-openvino", "onnxruntime"]
|
|
|
|
[tool.pytest.ini_options]
|
|
testpaths = ["tests"]
|
|
|
|
[build-system]
|
|
requires = ["hatchling"]
|
|
build-backend = "hatchling.build"
|