[build-system] requires = ["setuptools>=82.0.1"] build-backend = "setuptools.build_meta" [project] name = "qmk" version = "1.2.0" license = "MIT" readme = "README.md" authors = [{name = "skullydazed", email = "skullydazed@gmail.com"}] description = "A program to help users work with QMK Firmware." classifiers = [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Intended Audience :: Developers", "Intended Audience :: System Administrators", "Intended Audience :: End Users/Desktop", "Natural Language :: English", "Programming Language :: Python :: 3 :: Only", "Topic :: Scientific/Engineering", "Topic :: Software Development", "Topic :: Utilities", ] requires-python = ">=3.9" dependencies = [ "hid", "milc>=1.9.0", "platformdirs", "pyusb", # qmk_firmware packages "dotty-dict", "hjson", "jsonschema>=4", "pillow", "pygments", "pyserial", ] [dependency-groups] dev = [ "build", "bumpversion", "ruff", "twine", "yapf", ] [project.urls] "Bug Tracker" = "https://github.com/qmk/qmk_cli/issues" Documentation = "https://docs.qmk.fm/cli" Homepage = "https://qmk.fm/" Source = "https://github.com/qmk/qmk_cli/" [project.scripts] qmk = "qmk_cli.script_qmk:main" [tool.setuptools] include-package-data = false [tool.setuptools.packages] find = {namespaces = false} [tool.ruff] target-version = "py39" include = ['qmk_cli/**/*.py'] [tool.ruff.lint] select = ["E", "F", "B", "N", "W", "COM", "C901", "PGH004"] ignore = [ "E501", # QMK is ok with long lines. "E231", # Conflicts with our yapf config ] [tool.ruff.lint.mccabe] max-complexity = 14 # Let's slowly crank this down [tool.yapfignore] ignore_patterns = [ ".direnv/**/*", ".env/**/*", ] [tool.yapf] align_closing_bracket_with_visual_indent = true allow_multiline_dictionary_keys = false allow_multiline_lambdas = false allow_split_before_default_or_named_assigns = true allow_split_before_dict_value = true arithmetic_precedence_indication = true blank_lines_around_top_level_definition = 2 blank_line_before_class_docstring = false blank_line_before_module_docstring = false blank_line_before_nested_class_or_def = false coalesce_brackets = true column_limit = 256 continuation_align_style = "SPACE" continuation_indent_width = 4 dedent_closing_brackets = true disable_ending_comma_heuristic = false each_dict_entry_on_separate_line = true i18n_comment = "" i18n_function_call = "" indent_blank_lines = false indent_dictionary_value = true indent_width = 4 join_multiple_lines = false no_spaces_around_selected_binary_operators = "" spaces_around_default_or_named_assign = false spaces_around_power_operator = false spaces_before_comment = 2 space_between_ending_comma_and_closing_bracket = false split_all_comma_separated_values = false split_arguments_when_comma_terminated = true split_before_arithmetic_operator = false split_before_bitwise_operator = true split_before_closing_bracket = true split_before_dict_set_generator = true split_before_dot = false split_before_expression_after_opening_paren = false split_before_first_argument = false split_before_logical_operator = false split_before_named_assigns = true split_complex_comprehension = true split_penalty_after_opening_bracket = 300 split_penalty_after_unary_operator = 10000 split_penalty_arithmetic_operator = 300 split_penalty_before_if_expr = 0 split_penalty_bitwise_operator = 300 split_penalty_comprehension = 80 split_penalty_excess_character = 7000 split_penalty_for_added_line_split = 30 split_penalty_import_names = 0 split_penalty_logical_operator = 300 use_tabs = false