mirror of
https://github.com/Keychron/qmk_firmware.git
synced 2024-11-23 08:56:47 +06:00
1f2b1dedcc
* Install dependencies before executing unit tests. * Split out UTF-8 decoder. * Fixup python formatting rules. * Add documentation for QGF/QFF and the RLE format used. * Add CLI commands for converting images and fonts. * Add stub rules.mk for QP. * Add stream type. * Add base driver and comms interfaces. * Add support for SPI, SPI+D/C comms drivers. * Include <qp.h> when enabled. * Add base support for SPI+D/C+RST panels, as well as concrete implementation of ST7789. * Add support for GC9A01. * Add support for ILI9341. * Add support for ILI9163. * Add support for SSD1351. * Implement qp_setpixel, including pixdata buffer management. * Implement qp_line. * Implement qp_rect. * Implement qp_circle. * Implement qp_ellipse. * Implement palette interpolation. * Allow for streams to work with either flash or RAM. * Image loading. * Font loading. * QGF palette loading. * Progressive decoder of pixel data supporting Raw+RLE, 1-,2-,4-,8-bpp monochrome and palette-based images. * Image drawing. * Animations. * Font rendering. * Check against 256 colours, dump out the loaded palette if debugging enabled. * Fix build. * AVR is not the intended audience. * `qmk format-c` * Generation fix. * First batch of docs. * More docs and examples. * Review comments. * Public API documentation.
345 lines
10 KiB
INI
345 lines
10 KiB
INI
# Python settings for QMK
|
|
[flake8]
|
|
ignore =
|
|
# QMK is ok with long lines.
|
|
E501
|
|
# Conflicts with our yapf config
|
|
E231
|
|
per_file_ignores =
|
|
# Module imported but unused
|
|
**/__init__.py:F401
|
|
# Quantum Painter also outputs append data using bytes object arithmetic on multiple lines
|
|
**/painter_qgf.py:W503
|
|
**/painter_qff.py:W503
|
|
|
|
# Let's slowly crank this down
|
|
max_complexity=16
|
|
|
|
[yapf]
|
|
# Align closing bracket with visual indentation.
|
|
align_closing_bracket_with_visual_indent=True
|
|
|
|
# Allow dictionary keys to exist on multiple lines. For example:
|
|
#
|
|
# x = {
|
|
# ('this is the first element of a tuple',
|
|
# 'this is the second element of a tuple'):
|
|
# value,
|
|
# }
|
|
allow_multiline_dictionary_keys=False
|
|
|
|
# Allow lambdas to be formatted on more than one line.
|
|
allow_multiline_lambdas=False
|
|
|
|
# Allow splitting before a default / named assignment in an argument list.
|
|
allow_split_before_default_or_named_assigns=True
|
|
|
|
# Allow splits before the dictionary value.
|
|
allow_split_before_dict_value=True
|
|
|
|
# Let spacing indicate operator precedence. For example:
|
|
#
|
|
# a = 1 * 2 + 3 / 4
|
|
# b = 1 / 2 - 3 * 4
|
|
# c = (1 + 2) * (3 - 4)
|
|
# d = (1 - 2) / (3 + 4)
|
|
# e = 1 * 2 - 3
|
|
# f = 1 + 2 + 3 + 4
|
|
#
|
|
# will be formatted as follows to indicate precedence:
|
|
#
|
|
# a = 1*2 + 3/4
|
|
# b = 1/2 - 3*4
|
|
# c = (1+2) * (3-4)
|
|
# d = (1-2) / (3+4)
|
|
# e = 1*2 - 3
|
|
# f = 1 + 2 + 3 + 4
|
|
#
|
|
arithmetic_precedence_indication=False
|
|
|
|
# Number of blank lines surrounding top-level function and class
|
|
# definitions.
|
|
blank_lines_around_top_level_definition=2
|
|
|
|
# Insert a blank line before a class-level docstring.
|
|
blank_line_before_class_docstring=False
|
|
|
|
# Insert a blank line before a module docstring.
|
|
blank_line_before_module_docstring=False
|
|
|
|
# Insert a blank line before a 'def' or 'class' immediately nested
|
|
# within another 'def' or 'class'. For example:
|
|
#
|
|
# class Foo:
|
|
# # <------ this blank line
|
|
# def method():
|
|
# ...
|
|
blank_line_before_nested_class_or_def=False
|
|
|
|
# Do not split consecutive brackets. Only relevant when
|
|
# dedent_closing_brackets is set. For example:
|
|
#
|
|
# call_func_that_takes_a_dict(
|
|
# {
|
|
# 'key1': 'value1',
|
|
# 'key2': 'value2',
|
|
# }
|
|
# )
|
|
#
|
|
# would reformat to:
|
|
#
|
|
# call_func_that_takes_a_dict({
|
|
# 'key1': 'value1',
|
|
# 'key2': 'value2',
|
|
# })
|
|
coalesce_brackets=True
|
|
|
|
# The column limit.
|
|
column_limit=256
|
|
|
|
# The style for continuation alignment. Possible values are:
|
|
#
|
|
# - SPACE: Use spaces for continuation alignment. This is default behavior.
|
|
# - FIXED: Use fixed number (CONTINUATION_INDENT_WIDTH) of columns
|
|
# (ie: CONTINUATION_INDENT_WIDTH/INDENT_WIDTH tabs) for continuation
|
|
# alignment.
|
|
# - VALIGN-RIGHT: Vertically align continuation lines with indent
|
|
# characters. Slightly right (one more indent character) if cannot
|
|
# vertically align continuation lines with indent characters.
|
|
#
|
|
# For options FIXED, and VALIGN-RIGHT are only available when USE_TABS is
|
|
# enabled.
|
|
continuation_align_style=SPACE
|
|
|
|
# Indent width used for line continuations.
|
|
continuation_indent_width=4
|
|
|
|
# Put closing brackets on a separate line, dedented, if the bracketed
|
|
# expression can't fit in a single line. Applies to all kinds of brackets,
|
|
# including function definitions and calls. For example:
|
|
#
|
|
# config = {
|
|
# 'key1': 'value1',
|
|
# 'key2': 'value2',
|
|
# } # <--- this bracket is dedented and on a separate line
|
|
#
|
|
# time_series = self.remote_client.query_entity_counters(
|
|
# entity='dev3246.region1',
|
|
# key='dns.query_latency_tcp',
|
|
# transform=Transformation.AVERAGE(window=timedelta(seconds=60)),
|
|
# start_ts=now()-timedelta(days=3),
|
|
# end_ts=now(),
|
|
# ) # <--- this bracket is dedented and on a separate line
|
|
dedent_closing_brackets=True
|
|
|
|
# Disable the heuristic which places each list element on a separate line
|
|
# if the list is comma-terminated.
|
|
disable_ending_comma_heuristic=False
|
|
|
|
# Place each dictionary entry onto its own line.
|
|
each_dict_entry_on_separate_line=True
|
|
|
|
# The regex for an i18n comment. The presence of this comment stops
|
|
# reformatting of that line, because the comments are required to be
|
|
# next to the string they translate.
|
|
i18n_comment=
|
|
|
|
# The i18n function call names. The presence of this function stops
|
|
# reformattting on that line, because the string it has cannot be moved
|
|
# away from the i18n comment.
|
|
i18n_function_call=
|
|
|
|
# Indent blank lines.
|
|
indent_blank_lines=False
|
|
|
|
# Indent the dictionary value if it cannot fit on the same line as the
|
|
# dictionary key. For example:
|
|
#
|
|
# config = {
|
|
# 'key1':
|
|
# 'value1',
|
|
# 'key2': value1 +
|
|
# value2,
|
|
# }
|
|
indent_dictionary_value=True
|
|
|
|
# The number of columns to use for indentation.
|
|
indent_width=4
|
|
|
|
# Join short lines into one line. E.g., single line 'if' statements.
|
|
join_multiple_lines=False
|
|
|
|
# Do not include spaces around selected binary operators. For example:
|
|
#
|
|
# 1 + 2 * 3 - 4 / 5
|
|
#
|
|
# will be formatted as follows when configured with "*,/":
|
|
#
|
|
# 1 + 2*3 - 4/5
|
|
no_spaces_around_selected_binary_operators=
|
|
|
|
# Use spaces around default or named assigns.
|
|
spaces_around_default_or_named_assign=False
|
|
|
|
# Use spaces around the power operator.
|
|
spaces_around_power_operator=False
|
|
|
|
# The number of spaces required before a trailing comment.
|
|
# This can be a single value (representing the number of spaces
|
|
# before each trailing comment) or list of values (representing
|
|
# alignment column values; trailing comments within a block will
|
|
# be aligned to the first column value that is greater than the maximum
|
|
# line length within the block). For example:
|
|
#
|
|
# With spaces_before_comment=5:
|
|
#
|
|
# 1 + 1 # Adding values
|
|
#
|
|
# will be formatted as:
|
|
#
|
|
# 1 + 1 # Adding values <-- 5 spaces between the end of the statement and comment
|
|
#
|
|
# With spaces_before_comment=15, 20:
|
|
#
|
|
# 1 + 1 # Adding values
|
|
# two + two # More adding
|
|
#
|
|
# longer_statement # This is a longer statement
|
|
# short # This is a shorter statement
|
|
#
|
|
# a_very_long_statement_that_extends_beyond_the_final_column # Comment
|
|
# short # This is a shorter statement
|
|
#
|
|
# will be formatted as:
|
|
#
|
|
# 1 + 1 # Adding values <-- end of line comments in block aligned to col 15
|
|
# two + two # More adding
|
|
#
|
|
# longer_statement # This is a longer statement <-- end of line comments in block aligned to col 20
|
|
# short # This is a shorter statement
|
|
#
|
|
# a_very_long_statement_that_extends_beyond_the_final_column # Comment <-- the end of line comments are aligned based on the line length
|
|
# short # This is a shorter statement
|
|
#
|
|
spaces_before_comment=2
|
|
|
|
# Insert a space between the ending comma and closing bracket of a list,
|
|
# etc.
|
|
space_between_ending_comma_and_closing_bracket=False
|
|
|
|
# Split before arguments
|
|
split_all_comma_separated_values=False
|
|
|
|
# Split before arguments if the argument list is terminated by a
|
|
# comma.
|
|
split_arguments_when_comma_terminated=True
|
|
|
|
# Set to True to prefer splitting before '+', '-', '*', '/', '//', or '@'
|
|
# rather than after.
|
|
split_before_arithmetic_operator=False
|
|
|
|
# Set to True to prefer splitting before '&', '|' or '^' rather than
|
|
# after.
|
|
split_before_bitwise_operator=True
|
|
|
|
# Split before the closing bracket if a list or dict literal doesn't fit on
|
|
# a single line.
|
|
split_before_closing_bracket=True
|
|
|
|
# Split before a dictionary or set generator (comp_for). For example, note
|
|
# the split before the 'for':
|
|
#
|
|
# foo = {
|
|
# variable: 'Hello world, have a nice day!'
|
|
# for variable in bar if variable != 42
|
|
# }
|
|
split_before_dict_set_generator=True
|
|
|
|
# Split before the '.' if we need to split a longer expression:
|
|
#
|
|
# foo = ('This is a really long string: {}, {}, {}, {}'.format(a, b, c, d))
|
|
#
|
|
# would reformat to something like:
|
|
#
|
|
# foo = ('This is a really long string: {}, {}, {}, {}'
|
|
# .format(a, b, c, d))
|
|
split_before_dot=False
|
|
|
|
# Split after the opening paren which surrounds an expression if it doesn't
|
|
# fit on a single line.
|
|
split_before_expression_after_opening_paren=False
|
|
|
|
# If an argument / parameter list is going to be split, then split before
|
|
# the first argument.
|
|
split_before_first_argument=False
|
|
|
|
# Set to True to prefer splitting before 'and' or 'or' rather than
|
|
# after.
|
|
split_before_logical_operator=False
|
|
|
|
# Split named assignments onto individual lines.
|
|
split_before_named_assigns=True
|
|
|
|
# Set to True to split list comprehensions and generators that have
|
|
# non-trivial expressions and multiple clauses before each of these
|
|
# clauses. For example:
|
|
#
|
|
# result = [
|
|
# a_long_var + 100 for a_long_var in xrange(1000)
|
|
# if a_long_var % 10]
|
|
#
|
|
# would reformat to something like:
|
|
#
|
|
# result = [
|
|
# a_long_var + 100
|
|
# for a_long_var in xrange(1000)
|
|
# if a_long_var % 10]
|
|
split_complex_comprehension=True
|
|
|
|
# The penalty for splitting right after the opening bracket.
|
|
split_penalty_after_opening_bracket=300
|
|
|
|
# The penalty for splitting the line after a unary operator.
|
|
split_penalty_after_unary_operator=10000
|
|
|
|
# The penalty of splitting the line around the '+', '-', '*', '/', '//',
|
|
# ``%``, and '@' operators.
|
|
split_penalty_arithmetic_operator=300
|
|
|
|
# The penalty for splitting right before an if expression.
|
|
split_penalty_before_if_expr=0
|
|
|
|
# The penalty of splitting the line around the '&', '|', and '^'
|
|
# operators.
|
|
split_penalty_bitwise_operator=300
|
|
|
|
# The penalty for splitting a list comprehension or generator
|
|
# expression.
|
|
split_penalty_comprehension=80
|
|
|
|
# The penalty for characters over the column limit.
|
|
split_penalty_excess_character=7000
|
|
|
|
# The penalty incurred by adding a line split to the unwrapped line. The
|
|
# more line splits added the higher the penalty.
|
|
split_penalty_for_added_line_split=30
|
|
|
|
# The penalty of splitting a list of "import as" names. For example:
|
|
#
|
|
# from a_very_long_or_indented_module_name_yada_yad import (long_argument_1,
|
|
# long_argument_2,
|
|
# long_argument_3)
|
|
#
|
|
# would reformat to something like:
|
|
#
|
|
# from a_very_long_or_indented_module_name_yada_yad import (
|
|
# long_argument_1, long_argument_2, long_argument_3)
|
|
split_penalty_import_names=0
|
|
|
|
# The penalty of splitting the line around the 'and' and 'or'
|
|
# operators.
|
|
split_penalty_logical_operator=300
|
|
|
|
# Use the Tab character for indentation.
|
|
use_tabs=False
|