Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

[Bug]: invalid signature of int.__new__ and missing signatures for __new__ dunders in extensions

Aperta
#1,192 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
48/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
python
Ambito
backend

Direzione di ricerca

Start by reproducing the reported inspect.signature results for int.__new__ and gmp.mpz.__new__, then compare them with the expected CPython signatures. The issue does not name implementation files or tests, so locate the code and tests that determine signatures for built-in and extension __new__ methods. Done means both report the generic (*args, **kwargs) signature.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

bug
Describe the bug

In some sense it's a continuation of #998, but I think it deserves a separate issue.

GraalPy reports int.__new__() signature being <Signature (cls, x, /, base)>. That's just invalid, assuming e.g. that non keyword base argument is supported:

Python 3.13.14 (Thu Sep 17 18:51:21 UTC 2026)
[Graal, Oracle GraalVM, Java 25.0.4.1.1 (amd64)] on 'linux'
Type "help", "copyright", "credits" or "license" for more information.
>>> int('123', 16)
291

Also, in fact - default values for x and base are supported. Unfortunately, such methods can't be expressed by some targeted signature.

In CPython it is generic, <Signature (*args, **kwargs)>, and same for __new__() dunders in extensions (Here signatures in the GraalPy are missing.). Perhaps, GraalPy should do same. (Though note that PyPy3 has behavior similar to the GraalPy, but invalid signature here is <Signature (x=0, base=None, /)>.)

Operating system

Linux

CPU architecture

x86_64

GraalPy version

25.0.4.1.1

JDK version

No response

Context configuration

No response

Steps to reproduce
pip install python-gmp
Python 3.13.14 (Thu Sep 17 18:51:21 UTC 2026)
[Graal, Oracle GraalVM, Java 25.0.4.1.1 (amd64)] on 'linux'
Type "help", "copyright", "credits" or "license" for more information.
>>> import gmp, inspect
>>> inspect.signature(int.__new__)
<Signature (cls, x, /, base)>
>>> inspect.signature(gmp.mpz.__new__)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
    inspect.signature(gmp.mpz.__new__)
    ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
  File "/home/sk/graalpy3.13-25.4.4.1.1-linux-amd64/lib/python3.13/inspect.py", line 3399, in signature
    return Signature.from_callable(obj, follow_wrapped=follow_wrapped,
           ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                                   globals=globals, locals=locals, eval_str=eval_str)
                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/sk/graalpy3.13-25.4.4.1.1-linux-amd64/lib/python3.13/inspect.py", line 3122, in from_callable
    return _signature_from_callable(obj, sigcls=cls,
                                    follow_wrapper_chains=follow_wrapped,
                                    globals=globals, locals=locals, eval_str=eval_str)
  File "/home/sk/graalpy3.13-25.4.4.1.1-linux-amd64/lib/python3.13/inspect.py", line 2615, in _signature_from_callable
    return _signature_from_builtin(sigcls, obj,
                                   skip_bound_arg=skip_bound_arg)
  File "/home/sk/graalpy3.13-25.4.4.1.1-linux-amd64/lib/python3.13/inspect.py", line 2401, in _signature_from_builtin
    raise ValueError("no signature found for builtin {!r}".format(func))
ValueError: no signature found for builtin <built-in method __new__ of type object at 0x42603ed>
Expected behavior
Python 3.16.0a0 (heads/main:ee68f5f46a1, Aug 12 2026, 11:19:39) [GCC 14.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import gmp, inspect
>>> inspect.signature(int.__new__)
<Signature (*args, **kwargs)>
>>> inspect.signature(gmp.mpz.__new__)
<Signature (*args, **kwargs)>
Stack trace

Additional context

No response

Lingua principale
Python
Stelle
1.7k
Fork
155
Merge medio
6h 26m
PR unite (30g)
53

Preparare l'ambiente

Apri in Codespaces

Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di oracle/graalpython

Tutte le issue di oracle/graalpython

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.