PureVersation / config.py
GitHub Actions
🚀 Automated sync from GitHub
d0f54c1
import os
import json
from dotenv import load_dotenv
# Load environment variables
load_dotenv()
# Try Loading Keys (Colab support)
try:
from google.colab import userdata
COLAB_HF_TOKEN = userdata.get('HF_TOKEN')
COLAB_GOOGLE_KEY = userdata.get('GOOGLE_API_KEY')
COLAB_PINATA = userdata.get('PINATA_JWT')
except (ImportError, Exception):
COLAB_HF_TOKEN, COLAB_GOOGLE_KEY, COLAB_PINATA = None, None, None
class AppConfig:
# ==========================================
# ⛓️ BLOCKCHAIN & WEB3 SECRETS
# ==========================================
PRIVATE_KEY = os.environ.get("PRIVATE_KEY")
PURECHAIN_RPC_URL = os.environ.get("PURECHAIN_RPC_URL", "http://3.34.161.207:8548")
PURECHAIN_CONTRACT_ADDRESS = os.environ.get("PURECHAIN_CONTRACT_ADDRESS")
# Legacy Contract Addresses for History Recovery
PURECHAIN_CONTRACT_ADDRESS_PUREVERSATION = os.environ.get("PURECHAIN_CONTRACT_ADDRESS_PUREVERSATION") or os.environ.get("PURECHAIN_CONTRACT_ADDRESS_PureVersation")
PURECHAIN_CONTRACT_ADDRESS_PURECONVO = os.environ.get("PURECHAIN_CONTRACT_ADDRESS_PURECONVO") or os.environ.get("PURECHAIN_CONTRACT_ADDRESS_PureConvo")
PURECHAIN_CONTRACT_ADDRESS_PUREIUUY = os.environ.get("PURECHAIN_CONTRACT_ADDRESS_PUREIUUY") or os.environ.get("PURECHAIN_CONTRACT_ADDRESS_PureIUUY", "0x0a735C97EBd5c645D6B641cBE976FDB26710bAdf")
CHAIN_ID = int(os.environ.get("PURECHAIN_CHAIN_ID", 900520900520))
# ==========================================
# 🧠 AI & CLOUD STORAGE SECRETS
# ==========================================
GOOGLE_API_KEY = os.environ.get("GOOGLE_API_KEY")
PINATA_JWT = os.environ.get("PINATA_JWT")
HF_TOKEN = os.environ.get("HF_TOKEN")
GROQ_API_KEY = os.environ.get("GROQ_API_KEY")
# ==========================================
# 📂 DIRECTORY CONFIGURATION
# ==========================================
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
DATASET_DIR = os.environ.get("DATASET_DIR", os.path.join(BASE_DIR, "IEDID"))
PROFILES_DIR = os.environ.get("PROFILES_DIR", os.path.join(BASE_DIR, "lab_profiles"))
# --- REPO SETTINGS ---
HF_REPO_ID = "toecm/IEDID"
@classmethod
def setup_directories(cls):
os.makedirs(cls.DATASET_DIR, exist_ok=True)
os.makedirs(cls.PROFILES_DIR, exist_ok=True)
print("📂 Directories Ready:")
print(f" - {cls.DATASET_DIR}")
print(f" - {cls.PROFILES_DIR}")
# --- DYNAMIC ABI LOAD ---
@property
def CONTRACT_ABI(self):
return AppConfig.get_dynamic_abi()
@classmethod
def get_dynamic_abi(cls):
try:
from src.dynamic_compiler import get_contract_interface
abi, _ = get_contract_interface()
return abi
except Exception as e:
print(f"⚠️ Dynamic ABI load failed: {e}")
return []
# For backward compatibility where code uses AppConfig.CONTRACT_ABI directly
# we can initialize it here:
try:
from src.dynamic_compiler import get_contract_interface
AppConfig.CONTRACT_ABI, _ = get_contract_interface()
except Exception as e:
print(f"⚠️ Startup compilation failed: {e}")
AppConfig.CONTRACT_ABI = []