Início
Configuração
Como o sistema de configuração do Arc DevKit funciona.
Como funciona
O módulo arc_devkit/config.py é o ponto central de configuração. Ele:
- Carrega o arquivo
.envviapython-dotenvna importação - Valida que
ANTHROPIC_API_KEY(quandoCOPILOT_PROVIDER=anthropic, o padrão) eARC_RPC_URLsejam resolvíveis - Expõe um singleton
settingsimportável por todos os módulos
from arc_devkit.config import settings
print(settings.arc_network) # mainnet (padrão do SDK)
print(settings.arc_rpc_url) # https://rpc.mainnet.arc.io
print(settings.arc_chain_id) # 5042
print(settings.anthropic_model) # claude-sonnet-4-6
⚠Erro na importação
Se ANTHROPIC_API_KEY (para o provedor ativo) ou ARC_RPC_URL não puderem ser resolvidos, config.py lança EnvironmentError imediatamente ao ser importado.
Em testes, defina as variáveis antes de importar qualquer módulo do arc_devkit.
Settings dataclass
| Atributo | Env var | Tipo | Padrão |
|---|---|---|---|
anthropic_api_key | ANTHROPIC_API_KEY | str | — (obrigatória se copilot_provider="anthropic") |
copilot_provider | COPILOT_PROVIDER | str | "anthropic" |
gemini_api_key / gemini_model | GEMINI_API_KEY / GEMINI_MODEL | str | None | None |
openai_api_key / openai_model | OPENAI_API_KEY / OPENAI_MODEL | str | None | None |
ollama_base_url / ollama_model | OLLAMA_BASE_URL / OLLAMA_MODEL | str / str | None | "http://localhost:11434" / None |
arc_rpc_url | ARC_RPC_URL | str | default da rede (mainnet/testnet) |
arc_private_key | ARC_PRIVATE_KEY | str | None | None |
anthropic_model | ANTHROPIC_MODEL | str | claude-sonnet-4-6 |
arc_chain_id | ARC_CHAIN_ID | int | default da rede (5042 mainnet / 5042002 testnet) |
log_level | LOG_LEVEL | str | INFO |
api_key | API_KEY | str | None | None |
arc_network | ARC_NETWORK | str | "mainnet" |
cctp_attestation_api_url | CCTP_ATTESTATION_API_URL | str | None | None |
arc_llms_txt_url | ARC_LLMS_TXT_URL | str | None | None |
✦ARC_NETWORK não quebra .env existentes
ARC_NETWORK seleciona os defaults de RPC/chain ID/contratos de arc_devkit/networks.py — tanto mainnet quanto testnet já vêm totalmente configurados com valores oficiais (veja Redes). ARC_RPC_URL/ARC_CHAIN_ID, se definidos, sempre têm prioridade. O config.py nunca cai silenciosamente no chain ID de outra rede — se não conseguir resolver, lança um erro claro.
Configurando em testes
O conftest.py define as variáveis antes de qualquer importação do pacote — os testes fixam ARC_NETWORK=testnet explicitamente para determinismo, independente do default de mainnet do próprio SDK:
# tests/conftest.py
import os
os.environ.setdefault("ANTHROPIC_API_KEY", "test-key")
os.environ.setdefault("ARC_NETWORK", "testnet")
os.environ.setdefault("ARC_RPC_URL", "https://rpc.testnet.arc.io")
Testes de integração (que fazem chamadas reais) são marcados com @pytest.mark.integration e ignorados por padrão:
# Rodar apenas unit tests (padrão)
pytest
# Rodar testes de integração (requer chaves reais)
pytest -m integration
Conexão web3
core/connection.py cria uma instância web3 com o middleware necessário para o modelo de validadores permissionado da Arc (mainnet e testnet):
from arc_devkit.core.connection import get_web3
w3 = get_web3()
print(w3.eth.chain_id) # 5042 (mainnet) ou 5042002 (testnet), conforme ARC_NETWORK
O ExtraDataToPOAMiddleware é injetado automaticamente — obrigatório para chains no estilo proof-of-authority como a Arc.
✦get_web3() não é cacheado
A função get_web3() cria uma nova instância a cada chamada. Isso evita problemas de estado em ambientes multi-thread, mas você pode cachear localmente se precisar de performance.