Herramientas de desarrollo

comprobador de versiones PEP 440Comprueba qué versiones cumplen tus condiciones

Escribe una versión por línea y elige normalización, ordenación o comprobación de restricciones.

comprobador de versiones PEP 440

Versiones (una por línea)

Informe

Introduce datos o carga un ejemplo.

La entrada se procesa en este navegador y no se envía a ningún servidor.

Opciones

Las comas significan Y. Una restricción vacía no impone límites. Operadores: ~= == != <= >= < > ===; .* solo en prefijos con == o !=.

Hasta 1.000 filas no vacías; 256 unidades UTF-16 por fila, 2.048 por restricción y 100.000 en total. Se conserva la entrada.

Comprobando las candidatas…

El comprobador de versiones PEP 440 permite investigar por qué una publicación más reciente queda fuera de una dependencia. Que una versión sea válida, tenga mayor precedencia y cumpla una condición son cuestiones distintas que conviene revisar por separado.

Para comparar versiones de Python hay que reconocer epoch, dev, post y las etiquetas locales. 1.0 y 1.0.0 tienen la misma precedencia, aunque la normalización mantiene su número de componentes. El orden alfabético no representa estas reglas.

Por qué usar el comprobador de versiones PEP 440

Revisar el cambio sin perder el original

El comprobador de versiones PEP 440 muestra v01.1 junto a su forma normalizada 1.1. Al desplegar la fila aparecen sus segmentos. Puedes comprobar qué cambió en mayúsculas, ceros o separadores sin sustituir la entrada que estás investigando.

Distintas grafías pasan por una normalización y se convierten en tarjetas de segmentos alineados, conservando las tarjetas originales.

Entender por qué desaparece una candidata

La política automática considera primero todas las versiones que cumplen cada condición. Si encuentra una versión no preliminar, la prioriza. Si no, puede admitir las preliminares compatibles con los límites. Añadir una estable puede cambiar el resultado de otras filas.

Dos filtros muestran candidatas preliminares apartadas cuando hay una estable y admitidas cuando ninguna estable cumple.

Tres decisiones antes de interpretar el informe

01

Distingue ordenación y filtrado

Normalizar comprueba las grafías; ordenar aplica la precedencia de Python y conserva el orden de los empates. Comprobar restricciones mantiene el orden original y separa los fallos de condición de las exclusiones por política de versiones preliminares.

02

Prueba la lista completa

Quita una estable que cumpla las condiciones para observar la selección alternativa de preliminares. Incluir no modifica los límites: 1.0rc1 sigue siendo menor que 1.0 y no cumple >=1.0.

03

Espera a un resultado actualizado

El modo automático espera 350 ms. Al desactivarlo puedes usar el botón o Ctrl/Cmd+Intro. Cualquier cambio bloquea la exportación anterior. Ejemplo y Vaciar requieren una vista previa; Deshacer recupera la entrada y el informe anteriores.

Grafía, precedencia y requisitos

Normalización con información verificable

Se reconocen prefijos v, ceros iniciales, alias como alpha o preview y separadores locales. Se conserva el número de componentes de publicación: 1.0.0 permanece así en el resultado, aunque compare igual que 1.0. No se rellena todo a tres componentes.

Ordenación numérica de todos los segmentos

Se compara primero epoch, después la publicación y las reglas de desarrollo, alpha, beta, rc, final y post. Los segmentos locales numéricos se comparan como enteros. Los valores grandes no se redondean al límite seguro de JavaScript.

Especificadores de dependencias combinados

Se admiten ~=, ==, !=, <=, >=, <, > y ===. La coma significa Y. La igualdad y exclusión aceptan prefijos como 1.4.*. Las filas conservan su número físico original, incluso cuando se omiten líneas vacías.

Errores visibles y exportación completa

Una versión inválida queda marcada en su fila; una restricción inválida detiene todo el cálculo. Al ordenar, las filas incorrectas quedan al final. La vista añade 50 filas cada vez, pero el JSON incluye todas las procesadas y sus códigos de error.

