Typeshed contiene anotaciones de tipos externos para la biblioteca estándar de Python y las funciones integradas de Python, así como paquetes de terceros aportados por personas externas a esos proyectos.
Estos datos se pueden utilizar, por ejemplo, para análisis estático, verificación de tipos, inferencia de tipos y autocompletado.
Para obtener información sobre cómo utilizar la tipografía, lea a continuación. La información para los contribuyentes se puede encontrar en CONTRIBUTING.md. Léalo antes de enviar solicitudes de extracción; No informe problemas con las anotaciones del proyecto para el que son los resguardos, sino infórmelos aquí para escribirlos.
También puede encontrar más documentación sobre archivos stub, tipografía y el sistema de escritura de Python en general en https://typing.readthedocs.io/en/latest/.
Typeshed admite las versiones de Python 3.8 a 3.13.
Si solo está utilizando un verificador de tipos (mypy, pyright, pytype, PyCharm, ...), en lugar de desarrollarlo, no necesita interactuar con el repositorio escrito en absoluto: una copia de la biblioteca estándar que forma parte de typeshed viene incluido con correctores de tipo. Y los códigos auxiliares de tipo para paquetes y módulos de terceros que esté utilizando se pueden instalar desde PyPI. Por ejemplo, si está utilizando html5lib
y requests
, puede instalar los apéndices de tipo usando
$ pip install types-html5lib types-requests
Estos paquetes PyPI siguen PEP 561 y se publican automáticamente (hasta una vez al día) mediante maquinaria interna escrita.
Los verificadores de tipos deberían poder utilizar estos paquetes auxiliares cuando estén instalados. Para obtener más detalles, consulte la documentación de su verificador de tipos.
Los números de versión de paquetes stub de terceros constan de al menos cuatro partes. Todas las partes de la versión stub, excepto la última parte, corresponden a la versión del paquete de ejecución que se está stub. Por ejemplo, si el paquete types-foo
tiene la versión 1.2.0.20240309
, esto garantiza que el paquete types-foo
contiene códigos auxiliares dirigidos a foo==1.2.*
y probados con la última versión de foo
que coincide con ese especificador. En este ejemplo, el elemento final del número de versión (20240309) indica que el paquete de código auxiliar se envió el 9 de marzo de 2024.
En Typeshed, intentamos mantener los cambios importantes al mínimo. Sin embargo, debido a la naturaleza de los resguardos, cualquier cambio de versión puede introducir cambios que podrían hacer que su código no pueda verificar el tipo.
Hay varias estrategias disponibles para especificar la versión de un paquete de apéndice que estás usando, cada una con sus propias compensaciones:
Utilice los mismos límites que utiliza para el paquete que se está cortando. Por ejemplo, si usa requests>=2.30.0,<2.32
, puede usar types-requests>=2.30.0,<2.32
. Esto garantiza que los resguardos sean compatibles con el paquete que está utilizando, pero conlleva un pequeño riesgo de romper la verificación de tipo debido a cambios en los resguardos.
Otro riesgo de esta estrategia es que los talones a menudo van por detrás del paquete que se está cortando. Es posible que desee forzar el apéndice del paquete a una determinada versión mínima porque corrige un error crítico, pero si no se han publicado los apéndices actualizados correspondientemente, es posible que los resultados de la verificación de tipos no sean completamente precisos.
Fije los resguardos a una versión que sepa que funciona bien y actualice el pin de vez en cuando (ya sea manualmente o utilizando una herramienta como dependabot o renovate).
Por ejemplo, si usa types-requests==2.31.0.1
, puede tener la confianza de que la actualización de las dependencias no interrumpirá la verificación de tipos. Sin embargo, se perderá mejoras en los códigos auxiliares que potencialmente podrían mejorar la verificación de tipos hasta que actualice el pin. Esta estrategia también tiene el riesgo de que los códigos auxiliares que está utilizando se vuelvan incompatibles con el paquete que se está utilizando.
No fijes los talones. Esta es la opción que requiere menos trabajo de su parte cuando se trata de actualizar los pines de versión y tiene la ventaja de que se beneficiará automáticamente de códigos auxiliares mejorados cada vez que se lance una nueva versión del paquete de códigos auxiliares. Sin embargo, conlleva el riesgo de que los talones se vuelvan incompatibles con el paquete que se está cortando.
Por ejemplo, si se lanza una nueva versión principal del paquete, existe la posibilidad de que los resguardos se actualicen para reflejar la nueva versión del paquete de tiempo de ejecución antes de actualizar el paquete que se está resguardando.
También puede cambiar entre las diferentes estrategias según sea necesario. Por ejemplo, podría utilizar de forma predeterminada la estrategia (1), pero recurrir a la estrategia (2) cuando surja un problema que no pueda solucionarse fácilmente.
_typeshed
typeshed incluye un paquete _typeshed
como parte de la biblioteca estándar. Este paquete y sus submódulos contienen tipos de utilidades, pero no están disponibles en tiempo de ejecución. Para obtener más información sobre cómo utilizar este paquete, consulte el directorio stdlib/_typeshed
.
Si se ha topado con un comportamiento en el verificador de tipos que sugiere que los resguardos de tipos para una biblioteca determinada son incorrectos o están incompletos, ¡queremos saber de usted!
Nuestro principal foro de discusión es el rastreador de problemas de GitHub del proyecto. Este es el lugar adecuado para comenzar una discusión sobre cualquiera de los temas anteriores o cualquier otro tema relacionado con el proyecto.
Si tiene preguntas generales sobre la escritura con Python, o necesita una revisión de sus anotaciones tipográficas o resguardos fuera del tipo de letra, diríjase a nuestro foro de discusión. Para una discusión menos formal, pruebe la sala de chat de mecanografía en gitter.im. Algunos mantenedores mecanografiados casi siempre están presentes; no dudes en encontrarnos allí y estaremos encantados de charlar. La discusión técnica sustantiva se dirigirá al rastreador de problemas.