|
31 | 31 | Decorator module, see http://pypi.python.org/pypi/decorator |
32 | 32 | for the documentation. |
33 | 33 | """ |
34 | | -from __future__ import print_function |
35 | | - |
36 | 34 | import collections |
37 | 35 | import inspect |
| 36 | +from inspect import getfullargspec |
38 | 37 | import itertools |
39 | 38 | import operator |
40 | 39 | import re |
41 | 40 | import sys |
42 | 41 |
|
43 | 42 | __version__ = '4.0.10' |
44 | 43 |
|
45 | | -if sys.version_info >= (3,): |
46 | | - from inspect import getfullargspec |
47 | | - |
48 | | - |
49 | | - def get_init(cls): |
50 | | - return cls.__init__ |
51 | | -else: |
52 | | - class getfullargspec(object): |
53 | | - "A quick and dirty replacement for getfullargspec for Python 2.X" |
54 | | - |
55 | | - def __init__(self, f): |
56 | | - self.args, self.varargs, self.varkw, self.defaults = \ |
57 | | - inspect.getargspec(f) |
58 | | - self.kwonlyargs = [] |
59 | | - self.kwonlydefaults = None |
60 | | - |
61 | | - def __iter__(self): |
62 | | - yield self.args |
63 | | - yield self.varargs |
64 | | - yield self.varkw |
65 | | - yield self.defaults |
66 | | - |
67 | | - getargspec = inspect.getargspec |
68 | 44 |
|
| 45 | +def get_init(cls): |
| 46 | + return cls.__init__ |
69 | 47 |
|
70 | | - def get_init(cls): |
71 | | - return cls.__init__.__func__ |
72 | 48 |
|
73 | 49 | # getargspec has been deprecated in Python 3.5 |
74 | 50 | ArgSpec = collections.namedtuple( |
@@ -113,26 +89,21 @@ def __init__(self, func=None, name=None, signature=None, |
113 | 89 | setattr(self, a, getattr(argspec, a)) |
114 | 90 | for i, arg in enumerate(self.args): |
115 | 91 | setattr(self, 'arg%d' % i, arg) |
116 | | - if sys.version_info < (3,): # easy way |
117 | | - self.shortsignature = self.signature = ( |
118 | | - inspect.formatargspec( |
119 | | - formatvalue=lambda val: "", *argspec)[1:-1]) |
120 | | - else: # Python 3 way |
121 | | - allargs = list(self.args) |
122 | | - allshortargs = list(self.args) |
123 | | - if self.varargs: |
124 | | - allargs.append('*' + self.varargs) |
125 | | - allshortargs.append('*' + self.varargs) |
126 | | - elif self.kwonlyargs: |
127 | | - allargs.append('*') # single star syntax |
128 | | - for a in self.kwonlyargs: |
129 | | - allargs.append('%s=None' % a) |
130 | | - allshortargs.append('%s=%s' % (a, a)) |
131 | | - if self.varkw: |
132 | | - allargs.append('**' + self.varkw) |
133 | | - allshortargs.append('**' + self.varkw) |
134 | | - self.signature = ', '.join(allargs) |
135 | | - self.shortsignature = ', '.join(allshortargs) |
| 92 | + allargs = list(self.args) |
| 93 | + allshortargs = list(self.args) |
| 94 | + if self.varargs: |
| 95 | + allargs.append('*' + self.varargs) |
| 96 | + allshortargs.append('*' + self.varargs) |
| 97 | + elif self.kwonlyargs: |
| 98 | + allargs.append('*') # single star syntax |
| 99 | + for a in self.kwonlyargs: |
| 100 | + allargs.append('%s=None' % a) |
| 101 | + allshortargs.append('%s=%s' % (a, a)) |
| 102 | + if self.varkw: |
| 103 | + allargs.append('**' + self.varkw) |
| 104 | + allshortargs.append('**' + self.varkw) |
| 105 | + self.signature = ', '.join(allargs) |
| 106 | + self.shortsignature = ', '.join(allshortargs) |
136 | 107 | self.dict = func.__dict__.copy() |
137 | 108 | # func=None happens when decorating a caller |
138 | 109 | if name: |
|
0 commit comments