chore: konfigurace lintů

Bez explicitní konfigurace se výsledek lintů mění sám od sebe: výchozí
sada pravidel ruffu se liší verzi od verze a flake8 hlásí generovaný
resources.py, který se ručně neformátuje.

Konfigurace je rozdělená schválně. amcr_viewer/.flake8 leží vedle
metadata.txt, protože scanner na plugins.qgis.org hledá config soubory
jen v kořeni balíčku uvnitř ZIPu; stejná pravidla tak platí v CI,
lokálně i při uploadu. Konfigurace ruffu je v kořenovém pyproject.toml,
ruff se do balíčku pluginu nedistribuuje.

Ignorovaná pravidla mají v pyproject.toml odůvodnění: UP009 (hlavička
utf-8 je konvence šablony Plugin Builderu), BLE001 (except Exception je
záměr, výjimka nesmí propadnout do QGISu), SIM103 a SIM105 (čitelnost).

Dvě opravy, které z konfigurace plynou:
- open(path, 'r', encoding=...) -> open(path, encoding=...)  [UP015]
- zbytečné else: po return v get_komponenty()                [RET505]

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WhQyc1uQFcpkezLwM8if6T
This commit is contained in:
david-spacilandClaude Opus 5 committed 2026-09-01 23:43:20 +02:00
1 parent 39dac12bad
commit bcb0bc2c86
4 files changed
+58 -3

No files matched your search

+12
View File
@@ -0,0 +1,12 @@
# Konfigurace flake8 pro plugin AMČR Viewer.
#
# Soubor leží vedle metadata.txt schválně: scanner na plugins.qgis.org
# hledá .flake8 pouze v kořeni balíčku uvnitř ZIPu, takže stejná pravidla
# platí v CI, lokálně i při uploadu.
# https://plugins.qgis.org/docs/security-scanning/config-files
[flake8]
# resources.py je vygenerovaný výstup pyrcc ("All changes made in this
# file will be lost"), není nikde importovaný a zdrojový .qrc v repu není.
# Ručně se neformátuje.
per-file-ignores =
*resources.py: E302,E305,E501
+1 -1
View File
@@ -65,7 +65,7 @@ def parse_codelist_file(filename, target_dict=None):
try: try:
# Open the file using standard UTF-8 encoding # Open the file using standard UTF-8 encoding
with open(path, 'r', encoding='utf-8') as f: with open(path, encoding='utf-8') as f:
reader = csv.reader(f, delimiter=';') reader = csv.reader(f, delimiter=';')
# Skip the CSV header row # Skip the CSV header row
+1 -2
View File
@@ -659,8 +659,7 @@ class AmcrFilterDialog(QDialog):
def get_komponenty(self): def get_komponenty(self):
if self.typ_dat in ["akce", "lokalita"]: if self.typ_dat in ["akce", "lokalita"]:
return "true" if self.chk_komponenty.isChecked() else "false" return "true" if self.chk_komponenty.isChecked() else "false"
else: return "false"
return "false"
def get_filters(self): def get_filters(self):
"""Compiles the user selections from the cache into """Compiles the user selections from the cache into
+44
View File
@@ -0,0 +1,44 @@
# Konfigurace lintů pro tento repozitář.
#
# Plugin se nedistribuuje jako Python balíček (do QGISu jde ZIP složky
# amcr_viewer/), takže tenhle soubor nic nebalí ani neinstaluje – slouží
# jen k tomu, aby ruff choval stejně v CI, lokálně i za rok. Bez explicitní
# konfigurace se výchozí sada pravidel mezi verzemi ruffu mění.
#
# Konfigurace flake8 je záměrně jinde: v amcr_viewer/.flake8, protože ji
# musí najít i scanner na plugins.qgis.org.
[tool.ruff]
line-length = 79
# QGIS 3.44 běží na Pythonu 3.9 a novějším
target-version = "py39"
# Generovaný výstup pyrcc, "All changes made in this file will be lost"
extend-exclude = ["amcr_viewer/resources.py"]
[tool.ruff.lint]
select = [
"E", # pycodestyle – chyby
"W", # pycodestyle – varování
"F", # pyflakes
"I", # pořadí importů
"UP", # zastaralé konstrukce
"B", # bugbear
"C4", # comprehensions
"SIM", # zjednodušení
"RET", # návratové hodnoty
"BLE", # holé except
]
ignore = [
# Hlavička "# -*- coding: utf-8 -*-" je konvence šablony Plugin
# Builderu a drží se v celém projektu jednotně.
"UP009",
# "except Exception" je v pluginu záměr: výjimka nesmí propadnout do
# QGISu, chyba se uživateli ukáže v liště zpráv.
"BLE001",
# Obě dotčená místa mají ke každé větvi vysvětlující komentář,
# sloučením do jednoho výrazu by se čitelnost zhoršila.
"SIM103",
# contextlib.suppress() by kvůli jednomu místu přidal import a odsunul
# komentář, který vysvětluje, proč tam ta výjimka je.
"SIM105",
]