Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Old-style generic ParamSpec(default=...) fails if not provided as a type argument and not in the last position of a type list when passing type arguments #138859

@bzoracler

Description

@bzoracler

Bug report

Bug description:

In accordance to the typing specifications, default= of ParamSpec can take an ellipsis .... However, this is not handled properly with old-style generics in the following example and causes a runtime error:

from typing import Generic, ParamSpec, TypeVar

P_default = ParamSpec("P_default", default=...)
T = TypeVar("T")
T_default = TypeVar("T_default", default=object)

class A(Generic[T, P_default, T_default]): pass
>>> A[int]
Traceback (most recent call last):
  ...
TypeError: can only concatenate list (not "tuple") to list

CPython versions tested on:

3.13

Operating systems tested on:

Linux

Linked PRs

Metadata

Metadata

Assignees

Labels

stdlibStandard Library Python modules in the Lib/ directorytopic-typingtype-bugAn unexpected behavior, bug, or error

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions