Skip to content

Commit f6876c0

Browse files
Use @wraps on decorated functions
1 parent 904d5fc commit f6876c0

File tree

4 files changed

+14
-7
lines changed

4 files changed

+14
-7
lines changed

src/microdot/helpers.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
try:
2+
from functools import wraps
3+
except ImportError: # pragma: no cover
4+
# MicroPython does not currently implement functools.wraps
5+
def wraps(wrapped):
6+
def _(wrapper):
7+
return wrapper
8+
return _

src/microdot/session.py

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import jwt
22
from microdot.microdot import invoke_handler
3-
4-
secret_key = None
3+
from microdot.helpers import wraps
54

65

76
class SessionDict(dict):
@@ -136,13 +135,9 @@ def index(request, session):
136135
Note that the decorator does not save the session. To update the session,
137136
call the :func:`session.save() <microdot.session.SessionDict.save>` method.
138137
"""
138+
@wraps(f)
139139
async def wrapper(request, *args, **kwargs):
140140
return await invoke_handler(
141141
f, request, request.app._session.get(request), *args, **kwargs)
142142

143-
for attr in ['__name__', '__doc__', '__module__', '__qualname__']:
144-
try:
145-
setattr(wrapper, attr, getattr(f, attr))
146-
except AttributeError: # pragma: no cover
147-
pass
148143
return wrapper

src/microdot/sse.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import asyncio
22
import json
3+
from microdot.helpers import wraps
34

45

56
class SSE:
@@ -103,6 +104,7 @@ async def events(request, sse):
103104
# send a named event
104105
await sse.send('hello', event='greeting')
105106
"""
107+
@wraps(f)
106108
async def sse_handler(request, *args, **kwargs):
107109
return sse_response(request, f, *args, **kwargs)
108110

src/microdot/websocket.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import hashlib
33
from microdot import Request, Response
44
from microdot.microdot import MUTED_SOCKET_ERRORS, print_exception
5+
from microdot.helpers import wraps
56

67

78
class WebSocketError(Exception):
@@ -192,6 +193,7 @@ async def after_request(request, response):
192193

193194

194195
def websocket_wrapper(f, upgrade_function):
196+
@wraps(f)
195197
async def wrapper(request, *args, **kwargs):
196198
ws = await upgrade_function(request)
197199
try:

0 commit comments

Comments
 (0)