utils/helpers.py (27 lines of code) (raw):

# coding=utf-8 # Copyright 2024-present, the HuggingFace Inc. team. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Contains helpers used by the scripts in `./utils`.""" import subprocess import tempfile from pathlib import Path from ruff.__main__ import find_ruff_bin def check_and_update_file_content(file: Path, expected_content: str, update: bool): # Ensure the expected content ends with a newline to satisfy end-of-file-fixer hook expected_content = expected_content.rstrip("\n") + "\n" content = file.read_text() if file.exists() else None if content != expected_content: if update: file.write_text(expected_content) print(f" {file} has been updated. Please make sure the changes are accurate and commit them.") else: print(f"❌ Expected content mismatch in {file}.") exit(1) def format_source_code(code: str) -> str: """Format the generated source code using Ruff.""" with tempfile.TemporaryDirectory() as tmpdir: filepath = Path(tmpdir) / "tmp.py" filepath.write_text(code) ruff_bin = find_ruff_bin() if not ruff_bin: raise FileNotFoundError("Ruff executable not found.") try: subprocess.run([ruff_bin, "check", str(filepath), "--fix", "--quiet"], check=True) subprocess.run([ruff_bin, "format", str(filepath), "--quiet"], check=True) except subprocess.CalledProcessError as e: raise RuntimeError(f"Error running Ruff: {e}") return filepath.read_text()