Mcore Linting And Formatting

by nvidiacf5224d14250Apache-2.03.5K starsListed Oct 8, 2026Updated Oct 8, 2026Repository updated today

Linting and formatting for Megatron-LM. Covers running autoformat.sh, tools (ruff, black, isort, pylint, mypy), and code style rules.

Instructions onlySoftware Development
AI-generated overview

Guides linting and formatting for Megatron-LM, covering autoformat.sh, ruff, black, isort, pylint, mypy and style rules.

What it does
This skill documents how to run linting and formatting for the Megatron-LM codebase. It explains invoking tools/autoformat.sh in check or fix mode, running isort on edited files, and installing the linting dependency group with uv sync. It also lists code style rules such as type hints, Google-style docstrings, naming conventions, a 119-character line length, and avoiding bare except clauses.
When to use it
Use it when running linting or autoformatting, fixing style violations before a pull request, or troubleshooting failures from pre-commit, ruff, isort, mypy, or autoformat.sh.
Requirements
Instructions only; no scripts are shipped. It assumes a Megatron-LM checkout with tools/autoformat.sh and pyproject.toml, plus the linting tools black, isort, pylint, ruff, and mypy, typically installed via uv sync --locked --only-group linting inside a container.

Linting and Formatting


Running the Formatter

Run before opening a PR:

bash
# Check mode (no changes applied)BASE_REF=main CHECK_ONLY=true SKIP_DOCS=false bash tools/autoformat.sh
# Fix modeBASE_REF=main CHECK_ONLY=false bash tools/autoformat.sh

Tools invoked: black, isort, pylint, ruff, mypy.


Import Ordering

After editing imports in any Python files, always run uv run isort on those files before committing:

bash
uv run isort <file1>.py <file2>.py

Setting Up the Linting Group

Inside the container:

bash
uv sync --locked --only-group linting

This installs ruff, black, isort, pylint — the same tools used by tools/autoformat.sh and CI's linting job.


Code Style Rules

  • Type hints: required on all public API functions. Use X | None, not Optional[X].
  • Docstrings: Google-style on all public classes and functions.
  • Naming: follow Python conventions — snake_case for functions and variables, PascalCase for classes.
  • Line length: 119 characters (configured in pyproject.toml).
  • No bare except: always catch specific exception types.

Source and attribution

Source:nvidia/skillsinskills/mcore-linting-and-formattingat commitcf5224d

License: Apache-2.0

Content belongs to its original authors. SourceWeft indexes it from a public repository.

Report or request removal