Skip to content

Commit 1c64937

Browse files
authored
#81 Linter for python
2 parents 5a28f06 + 37ddb2f commit 1c64937

17 files changed

+200
-173
lines changed

.github/workflows/continuous-integration.yml

+2
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,11 @@ jobs:
3434
run: |
3535
python -m pip install --upgrade pip
3636
pip install 'djlint==1.36.3'
37+
pip install 'ruff==0.8.2'
3738
- name: Check formatting
3839
run: |
3940
djlint --profile=django --lint --ignore "H006,H013,H030,H031,D018,T003" .
41+
ruff check
4042
unit-tests-sqlite:
4143
runs-on: ubuntu-latest
4244
timeout-minutes: 15

docs/development.md

+4
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,10 @@ säännöistä on poistettu käytöstä:
9797
* D018: {% url ... %} templaateissa
9898
* T003: nimetyt endblock tagit templaateissa
9999

100+
Python-tiedostojen tarkastamiseen käytetään lintteriä nimeltä Ruff.
101+
Repositorion juuressa on tiedosto ruff.toml, jossa määritellään tarvittavat
102+
poikkeukset Ruff:in oletussääntöihin.
103+
100104
## Selityksiä lähdekooditiedostoista
101105

102106
* `web/tupa/`

generate_passwords.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
from shutil import copyfile
2-
import string, random, crypt
2+
import string
3+
import random
4+
import crypt
35
import MySQLdb
46

57

ruff.toml

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[lint.per-file-ignores]
2+
# Star imports are needed for proper setting overriding
3+
"web/settings/__init__.py" = ["F403"]

web/tupa/TehtavanMaaritys.py

+23-28
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ def is_kaava(s):
7373
for h in haku:
7474
muuttujat[h.group(1)] = Decimal(numero)
7575
tulos = laskeTaulukko([[kaava]], muuttujat)
76-
if tulos[0][0] == None or tulos[0][0] == "S":
76+
if tulos[0][0] is None or tulos[0][0] == "S":
7777
return False
7878
else:
7979
return True
@@ -86,7 +86,7 @@ def validate(posti, field_name, testFunctions, prefix=""):
8686
value = posti[id]
8787
valid = True
8888
for f in testFunctions:
89-
if f(value) == False:
89+
if not f(value):
9090
valid = False
9191
break
9292
return valid
@@ -137,10 +137,6 @@ def syotteen_tyyppi_field(posti, data, prefix, syote_id, tyyppi):
137137
field_name = "tyyppi_" + nimi
138138
value = "piste"
139139

140-
validi = True
141-
if "valid" in data.keys() and data["valid"] == False:
142-
validi = False
143-
144140
# formin taytto
145141
if data["tyyppi"] == tyyppi or (not posti and (tyyppi == "vk" or tyyppi == "pk")):
146142
maarite_index = 0
@@ -175,7 +171,7 @@ def field(posti, field_name, prefix, errors=""):
175171
def save_data(data, data_path, data_nimi, data_field, value):
176172
pos = data
177173
for p in data_path:
178-
if not p in pos.keys():
174+
if p not in pos.keys():
179175
pos[p] = {}
180176
pos = pos[p]
181177
uusi = True
@@ -210,7 +206,7 @@ def loadField(
210206
id = field_name
211207
pos = data
212208
for p in data_path:
213-
if not p in pos.keys():
209+
if p not in pos.keys():
214210
break
215211
pos = pos[p]
216212
for k, v in pos.items():
@@ -241,7 +237,7 @@ def syotteen_kuvaus_field(posti, data, prefix, syote_id, tyyppi):
241237
and (data["tyyppi"] == tyyppi or tyyppi == "pk" or tyyppi == "vk")
242238
):
243239
# Formin data:
244-
if not "maaritteet" in data.keys():
240+
if "maaritteet" not in data.keys():
245241
data["maaritteet"] = {}
246242
maarite_index = 0
247243

