python / python/mypy

stubgen failed to find function signature from native modules

Abierto
#12,178 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

feature topic-stubgen
Lenguaje dominante
Python
Estrellas
20.6k
Forks
3.3k
Métricas de merge de PR
Métricas de PR pendientes

Descripción

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?

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Empieza leyendo la ruta stubgen's generate_stub_for_c_module y compara sus alternativas actuales para descubrir firmas con inspect.signature en el ejemplo de módulo nativo. Se considera completado cuando stubgen emite las firmas de parámetros documentadas y conserva tipos de método como staticmethod, en lugar de usar *args y **kwargs genéricos.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
python, rust
Área
tooling
Tipo de issue
Nueva funcionalidad
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.