python / python/typing

Making functions/methods subscriptable

Abierto
#1,410 0 comentarios 1 reacción 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

topic: feature
Lenguaje dominante
Python
Estrellas
1.8k
Forks
302
Merge medio
23 h
PR fusionados (30 d)
8

Descripción

I'd like to make both instances and the types of functions and methods (including builtin methods) subscriptable.

Part of this proposal has been discussed already on python-ideas (https://discuss.python.org/t/making-functions-subscriptable-at-runtime/26463) but I thought it might also be worthwhile making FunctionType etc. subscriptable and work in a similar way to Callable just with extra descriptor behaviour that binds it into a MethodType.

class Foo:
	bar: FunctionType[[Self, int], str]
	# equivalent to 
	def bar(self, arg1, /) -> str: ...

This is different from Callable as if FunctionType was replaced with Callable, bar would always require a self argument.

This unfortunately probably requires special casing in type checkers as it isn't quite currently possible with PEP 612 (ParamSpec + Concatenate) (see #946) unless the PEP is updated

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

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 discusión enlazada de python-ideas y luego revisa PEP 612 y el issue #946 para entender las limitaciones indicadas. La propuesta implica un FunctionType subscriptable y tipos relacionados, el enlace de descriptores y probablemente casos especiales en el type-checker; para darla por terminada harían falta un diseño acordado y el soporte correspondiente del type-checker.

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

Evaluación

Stack tecnológico
python
Área
developer-experience
Tipo de issue
Nueva funcionalidad
Dificultad
5/5
Tiempo estimado
Más de una semana
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
25/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.