Source code for verbs_examples.utils.sol_compiler
import json
import os
from solcx import compile_files, install_solc
[docs]
def compile_file(sol_file_path: str):
    """
    Compiles the solidity file in `sol_file_path` and saves
    the bytecode and the abi and the same path as the `sol_file_path`
    """
    install_solc(version="0.8.10")
    compiled_sol = compile_files(
        [sol_file_path], output_values=["abi", "bin"], solc_version="0.8.10"
    )
    contract_id, contract_interface = compiled_sol.popitem()
    dirname, contract_name = os.path.split(sol_file_path)
    contract_name = os.path.splitext(contract_name)[0]
    abi = contract_interface["abi"]
    bytecode = contract_interface["bin"]
    with open(os.path.join(dirname, contract_name + ".json"), "w") as f:
        json.dump({"bytecode": "0x" + bytecode}, f, indent=4)
    with open(os.path.join(dirname, contract_name + ".abi"), "w") as f:
        json.dump(abi, f)