Skip to content

Commit 061cbb7

Browse files
committed
scripts: hwmv2: cache pykwalify validators
speed up the various list_*.py scripts by means of caching the pykwalify core object so that schemas don't get unnecessarily processed multiple times. Signed-off-by: Benjamin Cabé <[email protected]>
1 parent 24b4ce1 commit 061cbb7

File tree

2 files changed

+12
-4
lines changed

2 files changed

+12
-4
lines changed

scripts/list_boards.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
with open(BOARD_SCHEMA_PATH, 'r') as f:
2525
board_schema = yaml.load(f.read(), Loader=SafeLoader)
2626

27+
BOARD_VALIDATOR = pykwalify.core.Core(schema_data=board_schema, source_data={})
28+
2729
BOARD_YML = 'board.yml'
2830

2931
#
@@ -230,7 +232,8 @@ def load_v2_boards(board_name, board_yml, systems):
230232
b = yaml.load(f.read(), Loader=SafeLoader)
231233

232234
try:
233-
pykwalify.core.Core(source_data=b, schema_data=board_schema).validate()
235+
BOARD_VALIDATOR.source = b
236+
BOARD_VALIDATOR.validate()
234237
except pykwalify.errors.SchemaError as e:
235238
sys.exit('ERROR: Malformed "build" section in file: {}\n{}'
236239
.format(board_yml.as_posix(), e))

scripts/list_hardware.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,14 @@
2222
with open(SOC_SCHEMA_PATH, 'r') as f:
2323
soc_schema = yaml.load(f.read(), Loader=SafeLoader)
2424

25+
SOC_VALIDATOR = pykwalify.core.Core(schema_data=soc_schema, source_data={})
26+
2527
ARCH_SCHEMA_PATH = str(Path(__file__).parent / 'schemas' / 'arch-schema.yml')
2628
with open(ARCH_SCHEMA_PATH, 'r') as f:
2729
arch_schema = yaml.load(f.read(), Loader=SafeLoader)
2830

31+
ARCH_VALIDATOR = pykwalify.core.Core(schema_data=arch_schema, source_data={})
32+
2933
SOC_YML = 'soc.yml'
3034
ARCHS_YML_PATH = PurePath('arch/archs.yml')
3135

@@ -42,8 +46,8 @@ def __init__(self, folder='', soc_yaml=None):
4246

4347
try:
4448
data = yaml.load(soc_yaml, Loader=SafeLoader)
45-
pykwalify.core.Core(source_data=data,
46-
schema_data=soc_schema).validate()
49+
SOC_VALIDATOR.source = data
50+
SOC_VALIDATOR.validate()
4751
except (yaml.YAMLError, pykwalify.errors.SchemaError) as e:
4852
sys.exit(f'ERROR: Malformed yaml {soc_yaml.as_posix()}', e)
4953

@@ -214,7 +218,8 @@ def find_v2_archs(args):
214218
archs = yaml.load(f.read(), Loader=SafeLoader)
215219

216220
try:
217-
pykwalify.core.Core(source_data=archs, schema_data=arch_schema).validate()
221+
ARCH_VALIDATOR.source = archs
222+
ARCH_VALIDATOR.validate()
218223
except pykwalify.errors.SchemaError as e:
219224
sys.exit('ERROR: Malformed "build" section in file: {}\n{}'
220225
.format(archs_yml.as_posix(), e))

0 commit comments

Comments
 (0)