Skip to content

Commit 6a0b6df

Browse files
committed
Merge pull request scikit-learn#5579 from rvraghav93/inspect_fix
[MRG+1] FIX inspect.argspect is deprecated; use signature
2 parents a94ffde + 8878088 commit 6a0b6df

File tree

2 files changed

+14
-8
lines changed

2 files changed

+14
-8
lines changed

sklearn/gaussian_process/kernels.py

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
from ..metrics.pairwise import pairwise_kernels
3232
from ..externals import six
3333
from ..base import clone
34-
34+
from sklearn.externals.funcsigs import signature
3535

3636
class Hyperparameter(namedtuple('Hyperparameter',
3737
('name', 'value_type', 'bounds',
@@ -116,15 +116,21 @@ def get_params(self, deep=True):
116116
# to represent
117117
cls = self.__class__
118118
init = getattr(cls.__init__, 'deprecated_original', cls.__init__)
119-
args, varargs, kw, default = inspect.getargspec(init)
120-
if varargs is not None:
119+
init_sign = signature(init)
120+
args, varargs = [], []
121+
for parameter in init_sign.parameters.values():
122+
if (parameter.kind != parameter.VAR_KEYWORD and
123+
parameter.name != 'self'):
124+
args.append(parameter.name)
125+
if parameter.kind == parameter.VAR_POSITIONAL:
126+
varargs.append(parameter.name)
127+
128+
if len(varargs) != 0:
121129
raise RuntimeError("scikit-learn kernels should always "
122130
"specify their parameters in the signature"
123131
" of their __init__ (no varargs)."
124132
" %s doesn't follow this convention."
125133
% (cls, ))
126-
# Remove 'self' and store remaining arguments in params
127-
args = args[1:]
128134
for arg in args:
129135
params[arg] = getattr(self, arg, None)
130136
return params

sklearn/gaussian_process/tests/test_kernels.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
# Licence: BSD 3 clause
55

66
from collections import Hashable
7-
import inspect
7+
from sklearn.externals.funcsigs import signature
88

99
import numpy as np
1010

@@ -81,8 +81,8 @@ def test_kernel_theta():
8181
_, K_gradient = kernel(X, eval_gradient=True)
8282

8383
# Determine kernel parameters that contribute to theta
84-
args, varargs, kw, default = \
85-
inspect.getargspec(kernel.__class__.__init__)
84+
init_sign = signature(kernel.__class__.__init__).parameters.values()
85+
args = [p.name for p in init_sign if p.name != 'self']
8686
theta_vars = map(lambda s: s.rstrip("_bounds"),
8787
filter(lambda s: s.endswith("_bounds"), args))
8888
assert_equal(

0 commit comments

Comments
 (0)