scripts: Loader change
CSafeLoader used instead of yaml.safe_load and SafeLoader.
C implementation is faster.
Signed-off-by: Lukasz Mrugala <lukaszx.mrugala@intel.com>
diff --git a/scripts/list_boards.py b/scripts/list_boards.py
index b768dd6..6b810d0 100755
--- a/scripts/list_boards.py
+++ b/scripts/list_boards.py
@@ -15,9 +15,14 @@
import list_hardware
from list_hardware import unique_paths
+try:
+ from yaml import CSafeLoader as SafeLoader
+except ImportError:
+ from yaml import SafeLoader
+
BOARD_SCHEMA_PATH = str(Path(__file__).parent / 'schemas' / 'board-schema.yml')
with open(BOARD_SCHEMA_PATH, 'r') as f:
- board_schema = yaml.safe_load(f.read())
+ board_schema = yaml.load(f.read(), Loader=SafeLoader)
BOARD_YML = 'board.yml'
@@ -178,7 +183,7 @@
boards = []
if board_yml.is_file():
with board_yml.open('r') as f:
- b = yaml.safe_load(f.read())
+ b = yaml.load(f.read(), Loader=SafeLoader)
try:
pykwalify.core.Core(source_data=b, schema_data=board_schema).validate()
diff --git a/scripts/list_hardware.py b/scripts/list_hardware.py
index d1f31a4..cdb0e05 100755
--- a/scripts/list_hardware.py
+++ b/scripts/list_hardware.py
@@ -12,14 +12,19 @@
import yaml
import re
+try:
+ from yaml import CSafeLoader as SafeLoader
+except ImportError:
+ from yaml import SafeLoader
+
SOC_SCHEMA_PATH = str(Path(__file__).parent / 'schemas' / 'soc-schema.yml')
with open(SOC_SCHEMA_PATH, 'r') as f:
- soc_schema = yaml.safe_load(f.read())
+ soc_schema = yaml.load(f.read(), Loader=SafeLoader)
ARCH_SCHEMA_PATH = str(Path(__file__).parent / 'schemas' / 'arch-schema.yml')
with open(ARCH_SCHEMA_PATH, 'r') as f:
- arch_schema = yaml.safe_load(f.read())
+ arch_schema = yaml.load(f.read(), Loader=SafeLoader)
SOC_YML = 'soc.yml'
ARCHS_YML_PATH = PurePath('arch/archs.yml')
@@ -35,7 +40,7 @@
return
try:
- data = yaml.safe_load(soc_yaml)
+ data = yaml.load(soc_yaml, Loader=SafeLoader)
pykwalify.core.Core(source_data=data,
schema_data=soc_schema).validate()
except (yaml.YAMLError, pykwalify.errors.SchemaError) as e:
@@ -188,7 +193,7 @@
if Path(archs_yml).is_file():
with Path(archs_yml).open('r') as f:
- archs = yaml.safe_load(f.read())
+ archs = yaml.load(f.read(), Loader=SafeLoader)
try:
pykwalify.core.Core(source_data=archs, schema_data=arch_schema).validate()
diff --git a/scripts/pylib/twister/twisterlib/quarantine.py b/scripts/pylib/twister/twisterlib/quarantine.py
index e4baa52..cc6ae43 100644
--- a/scripts/pylib/twister/twisterlib/quarantine.py
+++ b/scripts/pylib/twister/twisterlib/quarantine.py
@@ -5,11 +5,16 @@
import logging
import re
+import yaml
from pathlib import Path
-from yaml import safe_load
from dataclasses import dataclass, field
+try:
+ from yaml import CSafeLoader as SafeLoader
+except ImportError:
+ from yaml import SafeLoader
+
logger = logging.getLogger(__name__)
@@ -88,7 +93,7 @@
def load_data_from_yaml(cls, filename: str | Path) -> QuarantineData:
"""Load quarantine from yaml file."""
with open(filename, 'r', encoding='UTF-8') as yaml_fd:
- qlist_raw_data: list[dict] = safe_load(yaml_fd)
+ qlist_raw_data: list[dict] = yaml.load(yaml_fd, Loader=SafeLoader)
try:
if not qlist_raw_data:
# in case of loading empty quarantine file
diff --git a/scripts/pylib/twister/twisterlib/runner.py b/scripts/pylib/twister/twisterlib/runner.py
index cb22d12..3073a7c 100644
--- a/scripts/pylib/twister/twisterlib/runner.py
+++ b/scripts/pylib/twister/twisterlib/runner.py
@@ -46,6 +46,11 @@
from twisterlib.testplan import change_skip_to_error_if_integration
from twisterlib.harness import HarnessImporter, Pytest
+try:
+ from yaml import CSafeLoader as SafeLoader
+except ImportError:
+ from yaml import SafeLoader
+
logger = logging.getLogger('twister')
logger.setLevel(logging.DEBUG)
import expr_parser
@@ -861,7 +866,7 @@
return []
with open(runners_file_path, 'r') as file:
- runners_content: dict = yaml.safe_load(file)
+ runners_content: dict = yaml.load(file, Loader=SafeLoader)
if 'config' not in runners_content:
return []
@@ -901,7 +906,7 @@
with open(runners_file_path, 'rt') as file:
runners_content_text = file.read()
- runners_content_yaml: dict = yaml.safe_load(runners_content_text)
+ runners_content_yaml: dict = yaml.load(runners_content_text, Loader=SafeLoader)
if 'config' not in runners_content_yaml:
return
diff --git a/scripts/pylib/twister/twisterlib/testplan.py b/scripts/pylib/twister/twisterlib/testplan.py
index 442f2f4..8533549 100755
--- a/scripts/pylib/twister/twisterlib/testplan.py
+++ b/scripts/pylib/twister/twisterlib/testplan.py
@@ -16,7 +16,6 @@
import copy
import shutil
import random
-
import snippets
from pathlib import Path
from argparse import Namespace
diff --git a/scripts/tests/twister/test_runner.py b/scripts/tests/twister/test_runner.py
index 18960d0..e2a51fc 100644
--- a/scripts/tests/twister/test_runner.py
+++ b/scripts/tests/twister/test_runner.py
@@ -1805,7 +1805,7 @@
with mock.patch('os.path.exists', mock_exists), \
mock.patch('builtins.open', mock.mock_open()), \
- mock.patch('yaml.safe_load', return_value=runners_content):
+ mock.patch('yaml.load', return_value=runners_content):
if domain:
bins = pb._get_binaries_from_runners(domain)
else:
diff --git a/scripts/zephyr_module.py b/scripts/zephyr_module.py
index b5b257e..2bb72e8 100755
--- a/scripts/zephyr_module.py
+++ b/scripts/zephyr_module.py
@@ -28,6 +28,11 @@
from pathlib import Path, PurePath
from collections import namedtuple
+try:
+ from yaml import CSafeLoader as SafeLoader
+except ImportError:
+ from yaml import SafeLoader
+
METADATA_SCHEMA = '''
## A pykwalify schema for basic validation of the structure of a
## metadata YAML file.
@@ -156,7 +161,7 @@
BLOB_NOT_PRESENT = 'D'
BLOB_OUTDATED = 'M'
-schema = yaml.safe_load(METADATA_SCHEMA)
+schema = yaml.load(METADATA_SCHEMA, Loader=SafeLoader)
def validate_setting(setting, module_path, filename=None):
@@ -180,7 +185,7 @@
module_path / MODULE_YML_PATH.with_suffix('.yaml')]:
if Path(module_yml).is_file():
with Path(module_yml).open('r') as f:
- meta = yaml.safe_load(f.read())
+ meta = yaml.load(f.read(), Loader=SafeLoader)
try:
pykwalify.core.Core(source_data=meta, schema_data=schema)\