Move everything to Python 3.6 (#8835)
This commit is contained in:
		@@ -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
 | 
			
		||||
@@ -19,5 +21,6 @@ from . import new
 | 
			
		||||
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)
 | 
			
		||||
 
 | 
			
		||||
@@ -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:
 | 
			
		||||
 
 | 
			
		||||
@@ -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():
 | 
			
		||||
 
 | 
			
		||||
@@ -10,29 +10,27 @@ import qmk.path
 | 
			
		||||
 | 
			
		||||
@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
 | 
			
		||||
 
 | 
			
		||||
@@ -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)
 | 
			
		||||
@@ -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)
 | 
			
		||||
 
 | 
			
		||||
@@ -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)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user