1- from more . webassets . tweens import InjectorTween , PublisherTween
2- from morepath . request import Request
3- from morepath . app import App
4- from dectate import directive
1+ from __future__ import annotations
2+
3+ from typing import TYPE_CHECKING
4+
55from ordered_set import OrderedSet
6+
7+ from dectate import directive
8+ from morepath .app import App
69from morepath .core import excview_tween_factory
10+ from morepath .request import Request
11+
712from . import directives
13+ from .tweens import InjectorTween , PublisherTween
14+
15+ if TYPE_CHECKING :
16+ from typing_extensions import TypeVar
17+
18+ from morepath .types import Tween
819
20+ _AppT = TypeVar (
21+ "_AppT" , bound = "WebassetsApp" , default = "WebassetsApp" , covariant = True
22+ )
23+ else :
24+ from typing import TypeVar
925
10- class IncludeRequest (Request ):
26+ _AppT = TypeVar ("_AppT" , bound = "WebassetsApp" , covariant = True )
27+
28+
29+ class IncludeRequest (Request [_AppT ]):
1130 """Adds the ability to include webassets bundles on the request.
1231
1332 If the bundle does not exist, a KeyError will be raised during the
@@ -27,11 +46,16 @@ def view(self, request):
2746
2847 """
2948
30- def __init__ (self , * args , ** kwargs ):
31- super ().__init__ (* args , ** kwargs )
32- self .included_assets = OrderedSet ()
49+ included_assets : OrderedSet [str ]
50+
51+ # NOTE: Preserve the signature of the super-class, without duplicating it
52+ if not TYPE_CHECKING :
53+
54+ def __init__ (self , * args , ** kwargs ):
55+ super ().__init__ (* args , ** kwargs )
56+ self .included_assets = OrderedSet ()
3357
34- def include (self , resource ) :
58+ def include (self , resource : str ) -> None :
3559 self .included_assets .add (resource )
3660
3761
@@ -54,7 +78,7 @@ class WebassetsApp(App):
5478
5579
5680@WebassetsApp .tween_factory (over = excview_tween_factory )
57- def webassets_injector_tween (app , handler ) :
81+ def webassets_injector_tween (app : WebassetsApp , handler : Tween ) -> Tween :
5882 """Wraps the response with the injector and the publisher tween.
5983
6084 See :class:`webassets.tweens.InjectorTween` and
0 commit comments