Skip to content
Snippets Groups Projects
Commit dc4eb63a authored by Emmanuel Viennet's avatar Emmanuel Viennet
Browse files

Fix some type annotations

parent 6542f691
Branches
No related tags found
No related merge requests found
......@@ -61,7 +61,6 @@ DecisionsProposeesUE: décisions de jury sur une UE du BUT
from datetime import datetime
import html
import re
from typing import Union
import numpy as np
from flask import flash, g, url_for
......@@ -150,7 +149,7 @@ class DecisionsProposees:
def __init__(
self,
etud: Identite = None,
code: Union[str, list[str]] = None,
code: str | list[str] | None = None,
explanation="",
code_valide=None,
include_communs=True,
......
......@@ -6,7 +6,6 @@
"""Jury BUT: un RCUE, ou Regroupe Cohérent d'UEs
"""
from typing import Union
from flask_sqlalchemy.query import Query
from app.comp.res_but import ResultatsSemestreBUT
......@@ -205,7 +204,7 @@ class RegroupementCoherentUE:
self.moy_rcue > codes_cursus.BUT_BARRE_RCUE
)
def code_valide(self) -> Union[ApcValidationRCUE, None]:
def code_valide(self) -> ApcValidationRCUE | None:
"Si ce RCUE est ADM, CMP ou ADJ, la validation. Sinon, None"
validation = self.query_validations().first()
if (validation is not None) and (
......
......@@ -123,7 +123,7 @@ class Assiduite(db.Model):
user_id: int = None,
est_just: bool = False,
external_data: dict = None,
) -> object or int:
) -> "Assiduite":
"""Créer une nouvelle assiduité pour l'étudiant"""
# Vérification de non duplication des périodes
assiduites: Query = etud.assiduites
......@@ -285,7 +285,7 @@ class Justificatif(db.Model):
entry_date: datetime = None,
user_id: int = None,
external_data: dict = None,
) -> object or int:
) -> "Justificatif":
"""Créer un nouveau justificatif pour l'étudiant"""
nouv_justificatif = Justificatif(
date_debut=date_debut,
......@@ -313,7 +313,7 @@ def is_period_conflicting(
date_debut: datetime,
date_fin: datetime,
collection: Query,
collection_cls: Assiduite or Justificatif,
collection_cls: Assiduite | Justificatif,
) -> bool:
"""
Vérifie si une date n'entre pas en collision
......
......@@ -47,7 +47,6 @@
nommé _description.txt qui est une description (humaine, format libre) de l'archive.
"""
from typing import Union
import datetime
import glob
import json
......@@ -253,7 +252,7 @@ class BaseArchiver:
self,
archive_id: str,
filename: str,
data: Union[str, bytes],
data: str | bytes,
dept_id: int = None,
):
"""Store data in archive, under given filename.
......
......@@ -141,12 +141,9 @@ class CountCalculator:
self.hours += finish_hours.total_seconds() / 3600
self.hours += self.hour_per_day - (start_hours.total_seconds() / 3600)
def compute_assiduites(self, assiduites: Query or list):
def compute_assiduites(self, assiduites: Query | list):
"""Calcule les métriques pour la collection d'assiduité donnée"""
assi: Assiduite
assiduites: list[Assiduite] = (
assiduites.all() if isinstance(assiduites, Query) else assiduites
)
for assi in assiduites:
self.count += 1
delta: timedelta = assi.date_fin - assi.date_debut
......@@ -167,7 +164,7 @@ class CountCalculator:
self.hours += delta.total_seconds() / 3600
def to_dict(self) -> dict[str, int or float]:
def to_dict(self) -> dict[str, int | float]:
"""Retourne les métriques sous la forme d'un dictionnaire"""
return {
"compte": self.count,
......@@ -179,7 +176,7 @@ class CountCalculator:
def get_assiduites_stats(
assiduites: Query, metric: str = "all", filtered: dict[str, object] = None
) -> dict[str, int or float]:
) -> dict[str, int | float]:
"""Compte les assiduités en fonction des filtres"""
if filtered is not None:
......@@ -276,7 +273,7 @@ def filter_assiduites_by_est_just(assiduites: Assiduite, est_just: bool) -> Quer
def filter_by_user_id(
collection: Assiduite or Justificatif,
collection: Assiduite | Justificatif,
user_id: int,
) -> Query:
"""
......@@ -286,8 +283,8 @@ def filter_by_user_id(
def filter_by_date(
collection: Assiduite or Justificatif,
collection_cls: Assiduite or Justificatif,
collection: Assiduite | Justificatif,
collection_cls: Assiduite | Justificatif,
date_deb: datetime = None,
date_fin: datetime = None,
strict: bool = False,
......@@ -320,7 +317,7 @@ def filter_justificatifs_by_etat(justificatifs: Query, etat: str) -> Query:
return justificatifs.filter(Justificatif.etat.in_(etats))
def filter_by_module_impl(assiduites: Assiduite, module_impl_id: int or None) -> Query:
def filter_by_module_impl(assiduites: Assiduite, module_impl_id: int | None) -> Query:
"""
Filtrage d'une collection d'assiduites en fonction de l'ID du module_impl
"""
......@@ -328,8 +325,8 @@ def filter_by_module_impl(assiduites: Assiduite, module_impl_id: int or None) ->
def filter_by_formsemestre(
collection_query: Assiduite or Justificatif,
collection_class: Assiduite or Justificatif,
collection_query: Assiduite | Justificatif,
collection_class: Assiduite | Justificatif,
formsemestre: FormSemestre,
) -> Query:
"""
......@@ -358,7 +355,7 @@ def filter_by_formsemestre(
return collection_result.filter(collection_class.date_fin <= form_date_fin)
def justifies(justi: Justificatif, obj: bool = False) -> list[int] or Query:
def justifies(justi: Justificatif, obj: bool = False) -> list[int] | Query:
"""
Retourne la liste des assiduite_id qui sont justifié par la justification
Une assiduité est justifiée si elle est COMPLETEMENT ou PARTIELLEMENT
......@@ -597,7 +594,7 @@ def invalidate_assiduites_etud_date(etudid, date: datetime):
invalidate_assiduites_count(etudid, sem)
def simple_invalidate_cache(obj: dict, etudid: str or int = None):
def simple_invalidate_cache(obj: dict, etudid: str | int = None):
"""Invalide le cache de l'étudiant et du / des semestres"""
date_debut = (
obj["date_debut"]
......
......@@ -109,13 +109,13 @@ class HTMLStringElement(HTMLElement):
class HTMLBuilder:
def __init__(self, *content: HTMLElement or str) -> None:
self.content: list[HTMLElement or str] = list(content)
def __init__(self, *content: HTMLElement | str) -> None:
self.content: list[HTMLElement | str] = list(content)
def add(self, *element: HTMLElement or str):
def add(self, *element: HTMLElement | str):
self.content.extend(element)
def remove(self, element: HTMLElement or str):
def remove(self, element: HTMLElement | str):
if element in self.content:
self.content.remove(element)
......
......@@ -152,7 +152,6 @@ class _Merger:
def export(self):
"""Génère un nouvel objet Assiduité ou Justificatif"""
obj: Assiduite or Justificatif = None
if self.est_abs:
_glob.COMPTE[0] += 1
self._to_assi()
......@@ -167,7 +166,7 @@ def _assi_in_justifs(deb, fin, etudid):
class _Statistics:
def __init__(self) -> None:
self.object: dict[str, dict or int] = {"total": 0}
self.object: dict[str, dict | int] = {"total": 0}
self.year: int = None
def __set_year(self, year: int):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment