Skip to content

Commit a157948

Browse files
committed
fix: remove deprecated on_event
1 parent d3c6a86 commit a157948

2 files changed

Lines changed: 29 additions & 16 deletions

File tree

api.py

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
import uvicorn
1717
import argparse
18+
from contextlib import asynccontextmanager
1819
from fastapi import FastAPI, HTTPException
1920
from fastapi.responses import StreamingResponse
2021
from pydantic import BaseModel, Field
@@ -23,10 +24,30 @@
2324
from src.retriever import VimproveRetriever
2425

2526

27+
@asynccontextmanager
28+
async def lifespan(app: FastAPI):
29+
"""Lifespan context manager for startup and shutdown events."""
30+
# Startup
31+
global retriever, openrouter_key
32+
33+
cache_dir = Path(os.environ.get("VIMPROVE_CACHE_DIR", "./vimprove-cache")).resolve()
34+
openrouter_key = os.environ.get("OPENROUTER_API_KEY")
35+
36+
if not openrouter_key:
37+
print("Warning: OPENROUTER_API_KEY not set. Query endpoint will fail.")
38+
39+
print(f"Loading retriever from {cache_dir}...")
40+
retriever = VimproveRetriever(cache_dir)
41+
print(f"✓ Retriever ready ({retriever.collection.count()} chunks)")
42+
43+
yield # App runs here
44+
45+
2646
app = FastAPI(
2747
title="Vimprove API",
2848
description="RAG-powered Neovim configuration assistant",
2949
version="0.1.0",
50+
lifespan=lifespan,
3051
)
3152

3253

@@ -57,22 +78,6 @@ class QueryResponse(BaseModel):
5778
model_used: str
5879

5980

60-
@app.on_event("startup")
61-
async def startup_event():
62-
"""Initialize retriever on startup."""
63-
global retriever, openrouter_key
64-
65-
cache_dir = Path(os.environ.get("VIMPROVE_CACHE_DIR", "./vimprove-cache")).resolve()
66-
openrouter_key = os.environ.get("OPENROUTER_API_KEY")
67-
68-
if not openrouter_key:
69-
print("Warning: OPENROUTER_API_KEY not set. Query endpoint will fail.")
70-
71-
print(f"Loading retriever from {cache_dir}...")
72-
retriever = VimproveRetriever(cache_dir)
73-
print(f"✓ Retriever ready ({retriever.collection.count()} chunks)")
74-
75-
7681
@app.get("/health")
7782
async def health_check():
7883
"""Health check endpoint."""

justfile

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
test:
2+
uv run pytest
3+
4+
test-v:
5+
uv run pytest -v
6+
7+
test-c:
8+
uv run pytest --cov=Vimprove --cov-report=term-missing

0 commit comments

Comments
 (0)