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

  1. Pega una o varias cadenas de versión, una por línea; los datos no salen de tu navegador.
  2. Selecciona «Analizar versiones».
  3. Revisa cada valor señalado: qué gramática no cumple o qué diferencia semántica sutil aplica, y por qué.
  4. Usa la reescritura sugerida cuando se ofrezca. Algunas conversiones son solo aproximadas; se explica por qué en vez de aplicarlas silenciosamente.

Supuestos

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
Errores comunes

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.