[project] name = "if-curator" version = "0.1.0" description = "Immich to Frigate training sets" license = "MIT" requires-python = ">=3.12" authors = [{ name = "sudolulo" }] keywords = ["immich", "frigate", "face-recognition", "training-data", "arcface", "insightface"] classifiers = [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3.12", "Topic :: Scientific/Engineering :: Image Recognition", ] dependencies = [ "croniter>=5.0.2", "insightface>=0.7.3", "numpy>=2.2.6", "onnxruntime>=1.23.2", "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.scripts] if-curator = "if_curator.cli:main" [project.urls] Repository = "https://github.com/sudolulo/if_curator_headless" [project.optional-dependencies] cpu = [ "torch>=2.6.0", ] gpu = [ "onnxruntime-gpu>=1.23.2", "torch>=2.6.0", ] object = [ "transformers>=4.57.6", "ultralytics>=8.3.252", ] # ── Declare mutually exclusive extras ── # cpu and gpu cannot be enabled together (they pull torch from different indexes) # object can be combined with either: --extra cpu --extra object OR --extra gpu --extra object [tool.uv] conflicts = [ [ { extra = "cpu" }, { extra = "gpu" }, ], ] # ── Per-extra PyTorch index configuration ── # --extra cpu → CPU-only torch # --extra gpu → CUDA 12.6 torch [tool.uv.sources] torch = [ { index = "pytorch-cpu", extra = "cpu" }, { index = "pytorch-cu126", extra = "gpu" }, ] [[tool.uv.index]] name = "pytorch-cpu" url = "https://download.pytorch.org/whl/cpu" explicit = true [[tool.uv.index]] name = "pytorch-cu126" url = "https://download.pytorch.org/whl/cu126" explicit = true [dependency-groups] dev = [ "pytest>=8.0", "ruff>=0.9.2", ] [tool.hatch.build.targets.wheel] packages = ["if_curator"] [tool.ruff] line-length = 120 target-version = "py312" [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" onnxruntime = "onnxruntime" requests = "requests" rich = "rich" torch = "torch" transformers = "transformers" ultralytics = "ultralytics" [tool.deptry.per_rule_ignores] # onnxruntime-gpu is an optional dep that replaces onnxruntime at runtime DEP002 = ["onnxruntime-gpu"] [build-system] requires = ["hatchling"] build-backend = "hatchling.build"