]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
utils: modelling: fix type processing between different python versions
authorVasek Sraier <git@vakabus.cz>
Wed, 27 Oct 2021 15:14:35 +0000 (17:14 +0200)
committerAleš Mrázek <ales.mrazek@nic.cz>
Fri, 8 Apr 2022 14:17:53 +0000 (16:17 +0200)
manager/knot_resolver_manager/utils/types.py

index e4047a76d71ff0eb260060ef692dc67cc975a75e..986da503b15ac9483ecef6d710e273a429f5c15b 100644 (file)
@@ -3,6 +3,7 @@
 
 import enum
 import inspect
+import sys
 from typing import Any, Dict, List, Optional, Tuple, Type, TypeVar, Union
 
 from typing_extensions import Literal
@@ -39,12 +40,15 @@ def is_union(tp: Any) -> bool:
 
 
 def is_literal(tp: Any) -> bool:
-    return isinstance(tp, type(Literal))
+    if sys.version_info.minor == 6:
+        return isinstance(tp, type(Literal))
+    else:
+        return getattr(tp, "__origin__", None) == Literal
 
 
 def get_generic_type_arguments(tp: Any) -> List[Any]:
     default: List[Any] = []
-    if is_literal(tp):
+    if sys.version_info.minor == 6 and is_literal(tp):
         return getattr(tp, "__values__")
     else:
         return getattr(tp, "__args__", default)