| name | coding-standard-python |
| description | Enforce Python PEP 8 coding standards including snake_case variables, PascalCase classes, and snake_case filenames. |
Python Coding Standards (PEP 8)
When reviewing or generating Python code, follow these rules:
File Naming
- Source files: Use snake_case (e.g.,
user_service.py, api_client.py)
- Package directories: Use snake_case (e.g.,
data_processing/, utils/)
- Test files: Use
test_ prefix (e.g., test_user_service.py)
- Config files: Use snake_case (e.g.,
config_settings.py)
Variable Naming
- Variables: snake_case (e.g.,
user_name, is_active, total_count)
- Constants: UPPER_SNAKE_CASE (e.g.,
MAX_RETRIES, API_BASE_URL)
- Boolean variables: Prefix with
is_, has_, can_, should_ (e.g., is_loading, has_error)
- Protected variables: Single underscore prefix (e.g.,
_internal_data)
- Private variables: Double underscore prefix (e.g.,
__private_data)
Function Naming
- Functions: snake_case (e.g.,
calculate_total(), fetch_user_data())
- Private functions: Prefix with underscore (e.g.,
_validate_input(), _process_data())
- Dunder methods: Double underscores (e.g.,
__init__, __str__, __repr__)
Class Naming
- Classes: PascalCase (e.g.,
UserService, DataProcessor, ApiClient)
- Exception classes: PascalCase with
Error or Exception suffix (e.g., ValidationError)
- Abstract classes: PascalCase, optionally prefix with
Base or Abstract (e.g., BaseHandler)
Method Naming
- Instance methods: snake_case (e.g.,
get_user(), process_data())
- Class methods: snake_case with
@classmethod decorator
- Static methods: snake_case with
@staticmethod decorator
- Properties: snake_case with
@property decorator
Module Organization
- Imports at the top: standard library, third-party, local imports (separated by blank lines)
- Module-level dunder names after imports (
__all__, __version__)
- One class per file for large classes; multiple related classes okay for small ones
- Use
__all__ to define public API