nfelib icon indicating copy to clipboard operation
nfelib copied to clipboard

improving warning messages

Open lucasres opened this issue 6 years ago • 8 comments

I use the lib in my job for validate xml with parse function. I catch the warnings mensagens and raise exception when have warnings. But i think that the messagens can be improved. The mensagens can be more easy for final user or supports team for exemple.

lucasres avatar Apr 30 '19 20:04 lucasres

Interessante vou dar uma olhada sobre o que pode ser feito... Na vdd se a gente altera desse jeito a gente perde a facilidade de manutenção da lib de gerir o código a cada nova atualização dos esquemas. O codigo na vdd tb eh mantido na branch master e a branch master_gen_v4_00 so acrescenta o codigo gerido depois. Vou documentar isso melhor mas algumas explicações sobre esse processo podem ser encontradas nesse projeto que foca no gerador de todas bibliotecas para os documentos fiscais https://github.com/akretion/edoc-gen

Na vdd eh tb penso que idealmente a gente captura os warnings na subclass https://github.com/akretion/nfelib/blob/master_gen_v4_00/src/nfe/leiauteNFe_sub.py e aproveita para traduzi-los tb (ja que eu duvido que a gente consiga contribuir uma facilmente internacionalização limpa que seja aceita no generateDS. Se quiser ajudar a fazer as coisas nesse molde da captura dos warning na subclass seria uma contribuição interessante.

rvalyi avatar Apr 30 '19 21:04 rvalyi

Então deixa ver se entendi, vcs usam o gerador que usa o schema como base?

Ele que gera os arquivos python? Digo as validações

lucasres avatar May 01 '19 13:05 lucasres

Sim. Ai a validação poderia ser melhorada para algumas classes estratégicas tendo na sub-class um método de validação (ou ate um override do constructor), chamando a validação da super-class gerida e interceptando os erros e acrescentando tratamento como tradução para pt_BR por examplo. A ideia seria essa...

rvalyi avatar May 01 '19 14:05 rvalyi

Entendi. Mas se fizer um fork do gerador e traduzir ele também nao daria certo?

lucasres avatar May 01 '19 15:05 lucasres

funcionaria. Mas traduzindo de qualquer jeito para pt_BR sem sistema generico digno nao seria integrado no projeto principal generateDS. Sendo assim, complicaria a manutenção a longo prazo. Por isso prefiro a técnica de interceptar os warnings e retratar eles antes de apresenta-los.

rvalyi avatar May 01 '19 17:05 rvalyi

se conseguir recuperar o nome da função que levantou a warning podemos dar um split por _ e pegar o nome do campo, ja que a função segue um padrão de nomenclatura dos métodos de validação

lucasres avatar May 02 '19 12:05 lucasres

Indeed. May be looking at the inspect and traceback modules and the frames: https://docs.python.org/3/library/inspect.html#the-interpreter-stack https://stackoverflow.com/questions/2359248/how-can-you-programmatically-inspect-the-stack-trace-of-an-exception-in-python This is rather slow, but doing that in case of warning is totally acceptable.

rvalyi avatar May 02 '19 14:05 rvalyi

usei o traceback mas ele me retorna uma string formatata.

lucasres avatar May 23 '19 19:05 lucasres

não se encaixa mais agora com os bindings xsdata.

rvalyi avatar Feb 24 '24 21:02 rvalyi