[Styling] stylify using ruff (#27144)
* try to stylify using ruff * might need to remove these changes? * use ruf format andruff check * use isinstance instead of type comparision * use # fmt: skip * use # fmt: skip * nits * soem styling changes * update ci job * nits isinstance * more files update * nits * more nits * small nits * check and format * revert wrong changes * actually use formatter instead of checker * nits * well docbuilder is overwriting this commit * revert notebook changes * try to nuke docbuilder * style * fix feature exrtaction test * remve `indent-width = 4` * fixup * more nits * update the ruff version that we use * style * nuke docbuilder styling * leve the print for detected changes * nits * Remove file I/O Co-authored-by: charliermarsh <charlie.r.marsh@gmail.com> * style * nits * revert notebook changes * Add # fmt skip when possible * Add # fmt skip when possible * Fix * More ` # fmt: skip` usage * More ` # fmt: skip` usage * More ` # fmt: skip` usage * NIts * more fixes * fix tapas * Another way to skip * Recommended way * Fix two more fiels * Remove asynch Remove asynch --------- Co-authored-by: charliermarsh <charlie.r.marsh@gmail.com>
This commit is contained in:
@@ -40,11 +40,9 @@ import argparse
|
||||
import glob
|
||||
import os
|
||||
import re
|
||||
import subprocess
|
||||
from typing import List, Optional, Tuple
|
||||
|
||||
import black
|
||||
from doc_builder.style_doc import style_docstrings_in_code
|
||||
|
||||
from transformers.utils import direct_transformers_import
|
||||
|
||||
|
||||
@@ -226,9 +224,17 @@ def get_indent(code: str) -> str:
|
||||
return ""
|
||||
|
||||
|
||||
def blackify(code: str) -> str:
|
||||
def run_ruff(code):
|
||||
command = ["ruff", "format", "-", "--config", "pyproject.toml", "--silent"]
|
||||
process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
|
||||
stdout, _ = process.communicate(input=code.encode())
|
||||
return stdout.decode()
|
||||
|
||||
|
||||
def stylify(code: str) -> str:
|
||||
"""
|
||||
Applies the black part of our `make style` command to some code.
|
||||
Applies the ruff part of our `make style` command to some code. This formats the code using `ruff format`.
|
||||
As `ruff` does not provide a python api this cannot be done on the fly.
|
||||
|
||||
Args:
|
||||
code (`str`): The code to format.
|
||||
@@ -239,10 +245,8 @@ def blackify(code: str) -> str:
|
||||
has_indent = len(get_indent(code)) > 0
|
||||
if has_indent:
|
||||
code = f"class Bla:\n{code}"
|
||||
mode = black.Mode(target_versions={black.TargetVersion.PY37}, line_length=119)
|
||||
result = black.format_str(code, mode=mode)
|
||||
result, _ = style_docstrings_in_code(result)
|
||||
return result[len("class Bla:\n") :] if has_indent else result
|
||||
formatted_code = run_ruff(code)
|
||||
return formatted_code[len("class Bla:\n") :] if has_indent else formatted_code
|
||||
|
||||
|
||||
def check_codes_match(observed_code: str, theoretical_code: str) -> Optional[int]:
|
||||
@@ -351,8 +355,7 @@ def is_copy_consistent(filename: str, overwrite: bool = False) -> Optional[List[
|
||||
if option.strip() == "all-casing":
|
||||
theoretical_code = re.sub(obj1.lower(), obj2.lower(), theoretical_code)
|
||||
theoretical_code = re.sub(obj1.upper(), obj2.upper(), theoretical_code)
|
||||
|
||||
theoretical_code = blackify(theoretical_code)
|
||||
theoretical_code = stylify(theoretical_code)
|
||||
|
||||
# Test for a diff and act accordingly.
|
||||
diff_index = check_codes_match(observed_code, theoretical_code)
|
||||
|
||||
@@ -515,9 +515,7 @@ def extract_imports(module_fname: str, cache: Dict[str, List[str]] = None) -> Li
|
||||
|
||||
# Filter out all docstrings to not get imports in code examples. As before we need to deactivate formatting to
|
||||
# keep this as escaped quotes and avoid this function failing on this file.
|
||||
# fmt: off
|
||||
splits = content.split('\"\"\"')
|
||||
# fmt: on
|
||||
splits = content.split('\"\"\"') # fmt: skip
|
||||
content = "".join(splits[::2])
|
||||
|
||||
module_parts = str(module_fname).split(os.path.sep)
|
||||
|
||||
Reference in New Issue
Block a user