@@ -1594,27 +1594,40 @@ def param(func):
1594
1594
# python_has_signature = ver_info.major > 2 and ver_info.minor > 2
1595
1595
python_has_wrapped = ver_info [0 ] > 2 and ver_info [1 ] > 1
1596
1596
# python_has_wrapped = ver_info.major > 2 and ver_info.minor > 1
1597
+ if not python_has_signature :
1598
+ try :
1599
+ import IPython .utils .signatures
1600
+ signature = IPython .utils .signatures .signature
1601
+ Parameter = IPython .utils .signatures .Parameter
1602
+ except ImportError :
1603
+ pass
1604
+ else :
1605
+ python_has_signature = True
1606
+ else :
1607
+ signature = inspect .signature
1608
+ Parameter = inspect .Parameter
1609
+
1597
1610
if not python_has_signature :
1598
1611
arg_spec = inspect .getargspec (func )
1599
1612
_arg_names = arg_spec .args
1600
1613
_has_no_varargs = arg_spec .varargs is None
1601
1614
_has_varkwargs = arg_spec .keywords is not None
1602
1615
else :
1603
- sig = inspect . signature (func )
1616
+ sig = signature (func )
1604
1617
_has_no_varargs = True
1605
1618
_has_varkwargs = False
1606
1619
_arg_names = []
1607
1620
params = list (sig .parameters .values ())
1608
1621
for p in params :
1609
- if p .kind is p .VAR_POSITIONAL :
1622
+ if p .kind is Parameter .VAR_POSITIONAL :
9FE8
1610
1623
_has_no_varargs = False
1611
- elif p .kind is p .VAR_KEYWORD :
1624
+ elif p .kind is Parameter .VAR_KEYWORD :
1612
1625
_has_varkwargs = True
1613
1626
else :
1614
1627
_arg_names .append (p .name )
1615
- data_param = inspect . Parameter ('data' ,
1616
- inspect . Parameter .KEYWORD_ONLY ,
1617
- default = None )
1628
+ data_param = Parameter ('data' ,
1629
+ Parameter .KEYWORD_ONLY ,
1630
+ default = None )
1618
1631
if _has_varkwargs :
1619
1632
params .insert (- 1 , data_param )
1620
1633
else :
0 commit comments