Skip to content

inspect.signature fails on TypeAliasType.evaluate_value #151665

@sirosen

Description

@sirosen

Bug report

Bug description:

While discussing TypeAliasType.evaluate_value, I tried to run inspect.signature() on it to get info.
Both the class attributte and instance attribute versions fail, but in different ways.

On the class attr:

>>> import inspect
>>> import typing as t
>>> inspect.signature(t.TypeAliasType.evaluate_value)
Traceback (most recent call last):
  File "<python-input-4>", line 1, in <module>
    inspect.signature(t.TypeAliasType.evaluate_value)
    ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/sirosen/.pyenv/versions/3.15.0b1/lib/python3.15/inspect.py", line 3330, in signature
    return Signature.from_callable(obj, follow_wrapped=follow_wrapped,
           ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                                   globals=globals, locals=locals, eval_str=eval_str,
                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                                   annotation_format=annotation_format)
                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/sirosen/.pyenv/versions/3.15.0b1/lib/python3.15/inspect.py", line 3045, in from_callable
    return _signature_from_callable(obj, sigcls=cls,
                                    follow_wrapper_chains=follow_wrapped,
                                    globals=globals, locals=locals, eval_str=eval_str,
                                    annotation_format=annotation_format)
  File "/home/sirosen/.pyenv/versions/3.15.0b1/lib/python3.15/inspect.py", line 2443, in _signature_from_callable
    raise TypeError('{!r} is not a callable object'.format(obj))
TypeError: <attribute 'evaluate_value' of 'typing.TypeAliasType' objects> is not a callable object

On the instance attribute:

>>> import inspect
>>> type x = None
>>> inspect.signature(x.evaluate_value)
Traceback (most recent call last):
  File "<python-input-2>", line 1, in <module>
    inspect.signature(x.evaluate_value)
    ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
  File "/home/sirosen/.pyenv/versions/3.15.0b1/lib/python3.15/inspect.py", line 3330, in signature
    return Signature.from_callable(obj, follow_wrapped=follow_wrapped,
           ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                                   globals=globals, locals=locals, eval_str=eval_str,
                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                                   annotation_format=annotation_format)
                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/sirosen/.pyenv/versions/3.15.0b1/lib/python3.15/inspect.py", line 3045, in from_callable
    return _signature_from_callable(obj, sigcls=cls,
                                    follow_wrapper_chains=follow_wrapped,
                                    globals=globals, locals=locals, eval_str=eval_str,
                                    annotation_format=annotation_format)
  File "/home/sirosen/.pyenv/versions/3.15.0b1/lib/python3.15/inspect.py", line 2519, in _signature_from_callable
    return _signature_from_function(sigcls, obj,
                                    skip_bound_arg=skip_bound_arg,
                                    globals=globals, locals=locals, eval_str=eval_str,
                                    annotation_format=annotation_format)
  File "/home/sirosen/.pyenv/versions/3.15.0b1/lib/python3.15/inspect.py", line 2370, in _signature_from_function
    parameters.append(Parameter(name, annotation=annotation,
                      ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                                kind=kind,
                                ^^^^^^^^^^
                                default=defaults[offset]))
                                ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/sirosen/.pyenv/versions/3.15.0b1/lib/python3.15/inspect.py", line 2727, in __init__
    raise ValueError('{!r} is not a valid parameter name'.format(name))
ValueError: '.format' is not a valid parameter name

I first encountered this on 3.13, then replicated on 3.15.0b1 and main (3.16.0a0).

CPython versions tested on:

3.13, 3.15

Operating systems tested on:

Linux

Metadata

Metadata

Assignees

No one assigned

    Labels

    stdlibStandard Library Python modules in the Lib/ directorytopic-typingtype-bugAn unexpected behavior, bug, or error
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions