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:

  1. Carrega o arquivo .env via python-dotenv na importação
  2. Valida que ANTHROPIC_API_KEY e ARC_RPC_URL estão presentes
  3. Expõe um singleton settings importá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

AtributoEnv varTipoPadrão
anthropic_api_keyANTHROPIC_API_KEYstr
arc_rpc_urlARC_RPC_URLstr
arc_private_keyARC_PRIVATE_KEYstr | NoneNone
anthropic_modelANTHROPIC_MODELstrclaude-sonnet-4-6
arc_chain_idARC_CHAIN_IDint5042002
log_levelLOG_LEVELstrINFO
api_keyAPI_KEYstr | NoneNone

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.