mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 15:12:06 +00:00 
			
		
		
		
	Finish up transition from black-format to ruff (#8294)
This commit is contained in:
		
				
					committed by
					
						 GitHub
						GitHub
					
				
			
			
				
	
			
			
			
						parent
						
							9f603a474f
						
					
				
				
					commit
					c281351732
				
			| @@ -31,7 +31,7 @@ | ||||
|         "ms-python.python", | ||||
|         "ms-python.pylint", | ||||
|         "ms-python.flake8", | ||||
|         "ms-python.black-formatter", | ||||
|         "charliermarsh.ruff", | ||||
|         "visualstudioexptteam.vscodeintellicode", | ||||
|         // yaml | ||||
|         "redhat.vscode-yaml", | ||||
| @@ -49,14 +49,11 @@ | ||||
|         "flake8.args": [ | ||||
|           "--config=${workspaceFolder}/.flake8" | ||||
|         ], | ||||
|         "black-formatter.args": [ | ||||
|           "--config", | ||||
|           "${workspaceFolder}/pyproject.toml" | ||||
|         ], | ||||
|         "ruff.configuration": "${workspaceFolder}/pyproject.toml", | ||||
|         "[python]": { | ||||
|           // VS will say "Value is not accepted" before building the devcontainer, but the warning | ||||
|           // should go away after build is completed. | ||||
|           "editor.defaultFormatter": "ms-python.black-formatter" | ||||
|           "editor.defaultFormatter": "charliermarsh.ruff" | ||||
|         }, | ||||
|         "editor.formatOnPaste": false, | ||||
|         "editor.formatOnSave": true, | ||||
|   | ||||
							
								
								
									
										4
									
								
								.github/workflows/matchers/lint-python.json
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.github/workflows/matchers/lint-python.json
									
									
									
									
										vendored
									
									
								
							| @@ -1,11 +1,11 @@ | ||||
| { | ||||
|   "problemMatcher": [ | ||||
|     { | ||||
|       "owner": "black", | ||||
|       "owner": "ruff", | ||||
|       "severity": "error", | ||||
|       "pattern": [ | ||||
|         { | ||||
|           "regexp": "^(.*): (Please format this file with the black formatter)", | ||||
|           "regexp": "^(.*): (Please format this file with the ruff formatter)", | ||||
|           "file": 1, | ||||
|           "message": 2 | ||||
|         } | ||||
|   | ||||
| @@ -51,10 +51,6 @@ version = {attr = "esphome.const.__version__"} | ||||
| [tool.setuptools.packages.find] | ||||
| include = ["esphome*"] | ||||
|  | ||||
| [tool.black] | ||||
| target-version = ["py39", "py310"] | ||||
| exclude = 'generated' | ||||
|  | ||||
| [tool.pytest.ini_options] | ||||
| testpaths = [ | ||||
|   "tests", | ||||
| @@ -108,6 +104,8 @@ expected-line-ending-format = "LF" | ||||
|  | ||||
| [tool.ruff] | ||||
| required-version = ">=0.5.0" | ||||
| target-version = "py39" | ||||
| exclude = ['generated'] | ||||
|  | ||||
| [tool.ruff.lint] | ||||
| select = [ | ||||
|   | ||||
| @@ -19,7 +19,7 @@ curfile = None | ||||
|  | ||||
|  | ||||
| def print_error(file, lineno, msg): | ||||
|     global curfile | ||||
|     global curfile  # noqa: PLW0603 | ||||
|  | ||||
|     if curfile != file: | ||||
|         print_error_for_file(file, None) | ||||
| @@ -31,6 +31,22 @@ def print_error(file, lineno, msg): | ||||
|         print(f"{styled(colorama.Style.BRIGHT, f'{file}:')} {msg}") | ||||
|  | ||||
|  | ||||
| def split_args_platform_compatible(args): | ||||
|     if os.name == "posix": | ||||
|         return [args] | ||||
|  | ||||
|     char_length = 0 | ||||
|     argsets = [] | ||||
|     for index, arg in enumerate(args): | ||||
|         # Windows is techincally 8191, but we need to leave some room for the command itself | ||||
|         if char_length + len(arg) > 8000: | ||||
|             argsets.append(args[:index]) | ||||
|             args = args[index:] | ||||
|             char_length = 0 | ||||
|         char_length += len(arg) | ||||
|     return argsets | ||||
|  | ||||
|  | ||||
| def main(): | ||||
|     colorama.init() | ||||
|  | ||||
| @@ -69,61 +85,70 @@ def main(): | ||||
|  | ||||
|     errors = 0 | ||||
|  | ||||
|     cmd = ["black", "--verbose"] + ([] if args.apply else ["--check"]) + files | ||||
|     print("Running black...") | ||||
|     print() | ||||
|     log = get_err(*cmd) | ||||
|     for line in log.splitlines(): | ||||
|         WOULD_REFORMAT = "would reformat" | ||||
|         if line.startswith(WOULD_REFORMAT): | ||||
|             file_ = line[len(WOULD_REFORMAT) + 1 :] | ||||
|             print_error(file_, None, "Please format this file with the black formatter") | ||||
|             errors += 1 | ||||
|     # Needed to get around command-line string limits in Windows. | ||||
|     filesets = split_args_platform_compatible(files) | ||||
|  | ||||
|     print("Running ruff...") | ||||
|     print() | ||||
|     for fileset in filesets: | ||||
|         cmd = ["ruff", "format"] + ([] if args.apply else ["--check"]) + fileset | ||||
|         log = get_err(*cmd) | ||||
|         for line in log.splitlines(): | ||||
|             WOULD_REFORMAT = "would reformat" | ||||
|             if line.startswith(WOULD_REFORMAT): | ||||
|                 file_ = line[len(WOULD_REFORMAT) + 1 :] | ||||
|                 print_error( | ||||
|                     file_, None, "Please format this file with the ruff formatter" | ||||
|                 ) | ||||
|                 errors += 1 | ||||
|  | ||||
|     cmd = ["flake8"] + files | ||||
|     print() | ||||
|     print("Running flake8...") | ||||
|     print() | ||||
|     log = get_output(*cmd) | ||||
|     for line in log.splitlines(): | ||||
|         line = line.split(":", 4) | ||||
|         if len(line) < 4: | ||||
|             continue | ||||
|         file_ = line[0] | ||||
|         linno = line[1] | ||||
|         msg = (":".join(line[3:])).strip() | ||||
|         print_error(file_, linno, msg) | ||||
|         errors += 1 | ||||
|     for files in filesets: | ||||
|         cmd = ["flake8"] + files | ||||
|         log = get_output(*cmd) | ||||
|         for line in log.splitlines(): | ||||
|             line = line.split(":", 4) | ||||
|             if len(line) < 4: | ||||
|                 continue | ||||
|             file_ = line[0] | ||||
|             linno = line[1] | ||||
|             msg = (":".join(line[3:])).strip() | ||||
|             print_error(file_, linno, msg) | ||||
|             errors += 1 | ||||
|  | ||||
|     cmd = ["pylint", "-f", "parseable", "--persistent=n"] + files | ||||
|     print() | ||||
|     print("Running pylint...") | ||||
|     print() | ||||
|     log = get_output(*cmd) | ||||
|     for line in log.splitlines(): | ||||
|         line = line.split(":", 3) | ||||
|         if len(line) < 3: | ||||
|             continue | ||||
|         file_ = line[0] | ||||
|         linno = line[1] | ||||
|         msg = (":".join(line[2:])).strip() | ||||
|         print_error(file_, linno, msg) | ||||
|         errors += 1 | ||||
|     for files in filesets: | ||||
|         cmd = ["pylint", "-f", "parseable", "--persistent=n"] + files | ||||
|         log = get_output(*cmd) | ||||
|         for line in log.splitlines(): | ||||
|             line = line.split(":", 3) | ||||
|             if len(line) < 3: | ||||
|                 continue | ||||
|             file_ = line[0] | ||||
|             linno = line[1] | ||||
|             msg = (":".join(line[2:])).strip() | ||||
|             print_error(file_, linno, msg) | ||||
|             errors += 1 | ||||
|  | ||||
|     PYUPGRADE_TARGET = "--py39-plus" | ||||
|     cmd = ["pyupgrade", PYUPGRADE_TARGET] + files | ||||
|     print() | ||||
|     print("Running pyupgrade...") | ||||
|     print() | ||||
|     log = get_err(*cmd) | ||||
|     for line in log.splitlines(): | ||||
|         REWRITING = "Rewriting" | ||||
|         if line.startswith(REWRITING): | ||||
|             file_ = line[len(REWRITING) + 1 :] | ||||
|             print_error( | ||||
|                 file_, None, f"Please run pyupgrade {PYUPGRADE_TARGET} on this file" | ||||
|             ) | ||||
|             errors += 1 | ||||
|     PYUPGRADE_TARGET = "--py39-plus" | ||||
|     for files in filesets: | ||||
|         cmd = ["pyupgrade", PYUPGRADE_TARGET] + files | ||||
|         log = get_err(*cmd) | ||||
|         for line in log.splitlines(): | ||||
|             REWRITING = "Rewriting" | ||||
|             if line.startswith(REWRITING): | ||||
|                 file_ = line[len(REWRITING) + 1 :] | ||||
|                 print_error( | ||||
|                     file_, None, f"Please run pyupgrade {PYUPGRADE_TARGET} on this file" | ||||
|                 ) | ||||
|                 errors += 1 | ||||
|  | ||||
|     sys.exit(errors) | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user