Metadata-Version: 2.4
Name: iptuapi
Version: 1.2.0
Summary: SDK oficial para a IPTU API - Dados de IPTU de São Paulo, Belo Horizonte e Recife
Author-email: IPTU API <contato@iptuapi.com.br>
License: MIT
Project-URL: Homepage, https://iptuapi.com.br
Project-URL: Documentation, https://iptuapi.com.br/docs
Project-URL: Repository, https://github.com/iptuapi/iptuapi-python
Keywords: iptu,api,são paulo,belo horizonte,recife,imóveis,dados
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.9
Description-Content-Type: text/markdown
Requires-Dist: requests>=2.28.0

# IPTU API - Python SDK

SDK oficial para integração com a IPTU API - Dados de IPTU de São Paulo e Belo Horizonte.

## Instalação

```bash
pip install iptuapi
```

## Cidades Suportadas

| Cidade | Código | Identificador |
|--------|--------|---------------|
| São Paulo | `sao_paulo` | Número SQL |
| Belo Horizonte | `belo_horizonte` | Índice Cadastral |

## Uso Rápido

```python
from iptuapi import IPTUClient

client = IPTUClient("sua_api_key")

# Consulta por endereço (São Paulo - endpoint legado)
resultado = client.consulta_endereco("Avenida Paulista", "1000")
print(resultado)

# Consulta por SQL (Starter+)
dados = client.consulta_sql("100-01-001-001")
```

## Consulta Multi-Cidade (Novo!)

```python
from iptuapi import IPTUClient

client = IPTUClient("sua_api_key")

# São Paulo - busca por endereço
resultados = client.consulta_iptu("sao_paulo", "Avenida Paulista", numero=1000, ano=2024)
for imovel in resultados:
    print(f"SQL: {imovel['sql']}, Valor Venal: R$ {imovel['valor_venal']:,.2f}")

# Belo Horizonte - busca por endereço
resultados = client.consulta_iptu("belo_horizonte", "Afonso Pena", ano=2024)
for imovel in resultados:
    print(f"Índice: {imovel['sql']}, Valor Venal: R$ {imovel['valor_venal']:,.2f}")

# Busca por identificador único
# São Paulo (SQL)
dados = client.consulta_iptu_sql("sao_paulo", "00904801381")

# Belo Horizonte (Índice Cadastral)
dados = client.consulta_iptu_sql("belo_horizonte", "007028 005 0086")
```

## Avaliação de Mercado (Pro+)

```python
avaliacao = client.valuation_estimate(
    area_terreno=250,
    area_construida=180,
    bairro="Pinheiros",
    zona="ZM",
    tipo_uso="Residencial",
    tipo_padrao="Médio",
    ano_construcao=2010
)
print(f"Valor estimado: R$ {avaliacao['valor_estimado']:,.2f}")
```

## Context Manager

```python
with IPTUClient("sua_api_key") as client:
    resultado = client.consulta_iptu("sao_paulo", "Avenida Paulista")
```

## Tratamento de Erros

```python
from iptuapi import IPTUClient, NotFoundError, RateLimitError, ValidationError

client = IPTUClient("sua_api_key")

try:
    resultado = client.consulta_iptu("cidade_invalida", "Rua Teste")
except ValidationError as e:
    print(f"Cidade não suportada: {e}")
except NotFoundError:
    print("Imóvel não encontrado")
except RateLimitError:
    print("Limite de requisições excedido")
```

## Documentação

Acesse a documentação completa em [iptuapi.com.br/docs](https://iptuapi.com.br/docs)