Sintaxis admitida y límites

No resuelve una instalación
No interpreta nombres de paquetes, extras, marcadores de entorno, archivos requirements, URL ni archivos de bloqueo. No consulta PyPI, instala dependencias, modifica proyectos ni calcula incrementos de versión. Una coincidencia tampoco demuestra compatibilidad de API.
No hay grupos O ni sintaxis de npm
Se rechazan ^1.2, ~1.2 sin el signo igual, grupos OR y rangos con guion. ~=1.2 expresa una publicación compatible. Una restricción vacía no limita los números, pero mantiene la política de preliminares. Se ignoran las cláusulas vacías entre comas.
La etiqueta local depende del operador
Afecta a la ordenación. Una igualdad pública ignora la etiqueta local de la candidata, mientras que una igualdad local explícita la compara. Los operadores de orden y compatibilidad no admiten etiquetas locales: >=1.0+linux es inválido.
=== no evita validar las candidatas
Compara la grafía normalizada sin equivalencia por ceros añadidos. Cada candidata debe seguir siendo una versión PEP válida: legacy se marca como inválida aunque la condición sea ===legacy. No se emula el tratamiento histórico de versiones arbitrarias de un instalador.
La decisión automática es local a la lista
Las versiones dev también son preliminares. Una condición positiva que nombre una preliminar puede admitirlas. En caso contrario, la alternativa depende de si alguna no preliminar cumple todas las condiciones. No se consideran versiones instaladas ni otras publicaciones del índice.
Presupuestos de entrada explícitos
Máximo de 1.000 filas no vacías, 256 unidades UTF-16 por fila, 2.048 por restricción y 100.000 en la lista. Son límites de la herramienta. Las filas vacías se omiten, los duplicados se conservan y ninguna normalización u ordenación sobrescribe el original.

Preguntas del comprobador de versiones PEP 440

¿Qué significa ~= en una dependencia de Python?

Combina un límite inferior con un prefijo de publicación. ~=1.4 permite desde 1.4 dentro de 1.*, mientras que ~=1.4.0 se limita a 1.4.*. ~=1 es inválido por tener un solo componente. La selección de preliminares se decide aparte.

¿Por qué una preliminar coincide sola y deja de coincidir en una lista?

El filtro automático puede recurrir a preliminares cuando ninguna otra candidata válida satisface las condiciones. Añadir una final o post apropiada modifica la decisión del conjunto. Incluir muestra todas las candidatas que cumplen los límites; Excluir impide también esa alternativa automática.

¿Cómo se ordenan una versión pública y una local?

Con la misma parte pública, la local va después: 1.0 < 1.0+abc. Los componentes locales numéricos se sitúan después de los textuales. Los valores equivalentes conservan el orden original. A diferencia de los metadatos de compilación SemVer, local sí modifica la precedencia.

¿Puedo poner una etiqueta local en una restricción?

Sí con == o !=, por ejemplo ==1.0+linux.1. No con >= ni ~=. Una condición pública ==1.0 puede aceptar 1.0+linux.1, ya que no exige una compilación local concreta.

¿Cómo comparo números de versión en Python?

packaging.version.Version proporciona el orden de PEP. Esta implementación del navegador se contrasta con packaging 26.0. Comparar cadenas directamente puede invertir 1.10 y 1.9; otro esquema de versiones puede no interpretar epoch o post.

¿Puedo indicar varias versiones con un operador OR?

No dentro de este conjunto de especificadores. Las comas representan una intersección: todas las condiciones deben cumplirse. ||, or y grupos entre paréntesis se rechazan. Para investigar alternativas, ejecuta cada conjunto por separado y compara sus informes; no confundas esta prueba con resolver un archivo de dependencias.

¿Un resultado inesperado?

Revisa las candidatas reales

Vuelve al comprobador de versiones PEP 440 con la lista completa y su restricción. Comprueba las filas inválidas y la explicación de preliminares antes de guardar el informe actual con los valores originales.