Python Language Support

Summary

FeatureStatusNotes
MaintainabilityComplexity, duplication, code smells
Linting
Auto-formatting
Custom checks
Security scanningAppSec, dependencies, and secrets
Code metrics
Code coverage

Details

Maintainability
ComplexityAka cognitive complexity
Cyclomatic complexity
Identical code duplication
Similar code duplication
Code smells
Linters
Flake8Style guide enforcement
MypyStatic type checker
RuffFast Python linter
BanditSecurity linter
radarlint-pythonStatic analysis tool
Auto-formatters
BlackCode formatter
RuffIncludes formatting capabilities
Custom checks
ast-grep
Semgrep
ripgrep
Security scanning
BanditAppSec (SAST)
GitleaksSecrets scanning
OSV-ScannerDependency scanning (SCA)
radarlint-pythonAppSec (SAST)
SemgrepAppSec (SAST)
TrivyDependency scanning (SCA)
TruffleHogSecrets scanning
Code coverage
pytest
unittest
Cobertura coverage format
Coverage.py XML format

File extensions

By default, Python files are defined as:

[file_types.python]
globs = [
"*.py",
"*.pyw",
"**/DEPS",
"**/Snakefile",
"**/SConscript",
"**/wscript",
"**/SConstruct",
"**/.gclient",
]
interpreters = ["python", "python3", "python2", "pypy"]

These patterns can be overridden from qlty.toml.

Supported Python versions

We support Python 2 and Python 3 for maintainability checks and code coverage. Each plugin may have its own version requirements.