[llvm] fe5c185 - Revert "[Workflow] Add new code format helper. (#66684)"

Tobias Hieta via llvm-commits llvm-commits at lists.llvm.org
Wed Sep 20 01:01:54 PDT 2023


Author: Tobias Hieta
Date: 2023-09-20T10:01:37+02:00
New Revision: fe5c18564174c1b488e45465c3896f9c74993310

URL: https://github.com/llvm/llvm-project/commit/fe5c18564174c1b488e45465c3896f9c74993310
DIFF: https://github.com/llvm/llvm-project/commit/fe5c18564174c1b488e45465c3896f9c74993310.diff

LOG: Revert "[Workflow] Add new code format helper. (#66684)"

This reverts commit da94bf0d561109529e4ab3dabfcbb8b6c258ea39.

Added: 
    .github/workflows/pr-python-format.yml

Modified: 
    

Removed: 
    .github/workflows/pr-code-format.yml
    llvm/utils/git/code-format-helper.py
    llvm/utils/git/requirements_formatting.txt
    llvm/utils/git/requirements_formatting.txt.in


################################################################################
diff  --git a/.github/workflows/pr-code-format.yml b/.github/workflows/pr-code-format.yml
deleted file mode 100644
index 102e1a263b15a88..000000000000000
--- a/.github/workflows/pr-code-format.yml
+++ /dev/null
@@ -1,54 +0,0 @@
-name: "Check code formatting"
-on: pull_request
-permissions:
-  pull-requests: write
-
-jobs:
-  code_formatter:
-    runs-on: ubuntu-latest
-    steps:
-      - name: Fetch LLVM sources
-        uses: actions/checkout at v4
-        with:
-          persist-credentials: false
-          fetch-depth: 2
-
-      - name: Get changed files
-        id: changed-files
-        uses: tj-actions/changed-files at v39
-        with:
-          separator: ","
-
-      - name: "Listed files"
-        run: |
-          echo "Formatting files:"
-          echo "${{ steps.changed-files.outputs.all_changed_files }}"
-
-      - name: Install clang-format
-        uses: aminya/setup-cpp at v1
-        with:
-          clangformat: 16.0.6
-
-      - name: Setup Python env
-        uses: actions/setup-python at v4
-        with:
-          python-version: '3.11'
-          cache: 'pip'
-          cache-dependency-path: 'llvm/utils/git/requirements_formatting.txt'
-
-      - name: Install python dependencies
-        run: pip install -r llvm/utils/git/requirements_formatting.txt
-
-      - name: Run code formatter
-        env:
-          GITHUB_PR_NUMBER: ${{ github.event.pull_request.number }}
-          START_REV: ${{ github.event.pull_request.base.sha }}
-          END_REV: ${{ github.event.pull_request.head.sha }}
-          CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
-        run: |
-          python llvm/utils/git/code-format-helper.py \
-            --token ${{ secrets.GITHUB_TOKEN }} \
-            --issue-number $GITHUB_PR_NUMBER \
-            --start-rev $START_REV \
-            --end-rev $END_REV \
-            --changed-files "$CHANGED_FILES"

diff  --git a/.github/workflows/pr-python-format.yml b/.github/workflows/pr-python-format.yml
new file mode 100644
index 000000000000000..c6122958826545c
--- /dev/null
+++ b/.github/workflows/pr-python-format.yml
@@ -0,0 +1,39 @@
+name: "Check Python Formatting"
+on:
+  pull_request:
+    # run on .py
+    paths:
+      - '**.py'
+
+jobs:
+  python_formatting:
+    runs-on: ubuntu-latest
+    steps:
+      - name: Fetch LLVM sources
+        uses: actions/checkout at v4
+        with:
+          persist-credentials: false
+          fetch-depth: 2
+
+      - name: Get changed files
+        id: changed-files
+        uses: tj-actions/changed-files at v39
+        with:
+          files: '**/*.py'
+
+      - name: "Listed files"
+        run: |
+          echo "Formatting files:"
+          echo "${{ steps.changed-files.outputs.all_changed_files }}"
+
+      - name: Setup Python env
+        uses: actions/setup-python at v4
+        with:
+          python-version: '3.11'
+
+      - name: Python Formatting
+        uses: akaihola/darker at 1.7.2
+        with:
+          options: "--check --
diff  --color"
+          version: "~=1.7.2"
+          src: "${{ steps.changed-files.outputs.all_changed_files }}"

