Semver: handle prerelease comparison
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 74/100
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
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de Flagsmith/flagsmith-sql-flag-engine
-
Dependency DashboardAbierto
Dificultad 4/5 3-5 días Aptitud para principiantes 15/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 35/100
-
Dificultad 3/5 1-2 días Aptitud para principiantes 48/100
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 45/100
Flagsmith/flagsmith-sql-flag-engine#3 · 1 comentario ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
Todos los issues de Flagsmith/flagsmith-sql-flag-engine
Issues similares
-
bug needs-triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
debpalash/VoiceStudio#2624 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
-
SQLGlot translates Spark concat_ws on an array into array stringificationPosiblemente ocupada @ansh-rohilla la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
Los mantenedores suelen responder en 1 día
-
Make Catch2 optional when `RDK_BUILD_CPP_TESTS=OFF`Posiblemente ocupada @pechersky la tomó hoy. Abiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 2 días