[build-system] requires = ["setuptools>=68", "wheel"] build-backend = "setuptools.build_meta" [project] name = "noteguard-agent" version = "1.2.4" description = "Trust layer for clinical AI — de-identifies NHS notes before LLM sees them." readme = "README.md" requires-python = ">=3.10" license = { text = "MIT" } authors = [{ name = "Chaeyoon Kim" }] keywords = ["nhs", "de-identification", "phi", "langgraph", "gemini", "rap"] dependencies = [ "fastapi>=0.109.0", "uvicorn[standard]>=0.27.0", "langgraph>=0.2.0", "langchain>=0.3.0", "langchain-google-genai>=2.0.0", "langchain-tavily>=0.1.0", "langsmith>=0.1.0", "python-dotenv>=1.0.0", "huggingface_hub>=0.20.0", ] [project.optional-dependencies] # pip install -e ".[nlp]" — Presidio + spaCy NER for free-text PERSON/LOCATION. # Also needs a spaCy model: python -m spacy download en_core_web_md nlp = ["presidio-analyzer>=2.2.0", "spacy>=3.7.0,<4"] # pip install -e ".[demo]" — Streamlit interactive demo demo = ["streamlit>=1.35.0"] # pip install -e ".[dev]" — full dev tooling incl. langgraph dev server dev = [ "pytest>=8.0.0", "pytest-cov>=4.1.0", "ruff>=0.3.0", "pre-commit>=3.6.0", "langgraph-cli[inmem]>=0.4.0", ] [project.urls] Homepage = "https://github.com/chaeyoonyunakim/noteguard-agent" [tool.setuptools.packages.find] where = ["."] include = ["src*", "agent*", "app*", "eval*"] [tool.ruff] line-length = 110 target-version = "py310" src = ["src", "agent", "app", "eval", "tests"] [tool.ruff.lint] select = ["E", "F", "I", "B", "UP", "W"] ignore = ["B008"] [tool.ruff.lint.per-file-ignores] "agent/graph.py" = ["E402"] "app/api.py" = ["E402"] "eval/run_eval.py" = ["E402", "I001"] [tool.pytest.ini_options] testpaths = ["tests"] addopts = "-q"