diff  --git a/llvm/utils/git/code-format-helper.py b/llvm/utils/git/code-format-helper.py
deleted file mode 100644
index 8d3c30b309d015d..000000000000000
--- a/llvm/utils/git/code-format-helper.py
+++ /dev/null
@@ -1,233 +0,0 @@
-#!/usr/bin/env python3
-#
-# ====- code-format-helper, runs code formatters from the ci --*- python -*--==#
-#
-# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-# See https://llvm.org/LICENSE.txt for license information.
-# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-#
-# ==-------------------------------------------------------------------------==#
-
-import argparse
-import os
-import subprocess
-import sys
-from functools import cached_property
-
-import github
-from github import IssueComment, PullRequest
-
-
-class FormatHelper:
-    COMMENT_TAG = "<!--LLVM CODE FORMAT COMMENT: {fmt}-->"
-    name = "unknown"
-
-    @property
-    def comment_tag(self) -> str:
-        return self.COMMENT_TAG.replace("fmt", self.name)
-
-    def format_run(self, changed_files: [str], args: argparse.Namespace) -> str | None:
-        pass
-
-    def pr_comment_text(self, 
diff : str) -> str:
-        return f"""
-{self.comment_tag}
-
-:warning: {self.friendly_name}, {self.name} found issues in your code. :warning:
-
-<details>
-<summary>
-You can test this locally with the following command:
-</summary>
-
-``````````bash
-{self.instructions}
-``````````
-
-</details>
-
-<details>
-<summary>
-View the 
diff  from {self.name} here.
-</summary>
-
-``````````
diff 
-{
diff }
-``````````
-
-</details>
-"""
-
-    def find_comment(
-        self, pr: PullRequest.PullRequest
-    ) -> IssueComment.IssueComment | None:
-        for comment in pr.as_issue().get_comments():
-            if self.comment_tag in comment.body:
-                return comment
-        return None
-
-    def update_pr(self, 
diff : str, args: argparse.Namespace):
-        repo = github.Github(args.token).get_repo(args.repo)
-        pr = repo.get_issue(args.issue_number).as_pull_request()
-
-        existing_comment = self.find_comment(pr)
-        pr_text = self.pr_comment_text(
diff )
-
-        if existing_comment:
-            existing_comment.edit(pr_text)
-        else:
-            pr.as_issue().create_comment(pr_text)
-
-    def update_pr_success(self, args: argparse.Namespace):
-        repo = github.Github(args.token).get_repo(args.repo)
-        pr = repo.get_issue(args.issue_number).as_pull_request()
-
-        existing_comment = self.find_comment(pr)
-        if existing_comment:
-            existing_comment.edit(
-                f"""
-{self.comment_tag}
-:white_check_mark: With the latest revision this PR passed the {self.friendly_name}.
-"""
-            )
-
-    def run(self, changed_files: [str], args: argparse.Namespace):
-        
diff  = self.format_run(changed_files, args)
-        if 
diff :
-            self.update_pr(
diff , args)
-            return False
-        else:
-            self.update_pr_success(args)
-            return True
-
-
-class ClangFormatHelper(FormatHelper):
-    name = "clang-format"
-    friendly_name = "C/C++ code formatter"
-
-    @property
-    def instructions(self):
-        return " ".join(self.cf_cmd)
-
-    @cached_property
-    def libcxx_excluded_files(self):
-        with open("libcxx/utils/data/ignore_format.txt", "r") as ifd:
-            return [excl.strip() for excl in ifd.readlines()]
-
-    def should_be_excluded(self, path: str) -> bool:
-        if path in self.libcxx_excluded_files:
-            print(f"Excluding file {path}")
-            return True
-        return False
-
-    def filter_changed_files(self, changed_files: [str]) -> [str]:
-        filtered_files = []
-        for path in changed_files:
-            _, ext = os.path.splitext(path)
-            if ext in (".cpp", ".c", ".h", ".hpp", ".hxx", ".cxx"):
-                if not self.should_be_excluded(path):
-                    filtered_files.append(path)
-        return filtered_files
-
-    def format_run(self, changed_files: [str], args: argparse.Namespace) -> str | None:
-        cpp_files = self.filter_changed_files(changed_files)
-        if not cpp_files:
-            return
-        cf_cmd = [
-            "git-clang-format",
-            "--
diff ",
-            args.start_rev,
-            args.end_rev,
-            "--",
-        ] + cpp_files
-        print(f"Running: {' '.join(cf_cmd)}")
-        self.cf_cmd = cf_cmd
-        proc = subprocess.run(cf_cmd, capture_output=True)
-
-        # formatting needed
-        if proc.returncode == 1:
-            return proc.stdout.decode("utf-8")
-
-        return None
-
-
-class DarkerFormatHelper(FormatHelper):
-    name = "darker"
-    friendly_name = "Python code formatter"
-
-    @property
-    def instructions(self):
-        return " ".join(self.darker_cmd)
-
-    def filter_changed_files(self, changed_files: [str]) -> [str]:
-        filtered_files = []
-        for path in changed_files:
-            name, ext = os.path.splitext(path)
-            if ext == ".py":
-                filtered_files.append(path)
-
-        return filtered_files
-
-    def format_run(self, changed_files: [str], args: argparse.Namespace) -> str | None:
-        py_files = self.filter_changed_files(changed_files)
-        if not py_files:
-            return
-        darker_cmd = [
-            "darker",
-            "--check",
-            "--
diff ",
-            "-r",
-            f"{args.start_rev}..{args.end_rev}",
-        ] + py_files
-        print(f"Running: {' '.join(darker_cmd)}")
-        self.darker_cmd = darker_cmd
-        proc = subprocess.run(darker_cmd, capture_output=True)
-
-        # formatting needed
-        if proc.returncode == 1:
-            return proc.stdout.decode("utf-8")
-
-        return None
-
-
-ALL_FORMATTERS = (DarkerFormatHelper(), ClangFormatHelper())
-
-if __name__ == "__main__":
-    parser = argparse.ArgumentParser()
-    parser.add_argument(
-        "--token", type=str, required=True, help="GitHub authentiation token"
-    )
-    parser.add_argument(
-        "--repo",
-        type=str,
-        default=os.getenv("GITHUB_REPOSITORY", "llvm/llvm-project"),
-        help="The GitHub repository that we are working with in the form of <owner>/<repo> (e.g. llvm/llvm-project)",
-    )
-    parser.add_argument("--issue-number", type=int, required=True)
-    parser.add_argument(
-        "--start-rev",
-        type=str,
-        required=True,
-        help="Compute changes from this revision.",
-    )
-    parser.add_argument(
-        "--end-rev", type=str, required=True, help="Compute changes to this revision"
-    )
-    parser.add_argument(
-        "--changed-files",
-        type=str,
-        help="Comma separated list of files that has been changed",
-    )
-
-    args = parser.parse_args()
-
-    changed_files = []
-    if args.changed_files:
-        changed_files = args.changed_files.split(",")
-
-    exit_code = 0
-    for fmt in ALL_FORMATTERS:
-        if not fmt.run(changed_files, args):
-            exit_code = 1
-
-    sys.exit(exit_code)

