[project] name = "privaite" version = "0.8.2" description = "Drop-in self-hosted LLM proxy that reversibly redacts PII before LLM calls, including tool-call arguments and multimodal content" readme = "README.md" requires-python = ">=3.11" license = "BSD-3-Clause" keywords = [ "privacy", "pii", "pii-redaction", "redaction", "anonymization", "de-identification", "data-masking", "llm", "llm-security", "proxy", "openai", "chatgpt", "gdpr", "presidio", "guardrails", "self-hosted", ] classifiers = [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Intended Audience :: Information Technology", "Framework :: FastAPI", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Topic :: Security", "Topic :: Internet :: Proxy Servers", "Topic :: Scientific/Engineering :: Artificial Intelligence", "Natural Language :: English", "Natural Language :: French", "Natural Language :: German", "Natural Language :: Spanish", "Natural Language :: Italian", ] dependencies = [ "fastapi>=0.115.0", "uvicorn[standard]>=0.30.0", "sse-starlette>=2.0.0", # Floors below known-CVE fixes (SkillSpector/OSV audit 2026-07): # litellm 1.84 (CVE-2026-49468), pydantic 2.4 (CVE-2024-3772), # transformers 5.3 (CVE-2026-4372), torch 2.6 (CVE-2025-32434). "litellm>=1.84.0", "pydantic>=2.4", "pyyaml>=6.0", "python-dotenv>=1.0", "httpx>=0.27.0", "presidio-analyzer>=2.2", "presidio-anonymizer>=2.2", "spacy>=3.7", "onnxruntime>=1.17", "transformers>=5.3", "huggingface_hub>=0.23", "faker>=25.0", "click>=8.0", ] [project.optional-dependencies] # BERT NER detector (the `standard`/`full` presets). This is the only path that # needs torch; the default `onnx` preset runs on onnxruntime (a core dependency). ml = [ "torch>=2.6", ] # GLiNER detector (the `max` preset): an independent, non-AI4Privacy PII model that # raises out-of-distribution recall. Needs torch + the gliner package; not part of # the onnxruntime floor. gliner = [ "gliner>=0.2.13", "torch>=2.6", ] # Core ML backend of the minilm detector (the `ultrafast` preset): runs the model # on the Apple Neural Engine. macOS only; the `minilm` preset needs nothing extra. ane = [ "coremltools>=9.0; sys_platform == 'darwin'", ] dev = [ "pytest>=8.0", "pytest-asyncio>=0.24", "pytest-httpx>=0.30", "respx>=0.21", "coverage>=7.0", # Pin the formatter too: a floating Ruff release can legitimately rewrite # already-formatted files, making the documented pre-release gate unstable. "ruff==0.16.0", "mypy>=1.10", ] [project.scripts] privaite = "privaite.cli:main" [project.urls] Homepage = "https://github.com/crp4222/PrivAiTe" Repository = "https://github.com/crp4222/PrivAiTe" Documentation = "https://crp4222.github.io/PrivAiTe/" Issues = "https://github.com/crp4222/PrivAiTe/issues" Changelog = "https://github.com/crp4222/PrivAiTe/blob/main/CHANGELOG.md" [tool.setuptools.packages.find] include = ["privaite*"] [build-system] requires = ["setuptools>=78.1.1"] build-backend = "setuptools.build_meta" [tool.ruff] target-version = "py311" line-length = 100 [tool.ruff.lint] select = ["E", "F", "I", "N", "W", "UP"] [tool.mypy] python_version = "3.12" ignore_missing_imports = true [tool.pytest.ini_options] asyncio_mode = "auto" testpaths = ["tests"]