Source code for pragma_sdk.onchain.abis.abi

import json
import os
import re
from pathlib import Path

from starknet_py.common import create_sierra_compiled_contract

BUILD_DIR = Path(os.path.dirname(__file__))


[docs] def snakecase(string): """ Taken from: https://github.com/lidatong/dataclasses-json/blob/master/dataclasses_json/stringcase.py Convert string into snake case. Join punctuation with underscore Args: string: String to convert. Returns: string: Snake cased string. """ string = re.sub(r"[\-\.\s]", "_", str(string)) if not string: return string return (string[0].lower()) + re.sub( r"[A-Z0-9]", lambda matched: "_" + matched.group(0).lower(), string[1:] )
[docs] def get_artifact(contract_name): return BUILD_DIR / f"{contract_name}.json"
[docs] def get_alias(contract_name): return snakecase(contract_name)
[docs] def get_sierra_artifact(contract_name): return BUILD_DIR / f"{contract_name}.sierra.json"
[docs] def get_casm_artifact(contract_name): return BUILD_DIR / f"{contract_name}.casm.json"
[docs] def get_abi(contract_name): sierra_artifact = get_sierra_artifact(contract_name) contract_compiled_sierra = Path(sierra_artifact).read_text(encoding="utf-8") return create_sierra_compiled_contract( compiled_contract=contract_compiled_sierra ).abi
CONTRACTS_NAMES = [ # "pragma_Ownable", "pragma_Oracle", "pragma_PublisherRegistry", "pragma_SummaryStats", "pragma_YieldCurve", "pragma_Randomness", "pragma_ExampleRandomness", ] ABIS = { contract_name: json.loads(get_abi(contract_name)) for contract_name in CONTRACTS_NAMES }
[docs] def get_erc20_abi(): with open(BUILD_DIR / "pragma_ERC20.json", "r", encoding="UTF-8") as file: erc20_abi = json.load(file) return erc20_abi