gradio pdfplumber pymupdf pydantic openai keyring Jinja2 pytest