Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Semver: handle prerelease comparison

Abierto Apto para principiantes
#5 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
74/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Tranquilo
Stack tecnológico
python, sql
Área
databases

Línea de trabajo

Empieza en translator._semver_sort_key_expr e inspecciona el comportamiento existente de semver_sort_key y sus llamadores. Verifica que versiones como 1.2.3-beta se ordenen antes que 1.2.3, mientras que los metadatos de compilación no afecten a la parte de prerelease; se considera terminado cuando se corrige la discrepancia documentada sin requerir la comparación numérica de los segmentos de prerelease.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

semver_sort_key (in translator._semver_sort_key_expr) extracts the first three digit-runs from the version string, zero-pads each to 10 chars, and joins with dots. This gives correct major.minor.patch ordering but ignores prerelease: 1.2.3-beta and 1.2.3 produce the same key.

Per semver spec, 1.2.3-beta < 1.2.3 (prerelease versions compare less than the corresponding release). My current implementation gets this wrong.

What to ship

Extend the sort key with a prerelease tail. Approximation that's good enough for behavioural-targeting use:

  • Extract everything after - (and before any + build metadata) as the prerelease string.
  • Append a sentinel: '~' for absent prerelease (sorts after any prerelease alphabetically — ~ is high-ASCII), the literal prerelease string otherwise.
  • Per-dot-segment numeric prerelease comparison is a further refinement (engine semver lib does this); skip for v1.

Why deferred

Smoke-tested at 23/24 parity in the PoC; the one mismatch was the prerelease case described above. Customer segments using semver tend to use clean major.minor.patch (app_version: "2.5.10") without prerelease tails. Will revisit if a customer reports an unexpected match for a -beta version.

Lenguaje dominante
Python
Estrellas
1
Forks
0
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

  • Incluye un Dockerfile o un archivo de Docker Compose
  • Sin plantilla de pull request
  • Sin guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de Flagsmith/flagsmith-sql-flag-engine

Todos los issues de Flagsmith/flagsmith-sql-flag-engine

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.