From f5b2c424e6a66ae64c9f41a8e8f0aa2dcfc16b1b Mon Sep 17 00:00:00 2001 From: Sam Smith Date: Fri, 20 Dec 2024 10:56:23 +0000 Subject: [PATCH] Loosen the jinja restriction to versions including > 3.1. --- Makefile | 12 +++++----- README.md | 6 ++--- .../__init__.py | 0 {fastapi_vite => fastapi_vite_dara}/config.py | 0 {fastapi_vite => fastapi_vite_dara}/loader.py | 10 ++++++-- main.py | 24 +++++++++++-------- pyproject.toml | 15 ++++++------ tests/test_fastapi_webpack_loader.py | 6 ++--- 8 files changed, 42 insertions(+), 31 deletions(-) rename {fastapi_vite => fastapi_vite_dara}/__init__.py (100%) rename {fastapi_vite => fastapi_vite_dara}/config.py (100%) rename {fastapi_vite => fastapi_vite_dara}/loader.py (97%) diff --git a/Makefile b/Makefile index a5543db..ec9397d 100644 --- a/Makefile +++ b/Makefile @@ -56,12 +56,12 @@ install: check: - poetry run black --check fastapi_vite - poetry run isort --check fastapi_vite --skip .venv - poetry run flake8 fastapi_vite --exclude=node_modules,migrations + poetry run black --check fastapi_vite_dara + poetry run isort --check fastapi_vite_dara --skip .venv + poetry run flake8 fastapi_vite_dara --exclude=node_modules,migrations poetry run pre-commit run fix: - poetry run pycln fastapi_vite --all --exclude '/(\.direnv|\.eggs|\.git|\.hg|\.mypy_cache|\.nox|\.tox|\.venv|\.svn|_build|buck-out|build|dist|\.venv|node_modules)/' - poetry run isort fastapi_vite --skip .venv - poetry run black fastapi_vite --exclude '/(\.direnv|\.eggs|\.git|\.hg|\.mypy_cache|\.nox|\.tox|\.venv|\.svn|_build|buck-out|build|dist|\.venv|node_modules)/' + poetry run pycln fastapi_vite_dara --all --exclude '/(\.direnv|\.eggs|\.git|\.hg|\.mypy_cache|\.nox|\.tox|\.venv|\.svn|_build|buck-out|build|dist|\.venv|node_modules)/' + poetry run isort fastapi_vite_dara --skip .venv + poetry run black fastapi_vite_dara --exclude '/(\.direnv|\.eggs|\.git|\.hg|\.mypy_cache|\.nox|\.tox|\.venv|\.svn|_build|buck-out|build|dist|\.venv|node_modules)/' diff --git a/README.md b/README.md index a2c292d..6570912 100644 --- a/README.md +++ b/README.md @@ -23,11 +23,11 @@ pip install fastapi-vite Configure Jinja templating for FastAPI ```python -import fastapi_vite +import fastapi_vite_dara templates = Jinja2Templates(directory='templates') -templates.env.globals['vite_hmr_client'] = fastapi_vite.vite_hmr_client -templates.env.globals['vite_asset'] = fastapi_vite.vite_asset +templates.env.globals['vite_hmr_client'] = fastapi_vite_dara.vite_hmr_client +templates.env.globals['vite_asset'] = fastapi_vite_dara.vite_asset ``` diff --git a/fastapi_vite/__init__.py b/fastapi_vite_dara/__init__.py similarity index 100% rename from fastapi_vite/__init__.py rename to fastapi_vite_dara/__init__.py diff --git a/fastapi_vite/config.py b/fastapi_vite_dara/config.py similarity index 100% rename from fastapi_vite/config.py rename to fastapi_vite_dara/config.py diff --git a/fastapi_vite/loader.py b/fastapi_vite_dara/loader.py similarity index 97% rename from fastapi_vite/loader.py rename to fastapi_vite_dara/loader.py index 6d3e165..ef6ff81 100644 --- a/fastapi_vite/loader.py +++ b/fastapi_vite_dara/loader.py @@ -7,10 +7,16 @@ from typing import ClassVar, Dict, Optional from urllib.parse import urljoin -from jinja2 import Markup - from .config import settings +# Third Party Libraries - Handle different Jinja versions +try: + # Third Party Libraries + from markupsafe import Markup +except ImportError: + # Third Party Libraries + from jinja2.utils.markupsafe import Markup + class ViteLoader(object): """Vite manifest loader""" diff --git a/main.py b/main.py index 61bef6f..56eaece 100644 --- a/main.py +++ b/main.py @@ -1,21 +1,25 @@ -import fastapi_vite +import fastapi_vite_dara from starlette.applications import Starlette -from starlette.routing import Route, Mount -from starlette.templating import Jinja2Templates +from starlette.routing import Mount, Route from starlette.staticfiles import StaticFiles +from starlette.templating import Jinja2Templates -templates = Jinja2Templates(directory='assets/templates') -templates.env.globals['vite_hmr_client'] = fastapi_vite.vite_hmr_client -templates.env.globals['vite_asset'] = fastapi_vite.vite_asset +templates = Jinja2Templates(directory="assets/templates") +templates.env.globals["vite_hmr_client"] = fastapi_vite_dara.vite_hmr_client +templates.env.globals["vite_asset"] = fastapi_vite_dara.vite_asset async def homepage(request): - return templates.TemplateResponse('index.html', {'request': request}) + return templates.TemplateResponse("index.html", {"request": request}) + routes = [ - Route('/', endpoint=homepage), - Mount(fastapi_vite.settings.STATIC_URL, StaticFiles( - directory=fastapi_vite.settings.STATIC_PATH), name='static') + Route("/", endpoint=homepage), + Mount( + fastapi_vite_dara.settings.STATIC_URL, + StaticFiles(directory=fastapi_vite_dara.settings.STATIC_PATH), + name="static", + ), ] app = Starlette(debug=True, routes=routes) diff --git a/pyproject.toml b/pyproject.toml index a2ab136..40336e7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [tool.poetry] -name = "fastapi_vite" -version = "0.3.1" -description = "Integration utilities for FastAPI and ViteJS." +name = "fastapi_vite_dara" +version = "0.3.1.0" +description = "Fork of fastapi-vite to support wider range of jinja2 version." classifiers = [ "License :: OSI Approved :: MIT License", "Framework :: AsyncIO", @@ -11,12 +11,12 @@ classifiers = [ "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3 :: Only", ] -authors = ["Cody Fincher "] -keywords = ["fastapi","starlette","vite"] +authors = ["causaLens ", "Cody Fincher "] +keywords = ["fastapi","starlette","vite","dara"] license = "MIT" readme = "README.md" -homepage = "https://github.com/cofin/fastapi-vite" -repository = "https://github.com/cofin/fastapi-vite" +homepage = "https://github.com/causalens/fastapi-vite" +repository = "https://github.com/causalens/fastapi-vite" [tool.poetry.dependencies] python = "^3.8" @@ -38,6 +38,7 @@ isort = "^5.0" pre-commit = "^2.8.2" black = "^21.5b2" uvicorn = "^0.14.0" +docutils = "0.18.1" [tool.poetry.extras] diff --git a/tests/test_fastapi_webpack_loader.py b/tests/test_fastapi_webpack_loader.py index 3251baa..896ecf0 100644 --- a/tests/test_fastapi_webpack_loader.py +++ b/tests/test_fastapi_webpack_loader.py @@ -1,14 +1,14 @@ -from fastapi_vite import __version__ +from fastapi_vite_dara import __version__ from starlette.testclient import TestClient def test_version(): - assert __version__ == '0.1.0' + assert __version__ == "0.1.0" def test_homepage(): client = TestClient(app) response = client.get("/") assert response.status_code == 200 - assert response.template.name == 'index.html' + assert response.template.name == "index.html" assert "request" in response.context