Skip to content

Commit 656ce6f

Browse files
authored
Fix #688 kwarg injection does not work with decorated functions (#689)
1 parent c5349cc commit 656ce6f

22 files changed

+134
-40
lines changed

slack_bolt/authorization/async_authorize.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import inspect
21
from logging import Logger
32
from typing import Optional, Callable, Awaitable, Dict, Any
43

@@ -14,6 +13,7 @@
1413
from slack_bolt.authorization import AuthorizeResult
1514
from slack_bolt.context.async_context import AsyncBoltContext
1615
from slack_bolt.error import BoltError
16+
from slack_bolt.util.utils import get_arg_names_of_callable
1717

1818

1919
class AsyncAuthorize:
@@ -42,7 +42,7 @@ class AsyncCallableAuthorize(AsyncAuthorize):
4242
def __init__(self, *, logger: Logger, func: Callable[..., Awaitable[AuthorizeResult]]):
4343
self.logger = logger
4444
self.func = func
45-
self.arg_names = inspect.getfullargspec(func).args
45+
self.arg_names = get_arg_names_of_callable(func)
4646

4747
async def __call__(
4848
self,

slack_bolt/authorization/authorize.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import inspect
21
from logging import Logger
32
from typing import Optional, Callable, Dict, Any
43

@@ -13,6 +12,7 @@
1312
from slack_bolt.authorization.authorize_result import AuthorizeResult
1413
from slack_bolt.context.context import BoltContext
1514
from slack_bolt.error import BoltError
15+
from slack_bolt.util.utils import get_arg_names_of_callable
1616

1717

1818
class Authorize:
@@ -46,7 +46,7 @@ def __init__(
4646
):
4747
self.logger = logger
4848
self.func = func
49-
self.arg_names = inspect.getfullargspec(func).args
49+
self.arg_names = get_arg_names_of_callable(func)
5050

5151
def __call__(
5252
self,

slack_bolt/lazy_listener/async_internals.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
1-
import inspect
21
from functools import wraps
32
from logging import Logger
43
from typing import Callable, Awaitable
54

65
from slack_bolt.kwargs_injection.async_utils import build_async_required_kwargs
76
from slack_bolt.request.async_request import AsyncBoltRequest
7+
from slack_bolt.util.utils import get_arg_names_of_callable
88

99

1010
async def to_runnable_function(
1111
internal_func: Callable[..., Awaitable[None]],
1212
logger: Logger,
1313
request: AsyncBoltRequest,
1414
):
15-
arg_names = inspect.getfullargspec(internal_func).args
15+
arg_names = get_arg_names_of_callable(internal_func)
1616

1717
@wraps(internal_func)
1818
async def request_wired_wrapper() -> None:

slack_bolt/lazy_listener/internals.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
1-
import inspect
21
from functools import wraps
32
from logging import Logger
43
from typing import Callable
54

65
from slack_bolt.kwargs_injection import build_required_kwargs
76
from slack_bolt.request import BoltRequest
7+
from slack_bolt.util.utils import get_arg_names_of_callable
88

99

1010
def build_runnable_function(
1111
func: Callable[..., None],
1212
logger: Logger,
1313
request: BoltRequest,
1414
) -> Callable[[], None]:
15-
arg_names = inspect.getfullargspec(func).args
15+
arg_names = get_arg_names_of_callable(func)
1616

1717
@wraps(func)
1818
def request_wired_func_wrapper() -> None:

slack_bolt/listener/async_listener.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from slack_bolt.request.async_request import AsyncBoltRequest
77
from slack_bolt.response import BoltResponse
88
from ..kwargs_injection.async_utils import build_async_required_kwargs
9+
from ..util.utils import get_arg_names_of_callable
910

1011

1112
class AsyncListener(metaclass=ABCMeta):
@@ -69,7 +70,6 @@ async def run_ack_function(self, *, request: AsyncBoltRequest, response: BoltRes
6970
raise NotImplementedError()
7071

7172

72-
import inspect
7373
from logging import Logger
7474
from typing import Callable, Awaitable
7575

@@ -107,7 +107,7 @@ def __init__(
107107
self.matchers = matchers
108108
self.middleware = middleware
109109
self.auto_acknowledgement = auto_acknowledgement
110-
self.arg_names = inspect.getfullargspec(ack_function).args
110+
self.arg_names = get_arg_names_of_callable(ack_function)
111111
self.logger = get_bolt_app_logger(app_name, self.ack_function, base_logger)
112112

113113
async def run_ack_function(

slack_bolt/listener/async_listener_completion_handler.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
import inspect
21
from abc import ABCMeta, abstractmethod
32
from logging import Logger
43
from typing import Callable, Dict, Any, Awaitable, Optional
54

65
from slack_bolt.kwargs_injection.async_utils import build_async_required_kwargs
76
from slack_bolt.request.async_request import AsyncBoltRequest
87
from slack_bolt.response import BoltResponse
8+
from slack_bolt.util.utils import get_arg_names_of_callable
99

1010

1111
class AsyncListenerCompletionHandler(metaclass=ABCMeta):
@@ -28,7 +28,7 @@ class AsyncCustomListenerCompletionHandler(AsyncListenerCompletionHandler):
2828
def __init__(self, logger: Logger, func: Callable[..., Awaitable[None]]):
2929
self.func = func
3030
self.logger = logger
31-
self.arg_names = inspect.getfullargspec(func).args
31+
self.arg_names = get_arg_names_of_callable(func)
3232

3333
async def handle(
3434
self,

slack_bolt/listener/async_listener_error_handler.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
import inspect
21
from abc import ABCMeta, abstractmethod
32
from logging import Logger
43
from typing import Callable, Dict, Any, Awaitable, Optional
54

65
from slack_bolt.kwargs_injection.async_utils import build_async_required_kwargs
76
from slack_bolt.request.async_request import AsyncBoltRequest
87
from slack_bolt.response import BoltResponse
8+
from slack_bolt.util.utils import get_arg_names_of_callable
99

1010

1111
class AsyncListenerErrorHandler(metaclass=ABCMeta):
@@ -30,7 +30,7 @@ class AsyncCustomListenerErrorHandler(AsyncListenerErrorHandler):
3030
def __init__(self, logger: Logger, func: Callable[..., Awaitable[Optional[BoltResponse]]]):
3131
self.func = func
3232
self.logger = logger
33-
self.arg_names = inspect.getfullargspec(func).args
33+
self.arg_names = get_arg_names_of_callable(func)
3434

3535
async def handle(
3636
self,

slack_bolt/listener/async_listener_start_handler.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
import inspect
21
from abc import ABCMeta, abstractmethod
32
from logging import Logger
43
from typing import Callable, Dict, Any, Awaitable, Optional
54

65
from slack_bolt.kwargs_injection.async_utils import build_async_required_kwargs
76
from slack_bolt.request.async_request import AsyncBoltRequest
87
from slack_bolt.response import BoltResponse
8+
from slack_bolt.util.utils import get_arg_names_of_callable
99

1010

1111
class AsyncListenerStartHandler(metaclass=ABCMeta):
@@ -28,7 +28,7 @@ class AsyncCustomListenerStartHandler(AsyncListenerStartHandler):
2828
def __init__(self, logger: Logger, func: Callable[..., Awaitable[None]]):
2929
self.func = func
3030
self.logger = logger
31-
self.arg_names = inspect.getfullargspec(func).args
31+
self.arg_names = get_arg_names_of_callable(func)
3232

3333
async def handle(
3434
self,

slack_bolt/listener/custom_listener.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import inspect
21
from logging import Logger
32
from typing import Callable, Optional, Sequence
43

@@ -9,6 +8,7 @@
98
from .listener import Listener
109
from ..logger import get_bolt_app_logger
1110
from ..middleware import Middleware
11+
from ..util.utils import get_arg_names_of_callable
1212

1313

1414
class CustomListener(Listener):
@@ -38,7 +38,7 @@ def __init__(
3838
self.matchers = matchers
3939
self.middleware = middleware
4040
self.auto_acknowledgement = auto_acknowledgement
41-
self.arg_names = inspect.getfullargspec(ack_function).args
41+
self.arg_names = get_arg_names_of_callable(ack_function)
4242
self.logger = get_bolt_app_logger(app_name, self.ack_function, base_logger)
4343

4444
def run_ack_function(

slack_bolt/listener/listener_completion_handler.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
import inspect
21
from abc import ABCMeta, abstractmethod
32
from logging import Logger
43
from typing import Callable, Dict, Any, Optional
54

65
from slack_bolt.kwargs_injection import build_required_kwargs
76
from slack_bolt.request.request import BoltRequest
87
from slack_bolt.response.response import BoltResponse
8+
from slack_bolt.util.utils import get_arg_names_of_callable
99

1010

1111
class ListenerCompletionHandler(metaclass=ABCMeta):
@@ -28,7 +28,7 @@ class CustomListenerCompletionHandler(ListenerCompletionHandler):
2828
def __init__(self, logger: Logger, func: Callable[..., None]):
2929
self.func = func
3030
self.logger = logger
31-
self.arg_names = inspect.getfullargspec(func).args
31+
self.arg_names = get_arg_names_of_callable(func)
3232

3333
def handle(
3434
self,

0 commit comments

Comments
 (0)