SDK Python para Ampere Core (hexagonal: domain/application/infrastructure).
Project description
ampere-core-sdk
SDK Python (3.12+) para consumir a API Ampere Core.
DEVs
Sempre que iniciar o desenvolvimento rode
uv sync --dev
uv run pre-commit install
uv run pre-commit install --hook-type pre-push
uv run pre-commit install --hook-type pre-commit
# Teste inicial
uv run pre-commit run --all-files
Uso
1) Instalação
Via pip
pip install ampere-core-sdk
Via uv
uv add ampere-core-sdk
2) Conceitos
-
A API usa tokens (access_token + refresh_token) com expiração.
-
No login, o campo
passworddeve ser enviado codificado (SHA-256 + base64url sem padding). -
O SDK tem:
AuthHttpAdapter/AsyncAuthHttpAdapter→ fazloginerefresh.TokenManager→ garante token válido (login/refresh sob demanda) e usa uma TokenStore (memória/arquivo/sua implementação).- Config HTTP com suporte a proxy e debug detalhado.
3) Configuração mínima (variáveis de ambiente)
Os exemplos e este README usam estas env vars:
AMPERE_BASE_URL- A URL sempre será https://core.ampereconsultoria.com.br, apenas em casos de debug e testes que a URL pode ser alterada sob orientação da equipe de TI da Ampere Consultoria.AMPERE_USERNAMEAMPERE_PASSWORD(senha crua; o exemplo transforma para o formato exigido)
Linux/macOS:
export AMPERE_BASE_URL="https://core.ampereconsultoria.com.br"
export AMPERE_USERNAME="seu-user"
export AMPERE_PASSWORD="sua-senha"
Windows (PowerShell):
$env:AMPERE_BASE_URL = "https://core.ampereconsultoria.com.br"
$env:AMPERE_USERNAME = "seu-user"
$env:AMPERE_PASSWORD = "sua-senha"
4) Uso
4.1 Login + Refresh (sync)
from ampere_core.config import AmpereCoreConfig
from ampere_core.infrastructure.iam.http import AuthHttpAdapter
from ampere_core.domain.iam.security.password_encoding import sha256_base64url
cfg = AmpereCoreConfig(base_url="https://core.ampereconsultoria.com.br")
auth = AuthHttpAdapter(config=cfg)
pair = auth.login(username="users", password=sha256_base64url("senha-crua"))
print(pair.expires_at)
pair2 = auth.refresh(refresh_token=pair.refresh_token)
print(pair2.expires_at)
4.2 TokenManager (refresh automático sob demanda)
O TokenManager é o modo recomendado: ele chama login/refresh quando precisa.
from ampere_core.application.iam.services import Credentials, TokenManager
from ampere_core.config import AmpereCoreConfig
from ampere_core.infrastructure.iam.http import AuthHttpAdapter
from ampere_core.infrastructure.iam.mock.in_memory_token_store import InMemoryTokenStore
from ampere_core.domain.iam.security.password_encoding import sha256_base64url
cfg = AmpereCoreConfig(base_url="https://core.ampereconsultoria.com.br")
auth_api = AuthHttpAdapter(config=cfg)
store = InMemoryTokenStore()
creds = Credentials(username="users", password=sha256_base64url("senha-crua"))
manager = TokenManager(auth_api=auth_api, store=store, credentials=creds)
headers = manager.auth_header() # {"Authorization": "Bearer ..."}
print(headers)
5) Proxy corporativo
5.1 Via variáveis de ambiente (mais comum em empresas)
export HTTPS_PROXY="http://usuario:senha@proxy.empresa:3128"
export HTTP_PROXY="http://usuario:senha@proxy.empresa:3128"
export NO_PROXY="localhost,127.0.0.1,.empresa"
Por padrão trust_env=True, então funciona sem mudar código.
5.2 Proxy explícito no config
from ampere_core.config import AmpereCoreConfig, HttpClientOptions
cfg = AmpereCoreConfig(
base_url="https://core.ampereconsultoria.com.br",
http=HttpClientOptions(proxy="http://proxy.empresa:3128", trust_env=False),
)
6) Debug detalhado (sem vazar tokens)
O SDK tem logs HTTP no logger ampere_core.http com redaction de headers sensíveis.
import logging
from ampere_core.config import AmpereCoreConfig, HttpClientOptions, HttpDebugOptions
from ampere_core.infrastructure.iam.http import AuthHttpAdapter
logging.basicConfig(level=logging.DEBUG)
logging.getLogger("ampere_core.http").setLevel(logging.DEBUG)
cfg = AmpereCoreConfig(
base_url="https://core.ampereconsultoria.com.br",
http=HttpClientOptions(
debug=HttpDebugOptions(
enabled=True,
log_request_headers=True,
log_request_body=False,
log_response_headers=True,
log_response_body=True,
max_body_chars=2000,
)
),
)
auth = AuthHttpAdapter(config=cfg)
7) Cliente httpx customizado (quando a empresa exige algo especial)
Se você precisa de CA corporativa, mTLS, proxy diferente, timeouts, transport custom, etc:
import httpx
from ampere_core.config import AmpereCoreConfig
from ampere_core.infrastructure.iam.http import AuthHttpAdapter
cfg = AmpereCoreConfig(base_url="https://core.ampereconsultoria.com.br")
with httpx.Client(
base_url=cfg.base_url,
timeout=cfg.timeout_seconds,
trust_env=True,
# verify="/path/ca_bundle.pem",
# proxy="http://proxy.empresa:3128",
) as client:
auth = AuthHttpAdapter(config=cfg, client=client)
8) Rodando os exemplos do repositório
uv run python examples/_01_auth_sync_basic.py
uv run python examples/_04_auth_sync_debug.py
uv run python examples/_06_token_manager_memory.py
uv run python examples/_08_auth_async_basic.py
8.1 Exemplos de Módulos (Nuvem, DI, etc)
# Cloud Manager
uv run python examples/cloud/_01_list_authentications.py
# Data Ingestion (DI)
uv run python examples/di/_00_create_json.py
# Dimensions
uv run python examples/dimensions/_01_list_dimensions.py
9) Documentação adicional
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ampere_core_sdk-0.1.1.tar.gz.
File metadata
- Download URL: ampere_core_sdk-0.1.1.tar.gz
- Upload date:
- Size: 47.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.13 {"installer":{"name":"uv","version":"0.11.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8db55086d3a4cf8000a9b46932a5bea0d1a3bac06595326e4147a96b570812e3
|
|
| MD5 |
fe25d8cb6bb40d156a4050efe6766004
|
|
| BLAKE2b-256 |
688cad34b538d1aea9f01624a04108929196b1c64df979d76eb10b46e0fe05d9
|
File details
Details for the file ampere_core_sdk-0.1.1-py3-none-any.whl.
File metadata
- Download URL: ampere_core_sdk-0.1.1-py3-none-any.whl
- Upload date:
- Size: 100.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.13 {"installer":{"name":"uv","version":"0.11.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
39afbc2d3130eaaf55b28caf6926e55fbb2a2ef6ff44797d6d6101930b9d15b3
|
|
| MD5 |
bfdc84f55d5bbca1c9aaaef213a12ce4
|
|
| BLAKE2b-256 |
de072c66669e0c86f8de5d0125098cdd6877a1c1470c1f5b8ac96adecc62224a
|