Add Pylint support and enable Pylint CI checks (#2658)

This commit is contained in:
correctmost 2024-11-04 08:30:28 -05:00 committed by GitHub
parent e3123671bf
commit aecf3ea553
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 75 additions and 4 deletions

22
.github/workflows/pylint.yaml vendored Normal file
View File

@ -0,0 +1,22 @@
on: [ push, pull_request ]
name: Pylint linting
jobs:
pylint:
runs-on: ubuntu-latest
container:
image: archlinux/archlinux:latest
steps:
- uses: actions/checkout@v4
- name: Prepare arch
run: |
pacman-key --init
pacman --noconfirm -Sy archlinux-keyring
pacman --noconfirm -Syyu
pacman --noconfirm -Sy python-pip python-pyparted python-simple-term-menu pkgconfig gcc
- run: pip install --break-system-packages --upgrade pip
- name: Install Pylint and Pylint plug-ins
run: pip install --break-system-packages .[dev]
- run: python --version
- run: pylint --version
- name: Lint with Pylint
run: pylint .

View File

@ -61,8 +61,8 @@ def ask_for_audio_selection(
current: Optional[AudioConfiguration] = None
) -> Optional[AudioConfiguration]:
choices = [
Audio.Pipewire.name,
Audio.Pulseaudio.name,
Audio.Pipewire.name, # pylint: disable=no-member
Audio.Pulseaudio.name, # pylint: disable=no-member
Audio.no_audio_text()
]

View File

@ -13,7 +13,7 @@ class PasswordStrength(Enum):
STRONG = 'strong'
@property
def value(self) -> str:
def value(self) -> str: # pylint: disable=invalid-overridden-method
match self:
case PasswordStrength.VERY_WEAK: return str(_('very weak'))
case PasswordStrength.WEAK: return str(_('weak'))

View File

@ -113,4 +113,4 @@ def installed_package(package: str) -> LocalPackage:
except SysCallError:
pass
return LocalPackage({field.name: package_info.get(field.name) for field in dataclasses.fields(LocalPackage)}) # type: ignore
return LocalPackage({field.name: package_info.get(field.name) for field in dataclasses.fields(LocalPackage)}) # type: ignore # pylint: disable=no-value-for-parameter

View File

@ -35,6 +35,8 @@ dev = [
"flake8==7.1.1",
"pre-commit==4.0.1",
"ruff==0.7.2",
"pylint==3.3.1",
"pylint-pydantic==0.3.2",
]
doc = ["sphinx"]
@ -120,6 +122,53 @@ ignore_missing_imports = true
targets = ["archinstall"]
exclude = ["/tests"]
[tool.pylint.main]
ignore-paths = [
"^build/",
"^docs/",
]
load-plugins = ["pylint_pydantic"]
persistent = false
py-version = "3.11"
recursive = true
[tool.pylint.format]
max-line-length = 220
[tool.pylint."messages control"]
disable = [
"C",
"R",
"arguments-renamed",
"attribute-defined-outside-init",
"bad-indentation",
"bare-except",
"broad-exception-caught",
"cell-var-from-loop",
"comparison-with-callable",
"dangerous-default-value",
"expression-not-assigned",
"f-string-without-interpolation",
"fixme",
"protected-access",
"raise-missing-from",
"redefined-builtin",
"redefined-outer-name",
"self-assigning-variable",
"unnecessary-lambda",
"unreachable",
"unspecified-encoding",
"unused-argument",
"unused-variable",
"useless-parent-delegation",
]
[tool.pylint.refactoring]
score = false
[tool.pylint.variables]
additional-builtins = ["_"]
[tool.ruff]
target-version = "py311"
builtins = ["_"]