Merge remote-tracking branch 'origin/develop' into xap

This commit is contained in:
QMK Bot 2023-02-11 20:36:45 +00:00
commit 98b0bcf545

View File

@ -1,9 +1,10 @@
"""Functions that help us generate and use info.json files. """Functions that help us generate and use info.json files.
""" """
import re
from pathlib import Path from pathlib import Path
import jsonschema import jsonschema
from dotty_dict import dotty from dotty_dict import dotty
from milc import cli from milc import cli
from qmk.constants import CHIBIOS_PROCESSORS, LUFA_PROCESSORS, VUSB_PROCESSORS from qmk.constants import CHIBIOS_PROCESSORS, LUFA_PROCESSORS, VUSB_PROCESSORS
@ -17,15 +18,30 @@ from qmk.math import compute
true_values = ['1', 'on', 'yes'] true_values = ['1', 'on', 'yes']
false_values = ['0', 'off', 'no'] false_values = ['0', 'off', 'no']
# TODO: reduce this list down
SAFE_LAYOUT_TOKENS = { def _keyboard_in_layout_name(keyboard, layout):
'ansi', """Validate that a layout macro does not contain name of keyboard
'iso', """
'wkl', # TODO: reduce this list down
'tkl', safe_layout_tokens = {
'preonic', 'ansi',
'planck', 'iso',
} 'jp',
'jis',
'ortho',
'wkl',
'tkl',
'preonic',
'planck',
}
# Ignore tokens like 'split_3x7_4' or just '2x4'
layout = re.sub(r"_split_\d+x\d+_\d+", '', layout)
layout = re.sub(r"_\d+x\d+", '', layout)
name_fragments = set(keyboard.split('/')) - safe_layout_tokens
return any(fragment in layout for fragment in name_fragments)
def _valid_community_layout(layout): def _valid_community_layout(layout):
@ -60,10 +76,9 @@ def _validate(keyboard, info_data):
_log_warning(info_data, '"LAYOUT_all" should be "LAYOUT" unless additional layouts are provided.') _log_warning(info_data, '"LAYOUT_all" should be "LAYOUT" unless additional layouts are provided.')
# Extended layout name checks - ignoring community_layouts and "safe" values # Extended layout name checks - ignoring community_layouts and "safe" values
name_fragments = set(keyboard.split('/')) - SAFE_LAYOUT_TOKENS
potential_layouts = set(layouts.keys()) - set(community_layouts_names) potential_layouts = set(layouts.keys()) - set(community_layouts_names)
for layout in potential_layouts: for layout in potential_layouts:
if any(fragment in layout for fragment in name_fragments): if _keyboard_in_layout_name(keyboard, layout):
_log_warning(info_data, f'Layout "{layout}" should not contain name of keyboard.') _log_warning(info_data, f'Layout "{layout}" should not contain name of keyboard.')
# Filter out any non-existing community layouts # Filter out any non-existing community layouts