Skip to main content

Biblioteca para uso com o eSocial

Project description

LIBeSocial

Biblioteca em Python para lidar com os processos do eSocial:

  • Validação dos XML's dos eventos;
  • Comunicação com o Webservices do eSocial para envio e consulta de lotes;
  • Assinatura dos XML's (e conexão com o webservices) com certificado tipo A1.

Apesar desta biblioteca ter sido desenvolvida para lidar especialmente com os eventos de SST (Saúde e Segurança do Trabalho), nada impede que ela possa ser utilizada para enviar/validar quaisquer dos eventos disponíveis no projeto eSocial.

No momento só é possível utilizar assinaturas do tipo A1 em arquivos no formato PKCS#12 (geralmente arquivos com extensão .pfx ou .p12).

Instalação

PyPi:

pip install libesocial

A versão mais recente diretamente do repositório:

pip install https://github.com/qualitaocupacional/libesocial/archive/master.zip

Ou você pode clonar este repositório:

git clone https://github.com/qualitaocupacional/libesocial

Entrar na pasta do repositório recém clonado:

> cd libesocial
> python setup.py install

Uso básico

Assinando um evento

import esocial.xml
import esocial.utils

cert_data = esocial.utils.pkcs12_data('my_cert_file.pfx', 'my password')
evt2220 = esocial.xml.load_fromfile('S2220.xml')

# Signing using the signature algorithms from eSocial documentation
evt2220_signed = esocial.xml.sign(evt2220, cert_data)

Validando um evento

import esocial.xml

evt2220 = esocial.xml.load_fromfile('S2220.xml')
try:
    esocial.xml.XMLValidate(evt2220).validate()
except AssertionError as e:
    print('O XML do evento S-2220 é inválido!')
    print(e)

ou

import esocial.xml

evt2220 = esocial.xml.load_fromfile('S2220.xml')
xmlschema = esocial.xml.XMLValidate(evt2220)
if xmlschema.isvalid():
    print('XML do evento é válido! :-D.')
else:
    print('O XML do evento S-2220 é inválido!')
    print(str(xmlschema.last_error))

OBSERVAÇÃO: Até o presente momento (15/05/2018), a SignXML, versão 2.5.2 que está no PyPi não está alinhada com a versão mais atual da Cryptography:

(...)/site-packages/signxml/__init__.py:370: CryptographyDeprecationWarning: signer and verifier have been deprecated. Please use sign and verify instead.
  signer = key.signer(padding=PKCS1v15(), algorithm=hash_alg)

Isso não atrapalha o funcionamento da LIBeSocial, mas é um aviso de que no futuro essa função não vai mais funcionar. Você pode instalar a mesma versão 2.5.2 da SignXML diretamente do repositório oficial, onde esta issue já foi corrigida:

pip install https://github.com/XML-Security/signxml/archive/master.zip

Requisitos

A LIBeSocial requer as seguintes bibliotecas Python:

  • requests >= 2.7.0
  • lxml >= 4.2.1
  • zeep >= 2.5.0
  • pyOpenSSL >= 17.5.0
  • signxml >= 2.5.2
  • six >= 1.11.0

Licença

A LIBeSocial é um projeto de código aberto, desenvolvido pelo departamento de Pesquisa e Desenvolvimento e Tecnologia da Informação da Qualitá Segurança e Saúde Ocupacional e está licenciada pela Apache License 2.0.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

libesocial-0.0.1rc1.tar.gz (116.6 kB view details)

Uploaded Source

Built Distribution

libesocial-0.0.1rc1-py2.py3-none-any.whl (171.6 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file libesocial-0.0.1rc1.tar.gz.

File metadata

  • Download URL: libesocial-0.0.1rc1.tar.gz
  • Upload date:
  • Size: 116.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.1 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.6.5

File hashes

Hashes for libesocial-0.0.1rc1.tar.gz
Algorithm Hash digest
SHA256 5881198a5fb835ca82bd2df2f071561db5d5307fd051aff94eec1c651d7a43b5
MD5 405d80d4185213f35ad4c5eb9ca6a3e5
BLAKE2b-256 3fe1174ac444dfa46930088335b12e3eab48c67949855c2149262f9cc11ffe93

See more details on using hashes here.

File details

Details for the file libesocial-0.0.1rc1-py2.py3-none-any.whl.

File metadata

  • Download URL: libesocial-0.0.1rc1-py2.py3-none-any.whl
  • Upload date:
  • Size: 171.6 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.1 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.6.5

File hashes

Hashes for libesocial-0.0.1rc1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 01949c09496cc8b3f6cd5dbe543bd573399c5cdc9fcf26fc7232c93d56446ea4
MD5 7b9c9dbd4fd88eef3a26638bc65027c0
BLAKE2b-256 4ddfebfd955abd53f8522a54c3c480e9120b2afa4b7e757f872d3d5490ae45e3

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page