Skip to content

Commit

Permalink
Move everything to Python 3.6 (qmk#8835)
Browse files Browse the repository at this point in the history
  • Loading branch information
skullydazed authored and drashna committed May 24, 2020
1 parent 9d4724d commit e3207b5
Show file tree
Hide file tree
Showing 8 changed files with 23 additions and 25 deletions.
2 changes: 1 addition & 1 deletion bin/qmk
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ def _check_modules(requirements):

if not find_spec(module['import']):
print('Could not find module %s!' % module['name'])
print('Please run `python3 -m pip install -r %s` to install required python dependencies.' % str(qmk_dir / requirements))
print('Please run `python3 -m pip install -r %s` to install required python dependencies.' % (qmk_dir / requirements,))
if developer:
print('You can also turn off developer mode: qmk config user.developer=None')
print()
Expand Down
7 changes: 5 additions & 2 deletions lib/python/qmk/cli/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
We list each subcommand here explicitly because all the reliable ways of searching for modules are slow and delay startup.
"""
import sys

from milc import cli

from . import cformat
Expand All @@ -18,5 +20,6 @@
from . import pyformat
from . import pytest

if not hasattr(cli, 'config_source'):
cli.log.warning("Your QMK CLI is out of date. Please upgrade with `pip3 install --upgrade qmk` or by using your package manager.")
if sys.version_info[0] != 3 or sys.version_info[1] < 6:
cli.log.error('Your Python is too old! Please upgrade to Python 3.6 or later.')
exit(127)
5 changes: 2 additions & 3 deletions lib/python/qmk/cli/cformat.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,8 @@ def cformat_run(files, all_files):
cli.log.warn('No changes detected. Use "qmk cformat -a" to format all files')
return False
if files and all_files:
cli.log.warning('Filenames passed with -a, only formatting: %s', ','.join(cli.args.files))
# 3.6+: Can remove the str casting, python will cast implicitly
subprocess.run(clang_format + [str(file) for file in files], check=True)
cli.log.warning('Filenames passed with -a, only formatting: %s', ','.join(files))
subprocess.run(clang_format + [file for file in files], check=True)
cli.log.info('Successfully formatted the C code.')

except subprocess.CalledProcessError:
Expand Down
11 changes: 5 additions & 6 deletions lib/python/qmk/cli/doctor.py
Original file line number Diff line number Diff line change
Expand Up @@ -135,16 +135,15 @@ def check_udev_rules():
}

if udev_dir.exists():
udev_rules = [str(rule_file) for rule_file in udev_dir.glob('*.rules')]
udev_rules = [rule_file for rule_file in udev_dir.glob('*.rules')]
current_rules = set()

# Collect all rules from the config files
for rule_file in udev_rules:
with open(rule_file, "r") as fd:
for line in fd.readlines():
line = line.strip()
if not line.startswith("#") and len(line):
current_rules.add(line)
for line in rule_file.read_text().split('\n'):
line = line.strip()
if not line.startswith("#") and len(line):
current_rules.add(line)

# Check if the desired rules are among the currently present rules
for bootloader, rules in desired_rules.items():
Expand Down
8 changes: 3 additions & 5 deletions lib/python/qmk/cli/json2c.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,29 +10,27 @@

@cli.argument('-o', '--output', arg_only=True, type=qmk.path.normpath, help='File to write to')
@cli.argument('-q', '--quiet', arg_only=True, action='store_true', help="Quiet mode, only output error messages")
@cli.argument('filename', arg_only=True, help='Configurator JSON file')
@cli.argument('filename', type=qmk.path.normpath, arg_only=True, help='Configurator JSON file')
@cli.subcommand('Creates a keymap.c from a QMK Configurator export.')
def json2c(cli):
"""Generate a keymap.c from a configurator export.
This command uses the `qmk.keymap` module to generate a keymap.c from a configurator export. The generated keymap is written to stdout, or to a file if -o is provided.
"""
cli.args.filename = qmk.path.normpath(cli.args.filename)

# Error checking
if not cli.args.filename.exists():
cli.log.error('JSON file does not exist!')
cli.print_usage()
exit(1)

if str(cli.args.filename) == '-':
if cli.args.filename.name == '-':
# TODO(skullydazed/anyone): Read file contents from STDIN
cli.log.error('Reading from STDIN is not (yet) supported.')
cli.print_usage()
exit(1)

# Environment processing
if cli.args.output == ('-'):
if cli.args.output.name == ('-'):
cli.args.output = None

# Parse the configurator json
Expand Down
8 changes: 4 additions & 4 deletions lib/python/qmk/cli/kle2json.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,12 @@ def kle2json(cli):
file_path = Path(os.environ['ORIG_CWD'], cli.args.filename)
# Check for valid file_path for more graceful failure
if not file_path.exists():
return cli.log.error('File {fg_cyan}%s{style_reset_all} was not found.', str(file_path))
return cli.log.error('File {fg_cyan}%s{style_reset_all} was not found.', file_path)
out_path = file_path.parent
raw_code = file_path.open().read()
# Check if info.json exists, allow overwrite with force
if Path(out_path, "info.json").exists() and not cli.args.force:
cli.log.error('File {fg_cyan}%s/info.json{style_reset_all} already exists, use -f or --force to overwrite.', str(out_path))
cli.log.error('File {fg_cyan}%s/info.json{style_reset_all} already exists, use -f or --force to overwrite.', out_path)
return False
try:
# Convert KLE raw to x/y coordinates (using kle2xy package from skullydazed)
Expand All @@ -69,7 +69,7 @@ def kle2json(cli):
# Replace layout in keyboard json
keyboard = keyboard.replace('"LAYOUT_JSON_HERE"', layout)
# Write our info.json
file = open(str(out_path) + "/info.json", "w")
file = open(out_path + "/info.json", "w")
file.write(keyboard)
file.close()
cli.log.info('Wrote out {fg_cyan}%s/info.json', str(out_path))
cli.log.info('Wrote out {fg_cyan}%s/info.json', out_path)
2 changes: 1 addition & 1 deletion lib/python/qmk/cli/new/keymap.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ def new_keymap(cli):
exit(1)

# create user directory with default keymap files
shutil.copytree(str(keymap_path_default), str(keymap_path_new), symlinks=True)
shutil.copytree(keymap_path_default, keymap_path_new, symlinks=True)

# end message to user
cli.log.info("%s keymap directory created in: %s", keymap, keymap_path_new)
Expand Down
5 changes: 2 additions & 3 deletions lib/python/qmk/keymap.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
"""Functions that help you work with QMK keymaps.
"""
import os
from pathlib import Path

import qmk.path
Expand Down Expand Up @@ -127,14 +126,14 @@ def list_keymaps(keyboard_name):
while kb_path != keyboards_dir:
keymaps_dir = kb_path / "keymaps"
if keymaps_dir.exists():
names = names.union([keymap for keymap in os.listdir(str(keymaps_dir)) if (keymaps_dir / keymap / "keymap.c").is_file()])
names = names.union([keymap for keymap in keymaps_dir.iterdir() if (keymaps_dir / keymap / "keymap.c").is_file()])
kb_path = kb_path.parent

# if community layouts are supported, get them
if "LAYOUTS" in rules_mk:
for layout in rules_mk["LAYOUTS"].split():
cl_path = Path.cwd() / "layouts" / "community" / layout
if cl_path.exists():
names = names.union([keymap for keymap in os.listdir(str(cl_path)) if (cl_path / keymap / "keymap.c").is_file()])
names = names.union([keymap for keymap in cl_path.iterdir() if (cl_path / keymap / "keymap.c").is_file()])

return sorted(names)

0 comments on commit e3207b5

Please sign in to comment.