Conversor de formatos de versión de paquetes
Pega una o varias cadenas de versión (una por línea) y descubre cuáles son válidas según SemVer, PEP 440, ambas o ninguna, y por qué una versión aceptada en un ecosistema puede rechazarse o significar algo distinto en otro.
El análisis se realiza localmente en tu navegador. El archivo nunca se carga al servidor.
Cómo usar esta herramienta
- Pega una o varias cadenas de versión, una por línea; los datos no salen de tu navegador.
- Selecciona «Analizar versiones».
- Revisa cada valor señalado: qué gramática no cumple o qué diferencia semántica sutil aplica, y por qué.
- Usa la reescritura sugerida cuando se ofrezca. Algunas conversiones son solo aproximadas; se explica por qué en vez de aplicarlas silenciosamente.
Supuestos
- Reconoce las formas habituales de dos gramáticas: SemVer 2.0.0 (`MAJOR.MINOR.PATCH[-prerelease][+build]`) y PEP 440 (`[N!]N(.N)*[{a|b|rc}N][.postN][.devN][+local]`). Los esquemas inusuales o específicos de proveedores (sufijos de época/revisión de Debian, calificadores de Maven) quedan fuera del alcance.
- No implementa comparación ni ordenación entre versiones; solo análisis correcto, validación y conversiones reversibles seguras.
- Solo ofrece reescrituras inequívocas y sin pérdida, como quitar el prefijo `v` de una etiqueta git o completar una versión de dos componentes con un tercero. Los sufijos dev/post de PEP 440 no tienen equivalente exacto en SemVer; no se convierten automáticamente, aunque se explique una correspondencia aproximada.
Fuentes y datos de referencia
Metodología
Cada línea se analiza frente a ambas gramáticas mediante expresiones regulares elaboradas a partir de las especificaciones (la expresión oficial de la gramática SemVer 2.0.0 y un patrón PEP 440 que cubre segmentos de época, versión, preversión, postversión, desarrollo y versión local). Después se comprueban discrepancias documentadas: el guion que SemVer exige antes de una preversión y PEP 440 no; las versiones dev/post de PEP 440 sin equivalente en SemVer; diferencias semánticas de metadatos de compilación (SemVer los ignora al ordenar, PEP 440 no ignora la versión local); prefijo `v` de etiquetas git que ninguna gramática espera; cero inicial no válido en SemVer estricto; y versión de dos componentes aceptada por PEP 440 pero no por SemVer.
Ejemplo resuelto
Preversión de estilo Python sin el guion exigido por SemVer
Datos de entrada: 1.0.0a1
Resultado: Es válida en PEP 440 (alfa 1), pero SemVer estricto exige un guion antes de cualquier identificador de preversión y la rechaza. Se señala como error y se ofrece la forma SemVer `1.0.0-a1`.
Metadatos de compilación frente a versión local de PEP 440
Datos de entrada: 1.2.3+build1
Resultado: Es texto válido en ambas gramáticas, pero SemVer exige ignorar `+build1` al ordenar (`1.2.3+build1` == `1.2.3+build2`), mientras que el segmento de versión local equivalente de PEP 440 sí afecta al orden. Se advierte de la diferencia semántica; no se reescribe porque la ambigüedad está en las especificaciones, no en la cadena.
Sufijo de versión de desarrollo PEP 440
Datos de entrada: 1.0.0.dev0
Resultado: Es válida en PEP 440 (una versión de desarrollo anterior a 1.0.0), pero SemVer no tiene un concepto directamente equivalente. Se señala como error y se explica que una forma aproximada como `1.0.0-dev.0` se usa a veces, pero aplica reglas de ordenación distintas; no se ofrece como conversión automática.
Orientación práctica
- Si un paquete debe publicarse tanto con identidad de estilo npm (SemVer) como de estilo PyPI (PEP 440), elige un esquema que cumpla la gramática más estricta: `MAJOR.MINOR.PATCH` con una preversión precedida por guion (por ejemplo, `1.2.3-rc1`) es válida y significa lo mismo en ambas.
- No dependas del orden de metadatos de compilación ni de versiones locales PEP 440 para decisiones importantes: considera esa parte informativa, porque los ecosistemas discrepan sobre si afecta a la precedencia.
- Quita el prefijo `v` de una etiqueta git antes de pasar la versión a un analizador o biblioteca de comparación: se puede eliminar sin riesgo y ninguna de las dos gramáticas lo espera.
Errores comunes
- Suponer que `1.0.0a1` y `1.0.0-a1` significan lo mismo para todas las herramientas: la primera solo es válida en PEP 440; la segunda, en ambas. Un analizador SemVer estricto rechazará la primera en vez de aceptarla de forma permisiva.
- Tratar un sufijo dev/post de PEP 440 como si tuviera una traducción exacta a SemVer. No existe; cualquier correspondencia es aproximada y tiene distinto comportamiento de comparación.
Preguntas frecuentes
¿Por qué `1.0.0a1` se señala como error y no como advertencia?
No es solo una forma poco idiomática: un analizador SemVer estricto no puede analizarla, igual que un analizador JSON falla con una coma final. Es una incompatibilidad directa, no una preferencia de estilo.
¿Por qué la herramienta no convierte automáticamente `1.0.0.dev0` a un equivalente SemVer?
No existe una forma con equivalencia garantizada. Las versiones dev/post de PEP 440 representan la relación anterior o posterior a una versión de una manera que los campos de preversión/metadatos de compilación de SemVer no reproducen exactamente. Cualquier forma SemVer sería una aproximación con distinto orden; solo se convierten automáticamente casos sin pérdida real.
¿Está realmente mal `1.2.3+build1`?
No está mal como texto: es válida en ambas gramáticas. El riesgo está en cómo afecta el sufijo de compilación/versión local a la comparación, que difiere entre las herramientas de ambos ecosistemas.
¿Se puede convertir exactamente una versión `.dev` de PEP 440 a SemVer?
No existe una conversión exacta garantizada. La semántica de ordenación de las versiones de desarrollo PEP 440 no se reproduce en todos los casos con los identificadores de preversión SemVer. Una forma como `1.0.0-dev.0` puede ser aproximada, no equivalente. Esta herramienta comprueba formas reconocidas y notas de portabilidad; no ejecuta resolutores de gestores de paquetes ni compara versiones.
Última revisión:
Este comprobador de gramática no es un resolutor completo de versiones de gestores de paquetes: reconoce SemVer 2.0.0 y las formas habituales de PEP 440, no otros esquemas específicos de proveedores (revisiones Debian, calificadores Maven), y no implementa lógica de comparación/ordenación para ninguno de los formatos.
Las preferencias de tema y de herramientas, junto con las listas de herramientas guardadas y recientes, se almacenan solo en este navegador.