Ruff E712와 SQLAlchemy Boolean 조건식 처리하기
·
Language/Python
문제 상황SQLAlchemy를 사용해 상품 목록을 조회하는 조건식을 작성하던 중, Ruff에서 다음과 같은 경고가 발생했습니다.services\product-service\app\routes\products.py:94:27: E712 Avoid equality comparisons to `True`; use `if Product.is_active:` for truth checks문제가 된 코드는 다음과 같습니다.conditions.append(Product.is_active == True)Ruff의 E712 규칙은 Python 코드에서 True, False와 직접 비교하는 패턴을 피하라는 경고입니다.일반적인 Python 코드에서는 다음과 같은 비교를 권장하지 않습니다.if value == True: ..
FastAPI Depends()에서 Ruff B008 경고가 발생할 때 해결 방법
·
Language/Python
FastAPI에서 의존성 주입을 사용하다 보면 Ruff 또는 flake8-bugbear에서 B008 경고가 발생할 수 있습니다.예를 들어 다음과 같이 Depends()를 기본 인자로 사용하는 코드는 FastAPI에서 매우 일반적인 패턴입니다.from fastapi import Dependsasync def get_user(db=Depends(get_db)): ...하지만 Ruff는 이 코드를 보고 다음과 같은 경고를 표시할 수 있습니다.B008 Do not perform function call `Depends` in argument defaults처음에는 코드가 잘못 작성된 것처럼 보였지만, 확인해보니 FastAPI의 Depends() 사용 방식에서는 일반적인 버그가 아니라 Ruff의 오탐(fal..
Python 타입 힌트: Optional, Union, T | None 차이 정리
·
Language/Python
Python 타입 힌트를 작성하다 보면 값이 특정 타입이거나 None일 수 있는 경우가 있습니다.예를 들어 함수의 인자로 문자열을 받을 수도 있고, 값이 전달되지 않으면 None을 기본값으로 사용할 수도 있습니다. 이런 경우 기존에는 Optional[T] 또는 Union[T, None]을 사용했습니다.하지만 Python 3.10 이상부터는 T | None 문법을 사용할 수 있습니다. 더 간결하고 직관적이기 때문에 최근 코드에서는 이 방식을 많이 사용합니다.기존 방식: Optional[T]Python 3.10 이전에는 typing.Optional을 사용해 None이 가능한 타입을 표현했습니다.from typing import Optionaldef greet(name: Optional[str] = None)..