aricaldeira / pybrasil

GNU Lesser General Public License v2.1
1 stars 8 forks source link

Biblioteca Num2Words #9

Open mbcosta opened 7 years ago

mbcosta commented 7 years ago

Olá @aricaldeira Parabéns pelo excelente trabalho. Vi no seu código que você está implementando a funcionalidade " - NumeroPorExtenso: classe para conversão de números por extenso para o Brasil" porém existe um projeto internacional para fazer essa mesma função o num2words https://github.com/savoirfairelinux/num2words que possui testes, acredito que sempre que possível é melhor se integrar projetos existentes para assim ter uma maior convergência com a comunidade ( nesse caso python ) reduzindo o código do PyBrasil, assim facilitando a manutenção/atualização/correção de erros, por isso gostaria de sugerir a troca dessa funcionalidade para passar a usar a biblioteca num2words.

cc @rvalyi @renatonlima @mileo

mileo commented 7 years ago

:+1: Concordo, precisamos estudar a viabilidade apenas e ver quem pode fazer a mudança.

aricaldeira commented 7 years ago

Cuidado com o escopo: a num2words é bem mais simples, não trata corretamente as unidades de medida no masculino e no feminino, não trata os casos de subunidades a não ser os centavos, e ainda assim, somente em reais;

A rotina aqui na pybrasil, apesar de não ter os testes que vocês tanto gostam, está sendo usada em produção há anos, e sempre esteve disponível publicamente: https://groups.google.com/forum/#!msg/python-brasil/YPjqIlloST4/mVDOXueNXFAJ https://pastebin.com/Cypftmh7

, preenchendo formulários de laudos técnicos/engenharia, descrevendo os resultados por extenso corretamente, validado por engenheiros e advogados, que são bem chatos com a gramática e tal, onde usa feminino, onde tem que ter a vírgula nos números, etc.

Também usamos no preenchimento de contratos e pedidos de compra/venda (no py3o e no jasper) em transações com europa, eua e china, escrevendo por extenso em inglês e português valores em reais, dólares, euros e renminbi;

Pelo que vi, a num2words não faz tudo isso, então, o escopo é bem diferente;

Desde que a num2words faça tudo o que a pybrasil faz, com o mesmo escopo, não vejo problema algum;

mbcosta commented 7 years ago

Entendo @aricaldeira , desculpe pela analise superficial, realmente aqui a funcionalidade está mais completa. Como sua biblioteca está sendo incluída no projeto da localização brasileira do odoo, e eu já sabia que existiam esforços da comunidade python no mesmo sentido pensei em indicar. Eu acabei encontrando o num2words porque foi preciso implementar essa funcionalidade em um cliente que usa o odoo e a primeira coisa que encontrei foi uma implementação dentro do próprio projeto, acabei fazendo um PR https://github.com/odoo/odoo/pull/11388 para incluir o pt_BR, mas me orientaram que eles estariam retirando essa funcionalidade para passar a usar o num2words ( por isso até pensei que seria algo "padrão" nos projetos python ), mas só agora na próxima versão do odoo vai fazer parte da lista de dependências https://github.com/odoo/odoo/blob/master/requirements.txt#L15 ( talvez isso ajude o projeto a crescer ), por isso também acabei nem entrando nas questões técnicas sobre números gigantes e problemas gramaticais como na discussão que você me indicou( eram apenas simples documentos com valores em reais e não existia a possibilidade de ter valores altos ). Bom parece existir muita coisa interessante para ser integrada, acredito que a questão unidades de medida no masculino e no feminino são um problema para todas as línguas latinas; o bom desse tipo de integração é a abstração de certas funcionalidades ou implementação de outras línguas que já foram ou estão sendo feitas, em muitos casos, pela própria comunidade nativa, mas claro dentro da viabilidade e interesse de cada um. Pela "História" no README.rst o projeto parece ser a continuação de outro projeto de 2003

num2words is based on an old library, pynum2word created by Taro Ogawa in 2003. Unfortunately, the library stopped being maintained and the author can't be reached. There was another developer, Marius Grigaitis, who in 2011 added Lithuanian support, but didn't take over maintenance of the project.

I am thus basing myself on Marius Grigaitis' improvements and re-publishing pynum2word as num2words.

Espero que possamos juntar esforços