@@ -261,7 +257,7 @@ def syotteen_kuvaus_field(posti, data, prefix, syote_id, tyyppi):
261257
formi = {
262258
field_name: {"id": id, "name": id, "value": value, "errors": errors}
263259
}
264-
if not k in data["maaritteet"].keys():
260+
if k not in data["maaritteet"].keys():
265261
data["maaritteet"][k] = {}
266262
data["maaritteet"][k]["nimi"] = nimi
267263
data["maaritteet"][k]["kali_vihje"] = value
@@ -418,7 +414,7 @@ def lataa_parametrit(state, data, prefix, ot_tyyppi, muunnos=None):
418414
if muunnos:
419415
value = muunnos(state[prefix + ot_tyyppi + "_kiintea"])
420416
state[prefix + ot_tyyppi + "_kiintea"] = value
421-
except:
417+
except Exception:
422418
pass
423419
try:
424420
if not state[prefix + ot_tyyppi + "_nollan_kerroin"] == "1":
@@ -427,15 +423,15 @@ def lataa_parametrit(state, data, prefix, ot_tyyppi, muunnos=None):
427423
if muunnos:
428424
value = muunnos(state[prefix + ot_tyyppi + "_nollan_kaava"])
429425
state[prefix + ot_tyyppi + "_nollan_kaava"] = value
430-
except:
426+
except Exception:
431427
pass
432428
try:
433429
kerroin = state[prefix + ot_tyyppi + "_nollan_kerroin"]
434430
if not kerroin == "1" and not kerroin == "1.5" and not kerroin == "0.5":
435431
state[prefix + ot_tyyppi + "_muu_kerroin"] = state[
436432
prefix + ot_tyyppi + "_nollan_kerroin"
437433
]
438-
except:
434+
except Exception:
439435
pass
440436
try:
441437
if state[prefix + ot_tyyppi + "_arvio"] == "":
@@ -445,7 +441,7 @@ def lataa_parametrit(state, data, prefix, ot_tyyppi, muunnos=None):
445441
value = muunnos(state[prefix + ot_tyyppi + "_oikea"])
446442
state[prefix + ot_tyyppi + "_oikea"] = value
447443

448-
except:
444+
except Exception:
449445
pass
450446

451447

