Skip to main content

SDK Python para Ampere Core (hexagonal: domain/application/infrastructure).

Project description

ampere-core-sdk

pipeline status coverage report latest release

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 password deve ser enviado codificado (SHA-256 + base64url sem padding).

  • O SDK tem:

    • AuthHttpAdapter / AsyncAuthHttpAdapter → faz login e refresh.
    • 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_USERNAME
  • AMPERE_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

Autenticação e Tokens

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

ampere_core_sdk-0.1.1.tar.gz (47.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ampere_core_sdk-0.1.1-py3-none-any.whl (100.4 kB view details)

Uploaded Python 3

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

Hashes for ampere_core_sdk-0.1.1.tar.gz
Algorithm Hash digest
SHA256 8db55086d3a4cf8000a9b46932a5bea0d1a3bac06595326e4147a96b570812e3
MD5 fe25d8cb6bb40d156a4050efe6766004
BLAKE2b-256 688cad34b538d1aea9f01624a04108929196b1c64df979d76eb10b46e0fe05d9

See more details on using hashes here.

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

Hashes for ampere_core_sdk-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 39afbc2d3130eaaf55b28caf6926e55fbb2a2ef6ff44797d6d6101930b9d15b3
MD5 bfdc84f55d5bbca1c9aaaef213a12ce4
BLAKE2b-256 de072c66669e0c86f8de5d0125098cdd6877a1c1470c1f5b8ac96adecc62224a

See more details on using hashes here.

Supported by

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