From 2936a468aab833c9d0d2becfa131b7142fb9bdf7 Mon Sep 17 00:00:00 2001 From: jamessiddeley-amd Date: Thu, 14 Aug 2025 14:12:24 -0400 Subject: [PATCH] [rocprof-compute] updated formatting workflow and docs (#348) * updated formatting workflow and docs * restored requirements.txt --- .../rocprofiler-compute-formatting.yml | 26 ++++++++--- projects/rocprofiler-compute/CONTRIBUTING.md | 39 +++++++++++++++++ projects/rocprofiler-compute/README.md | 41 +----------------- .../data/contributing/pre-commit-hook.png | Bin 17089 -> 18114 bytes projects/rocprofiler-compute/requirements.txt | 2 +- 5 files changed, 60 insertions(+), 48 deletions(-) diff --git a/.github/workflows/rocprofiler-compute-formatting.yml b/.github/workflows/rocprofiler-compute-formatting.yml index a586977bb0..da9ebcc28a 100644 --- a/.github/workflows/rocprofiler-compute-formatting.yml +++ b/.github/workflows/rocprofiler-compute-formatting.yml @@ -30,14 +30,26 @@ jobs: working-directory: projects/rocprofiler-compute run: | python -m pip install --upgrade pip - python -m pip install black isort + python -m pip install ruff if [ -f requirements.txt ]; then python -m pip install -r requirements.txt; fi - - name: Run black formatter - working-directory: projects/rocprofiler-compute - run: black . - - name: Run isort formatter - working-directory: projects/rocprofiler-compute - run: isort . + - name: Run Ruff Linter and Import Sorter + run: | + ruff check . --fix --exit-zero + - name: Run Ruff Formatter + run: | + ruff format . + - name: Check for formatting/linting changes + run: | + git config --global user.name 'github-actions' + git config --global user.email 'github-actions@github.com' + git add -A . + if ! git diff --cached --quiet; then + echo "::error::Files were modified by ruff. Please run 'ruff check . --fix && ruff format .' locally and commit the changes." + git diff --cached --patch # Show the diff in the logs + exit 1 + else + echo "Ruff found no issues or all issues were fixed and files are clean." + fi cmake: runs-on: ubuntu-22.04 diff --git a/projects/rocprofiler-compute/CONTRIBUTING.md b/projects/rocprofiler-compute/CONTRIBUTING.md index c733522505..c75c75c46b 100644 --- a/projects/rocprofiler-compute/CONTRIBUTING.md +++ b/projects/rocprofiler-compute/CONTRIBUTING.md @@ -52,6 +52,45 @@ Now, when you commit code to the repository you should see something like this: Please see the [pre-commit documentation](https://pre-commit.com/#quick-start) for additional information. +## Contribution Guidelines + +To ensure code quality and consistency, we use **Ruff**, a fast Python linter and formatter. Before submitting a pull request, please ensure your code is formatted and linted correctly. This is the manual alternative to running ruff pre-commit hooks. + +----- + +## Installing and Running Ruff + +Ruff is available on PyPI and can be installed using `pip`: + +```bash +pip install ruff +``` + +Once installed, you can run Ruff from the command line. To check for linting errors and formatting issues, navigate to the project root and run: + +```bash +ruff check . +ruff format --check . +``` + +To automatically fix most of the issues detected, you can use the `--fix` flag with the `check` command and run the `format` command without the `--check` flag: + +```bash +ruff check --fix . +ruff format . +``` + +----- + +## Disabling Formatting for Specific Sections + +There may be instances where you need to disable Ruff's formatting on a specific block of code. You can do this using special comments: + + * **`# fmt: off`** and **`# fmt: on`**: These comments can be used to disable and re-enable formatting for a block of code. + * **`# fmt: skip`**: This comment, placed at the end of a line, will prevent Ruff from formatting that specific statement. + +You can also disable specific linting rules for a line by using `# noqa: `. + ## Coding guidelines Below are some repository specific guidelines which are followed througout the repository. diff --git a/projects/rocprofiler-compute/README.md b/projects/rocprofiler-compute/README.md index 24d8744506..7f02ef397e 100644 --- a/projects/rocprofiler-compute/README.md +++ b/projects/rocprofiler-compute/README.md @@ -75,7 +75,7 @@ To build the binary we follow these steps: NOTE: Since RHEL 8 ships with glibc version 2.28, this standalone binary can only be run on environment with glibc version greater than 2.28. glibc version can be checked using `ldd --version` command. -NOTE: libnss3.so shared library is required when using --roof-only option which generates roofline data in PDF format +NOTE: libnss3.so shared library is required when using --roof-only option which generates roofline data in PDF format To test the standalone binary provide the `--call-binary` option to pytest. @@ -104,42 +104,3 @@ style reference is provided below for convenience: url = {https://doi.org/10.5281/zenodo.7314631} } ``` - -### Contribution Guidelines - -To ensure code quality and consistency, we use **Ruff**, a fast Python linter and formatter. Before submitting a pull request, please ensure your code is formatted and linted correctly. - ------ - -### Installing and Running Ruff - -Ruff is available on PyPI and can be installed using `pip`: - -```bash -pip install ruff -``` - -Once installed, you can run Ruff from the command line. To check for linting errors and formatting issues, navigate to the project root and run: - -```bash -ruff check . -ruff format --check . -``` - -To automatically fix most of the issues detected, you can use the `--fix` flag with the `check` command and run the `format` command without the `--check` flag: - -```bash -ruff check --fix . -ruff format . -``` - ------ - -### Disabling Formatting for Specific Sections - -There may be instances where you need to disable Ruff's formatting on a specific block of code. You can do this using special comments: - - * **`# fmt: off`** and **`# fmt: on`**: These comments can be used to disable and re-enable formatting for a block of code. - * **`# fmt: skip`**: This comment, placed at the end of a line, will prevent Ruff from formatting that specific statement. - -You can also disable specific linting rules for a line by using `# noqa: `. diff --git a/projects/rocprofiler-compute/docs/data/contributing/pre-commit-hook.png b/projects/rocprofiler-compute/docs/data/contributing/pre-commit-hook.png index d7af49d978efb66c8468382918e8e99a3eb468d0..eb33431bde13d18d8a9ef5beb606fd79ab2b3c63 100644 GIT binary patch literal 18114 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

>RR)Jibn;(RFeB(m7mE;;M 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 Ok&#dkFMng`|33g91)U-Q diff --git a/projects/rocprofiler-compute/requirements.txt b/projects/rocprofiler-compute/requirements.txt index f5c699ea6e..ef0de785a2 100644 --- a/projects/rocprofiler-compute/requirements.txt +++ b/projects/rocprofiler-compute/requirements.txt @@ -16,4 +16,4 @@ tabulate textual textual_plotext textual-fspicker -tqdm \ No newline at end of file +tqdm