[build-system] requires = ["setuptools>=68", "wheel"] build-backend = "setuptools.build_meta" [project] name = "veil-pgd" version = "0.2.1" description = "VEIL-PGD: Vision-Encoder Imperceptible Layer, low-visibility ensemble-PGD perturbations that protect public images from vision-language training-data ingestion." readme = "README.md" requires-python = ">=3.11" license = { text = "PolyForm-Noncommercial-1.0.0" } authors = [{ name = "cebeuq" }] # The orchestrator stays torch-free. All heavy model inference (CLIP, VLMs, # embeddings fallback, LPIPS) runs on a separate GPU host behind HTTP endpoints. dependencies = [ "pillow>=10.2", "numpy>=1.26", "scikit-image>=0.22", "requests>=2.31", "httpx>=0.27", "pydantic>=2.6", "pydantic-settings>=2.2", "python-dotenv>=1.0", "typer>=0.12", "rich>=13.7", "nltk>=3.8", "tenacity>=8.2", "pyyaml>=6.0", ] [project.optional-dependencies] dev = [ "pytest>=8.0", "ruff>=0.4", "mypy>=1.9", ] [project.scripts] veil-pgd = "veil_pgd.cli:app" [tool.setuptools.packages.find] where = ["src"] [tool.ruff] line-length = 100 target-version = "py311" [tool.ruff.lint] select = ["E", "F", "I", "UP", "B"] [tool.mypy] python_version = "3.11" ignore_missing_imports = true