Skip to main content

Siscomex-NCM

PyPI pyversions CI

Uma biblioteca Python para acessar e consultar dados da Nomenclatura Comum do Mercosul (NCM) a partir da API do Siscomex.

Sobre a NCM

A Nomenclatura Comum do Mercosul (NCM) é o sistema padronizado de códigos utilizado para classificar mercadorias e produtos em operações comerciais no Mercosul. Toda mercadoria que circula no Brasil deve ter um código NCM associado, que deve ser informado nas notas fiscais e documentos de comércio exterior.

O sistema foi adotado pelos países do Mercosul desde janeiro de 1995 e baseia-se no Sistema Harmonizado de Designação e de Codificação de Mercadorias (SH). No mercado interno brasileiro, seu uso é obrigatório desde 2013.

Estrutura do código NCM

O código NCM segue a estrutura 0000.00.00, um código de oito dígitos em que:

Posição Componente Descrição
1º e 2º Capítulo Caracterização básica do produto
3º e 4º Posição Características gerais do produto
5º e 6º Subposição Subcategoria do produto
Item Classificação específica
Subitem Descrição detalhada da mercadoria

Exemplo:
Código NCM: 4820.20.00 - Cadernos

  • Capítulo 48: Papel e cartão; obras de pasta de celulose, de papel ou de cartão.
  • Posição 48.20: Livros de registro, blocos de notas, cadernos, etc.
  • Subposição 4820.20: Cadernos

Instalação

Via PyPI (recomendado)

pip install siscomex-ncm

A partir do código-fonte

# 1. Clone o repositório
git clone https://github.com/leogregianin/siscomex-ncm.git
cd siscomex-ncm

# 2. Instale o poetry (se ainda não estiver instalado)
# https://python-poetry.org/docs/#installation

# 3. Instale as dependências
poetry install

Uso Básico

Importar a biblioteca

from ncm.client import FetchNcm
from ncm.entities import Ncm, NcmList

Consultar código NCM específico

# Inicializa o cliente (carrega automaticamente os dados do cache ou da API)
fetch_ncm = FetchNcm()

# Consulta um código NCM específico
ncm = fetch_ncm.get_codigo_ncm('01031000')
print(ncm.codigo_ncm)      # '01031000'
print(ncm.descricao_ncm)   # '- Reprodutores de raça pura'
print(ncm.data_inicio)     # datetime object
print(ncm.tipo_ato)        # Tipo do ato normativo

Consultar lista de NCMs

# Obter todos os códigos NCM
ncm_list = fetch_ncm.get_all()
print(len(ncm_list.ncm_list))  # Quantidade de códigos

# Obter apenas códigos NCM com 8 dígitos
ncm_list_8_digits = fetch_ncm.get_all(only_ncm_8_digits=True)

# Iterar sobre os resultados
for ncm in ncm_list_8_digits.ncm_list:
    print(f"{ncm.codigo_ncm}: {ncm.descricao_ncm}")

Gerenciar o cache de dados

# Atualizar os dados forçadamente (ignorando o cache)
fetch_ncm = FetchNcm()
fetch_ncm.refresh_data()

# A classe FetchNcm gerencia automaticamente o cache:
# - Armazena os dados em um arquivo local (ncm.json)
# - Valida a data do cache (expira após 7 dias)
# - Verifica a integridade do arquivo

Funcionalidades Avançadas

Tratamento de erros

from ncm.exceptions import NcmDownloadException

try:
    fetch_ncm = FetchNcm()
    ncm = fetch_ncm.get_codigo_ncm('01031000')
except NcmDownloadException as e:
    print(f"Erro ao baixar dados da API: {e}")

Performance otimizada

A biblioteca implementa diversas otimizações:

  • Índice interno para busca rápida por código NCM
  • Cache de consultas com lru_cache para operações repetidas
  • Expiração automática do cache (7 dias por padrão)
  • Tratamento de conexão com timeout e retentativas

Desenvolvimento

Executar os testes

make test

Contribuir

  1. Faça um fork do projeto
  2. Crie uma branch para sua feature (git checkout -b feature/nova-funcionalidade)
  3. Implemente suas mudanças e adicione testes
  4. Commite suas alterações (git commit -m 'Adiciona nova funcionalidade')
  5. Envie para o GitHub (git push origin feature/nova-funcionalidade)
  6. Abra um Pull Request

Licença

Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para mais detalhes.

Release files for siscomex-ncm 1.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for siscomex-ncm 1.0.2
File Size Uploaded
siscomex_ncm-1.0.2.tar.gz 5.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for siscomex-ncm 1.0.2
File Interpreter ABI Platform
siscomex_ncm-1.0.2-py3-none-any.whl Python 3 none any Details

Total release size:12.9 kB

Release files / siscomex_ncm-1.0.2.tar.gz

Download URL siscomex_ncm-1.0.2.tar.gz
Size 5.9 kB
Tags Source
SHA-256 checksum
How to use checksums
ef4c9a09ded052d3a1d38cbb0a9214969c2978c01060bcc2d68330098fef653e
BLAKE2b-256 checksum
How to use checksums
fa53533be3d1d0d57a2428b0039f8596dc4f5869ea963608f649eee0ac5ed8ad
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 7, 2025.

Transparency log

Release files / siscomex_ncm-1.0.2-py3-none-any.whl

Download URL siscomex_ncm-1.0.2-py3-none-any.whl
Size 7.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
995feb5150027fcf95e44984a5dfac937d98c5e69aa68dbd70767c66947d3e88
BLAKE2b-256 checksum
How to use checksums
0317fbb17008ed2d94455154afc7b937341881ef879bf020a86054408786e464
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 7, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

1.0.2 This release

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page