python-sdk
python-sdk copied to clipboard
Python lint: Ruff rules for pylint and code complexity
Add ruff rules for Pylint and McCabe cyclomatic code complexity.
- https://docs.astral.sh/ruff/rules/#pylint-pl
- https://docs.astral.sh/ruff/rules/#mccabe-c90
% ruff check --select=C90,PL --statistics | sort -k2
5 C901 [ ] complex-structure
1 PLC0414 [ ] useless-import-alias
19 PLR0402 [*] manual-from-import
1 PLR0911 [ ] too-many-return-statements
1 PLR0912 [ ] too-many-branches
5 PLR0913 [ ] too-many-arguments
1 PLR0915 [ ] too-many-statements
26 PLR2004 [ ] magic-value-comparison
1 PLW1510 [*] subprocess-run-without-check
[*] 20 fixable with the `--fix` option (1 hidden fix can be enabled with the `--unsafe-fixes` option).
Found 60 errors.
Motivation and Context
Pylint checks for errors, enforces a coding standard, looks for code smells, and can suggest how code could be refactored. McCabe detects functions with high complexity that are hard to understand and maintain.
The C90 and PLR091 rules enable the setting of upper limits on code complexity. If a contributor wants to raise these limits, that can lead to useful discussion in code reviews about why complexity needs to rise and maintainability needs to go down.
How Has This Been Tested?
Breaking Changes
Types of changes
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to change)
- [ ] Documentation update
Checklist
- [ ] I have read the MCP Documentation
- [x] My code follows the repository's style guidelines
- [ ] New and existing tests pass locally
- [ ] I have added appropriate error handling
- [ ] I have added or updated documentation as needed
Additional context
Please read the git commit when reviewing pull requests.
Please can you provide rationale for the specific numerical thresholds chosen
The C90 and PLR091 rules enable the setting of upper limits on code complexity. If a contributor wants to raise these limits, that can lead to useful discussion in code reviews about why complexity needs to rise and maintainability needs to go down.
The current code complexity determines the values set in this PR, with comments showing the recommended values. To find complexity in the codebase, just lower any of these values by one and run ruff check. Failure to review and merge this pr has forced an increase in max-complexity, max-branches, max-returns, and max-statements. Putting C90 and PLR091 in the same PR makes sense because they both set upper limits on code complexity and maintainability.
- mccabe.max-complexity = 13 # Default is 10
- max-branches = 14 # Default is 12
- max-returns = 7 # Default is 6
- max-statements = 69 # Default is 50
+ mccabe.max-complexity = 24 # Default is 10
+ max-branches = 23 # Default is 12
+ max-returns = 13 # Default is 6
- max-statements = 99 # Default is 50
+ max-statements = 102 # Default is 50
I have the RUFF settings to ignore the pylint import rules PLC0414 and PLR0402.
@cclauss thank you for the contribution and apologies again for the delay!