Si tienes una aplicación FastAPI antigua, puede que estés usando Pydantic versión 1.
La versión 0.100.0 de FastAPI tenía soporte tanto para Pydantic v1 como para v2. Usaría la que tuvieras instalada.
La versión 0.119.0 de FastAPI introdujo soporte parcial para Pydantic v1 desde dentro de Pydantic v2 (como pydantic.v1), para facilitar la migración a v2.
FastAPI 0.126.0 eliminó el soporte para Pydantic v1, aunque siguió soportando pydantic.v1 por un tiempo más.
FastAPI 0.128.0 eliminó también el soporte para pydantic.v1, por lo que las últimas versiones de FastAPI requieren Pydantic v2.
Aviso
El equipo de Pydantic dejó de soportar Pydantic v1 para las últimas versiones de Python, comenzando con Python 3.14.
Esto incluye pydantic.v1, que ya no es soportado en Python 3.14 y superior.
Si quieres usar las últimas características de Python, necesitarás asegurarte de usar Pydantic v2.
Si tienes una aplicación FastAPI antigua con Pydantic v1, aquí te mostraré cómo migrarla a Pydantic v2, y las características en FastAPI 0.119.0 para ayudarte con una migración gradual.
En muchos casos, cuando usas modelos de Pydantic regulares sin personalizaciones, podrás automatizar la mayor parte del proceso de migración de Pydantic v1 a Pydantic v2.
Puedes usar bump-pydantic del mismo equipo de Pydantic.
Esta herramienta te ayudará a cambiar automáticamente la mayor parte del código que necesita ser cambiado.
Después de esto, puedes ejecutar las pruebas y verificar si todo funciona. Si funciona, has terminado. 😎
Pydantic v2 incluye todo de Pydantic v1 como un submódulo pydantic.v1. Pero esto ya no es soportado en versiones superiores a Python 3.13.
Esto significa que puedes instalar la última versión de Pydantic v2 e importar y usar los componentes antiguos de Pydantic v1 desde este submódulo, como si tuvieras el antiguo Pydantic v1 instalado.
Este soporte de FastAPI para modelos pydantic.v1 fue añadido en FastAPI 0.119.0 y eliminado en FastAPI 0.128.0. Estaba pensado como una ayuda temporal para la migración a Pydantic v2.
En las versiones actuales de FastAPI, usar un modelo pydantic.v1 en tu aplicación generará un error.
El resto de esta sección describe el soporte temporal disponible solo en esas versiones anteriores.
Desde FastAPI 0.119.0, también hay soporte parcial para Pydantic v1 desde dentro de Pydantic v2, para facilitar la migración a v2.
Así que podrías actualizar Pydantic a la última versión 2, y cambiar los imports para usar el submódulo pydantic.v1, y en muchos casos simplemente funcionaría.
Ten en cuenta que como el equipo de Pydantic ya no soporta Pydantic v1 en las versiones recientes de Python, comenzando con Python 3.14, usar pydantic.v1 tampoco es soportado en Python 3.14 y superior.
En el ejemplo anterior, el modelo de entrada es un modelo de Pydantic v1, y el modelo de salida (definido en response_model=ItemV2) es un modelo de Pydantic v2.
Si necesitas usar algunas de las herramientas específicas de FastAPI para parámetros como Body, Query, Form, etc. con modelos de Pydantic v1, puedes importarlas desde fastapi.temp_pydantic_v1_params mientras terminas la migración a Pydantic v2:
La migración gradual usando modelos de Pydantic v1 y v2 en la misma aplicación descrita abajo solo funciona en FastAPI 0.119.0 hasta 0.127.x. Fue eliminada en FastAPI 0.128.0, las últimas versiones requieren modelos de Pydantic v2.
Consejo
Primero prueba con bump-pydantic, si tus pruebas pasan y funciona, entonces has terminado con un solo comando. ✨
Si bump-pydantic no funciona para tu caso de uso, puedes usar el soporte para modelos de Pydantic v1 y v2 en la misma aplicación para hacer la migración a Pydantic v2 gradualmente.
Podrías primero actualizar Pydantic para usar la última versión 2, y cambiar los imports para usar pydantic.v1 para todos tus modelos.
Luego, puedes empezar a migrar tus modelos de Pydantic v1 a v2 en grupos, en pasos graduales. 🚶