{"id":22308097,"url":"https://github.com/akretion/mdfelib","last_synced_at":"2025-07-29T05:32:25.999Z","repository":{"id":136509289,"uuid":"106304860","full_name":"akretion/mdfelib","owner":"akretion","description":"biblioteca para ler e gerir Manifesto Eletrônico de Documentos Fiscais brasileiros (MDF-e)","archived":false,"fork":false,"pushed_at":"2023-09-19T21:50:18.000Z","size":1079,"stargazers_count":3,"open_issues_count":4,"forks_count":2,"subscribers_count":7,"default_branch":"generated","last_synced_at":"2025-06-06T03:13:39.312Z","etag":null,"topics":["brasil","erp","mdf-e","sped"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/akretion.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"MIT-LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-10-09T15:59:32.000Z","updated_at":"2019-03-26T13:16:36.000Z","dependencies_parsed_at":null,"dependency_job_id":"b39f2277-7695-4342-bd2e-4584045fe8c7","html_url":"https://github.com/akretion/mdfelib","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/akretion/mdfelib","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akretion%2Fmdfelib","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akretion%2Fmdfelib/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akretion%2Fmdfelib/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akretion%2Fmdfelib/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/akretion","download_url":"https://codeload.github.com/akretion/mdfelib/tar.gz/refs/heads/generated","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akretion%2Fmdfelib/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267633670,"owners_count":24118777,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-29T02:00:12.549Z","response_time":2574,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["brasil","erp","mdf-e","sped"],"created_at":"2024-12-03T20:13:06.987Z","updated_at":"2025-07-29T05:32:25.978Z","avatar_url":"https://github.com/akretion.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"mdfelib Python library\n=====================\n\nA mdfelib é uma biblioteca para ler e gerir Manifesto Eletrônico de Documentos Fiscais brasileiros (MDF-e). Ja existem varias outras bibliotecas, porem na Akretion queriamos algo que fosse simples de manter para usar com o ERP open source Odoo. A mdfeelib nao tem a pretençao de solucionar toda burocracia do SPED sozinha, mas apenas a questao da geraçao dos documentos de MDF-e. Tambem criamos outras bibliotecas semelhantes para os outros documentos electronicos do SPED.\n\nA mdfelib permite de:\n\n* Gerir os XMLs dos documentos fiscais.\n* Validar os dados com as mesmas validaçoes dos XSDs ao montar os objetos, o que evita detetar os erros apenas ao transmitir o XML.\n* Importar XMLs e transfoma-los em objetos Python. Usando um sistema de sub-classes, fica facil mapear esses objetos em outros objetos ou adicionar qualquer metodo customizado.\n\nA mdfelib é:\n\n* **Simples e confiavel**. O codigo é gerido pelo generateDS a partir dos XSD's da Fazenda usando o script generate de menos de **70 linhas de codigo** apenas.\n* Compativel com **Python 2 e Python 3**.\n* Capaz de carregar **varias versoes dos esquemas**. Isso pode ser bem util ao receber um documento com um layout antigo.\nAs tecnologias XML (XSD, WSDL, SOAP...) usadas pelo site da Fazenda foram criadas inicialmente para Java e .Net. Durante um bom tempo essas tecnologias ficaram para tras no mundo do Python. Por isso varias pessoas foram criar bibliotecas manualmente com milhares de linhas e poucos testes para montar os XMLs dos documentos electronicos. Mas hoje é um absurdo usar biblitecas escritas manualmente e depender do autor inicial a cada atualizaçao dos esquemas ou quando seu programa deve migrar para Python 3. Veja o conceito do 'Truck Factor' \u003chttps://en.wikipedia.org/wiki/Bus_factor\u003e\n\nÉ debativel qual é a melhor forma de transmitir esses documentos electronicos para o site da Fazenda (talvez com essas bibliotecas que ja existem, talvez com outras bibilotecas em Java especializadas em transmitir os documentos electronicos). Porem na questao de montar os XML e poder efetuar validaçoes dos dados o mais cedo possivel (perto do momento em qual o usuario preenchou os dados), dificilmente uma biblioteca de milhares de linhas escrita manualmente fica mais confiavel do que codigo gerido a partir dos XSD da Fazenda apenas. As classes da mdfelib sao geridas usando a ferramenta generateDS. A funcionalidade de sub-classes do generateDS tambem ajuda na questao dos mapeamentos entre o modelo de dados dos esquemas da fazenda e o modelo de dados do seu software (ERP por examplo). Finalmente ficou possivel fazer com Python o que o pessoal do Java ja fazia ha muito tempo com as tecnologias do tipo JAXB.\n\nVoce pode aprender mais sobre o generateDS.py aqui: \u003chttp://www.davekuhlman.org/generateDS.html\u003e\n\ncomo instalar\n=============\n\n.. code::\n\n  pip install -e git+https://github.com/akretion/mdfelib.git#egg=mdfelib\n\ncomo usar\n=========\n\n.. code::\n:\n  \u003e\u003e\u003e from mdfelib.v3_00 import mdfe as mdfe3\n  # TODO documentar melhor\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakretion%2Fmdfelib","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fakretion%2Fmdfelib","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakretion%2Fmdfelib/lists"}