You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Saída polars: pânico do polars na conversão final derruba a saída depois das chamadas (Decimal acima de 38 dígitos) #230
Com entrada polars, um campo Decimal que recebe um valor com mais de 38 dígitos derruba a saída depois de todas as chamadas ao provider, com PanicException do polars. Com entrada pandas, o mesmo modelo devolve a coluna com os três valores.
Reproduzido na main com polars 2.0.0; a revisão do #220 viu o mesmo de 1.0.0 a 2.0.0.
Causa
from_pandas (utils.py) converte cada coluna do modelo com pl.from_pandas dentro de um try/except Exception, e a coluna que a conversão recusa sai Object com aviso (#220). O pânico do polars herda de BaseException, passa pelo except e sobe até o chamador. Pela mensagem, o pyarrow entrega o valor como decimal de 256 bits, que o polars não lê.
A revisão do #220 achou um segundo caminho para o mesmo pânico, em versões antigas: Optional[dict[str, int]] com {} e None, no polars 1.6.0 a 1.9.0.
Proposta
Capturar também o pânico nesse ponto, pelo nome que o polars expõe (pl.exceptions.PanicException, presente no 1.0.0 e no 2.0.0), e mandar a coluna para Object como as demais recusadas. Capturar BaseException engoliria o KeyboardInterrupt. O teste é o trecho acima, conferindo que a coluna sai Object com os três valores e o aviso.
Relacionada: #218, que tratou a mesma falha quando a conversão levanta exceção comum.
Activity
Saída polars: pânico do polars na conversão final vira coluna Object (#…