mcpField
M
mcore-linting-and-formatting

mcore-linting-and-formatting

github.com/nvidiaTesting & quality3.8k1.8k installsUpdated today
Repository

About mcore-linting-and-formatting

A Python linting and formatting guide for MCore contributors, covering code checks before pull requests. It brings together the project’s automation script, CI tools, and style conventions.

Key features

  1. 01Runs the automated formatting script
  2. 02Offers check and fix modes
  3. 03Uses black, isort, pylint, ruff, and mypy
  4. 04Defines type-hint and docstring rules
  5. 05Provides linting dependency setup

Use cases

  1. 01Check code before opening a PR
  2. 02Standardize Python import ordering
  3. 03Add type hints and docstrings to public APIs

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/nvidia/skills --skill mcore-linting-and-formatting

After installing, type/mcore-linting-and-formattingin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

BENCHMARK.md
skill-card.md
skill.oms.sig
evals/
evals.json

Details

From the project README

Linting and Formatting


Running the Formatter

Run before opening a PR:

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

# Fix mode
BASE_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:

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

Setting Up the Linting Group

Inside the container:

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.

Comments

Markdown supported