Skip to content

Commit 2c40ba0

Browse files
committed
Avoid importing functools
Importing update_wrapper() from functools to copy attributes is expensive. Do it ourselves for only the most relevant ones.
1 parent bc9217f commit 2c40ba0

File tree

1 file changed

+13
-13
lines changed

1 file changed

+13
-13
lines changed

Lib/base64.py

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -580,19 +580,19 @@ def decodebytes(s):
580580
try:
581581
from _base64 import (_a85encode, _a85decode, _b85encode,
582582
_b85decode, _z85encode, _z85decode)
583-
from functools import update_wrapper
584-
update_wrapper(_a85encode, a85encode)
585-
update_wrapper(_a85decode, a85decode)
586-
update_wrapper(_b85encode, b85encode)
587-
update_wrapper(_b85decode, b85decode)
588-
update_wrapper(_z85encode, z85encode)
589-
update_wrapper(_z85decode, z85decode)
590-
a85encode = _a85encode
591-
a85decode = _a85decode
592-
b85encode = _b85encode
593-
b85decode = _b85decode
594-
z85encode = _z85encode
595-
z85decode = _z85decode
583+
# Avoid expensive import of update_wrapper() from functools.
584+
def _copy_attributes(func, src_func):
585+
func.__module__ = src_func.__module__
586+
func.__name__ = src_func.__name__
587+
func.__qualname__ = src_func.__qualname__
588+
func.__doc__ = src_func.__doc__
589+
return func
590+
a85encode = _copy_attributes(_a85encode, a85encode)
591+
a85decode = _copy_attributes(_a85decode, a85decode)
592+
b85encode = _copy_attributes(_b85encode, b85encode)
593+
b85decode = _copy_attributes(_b85decode, b85decode)
594+
z85encode = _copy_attributes(_z85encode, z85encode)
595+
z85decode = _copy_attributes(_z85decode, z85decode)
596596
except ImportError:
597597
pass
598598

0 commit comments

Comments
 (0)