ImageGen generate-batch aborts valid JSONL jobs containing a Unicode line separator in poster text

Abierto Apto para principiantes
#61,442 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
78/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
python
Área
tooling

Línea de trabajo

El error está en el cargador por lotes de codex-rs/skills/src/assets/samples/imagegen/scripts/image_gen.py, alrededor de la línea 464, donde toda la entrada UTF-8 se divide con str.splitlines(), lo que se rompe con U+2028 dentro de cadenas JSON. Reprodúcelo con los comandos de dry-run del issue usando un U+2028 literal frente a su escape \u2028. Está terminado cuando el archivo con el carácter literal lista los mismos dos trabajos que el que usa el escape, y el texto del póster se conserva literalmente.

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

Descripción

bug imagen skills

One literal U+2028 LINE SEPARATOR in a poster's text makes generate-batch reject the entire UTF-8 JSONL input before processing any jobs. Escaping the same character as \u2028 allows both jobs to proceed with identical decoded text. This affects producers that emit UTF-8 directly, including Python's json.dumps(..., ensure_ascii=False).

Steps to reproduce From the Codex checkout at de83e7674a69b9ae18544dd1fbf53f31bfe8c640, with Python 3.12.14. Dry-run mode requires no credentials.

d=$(mktemp -d)
python3 - "$d" <<'PY'
import json, sys
from pathlib import Path
jobs = [
    {"prompt": "A welcome poster", "text": "OPEN HOUSE\u2028SATURDAY"},
    {"prompt": "A second poster"},
]
for filename, escape in [("literal.jsonl", False), ("escaped.jsonl", True)]:
    path = Path(sys.argv[1]) / filename
    with path.open("w", encoding="utf-8") as f:
        for job in jobs:
            print(json.dumps(job, ensure_ascii=escape), file=f)
    with path.open(encoding="utf-8") as f:
        assert list(map(json.loads, f)) == jobs
PY
script=codex-rs/skills/src/assets/samples/imagegen/scripts/image_gen.py
python3 "$script" generate-batch --dry-run --input "$d/literal.jsonl" --out-dir "$d/out1"
python3 "$script" generate-batch --dry-run --input "$d/escaped.jsonl" --out-dir "$d/out2"

Observed The first invocation exits 1 with Invalid JSON on line 1: Unterminated string starting at: line 1 column 40 (char 39). The second lists jobs 1 and 2. The independent parser check passes for both files.

Expected Both batches should process the same two jobs, preserving the verbatim poster text.

Suggested fix Iterate over the UTF-8 file by physical lines instead of calling str.splitlines() on the whole document. The latter treats U+2028 inside a JSON string as a record boundary. Batch loader

Lenguaje dominante
Rust
Estrellas
135k
Forks
21.4k
Merge medio
1 min
PR fusionados (30 d)
997

Preparar el entorno

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 openai/codex

Todos los issues de openai/codex

Issues similares

Más issues de Rust

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.