1
1
from collections import OrderedDict
2
2
from contextlib import ExitStack
3
- import functools
4
3
import inspect
5
4
import itertools
6
5
import logging
@@ -49,14 +48,17 @@ def _axis_method_wrapper(attr_name, method_name, *, doc_sub=None):
49
48
dedented to simplify further manipulations.
50
49
"""
51
50
52
- method = getattr (maxis .Axis , method_name )
53
51
get_method = attrgetter (f"{ attr_name } .{ method_name } " )
54
52
55
- @functools .wraps (method )
56
53
def wrapper (self , * args , ** kwargs ):
57
54
return get_method (self )(* args , ** kwargs )
58
55
59
- doc = wrapper .__doc__
56
+ # Manually copy the signature instead of using functools.wraps because
57
+ # displaying the Axis method source when asking for the Axes method source
58
+ # would be confusing.
59
+ wrapped_method = getattr (maxis .Axis , method_name )
60
+ wrapper .__signature__ = inspect .signature (wrapped_method )
61
+ doc = wrapped_method .__doc__
60
62
if doc :
61
63
doc_sub = {"this Axis" : f"the { attr_name } " , ** (doc_sub or {})}
62
64
for k , v in doc_sub .items ():
@@ -66,7 +68,14 @@ def wrapper(self, *args, **kwargs):
66
68
doc = doc .replace (k , v )
67
69
wrapper .__doc__ = inspect .cleandoc (doc )
68
70
69
- return wrapper
71
+ class Placeholder :
72
+ def __set_name__ (self , owner , name ):
73
+ wrapper .__module__ = owner .__module__
74
+ wrapper .__name__ = name
75
+ wrapper .__qualname__ = f"{ owner .__qualname__ } .{ name } "
76
+ setattr (owner , name , wrapper )
77
+
78
+ return Placeholder ()
70
79
71
80
72
81
def _process_plot_format (fmt ):
0 commit comments