From b5b3e77e7eb85c326d270c8effcfa818a668cca9 Mon Sep 17 00:00:00 2001 From: Eric Eastwood Date: Thu, 23 May 2024 16:56:48 -0500 Subject: [PATCH] Fix Pydantic `conint`/`constr` usage with mypy See https://github.com/pydantic/pydantic/issues/156#issuecomment-1130883884 --- synapse/rest/client/models.py | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/synapse/rest/client/models.py b/synapse/rest/client/models.py index d11d14287c..b26907d52c 100644 --- a/synapse/rest/client/models.py +++ b/synapse/rest/client/models.py @@ -160,7 +160,11 @@ class SlidingSyncBody(RequestBodyModel): required_state: List[Tuple[StrictStr, StrictStr]] required_state: List[Tuple[StrictStr, StrictStr]] - timeline_limit: conint(le=1000, strict=True) + # mypy workaround via https://github.com/pydantic/pydantic/issues/156#issuecomment-1130883884 + if TYPE_CHECKING: + timeline_limit: int + else: + timeline_limit: conint(le=1000, strict=True) # type: ignore[valid-type] include_old_rooms: Optional[IncludeOldRooms] class SlidingSyncList(CommonRoomParameters): @@ -242,9 +246,11 @@ class SlidingSyncBody(RequestBodyModel): tags: Optional[List[StrictStr]] not_tags: Optional[List[StrictStr]] - ranges: Optional[ - List[Tuple[conint(ge=0, strict=True), conint(ge=0, strict=True)]] - ] + # mypy workaround via https://github.com/pydantic/pydantic/issues/156#issuecomment-1130883884 + if TYPE_CHECKING: + ranges: Optional[List[Tuple[int, int]]] + else: + ranges: Optional[List[Tuple[conint(ge=0, strict=True), conint(ge=0, strict=True)]]] # type: ignore[valid-type] sort: Optional[List[StrictStr]] slow_get_all_rooms: Optional[StrictBool] = False include_heroes: Optional[StrictBool] = False @@ -259,7 +265,11 @@ class SlidingSyncBody(RequestBodyModel): lists: Optional[List[StrictStr]] rooms: Optional[List[StrictStr]] - lists: Optional[Dict[constr(max_length=64, strict=True), SlidingSyncList]] + # mypy workaround via https://github.com/pydantic/pydantic/issues/156#issuecomment-1130883884 + if TYPE_CHECKING: + lists: Optional[Dict[str, SlidingSyncList]] + else: + lists: Optional[Dict[constr(max_length=64, strict=True), SlidingSyncList]] # type: ignore[valid-type] room_subscriptions: Optional[Dict[StrictStr, RoomSubscription]] extensions: Optional[Dict[StrictStr, Extension]]