sanic-org / sanic

Accelerate your web app development | Build fast. Run fast.

Home Page:https://sanic.dev

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

HTTPMethodView subclass not supports generics

elenlee opened this issue · comments

Is there an existing issue for this?

  • I have searched the existing issues

Describe the bug

For Python3.12 generic classes the following is ok:

class Foo0: ...
class Foo1[T](Foo0): ...
class Foo2(Foo1[int]): ...

But for HTTPMethodView subclass there is an error:

from sanic.views import HTTPMethodView

class Bar1[T](HTTPMethodView): ...
class Bar2(Bar1[int]): ...
    class Bar2(Bar1[int]): ...
               ~~~~^^^^^
  File "/usr/local/lib/python3.12/typing.py", line 374, in inner
    return _caches[func](*args, **kwds)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/typing.py", line 1055, in _generic_class_getitem
    for param in cls.__parameters__:
                 ^^^^^^^^^^^^^^^^^^
AttributeError: type object 'Bar1' has no attribute '__parameters__'

Code snippet

No response

Expected Behavior

No error expected

How do you run Sanic?

As a script (app.run or Sanic.serve)

Operating System

Linux

Sanic Version

Sanic 23.12.1; Routing 23.12.0

Additional context

No response