diff options
author | Dong-hee Na <donghee.na92@gmail.com> | 2018-06-08 03:46:31 (GMT) |
---|---|---|
committer | Yury Selivanov <yury@magic.io> | 2018-06-08 03:46:31 (GMT) |
commit | 4aa3006619392438b0775a2f488bbe9e7a22c468 (patch) | |
tree | 170e855055da5cd7779432234cdb2085a0b5f685 | |
parent | ee994d7443a7e2809a5d49bd3679fc9c451a411b (diff) | |
download | cpython-4aa3006619392438b0775a2f488bbe9e7a22c468.zip cpython-4aa3006619392438b0775a2f488bbe9e7a22c468.tar.gz cpython-4aa3006619392438b0775a2f488bbe9e7a22c468.tar.bz2 |
bpo-33197: Add description property for _ParameterKind. (GH-7206)
-rw-r--r-- | Doc/library/inspect.rst | 17 | ||||
-rw-r--r-- | Lib/inspect.py | 13 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Library/2018-05-30-00-26-05.bpo-33197.XkE2kL.rst | 1 |
3 files changed, 25 insertions, 6 deletions
diff --git a/Doc/library/inspect.rst b/Doc/library/inspect.rst index 7db6ca6..37736ef 100644 --- a/Doc/library/inspect.rst +++ b/Doc/library/inspect.rst @@ -752,6 +752,23 @@ function. ... print('Parameter:', param) Parameter: c + .. attribute:: Parameter.kind.description + + Describes a enum value of Parameter.kind. + + Example: print all descriptions of arguments:: + + >>> def foo(a, b, *, c, d=10): + ... pass + + >>> sig = signature(foo) + >>> for param in sig.parameters.values(): + ... print(param.kind.description) + positional or keyword + positional or keyword + keyword-only + keyword-only + .. method:: Parameter.replace(*[, name][, kind][, default][, annotation]) Create a new Parameter instance based on the instance replaced was invoked diff --git a/Lib/inspect.py b/Lib/inspect.py index 409c058..8dad817 100644 --- a/Lib/inspect.py +++ b/Lib/inspect.py @@ -2395,6 +2395,9 @@ class _ParameterKind(enum.IntEnum): def __str__(self): return self._name_ + @property + def description(self): + return _PARAM_NAME_MAPPING[self] _POSITIONAL_ONLY = _ParameterKind.POSITIONAL_ONLY _POSITIONAL_OR_KEYWORD = _ParameterKind.POSITIONAL_OR_KEYWORD @@ -2410,8 +2413,6 @@ _PARAM_NAME_MAPPING = { _VAR_KEYWORD: 'variadic keyword' } -_get_paramkind_descr = _PARAM_NAME_MAPPING.__getitem__ - class Parameter: """Represents a parameter in a function signature. @@ -2453,7 +2454,7 @@ class Parameter: if default is not _empty: if self._kind in (_VAR_POSITIONAL, _VAR_KEYWORD): msg = '{} parameters cannot have default values' - msg = msg.format(_get_paramkind_descr(self._kind)) + msg = msg.format(self._kind.description) raise ValueError(msg) self._default = default self._annotation = annotation @@ -2475,7 +2476,7 @@ class Parameter: 'implicit arguments must be passed as ' 'positional or keyword arguments, not {}' ) - msg = msg.format(_get_paramkind_descr(self._kind)) + msg = msg.format(self._kind.description) raise ValueError(msg) self._kind = _POSITIONAL_ONLY name = 'implicit{}'.format(name[1:]) @@ -2751,8 +2752,8 @@ class Signature: 'wrong parameter order: {} parameter before {} ' 'parameter' ) - msg = msg.format(_get_paramkind_descr(top_kind), - _get_paramkind_descr(kind)) + msg = msg.format(top_kind.description, + kind.description) raise ValueError(msg) elif kind > top_kind: kind_defaults = False diff --git a/Misc/NEWS.d/next/Library/2018-05-30-00-26-05.bpo-33197.XkE2kL.rst b/Misc/NEWS.d/next/Library/2018-05-30-00-26-05.bpo-33197.XkE2kL.rst new file mode 100644 index 0000000..e6f7ac3 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2018-05-30-00-26-05.bpo-33197.XkE2kL.rst @@ -0,0 +1 @@ +Add description property for _ParameterKind |