Parquet checkpointing adds null dictionary entries and rejects mixed JSON arrays
Los mantenedores suelen responder en 1 día
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 48/100
Línea de trabajo
Start by running the attached repro.py scripts with and without --encode, then inspect the Parquet checkpoint writer and its read path. The issue reports failures for dictionaries and mixed JSON arrays in custom-column and structured-column outputs; identify where checkpoint serialization handles these values. Done means both cases round-trip with absent keys distinct from explicit nulls and mixed arrays stored successfully.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Priority Level
Medium (Annoying but has workaround)
Describe the bug
Data Designer 0.9.3 can alter dictionaries during Parquet storage and fail to store schema-valid mixed arrays.
Arrow inference treats dictionaries as structs, merging their keys and adding null values for absent entries:
Input:
{"fields": {"alpha": 1}}
{"fields": {"beta": 2}}
Restored:
{"fields": {"alpha": 1, "beta": null}}
{"fields": {"alpha": null, "beta": 2}}
This changes the data’s meaning by making absent keys indistinguishable from explicit null values.
Mixed arrays such as [1, "two", true, null] fail checkpoint writing with ArrowInvalid:
Could not convert 'two' with type str: tried to convert to int64
These problems affect custom-column outputs. They also occur with schema-declared structured outputs after isolating the separate parser bug in #1043.
Steps/Code to reproduce bug
The attached scripts use deterministic inputs and require no credentials or model calls.
Reproduce through custom columns, then verify the JSON-text workaround:
uv run --script repro.py
uv run --script repro.py --encode
Reproduce through LLMStructuredColumnConfig:
uv run --script repro_structured.py --case mixed-array
uv run --script repro_structured.py --case typed-map --respect-schema
uv run --script repro_structured.py --case json-map --respect-schema
repro_structured.py mocks model generation while retaining DD’s actual parsing, structured-column generation, and storage. It tests both Pydantic and JSON Schema declarations.
--respect-schema diagnostically disables the parser’s additionalProperties rewrite to isolate storage behavior. It does not change the storage writer. The mixed-array case reproduces without this diagnostic.
Tested with:
data-designer==0.9.3
pydantic==2.14.1
pandas==2.3.3
pyarrow==24.0.0
Expected behavior
Supported dictionary and flexible JSON values should retain their contents through checkpoint writes and reads. Absent dictionary keys must remain distinguishable from explicit nulls, and schema-valid mixed arrays should be stored successfully
Agent Diagnostic / Prior Investigation
Bug was encountered when making changes to a DD pipeline. Issue content and reproduction scripts are AI generated and human reviewed.
Fixed records round-trip correctly. Explicitly encoding whole custom-column payloads as JSON text preserves dictionaries and mixed arrays. Disabling the separate parser rewrite does not resolve the storage failures.
Additional context
Split from #1043, which tracks valid dictionary entries being removed during parsing.
Checklist
- I reproduced this issue or provided a minimal example
- I searched the docs/issues myself, or had my agent do so
- If I used an agent, I included its diagnostics above
- Lenguaje dominante
- Python
- Estrellas
- 2.4k
- Forks
- 241
- Merge medio
- 22 h 24 min
- PR fusionados (30 d)
- 91
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la 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 NVIDIA-NeMo/DataDesigner
-
Allow huggingface-hub 2.x (widen cap from <2 to <3)Posiblemente ocupada @davanstrien la tomó hace 1 día. Abiertoenhancement triaged
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
NVIDIA-NeMo/DataDesigner#1110 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Local seed path containing a single quote breaks the DuckDB queryQuizá libre de nuevo Un pull request para esta issue se cerró sin fusionarse. Abiertobug triaged
Dificultad 2/5 1-3 horas Aptitud para principiantes 67/100
NVIDIA-NeMo/DataDesigner#1102 · 3 comentarios ·
Los mantenedores suelen responder en 1 día
-
enforce \from future import annotations` via ruff FA102 rule`Posiblemente ocupada @chethanuk la tomó hace 50 días. Abiertotask
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
NVIDIA-NeMo/DataDesigner#760 ·
Los mantenedores suelen responder en 1 día
-
Anthropic provider drops thinking blocks when replaying MCP tool-call turnsPosiblemente ocupada @andreatnvidia la tomó hoy. Abiertobug triaged
Dificultad 4/5 3-5 días Aptitud para principiantes 68/100
NVIDIA-NeMo/DataDesigner#1118 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
Support image columns and media collection in multi-shard Slurm runsPosiblemente ocupada @nabinchha la tomó hace 2 días. Abiertoenhancement
NVIDIA-NeMo/DataDesigner#1114 · 1 asignado ·
Los mantenedores suelen responder en 1 día
Todos los issues de NVIDIA-NeMo/DataDesigner
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
-
Claiming namespace `thejakia1`Abiertonamespace operations
Dificultad 1/5 Menos de una hora Aptitud para principiantes 65/100
EclipseFdn/open-vsx.org#15057 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
FinanceFlash/unvibecode#349 ·
-
Mission statement: why this is free, in the README, Why This Exists and the wiki HomePosiblemente ocupada @ChiefGyk3D la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
ChiefGyk3D/Clouds-Against-Humanity#348 ·
Los mantenedores suelen responder en 1 día
-
[Perf] Default --vllm-watermark 0.05 for rollouts (hybrid models re-preempt under KV pressure)Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
vllm-project/vime#508 ·
Los mantenedores suelen responder en 4 días