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_KEYeARC_RPC_URLestão presentes - Expõe um singleton
settingsimportável por todos os módulos
from arc_devkit.config import settings
print(settings.arc_rpc_url) # https://arc-testnet.drpc.org
print(settings.arc_chain_id) # 5042002
print(settings.anthropic_model) # claude-sonnet-4-6
⚠Erro na importação
Se ANTHROPIC_API_KEY ou ARC_RPC_URL não estiverem definidas, 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 | — |
arc_rpc_url | ARC_RPC_URL | str | — |
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 | 5042002 |
log_level | LOG_LEVEL | str | INFO |
api_key | API_KEY | str | None | None |
Configurando em testes
O conftest.py define as variáveis antes de qualquer importação do pacote:
# tests/conftest.py
import os
os.environ.setdefault("ANTHROPIC_API_KEY", "test-key")
os.environ.setdefault("ARC_RPC_URL", "https://arc-testnet.drpc.org")
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 a Arc testnet:
from arc_devkit.core.connection import get_web3
w3 = get_web3()
print(w3.eth.chain_id) # 5042002
O ExtraDataToPOAMiddleware é injetado automaticamente — obrigatório para chains proof-of-authority como a Arc testnet.
✦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.