File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -151,7 +151,7 @@ def __subclasscheck__(cls, subclass): # noqa: B902
151151 """Implement issubclass(sub, cls)."""
152152 if hasattr (subclass , "_original_cls" ):
153153 return cls .__subclasscheck__ (subclass ._original_cls )
154- return super ().__subclasscheck__ (subclass )
154+ return isinstance ( subclass , type ) and super ().__subclasscheck__ (subclass )
155155
156156
157157class BaseModel (pydantic .BaseModel , metaclass = ExtendablePydanticModelMeta ):
Original file line number Diff line number Diff line change 11# Copyright 2021 ACSONE SA/NV
22# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html)
33
4- from typing import List
4+ from typing import List , Literal
55
66import pydantic
77
@@ -154,3 +154,19 @@ class ExtendedLocation(Location, extends=Location):
154154 inst2 = ExtendedLocation .construct ()
155155 self .assertEqual (inst1 .__class__ , inst2 .__class__ )
156156 self .assertEqual (inst1 .schema (), inst2 .schema ())
157+
158+ def test_issubclass (self ):
159+ """In this test we check that issublass is lenient when used with
160+ GenericAlias
161+ """
162+ self .assertTrue ()
163+ self .assertFalse (issubclass (Literal ["test" ], models .BaseModel ))
164+ self .assertFalse (issubclass (Literal , models .BaseModel ))
165+
166+ class Location (models .BaseModel ):
167+ kind : Literal ["view" , "bin" ]
168+ my_list : List [str ]
169+
170+ self ._build_pydantic_classes (Location )
171+ schema = Location .schema ()
172+ self .assertTrue (schema )
You can’t perform that action at this time.
0 commit comments