diff  --git a/llvm/utils/git/requirements_formatting.txt b/llvm/utils/git/requirements_formatting.txt
deleted file mode 100644
index ff744f0d4225f59..000000000000000
--- a/llvm/utils/git/requirements_formatting.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-#
-# This file is autogenerated by pip-compile with Python 3.11
-# by the following command:
-#
-#    pip-compile --output-file=llvm/utils/git/requirements_formatting.txt llvm/utils/git/requirements_formatting.txt.in
-#
-black==23.9.1
-    # via
-    #   -r llvm/utils/git/requirements_formatting.txt.in
-    #   darker
-certifi==2023.7.22
-    # via requests
-cffi==1.15.1
-    # via
-    #   cryptography
-    #   pynacl
-charset-normalizer==3.2.0
-    # via requests
-click==8.1.7
-    # via black
-cryptography==41.0.3
-    # via pyjwt
-darker==1.7.2
-    # via -r llvm/utils/git/requirements_formatting.txt.in
-deprecated==1.2.14
-    # via pygithub
-idna==3.4
-    # via requests
-mypy-extensions==1.0.0
-    # via black
-packaging==23.1
-    # via black
-pathspec==0.11.2
-    # via black
-platformdirs==3.10.0
-    # via black
-pycparser==2.21
-    # via cffi
-pygithub==1.59.1
-    # via -r llvm/utils/git/requirements_formatting.txt.in
-pyjwt[crypto]==2.8.0
-    # via pygithub
-pynacl==1.5.0
-    # via pygithub
-requests==2.31.0
-    # via pygithub
-toml==0.10.2
-    # via darker
-urllib3==2.0.4
-    # via requests
-wrapt==1.15.0
-    # via deprecated

diff  --git a/llvm/utils/git/requirements_formatting.txt.in b/llvm/utils/git/requirements_formatting.txt.in
deleted file mode 100644
index 4aac571af1cf51c..000000000000000
--- a/llvm/utils/git/requirements_formatting.txt.in
+++ /dev/null
@@ -1,3 +0,0 @@
-black~=23.0
-darker==1.7.2
-PyGithub==1.59.1


        


More information about the llvm-commits mailing list