[![thiagosalvatore](https://circleci.com/gh/thiagosalvatore/correpy.svg?style=shield)](https://app.circleci.com/pipelines/github/thiagosalvatore/correpy?branch=main&filter=all)
[![PyPI version](https://badge.fury.io/py/correpy.svg)](https://badge.fury.io/py/correpy)
# CorrePy
CorrePy (Corretagem Python) é uma lib responsável por parsear notas de corretagem no padrão B3 (Sinacor) e retornar os
dados em um formato estruturado para que você possa utilizar em suas aplicações.
## Instalação
Este projeto suporta qualquer versão do python >= 3.8
`pip install correpy`
## Como usar
Depois de instalada, sua utilização é extremamente simples. Primeiramente vamos precisar abrir o PDF com a nota de corretagem.
Se você estiver utilizando essa lib em uma API, você precisará transformar seu arquivo PDF em BytesIO.
```python
import io
with open('path to your pdf file', 'rb') as f:
content = io.BytesIO(f.read())
content.seek(0)
```
O conteúdo da sua nota de corretagem estará na variável `content` e é ela quem iremos usar para inicializar a nossa lib.
Se a sua nota de corretagem possuir senha, você precisará informar também, caso contrário o parser nâo irá funcionar.
```python
import io
from correpy.parsers.brokerage_notes.b3_parser.b3_parser import B3Parser
with open('path to your pdf file', 'rb') as f:
content = io.BytesIO(f.read())
content.seek(0)
brokerage_notes = B3Parser(brokerage_note=content, password="password").parse_brokerage_note()
```
### Resultado
Depois de efetuar o parser da sua nota de corretagem, `correpy` irá retornar uma lista no formato abaixo. Os valores de cada campo serão explicados em seguida.
```python
[
BrokerageNote(
reference_date=date(2022, 5, 2),
settlement_fee=Decimal("7.92"),
registration_fee=Decimal("0"),
term_fee=Decimal("0"),
ana_fee=Decimal("0"),
emoluments=Decimal("1.58"),
operational_fee=Decimal("0"),
execution=Decimal("0"),
custody_fee=Decimal("0"),
taxes=Decimal("0"),
others=Decimal("0"),
transactions=[
Transaction(
transaction_type=TransactionType.SELL,
amount=54,
unit_price=Decimal('24.99'),
security=Security(
name='BBSEGURIDADE ON NM'
)
),
Transaction(
transaction_type=TransactionType.BUY,
amount=200,
unit_price=Decimal('17.29'),
security=Security(
name='MOVIDA ON NM'
)
)
]
)
]
```
### Descrição das entidades
Abaixo você pode encontrar a descrição de cada um dos campos retornados.
#### Brokerage Note
| BrokerageNote | |
|-----------------------|-------------------------------------|
| reference_id | Número da nota |
| reference_date | Data do pregão |
| settlement_fee | Taxa de liquidação |
| registration_fee | Taxa de registro |
| term_fee | Taxa de termo/opções |
| ana_fee | Taxa A.N.A |
| emoluments | Emolumentos |
| operational_fee | Taxa Operacional |
| execution | Execução |
| custody_fee | Taxa de custódia |
| source_withheld_taxes | IRRF |
| taxes | Impostos |
| others | Outros |
| transactions | Lista de [transações](#transaction) |
#### Transaction
| Transaction | |
|----------------------|------------------------------------------------------------|
| transaction_type | Enum com o tipo de transação (BUY - compra, SELL - venda) |
| amount | Quantidade |
| unit_price | Valor unitário |
| security | Objeto [Security](#security) representando um título |
| source_witheld_taxes | IRRF retido na fonte (0.005% sobre o valor total de venda) |
#### Security
| Security | |
|----------|-------------------------|
| name | Especificação do título |
## Como contribuir
Estamos utilizando poetry para gerenciar o projeto e suas dependencias.
Este projeto ainda está em evolução e qualquer PR é bem vindo. Algumas ferramentas estão sendo utilizadas para melhorar a qualidade do código:
1. MyPy para checagem estática de tipos
2. PyLint
3. Black
4. isort
Para verificar se o seu código continua de acordo com os critérios definidos, basta rodar `./pipeline/lint.sh`.
Raw data
{
"_id": null,
"home_page": "https://github.com/thiagosalvatore/correpy",
"name": "correpy",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.8",
"maintainer_email": null,
"keywords": "corretagem, parser, b3, nota de corretagem, imposto de renda",
"author": "Thiago Salvatore",
"author_email": "thiago.salvatore@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/d1/4a/639b23fcc56ac1c7b25b1dc0c107608d4c35d2e79401006d4d11d367c18a/correpy-0.4.1.tar.gz",
"platform": null,
"description": "[![thiagosalvatore](https://circleci.com/gh/thiagosalvatore/correpy.svg?style=shield)](https://app.circleci.com/pipelines/github/thiagosalvatore/correpy?branch=main&filter=all)\n[![PyPI version](https://badge.fury.io/py/correpy.svg)](https://badge.fury.io/py/correpy)\n# CorrePy\nCorrePy (Corretagem Python) \u00e9 uma lib respons\u00e1vel por parsear notas de corretagem no padr\u00e3o B3 (Sinacor) e retornar os\ndados em um formato estruturado para que voc\u00ea possa utilizar em suas aplica\u00e7\u00f5es.\n\n## Instala\u00e7\u00e3o\nEste projeto suporta qualquer vers\u00e3o do python >= 3.8\n\n`pip install correpy`\n\n## Como usar\nDepois de instalada, sua utiliza\u00e7\u00e3o \u00e9 extremamente simples. Primeiramente vamos precisar abrir o PDF com a nota de corretagem.\nSe voc\u00ea estiver utilizando essa lib em uma API, voc\u00ea precisar\u00e1 transformar seu arquivo PDF em BytesIO.\n\n```python\nimport io\n\nwith open('path to your pdf file', 'rb') as f:\n content = io.BytesIO(f.read())\n content.seek(0)\n```\n\nO conte\u00fado da sua nota de corretagem estar\u00e1 na vari\u00e1vel `content` e \u00e9 ela quem iremos usar para inicializar a nossa lib.\nSe a sua nota de corretagem possuir senha, voc\u00ea precisar\u00e1 informar tamb\u00e9m, caso contr\u00e1rio o parser n\u00e2o ir\u00e1 funcionar.\n\n```python\nimport io\n\nfrom correpy.parsers.brokerage_notes.b3_parser.b3_parser import B3Parser\n\nwith open('path to your pdf file', 'rb') as f:\n content = io.BytesIO(f.read())\n content.seek(0)\n \n brokerage_notes = B3Parser(brokerage_note=content, password=\"password\").parse_brokerage_note()\n```\n\n### Resultado\nDepois de efetuar o parser da sua nota de corretagem, `correpy` ir\u00e1 retornar uma lista no formato abaixo. Os valores de cada campo ser\u00e3o explicados em seguida.\n\n```python\n[\n BrokerageNote(\n reference_date=date(2022, 5, 2),\n settlement_fee=Decimal(\"7.92\"),\n registration_fee=Decimal(\"0\"),\n term_fee=Decimal(\"0\"),\n ana_fee=Decimal(\"0\"),\n emoluments=Decimal(\"1.58\"),\n operational_fee=Decimal(\"0\"),\n execution=Decimal(\"0\"),\n custody_fee=Decimal(\"0\"),\n taxes=Decimal(\"0\"),\n others=Decimal(\"0\"),\n transactions=[\n Transaction(\n transaction_type=TransactionType.SELL,\n amount=54,\n unit_price=Decimal('24.99'),\n security=Security(\n name='BBSEGURIDADE ON NM'\n )\n ),\n Transaction(\n transaction_type=TransactionType.BUY,\n amount=200,\n unit_price=Decimal('17.29'),\n security=Security(\n name='MOVIDA ON NM'\n )\n )\n ]\n )\n]\n```\n\n### Descri\u00e7\u00e3o das entidades\nAbaixo voc\u00ea pode encontrar a descri\u00e7\u00e3o de cada um dos campos retornados. \n\n#### Brokerage Note\n\n| BrokerageNote | |\n|-----------------------|-------------------------------------|\n| reference_id | N\u00famero da nota |\n| reference_date | Data do preg\u00e3o |\n| settlement_fee | Taxa de liquida\u00e7\u00e3o |\n| registration_fee | Taxa de registro |\n| term_fee | Taxa de termo/op\u00e7\u00f5es |\n| ana_fee | Taxa A.N.A |\n| emoluments | Emolumentos |\n| operational_fee | Taxa Operacional |\n| execution | Execu\u00e7\u00e3o |\n| custody_fee | Taxa de cust\u00f3dia |\n| source_withheld_taxes | IRRF |\n| taxes | Impostos |\n| others | Outros |\n| transactions | Lista de [transa\u00e7\u00f5es](#transaction) |\n\n#### Transaction\n\n| Transaction | |\n|----------------------|------------------------------------------------------------|\n| transaction_type | Enum com o tipo de transa\u00e7\u00e3o (BUY - compra, SELL - venda) |\n| amount | Quantidade |\n| unit_price | Valor unit\u00e1rio |\n| security | Objeto [Security](#security) representando um t\u00edtulo |\n| source_witheld_taxes | IRRF retido na fonte (0.005% sobre o valor total de venda) |\n\n#### Security\n| Security | |\n|----------|-------------------------|\n| name | Especifica\u00e7\u00e3o do t\u00edtulo |\n\n\n## Como contribuir\nEstamos utilizando poetry para gerenciar o projeto e suas dependencias.\n\nEste projeto ainda est\u00e1 em evolu\u00e7\u00e3o e qualquer PR \u00e9 bem vindo. Algumas ferramentas est\u00e3o sendo utilizadas para melhorar a qualidade do c\u00f3digo:\n\n1. MyPy para checagem est\u00e1tica de tipos\n2. PyLint\n3. Black\n4. isort\n\nPara verificar se o seu c\u00f3digo continua de acordo com os crit\u00e9rios definidos, basta rodar `./pipeline/lint.sh`.\n",
"bugtrack_url": null,
"license": "Apache-2.0",
"summary": "CorrePy (Corretagem Python) \u00e9 uma lib respons\u00e1vel por parsear notas de corretagem no padr\u00e3o B3 (Sinacor) e retornar os dados no formato JSON.",
"version": "0.4.1",
"project_urls": {
"Homepage": "https://github.com/thiagosalvatore/correpy",
"Repository": "https://github.com/thiagosalvatore/correpy"
},
"split_keywords": [
"corretagem",
" parser",
" b3",
" nota de corretagem",
" imposto de renda"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "29a4c2f7be73264722c4d30eed7ef003a026613dec0c9453188d4f274910d116",
"md5": "fcc480b702fb513423e114127afacd64",
"sha256": "545b674b491cf684a0be0f59570397ded6d0d76a584744145b0ef7a8c51c4884"
},
"downloads": -1,
"filename": "correpy-0.4.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "fcc480b702fb513423e114127afacd64",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.8",
"size": 23028,
"upload_time": "2024-04-26T20:12:28",
"upload_time_iso_8601": "2024-04-26T20:12:28.545296Z",
"url": "https://files.pythonhosted.org/packages/29/a4/c2f7be73264722c4d30eed7ef003a026613dec0c9453188d4f274910d116/correpy-0.4.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "d14a639b23fcc56ac1c7b25b1dc0c107608d4c35d2e79401006d4d11d367c18a",
"md5": "ad11ba761a932fe79b1f995d6d8ee385",
"sha256": "89217a0b0c3e4b3838caddd75cfdfcf99e6dac2808b3b01939e8fc0f22bb7179"
},
"downloads": -1,
"filename": "correpy-0.4.1.tar.gz",
"has_sig": false,
"md5_digest": "ad11ba761a932fe79b1f995d6d8ee385",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.8",
"size": 15733,
"upload_time": "2024-04-26T20:12:30",
"upload_time_iso_8601": "2024-04-26T20:12:30.306459Z",
"url": "https://files.pythonhosted.org/packages/d1/4a/639b23fcc56ac1c7b25b1dc0c107608d4c35d2e79401006d4d11d367c18a/correpy-0.4.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-04-26 20:12:30",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "thiagosalvatore",
"github_project": "correpy",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"circle": true,
"lcname": "correpy"
}