Open rafrafek opened 5 months ago
I think the solution may look similar to this:
from typing import Any, Callable, TypeVar
T_route = TypeVar("T_route", bound=Callable[..., Any])
class Resolver:
def route(self, rule: str, method: str) -> Callable[[T_route], T_route]:
def register_resolver(func: T_route) -> T_route:
print(rule, method)
return func
return register_resolver
def post(self, rule: str) -> Callable[[T_route], T_route]:
return self.route(rule=rule, method="POST")
app = Resolver()
@app.route("/v1/demo", "GET")
def demo() -> str:
return "demo"
@app.post("/v1/demo_post")
def demo_post() -> str:
return "demo post"
Hello @rafrafek! Thanks for opening this issue! I'm planning to review this next week.
Adding help wanted label as we were unable to prioritize it. Any PR welcome <3
Static type checker used
pyright/pylance
AWS Lambda function runtime
3.12
Powertools for AWS Lambda (Python) version
latest
Static type checker info
Latest Pylance, latest VS Code, type checking mode strict.
Screenshot:
Code snippet
Possible Solution
return
Callable[..., T]
or something like that