Skip to content

Commit

Permalink
Speed improvements to qmk find. (qmk#24385)
Browse files Browse the repository at this point in the history
  • Loading branch information
tzarc authored Nov 8, 2024
1 parent 4f9ef90 commit 580d18d
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 9 deletions.
2 changes: 2 additions & 0 deletions lib/python/qmk/cli/find.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
"""Command to search through all keyboards and keymaps for a given search criteria.
"""
import os
from milc import cli
from qmk.search import filter_help, search_keymap_targets
from qmk.util import maybe_exit_config
Expand All @@ -20,6 +21,7 @@
def find(cli):
"""Search through all keyboards and keymaps for a given search criteria.
"""
os.environ.setdefault('SKIP_SCHEMA_VALIDATION', '1')
maybe_exit_config(should_exit=False, should_reraise=True)

targets = search_keymap_targets([('all', cli.config.find.keymap)], cli.args.filter)
Expand Down
2 changes: 2 additions & 0 deletions lib/python/qmk/cli/mass_compile.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ def mass_compile_targets(targets: List[BuildTarget], clean: bool, dry_run: bool,
if len(targets) == 0:
return

os.environ.setdefault('SKIP_SCHEMA_VALIDATION', '1')

make_cmd = find_make()
builddir = Path(QMK_FIRMWARE) / '.build'
makefile = builddir / 'parallel_kb_builds.mk'
Expand Down
22 changes: 13 additions & 9 deletions lib/python/qmk/info.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
"""Functions that help us generate and use info.json files.
"""
import re
import os
from pathlib import Path
import jsonschema
from dotty_dict import dotty
Expand All @@ -14,7 +15,7 @@
from qmk.commands import parse_configurator_json
from qmk.makefile import parse_rules_mk_file
from qmk.math import compute
from qmk.util import maybe_exit
from qmk.util import maybe_exit, truthy

true_values = ['1', 'on', 'yes']
false_values = ['0', 'off', 'no']
Expand Down Expand Up @@ -262,7 +263,9 @@ def info_json(keyboard, force_layout=None):
info_data["community_layouts"] = [force_layout]

# Validate
_validate(keyboard, info_data)
# Skip processing if necessary
if not truthy(os.environ.get('SKIP_SCHEMA_VALIDATION'), False):
_validate(keyboard, info_data)

# Check that the reported matrix size is consistent with the actual matrix size
_check_matrix(info_data)
Expand Down Expand Up @@ -944,13 +947,14 @@ def merge_info_jsons(keyboard, info_data):
_log_error(info_data, "Invalid file %s, root object should be a dictionary." % (str(info_file),))
continue

try:
validate(new_info_data, 'qmk.keyboard.v1')
except jsonschema.ValidationError as e:
json_path = '.'.join([str(p) for p in e.absolute_path])
cli.log.error('Not including data from file: %s', info_file)
cli.log.error('\t%s: %s', json_path, e.message)
continue
if not truthy(os.environ.get('SKIP_SCHEMA_VALIDATION'), False):
try:
validate(new_info_data, 'qmk.keyboard.v1')
except jsonschema.ValidationError as e:
json_path = '.'.join([str(p) for p in e.absolute_path])
cli.log.error('Not including data from file: %s', info_file)
cli.log.error('\t%s: %s', json_path, e.message)
continue

# Merge layout data in
if 'layout_aliases' in new_info_data:
Expand Down
21 changes: 21 additions & 0 deletions lib/python/qmk/util.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,27 @@ def maybe_exit_config(should_exit: bool = True, should_reraise: bool = False):
maybe_exit_reraise = should_reraise


def truthy(value, value_if_unknown=False):
"""Returns True if the value is truthy, False otherwise.
Deals with:
True: 1, true, t, yes, y, on
False: 0, false, f, no, n, off
"""
if value in {False, True}:
return bool(value)

test_value = str(value).strip().lower()

if test_value in {"1", "true", "t", "yes", "y", "on"}:
return True

if test_value in {"0", "false", "f", "no", "n", "off"}:
return False

return value_if_unknown


@contextlib.contextmanager
def parallelize():
"""Returns a function that can be used in place of a map() call.
Expand Down

0 comments on commit 580d18d

Please sign in to comment.