mirror of
https://github.com/status-im/eth2.0-specs.git
synced 2025-02-20 22:38:11 +00:00
update config util to make preset loading optional, update docs
This commit is contained in:
parent
cd494707c4
commit
9030270369
@ -5,16 +5,23 @@ For configuration, see [Configs documentation](../../../../../configs/README.md)
|
||||
## Usage:
|
||||
|
||||
```python
|
||||
configs_path = 'configs/'
|
||||
|
||||
...
|
||||
|
||||
from eth2spec.config import config_util
|
||||
from eth2spec.phase0 import spec
|
||||
from importlib import reload
|
||||
config_util.prepare_config(configs_path, 'mainnet')
|
||||
from pathlib import Path
|
||||
|
||||
# To load the presets and configurations
|
||||
config_util.load_defaults(Path("eth2.0-specs/configs")) # change path to point to equivalent of specs `configs` dir.
|
||||
# After loading the defaults, a config can be chosen: 'mainnet', 'minimal', or custom network config
|
||||
config_util.prepare_config('minimal')
|
||||
# Alternatively, load a custom testnet config:
|
||||
config_util.prepare_config('my_config.yaml')
|
||||
# reload spec to make loaded config effective
|
||||
reload(spec)
|
||||
```
|
||||
|
||||
Note: previously the testnet config files included both preset and runtime-configuration data.
|
||||
The new config loader is compatible with this: just run `prepare_config` without loading preset defaults,
|
||||
and omit the `PRESET_BASE` from the config.
|
||||
|
||||
WARNING: this overwrites globals, make sure to prevent accidental collisions with other usage of the same imported specs package.
|
||||
|
@ -35,14 +35,17 @@ def prepare_config(config_path: Union[Path, BinaryIO, TextIO, Literal['mainnet']
|
||||
conf_data = deepcopy(minimal_config_data)
|
||||
else:
|
||||
conf_data = load_config_file(config_path)
|
||||
# Check the configured preset
|
||||
base = conf_data['PRESET_BASE']
|
||||
if base not in ('minimal', 'mainnet'):
|
||||
raise Exception(f"unknown PRESET_BASE: {base}")
|
||||
# Apply configuration if everything checks out
|
||||
global config
|
||||
config = deepcopy(mainnet_preset_data if base == 'mainnet' else minimal_preset_data)
|
||||
config.update(conf_data)
|
||||
if 'PRESET_BASE' in conf_data:
|
||||
# Check the configured preset
|
||||
base = conf_data['PRESET_BASE']
|
||||
if base not in ('minimal', 'mainnet'):
|
||||
raise Exception(f"unknown PRESET_BASE: {base}")
|
||||
config = deepcopy(mainnet_preset_data if base == 'mainnet' else minimal_preset_data)
|
||||
config.update(conf_data)
|
||||
else:
|
||||
config = conf_data
|
||||
|
||||
|
||||
def parse_config_vars(conf: Dict[str, Any]) -> Dict[str, Any]:
|
||||
|
Loading…
x
Reference in New Issue
Block a user