@@ -499,7 +495,7 @@ def maksimisuoritus(
499495
try:
500496
if not state[prefix + ot_tyyppi + "_parhaan_haku"] == "":
501497
save_data(data, ["parametrit"], "parhaan_kaava", "arvo", "suor*muk")
502-
except:
498+
except Exception:
503499
pass
504500
formi.update(field(state, "kiintea", prefix + ot_tyyppi, errors))
505501
# Jaettavat pisteet:
@@ -774,11 +770,11 @@ def vapaaKaavaForm(posti, data, prefix):
774770
formit = []
775771
for i in range(maara):
776772
validi = True
777-
if "valid" in data.keys() and data["valid"] == False:
773+
if "valid" in data.keys() and not data["valid"]:
778774
validi = False
779775
formia = list(syotteen_kuvaus_field(posti, data, prefix, i, "vk").items())[0]
780776
formib = list(syotteen_tyyppi_field(posti, data, prefix, i, "vk").items())[0]
781-
if validi and "valid" in data.keys() and data["valid"] == False:
777+
if validi and "valid" in data.keys() and not data["valid"]:
782778
del data["valid"]
783779
formit.append(
784780
{
@@ -793,7 +789,7 @@ def vapaaKaavaForm(posti, data, prefix):
793789
maaritteet = list(data["maaritteet"].copy().items())
794790
for i in range(maara):
795791
if maaritteet[i][1]["kali_vihje"] == "":
796-
if type(maaritteet[i][0]) == str and maaritteet[i][0][:1] == "#":
792+
if type(maaritteet[i][0]) is str and maaritteet[i][0][:1] == "#":
797793
del data["maaritteet"][maaritteet[i][0]]
798794
else:
799795
data["maaritteet"][-maaritteet[i][0]] = maaritteet[i][1]
@@ -862,11 +858,11 @@ def puhdasKaavaForm(posti, data, prefix):
862858
formit = []
863859
for i in range(maara):
864860
validi = True
865-
if "valid" in data.keys() and data["valid"] == False:
861+
if "valid" in data.keys() and not data["valid"]:
866862
validi = False
867863
formia = list(syotteen_kuvaus_field(posti, data, prefix, i, "pk").items())[0]
868864
formib = list(syotteen_tyyppi_field(posti, data, prefix, i, "pk").items())[0]
869-
if validi and "valid" in data.keys() and data["valid"] == False:
865+
if validi and "valid" in data.keys() and not data["valid"]:
870866
del data["valid"]
871867
formit.append(
872868
{
@@ -881,7 +877,7 @@ def puhdasKaavaForm(posti, data, prefix):
881877
maaritteet = list(data["maaritteet"].copy().items())
882878
for i in range(maara):
883879
if maaritteet[i][1]["kali_vihje"] == "":
884-
if type(maaritteet[i][0]) == str and maaritteet[i][0][:1] == "#":
880+
if type(maaritteet[i][0]) is str and maaritteet[i][0][:1] == "#":
885881
del data["maaritteet"][maaritteet[i][0]]
886882
else:
887883
data["maaritteet"][-maaritteet[i][0]] = maaritteet[i][1]
@@ -1057,7 +1053,7 @@ def tehtavanMaaritysForm(
10571053
ot_formit.append(
10581054
osaTehtavaForm(posti, tv, prefix + str(k) + "_" + str(tk))
10591055
)
1060-
if "valid" in tv.keys() and tv["valid"] == False:
1056+
if "valid" in tv.keys() and not tv["valid"]:
10611057
del tv["valid"]
10621058
data["valid"] = False
10631059
osatehtava_id = osatehtava_id + 1
@@ -1193,9 +1189,8 @@ def luoTehtavaData(tehtavat):
11931189

11941190

11951191
def tallennaTehtavaData(data):
1196-
ser = []
11971192
tehtava_id = None
1198-
if "valid" in data.keys() and data["valid"] == True:
1193+
if "valid" in data.keys() and data["valid"]:
11991194
del data["valid"]
12001195
for k, v in data.items():
12011196
# jokainen tehtava:
@@ -1204,7 +1199,7 @@ def tallennaTehtavaData(data):
12041199
teht["sarja_id"] = teht["sarja"]
12051200
del teht["sarja"]
12061201
tehtava = Tehtava(**teht)
1207-
if not type(k) == str:
1202+
if type(k) is not str:
12081203
tehtava.id = k
12091204
tehtava.save()
12101205
tehtava_id = tehtava.id
@@ -1219,7 +1214,7 @@ def tallennaTehtavaData(data):
12191214
if "tehtava" in osateht.keys():
12201215
del osateht["tehtava"]
12211216
osa_tehtava = OsaTehtava(**osateht)
1222-
if not type(ot_k) == str:
1217+
if type(ot_k) is not str:
12231218
osa_tehtava.id = ot_k
12241219
osa_tehtava.tehtava = tehtava
12251220

@@ -1231,7 +1226,7 @@ def tallennaTehtavaData(data):
12311226
if "osa_tehtava" in p_v.keys():
12321227
del p_v["osa_tehtava"]
12331228
parametri = Parametri(**p_v)
1234-
if not type(p_k) == str:
1229+
if type(p_k) is not str:
12351230
parametri.id = p_k
12361231
parametri.osa_tehtava = osa_tehtava
12371232
if parametri.id is None or parametri.id > 0:
@@ -1247,7 +1242,7 @@ def tallennaTehtavaData(data):
12471242
if "osa_tehtava" in m_v.keys():
12481243
del m_v["osa_tehtava"]
12491244
maarite = SyoteMaarite(**m_v)
1250-
if not type(m_k) == str:
1245+
if type(m_k) is not str:
12511246
maarite.id = m_k
12521247
maarite.osa_tehtava = osa_tehtava
12531248
if maarite.id is None or maarite.id > 0:

web/tupa/TulosLaskin.py

+21-16
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,8 @@ def luoTehtavanKaava(t, v):
216216
while korvautuu:
217217
korvautuu = False
218218
vanha = ot_lause
219-
ot_lasue = re.sub("vartio" + r"(?!\w+)", str(v.nro), ot_lause)
219+
# TODO: Check out how this SHOULD work. It is just a typo
220+
ot_lasue = re.sub("vartio" + r"(?!\w+)", str(v.nro), ot_lause) # noqa: F841
220221
if not ot_lause == vanha:
221222
korvautuu = True
222223

@@ -232,15 +233,15 @@ def luoTehtavanKaava(t, v):
232233
tehtava_lause = ""
233234
# Suora summa osatehtavien välillä:
234235
if t.kaava.lower() == "ss" and len(ot_lauseet):
235-
for l in ot_lauseet:
236-
tehtava_lause = tehtava_lause + "max([0," + l[1] + "])+"
236+
for x in ot_lauseet:
237+
tehtava_lause = tehtava_lause + "max([0," + x[1] + "])+"
237238
tehtava_lause = tehtava_lause[:-1]
238239
else:
239240
tehtava_lause = t.kaava.lower()
240-
for l in ot_lauseet:
241-
lause = l[1]
241+
for x in ot_lauseet:
242+
lause = x[1]
242243
tehtava_lause = re.sub(
243-
r"(?<!\w|[.])" + l[0] + r"(?<![.])(?!\w+)(?![.])",
244+
r"(?<!\w|[.])" + x[0] + r"(?<![.])(?!\w+)(?![.])",
244245
"max([0," + lause + "])",
245246
tehtava_lause,
246247
)
@@ -272,8 +273,6 @@ def laskeSarja(sarja, syotteet, vartiot=None, tehtavat=None):
272273
vartiot = sarja.vartio_set.all()
273274
if not tehtavat:
274275
tehtavat = sarja.tehtava_set.all()
275-
if vartiot and tehtavat:
276-
jee = 1 # Pakotetaan tietokantahaku.
277276

278277
# Lasketaan tulokset:
279278
muuttujat = luoMuuttujat(sarja.vartio_set.all(), tehtavat, syotteet)
@@ -307,9 +306,9 @@ def laskeSarja(sarja, syotteet, vartiot=None, tehtavat=None):
307306
tulokset[i][t] = "S"
308307

309308
# Merkataan siirrettäviksi ulkopuolella olevat:
310-
if not vartiot[i].keskeyttanyt == None or not vartiot[i].ulkopuolella == None:
309+
if vartiot[i].keskeyttanyt is not None or vartiot[i].ulkopuolella is not None:
311310
# Merkataan keskeyttaneille tuloksiin "K" keskeyttämisestä eteenpäin
312-
if not vartiot[i].keskeyttanyt == None:
311+
if vartiot[i].keskeyttanyt is not None:
313312
kesk = vartiot[i].keskeyttanyt - 1
314313
for t in range(kesk, len(tulokset[i])):
315314
tulokset[i][t] = "K"
@@ -325,7 +324,8 @@ def laskeSarja(sarja, syotteet, vartiot=None, tehtavat=None):
325324
)
326325
try:
327326
tulokset[i][t] = Decimal(tuom[0].pisteet)
328-
except:
327+
except Exception:
328+
# TODO: stricter type
329329
tulokset[i][t] = tuom[0].pisteet
330330

331331
# Lisää varoitus, jos vartion pisteet ylittävät tehtävän max. pisteet
@@ -334,7 +334,11 @@ def laskeSarja(sarja, syotteet, vartiot=None, tehtavat=None):
334334
# Tarkistetaan, että pisteet on laskettu (numeerinen arvo).
335335
# Vartion pisteet voivat olla myös esim. H, E tai K (katso
336336
# silmukka vähän ylempää), tällöin tarkistus on turha.
337-
if pisteet and type(pisteet) != str and tehtavat[t].maksimipisteet != "":
337+
if (
338+
pisteet
339+
and type(pisteet) is not str
340+
and tehtavat[t].maksimipisteet != ""
341+
):
338342
# Onko pisteet > max pisteet
339343
if pisteet > float(tehtavat[t].maksimipisteet):
340344
# Lisää huomautus tulosluetteloon
@@ -343,7 +347,7 @@ def laskeSarja(sarja, syotteet, vartiot=None, tehtavat=None):
343347
# Kokonaispisteet:
344348
summa = 0
345349
for s in tulokset[i]:
346-
if s and type(s) != str:
350+
if s and type(s) is not str:
347351
summa += s
348352
tulokset[i].insert(0, summa)
349353
# Vartio objekti jokaisen rivin alkuun:
@@ -352,7 +356,7 @@ def laskeSarja(sarja, syotteet, vartiot=None, tehtavat=None):
352356
# Kirjataan välivaiheisiin lopputulos
353357
try:
354358
log.logString("\n<b>TULOS = " + str(tulokset[0][2]) + "</b>")
355-
except:
359+
except Exception:
356360
pass
357361
# Siirretään ulkopuoliset ja mukana olevat omiin taulukkoihinsa
358362
mukana = []
@@ -378,7 +382,7 @@ def laskeSarja(sarja, syotteet, vartiot=None, tehtavat=None):
378382
try:
379383
if int(t.maksimipisteet):
380384
pisteet_yhteensa += int(t.maksimipisteet)
381-
except:
385+
except Exception:
382386
pass
383387
t_list.append(t)
384388
t_list[0].maksimipisteet = pisteet_yhteensa
@@ -400,7 +404,8 @@ def laskeSarja(sarja, syotteet, vartiot=None, tehtavat=None):
400404
try:
401405
tulokset.sort(key=operator.itemgetter(1, tasa1, tasa2, tasa3), reverse=True)
402406
ulkona.sort(key=operator.itemgetter(1, tasa1, tasa2, tasa3), reverse=True)
403-
except: # tehtäviä < 3
407+
except Exception: # tehtäviä < 3
408+
# TODO: stricter type
404409
pass
405410

406411
# Etsitään tasapistetulokset :

web/tupa/UnicodeTools.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
import csv, codecs, io
1+
import csv
2+
import codecs
3+
import io
24

35

46
class UnicodeWriter:

web/tupa/formit.py

+2-3
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ def clean(self, value):
243243
def initPisteSyote(self, fieldName):
244244
kesk = self.vartio.keskeyttanyt
245245
nro = self.maarite.osa_tehtava.tehtava.jarjestysnro
246-
if not kesk == None and not nro == None:
246+
if kesk is not None and nro is not None:
247247
if kesk <= nro: # Keskeyttänyt
248248
self.fields[fieldName].widget.attrs["class"] = "kesk"
249249
self.fields[fieldName].widget.attrs["readonly"] = "readonly"
@@ -254,7 +254,6 @@ def savePisteSyote(self, syote, field, fieldName, alternateName):
254254
syote.maarite = self.maarite
255255
syote.vartio = self.vartio
256256
if self.cleaned_data[fieldName] or self.cleaned_data[alternateName]:
257-
field = self.cleaned_data[fieldName]
258257
syote.save()
259258
elif syote.id:
260259
syote.delete()
@@ -356,7 +355,7 @@ def is_valid(self):
356355

357356
def save(self):
358357
tulos = None
359-
if self.pisteet == None or len(self.pisteet) == 0 and self.taulu:
358+
if self.pisteet is None or len(self.pisteet) == 0 and self.taulu:
360359
self.taulu.delete()
361360
if self.pisteet and len(self.pisteet):
362361
tulos, created = tauluTyyppi.objects.get_or_create(

0 commit comments

Comments
 (0)