bpo-33197: Update a error message of invalid inspect.Parameters. (GH-… · python/cpython@cb055bc (original) (raw)

`@@ -2402,6 +2402,16 @@ def str(self):

`

2402

2402

`_KEYWORD_ONLY = _ParameterKind.KEYWORD_ONLY

`

2403

2403

`_VAR_KEYWORD = _ParameterKind.VAR_KEYWORD

`

2404

2404

``

``

2405

`+

_PARAM_NAME_MAPPING = {

`

``

2406

`+

_POSITIONAL_ONLY: 'positional-only',

`

``

2407

`+

_POSITIONAL_OR_KEYWORD: 'positional or keyword',

`

``

2408

`+

_VAR_POSITIONAL: 'variadic positional',

`

``

2409

`+

_KEYWORD_ONLY: 'keyword-only',

`

``

2410

`+

_VAR_KEYWORD: 'variadic keyword'

`

``

2411

`+

}

`

``

2412

+

``

2413

`+

_get_paramkind_descr = _PARAM_NAME_MAPPING.getitem

`

``

2414

+

2405

2415

``

2406

2416

`class Parameter:

`

2407

2417

`"""Represents a parameter in a function signature.

`

`@@ -2436,15 +2446,14 @@ class Parameter:

`

2436

2446

`empty = _empty

`

2437

2447

``

2438

2448

`def init(self, name, kind, *, default=_empty, annotation=_empty):

`

2439

``

-

2440

``

`-

if kind not in (_POSITIONAL_ONLY, _POSITIONAL_OR_KEYWORD,

`

2441

``

`-

_VAR_POSITIONAL, _KEYWORD_ONLY, _VAR_KEYWORD):

`

2442

``

`-

raise ValueError("invalid value for 'Parameter.kind' attribute")

`

2443

``

`-

self._kind = kind

`

2444

``

-

``

2449

`+

try:

`

``

2450

`+

self._kind = _ParameterKind(kind)

`

``

2451

`+

except ValueError:

`

``

2452

`+

raise ValueError(f'value {kind!r} is not a valid Parameter.kind')

`

2445

2453

`if default is not _empty:

`

2446

``

`-

if kind in (_VAR_POSITIONAL, _VAR_KEYWORD):

`

2447

``

`-

msg = '{} parameters cannot have default values'.format(kind)

`

``

2454

`+

if self._kind in (_VAR_POSITIONAL, _VAR_KEYWORD):

`

``

2455

`+

msg = '{} parameters cannot have default values'

`

``

2456

`+

msg = msg.format(_get_paramkind_descr(self._kind))

`

2448

2457

`raise ValueError(msg)

`

2449

2458

`self._default = default

`

2450

2459

`self._annotation = annotation

`

`@@ -2453,19 +2462,21 @@ def init(self, name, kind, *, default=_empty, annotation=_empty):

`

2453

2462

`raise ValueError('name is a required attribute for Parameter')

`

2454

2463

``

2455

2464

`if not isinstance(name, str):

`

2456

``

`-

raise TypeError("name must be a str, not a {!r}".format(name))

`

``

2465

`+

msg = 'name must be a str, not a {}'.format(type(name).name)

`

``

2466

`+

raise TypeError(msg)

`

2457

2467

``

2458

2468

`if name[0] == '.' and name[1:].isdigit():

`

2459

2469

`# These are implicit arguments generated by comprehensions. In

`

2460

2470

`# order to provide a friendlier interface to users, we recast

`

2461

2471

`# their name as "implicitN" and treat them as positional-only.

`

2462

2472

`# See issue 19611.

`

2463

``

`-

if kind != _POSITIONAL_OR_KEYWORD:

`

2464

``

`-

raise ValueError(

`

2465

``

`-

'implicit arguments must be passed in as {}'.format(

`

2466

``

`-

_POSITIONAL_OR_KEYWORD

`

2467

``

`-

)

`

``

2473

`+

if self._kind != _POSITIONAL_OR_KEYWORD:

`

``

2474

`+

msg = (

`

``

2475

`+

'implicit arguments must be passed as '

`

``

2476

`+

'positional or keyword arguments, not {}'

`

2468

2477

` )

`

``

2478

`+

msg = msg.format(_get_paramkind_descr(self._kind))

`

``

2479

`+

raise ValueError(msg)

`

2469

2480

`self._kind = _POSITIONAL_ONLY

`

2470

2481

`name = 'implicit{}'.format(name[1:])

`

2471

2482

``

`@@ -2736,8 +2747,12 @@ def init(self, parameters=None, *, return_annotation=_empty,

`

2736

2747

`name = param.name

`

2737

2748

``

2738

2749

`if kind < top_kind:

`

2739

``

`-

msg = 'wrong parameter order: {!r} before {!r}'

`

2740

``

`-

msg = msg.format(top_kind, kind)

`

``

2750

`+

msg = (

`

``

2751

`+

'wrong parameter order: {} parameter before {} '

`

``

2752

`+

'parameter'

`

``

2753

`+

)

`

``

2754

`+

msg = msg.format(_get_paramkind_descr(top_kind),

`

``

2755

`+

_get_paramkind_descr(kind))

`

2741

2756

`raise ValueError(msg)

`

2742

2757

`elif kind > top_kind:

`

2743

2758

`kind_defaults = False

`