From a2fad74a28fe2198b0db2cd616786decca4d7e70 Mon Sep 17 00:00:00 2001 From: Anders Kaseorg Date: Thu, 11 Jul 2024 17:59:20 -0700 Subject: [PATCH] typed_endpoint: Make is_optional understand T | None. Signed-off-by: Anders Kaseorg --- zerver/lib/typed_endpoint.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/zerver/lib/typed_endpoint.py b/zerver/lib/typed_endpoint.py index 2744c1da60..d69e321cb3 100644 --- a/zerver/lib/typed_endpoint.py +++ b/zerver/lib/typed_endpoint.py @@ -1,5 +1,6 @@ import inspect import json +import types from dataclasses import dataclass from enum import Enum, auto from functools import wraps @@ -169,7 +170,7 @@ def is_annotated(type_annotation: Type[object]) -> bool: def is_optional(type_annotation: Type[object]) -> bool: origin = get_origin(type_annotation) type_args = get_args(type_annotation) - return origin is Union and type(None) in type_args and len(type_args) == 2 + return origin in (Union, types.UnionType) and type(None) in type_args and len(type_args) == 2 API_PARAM_CONFIG_USAGE_HINT = f"""