From ab4df25a5e20cce46fea461d3683744cb3d8543b Mon Sep 17 00:00:00 2001 From: Neda Moeini <neda.moeini@geant.org> Date: Fri, 11 Apr 2025 11:31:43 +0200 Subject: [PATCH] Refactor code structure and add tox configuration for linting and type checking --- mapping_provider/__init__.py | 5 +++-- mapping_provider/api/common.py | 4 ++-- pyproject.toml | 12 ++++++++++++ requirements.txt | 5 ++++- setup.py | 2 +- tox.ini | 12 ++++++++++++ 6 files changed, 34 insertions(+), 6 deletions(-) create mode 100644 pyproject.toml create mode 100644 tox.ini diff --git a/mapping_provider/__init__.py b/mapping_provider/__init__.py index b716184..aa309f9 100644 --- a/mapping_provider/__init__.py +++ b/mapping_provider/__init__.py @@ -1,10 +1,11 @@ """Initializes the FastAPI application.""" -from xml.sax.handler import version from fastapi import FastAPI + from mapping_provider.api.common import router as version_router -def create_app(): + +def create_app() -> FastAPI: """Create a FastAPI application.""" app = FastAPI( title="Mapping provider", diff --git a/mapping_provider/api/common.py b/mapping_provider/api/common.py index f1395f2..9c528b0 100644 --- a/mapping_provider/api/common.py +++ b/mapping_provider/api/common.py @@ -1,4 +1,4 @@ -from importlib.metadata import version, PackageNotFoundError +from importlib.metadata import PackageNotFoundError, version from fastapi import APIRouter @@ -6,7 +6,7 @@ router = APIRouter() @router.get("/version") -def get_version(): +def get_version() -> dict[str, str]: """Get the version of the package.""" try: return {"version": version("mapping_provider")} diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..cdeac56 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,12 @@ +[tool.ruff] +line-length = 120 +target-version = "py313" +select = ["E", "F", "I", "B", "UP", "N"] +fixable = ["ALL"] +exclude = ["tests", "docs", "build"] + +[tool.mypy] +python_version = "3.13" +strict = true +warn_unused_ignores = true +warn_return_any = true \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 590f2f4..010ed04 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,6 @@ fastapi uvicorn[standard] -sphinx \ No newline at end of file +sphinx +ruff +mypy +tox \ No newline at end of file diff --git a/setup.py b/setup.py index 5a84dbf..5e5209c 100644 --- a/setup.py +++ b/setup.py @@ -1,4 +1,4 @@ -from setuptools import setup, find_packages +from setuptools import find_packages, setup setup( name="mapping-provider", diff --git a/tox.ini b/tox.ini new file mode 100644 index 0000000..d9de39c --- /dev/null +++ b/tox.ini @@ -0,0 +1,12 @@ +[tox] +envlist = lint, typecheck + +[testenv:lint] +description = Lint code with Ruff +deps = ruff +commands = ruff check mapping_provider + +[testenv:typecheck] +description = Type-check code with mypy +deps = mypy +commands = mypy mapping_provider \ No newline at end of file -- GitLab