inspect.signature: Use enum for parameter kind constants. Closes #19573

Patch by Antony Lee.
This commit is contained in:
Yury Selivanov 2014-03-27 11:23:13 -04:00
parent 4a692ce5ec
commit 21e83a5564
2 changed files with 15 additions and 14 deletions

View File

@ -32,6 +32,7 @@ __author__ = ('Ka-Ping Yee <ping@lfw.org>',
'Yury Selivanov <yselivanov@sprymix.com>') 'Yury Selivanov <yselivanov@sprymix.com>')
import ast import ast
import enum
import importlib.machinery import importlib.machinery
import itertools import itertools
import linecache import linecache
@ -2027,24 +2028,22 @@ class _empty:
pass pass
class _ParameterKind(int): class _ParameterKind(enum.IntEnum):
def __new__(self, *args, name): POSITIONAL_ONLY = 0
obj = int.__new__(self, *args) POSITIONAL_OR_KEYWORD = 1
obj._name = name VAR_POSITIONAL = 2
return obj KEYWORD_ONLY = 3
VAR_KEYWORD = 4
def __str__(self): def __str__(self):
return self._name return self._name_
def __repr__(self):
return '<_ParameterKind: {!r}>'.format(self._name)
_POSITIONAL_ONLY = _ParameterKind(0, name='POSITIONAL_ONLY') _POSITIONAL_ONLY = _ParameterKind.POSITIONAL_ONLY
_POSITIONAL_OR_KEYWORD = _ParameterKind(1, name='POSITIONAL_OR_KEYWORD') _POSITIONAL_OR_KEYWORD = _ParameterKind.POSITIONAL_OR_KEYWORD
_VAR_POSITIONAL = _ParameterKind(2, name='VAR_POSITIONAL') _VAR_POSITIONAL = _ParameterKind.VAR_POSITIONAL
_KEYWORD_ONLY = _ParameterKind(3, name='KEYWORD_ONLY') _KEYWORD_ONLY = _ParameterKind.KEYWORD_ONLY
_VAR_KEYWORD = _ParameterKind(4, name='VAR_KEYWORD') _VAR_KEYWORD = _ParameterKind.VAR_KEYWORD
class Parameter: class Parameter:

View File

@ -105,6 +105,8 @@ Library
- Issue #19748: On AIX, time.mktime() now raises an OverflowError for year - Issue #19748: On AIX, time.mktime() now raises an OverflowError for year
outsize range [1902; 2037]. outsize range [1902; 2037].
- Issue #19573: inspect.signature: Use enum for parameter kind constants.
Documentation Documentation
------------- -------------