python / python/mypy

stubgen failed to find function signature from native modules

Aperta
#12,178 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

feature topic-stubgen
Lingua principale
Python
Stelle
20.6k
Fork
3.3k
Metriche di merge delle PR
Metriche PR in attesa

Descrizione

Feature

I have written a native module with a hand-written docstring and signature.
The signature is available via

import inspect
import mymod

inspect.signature(mymod.MyClass.method1)
# or
help(mymod.MyClass)
# correctly prints (a,b,c)

However stubgen -p mymod generates .pyi with

class Myclass:
  @classmethod
  def __init__(cls, *args, **kwargs) -> None: ...
  def method1(self, *args, **kwargs) -> Any: ...

filled with *args and **kwargs instead of correct signatures. (Worse, method1 is in fact staticmethod so vscode complains with this stub)

The binding is written with rust pyo3.
Since all inspect.signature, help, and IPython can read the signature, I think the problem is in stubgen.
I don't know the internals of stubgen, but would it help to use inspect.signature when other methods in generate_stub_for_c_module fail?

Guida per i contributori

Apri la guida per i contributori

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.

Direzione di ricerca

Inizia leggendo il percorso stubgen's generate_stub_for_c_module e confronta i suoi fallback attuali per la scoperta delle signature con inspect.signature sull'esempio di modulo nativo. Il lavoro è completato quando stubgen emette le signature dei parametri documentate e preserva i tipi di metodo come staticmethod invece di usare *args e **kwargs generici.

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

Valutazione

Stack tecnologico
python, rust
Ambito
tooling
Tipo di issue
Funzionalità
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.