Hsiao-Wei Wang f1aabcd718
Refactor setup.py (#3393)
* Refactor setup.py

* Update doc with the new file path

* Rearrange spec_builders

* Update doc
2023-06-26 18:01:56 +08:00

53 lines
1.3 KiB
Python

from abc import ABC, abstractmethod
from typing import Sequence, Dict
from pathlib import Path
class BaseSpecBuilder(ABC):
@property
@abstractmethod
def fork(self) -> str:
raise NotImplementedError()
@classmethod
def imports(cls, preset_name: str) -> str:
"""
Import objects from other libraries.
"""
return ""
@classmethod
def preparations(cls) -> str:
"""
Define special types/constants for building pyspec or call functions.
"""
return ""
@classmethod
def sundry_functions(cls) -> str:
"""
The functions that are (1) defined abstractly in specs or (2) adjusted for getting better performance.
"""
return ""
@classmethod
def execution_engine_cls(cls) -> str:
return ""
@classmethod
def hardcoded_ssz_dep_constants(cls) -> Dict[str, str]:
"""
The constants that are required for SSZ objects.
"""
return {}
@classmethod
def hardcoded_custom_type_dep_constants(cls, spec_object) -> Dict[str, str]: # TODO
"""
The constants that are required for custom types.
"""
return {}
@classmethod
def implement_optimizations(cls, functions: Dict[str, str]) -> Dict[str, str]:
return functions