From 0249c4c63de198a4725bcd7e47a22cd9d499b0f4 Mon Sep 17 00:00:00 2001
From: Emmanuel Viennet <emmanuel.viennet@gmail.com>
Date: Wed, 9 Apr 2025 20:20:00 +0200
Subject: [PATCH] 2025

---
 README.md                                    |  4 ++--
 app/api/assiduites.py                        |  2 +-
 app/api/billets_absences.py                  |  2 +-
 app/api/departements.py                      |  2 +-
 app/api/etud_suivi.py                        | 10 +++++-----
 app/api/etudiants.py                         |  2 +-
 app/api/evaluations.py                       | 10 +++++-----
 app/api/formations.py                        | 10 +++++-----
 app/api/formsemestres.py                     | 10 +++++-----
 app/api/jury.py                              |  2 +-
 app/api/logos.py                             |  2 +-
 app/api/moduleimpl.py                        | 10 +++++-----
 app/api/operations.py                        | 10 +++++-----
 app/api/partitions.py                        | 10 +++++-----
 app/api/semset.py                            |  4 ++--
 app/api/tools.py                             |  5 ++---
 app/api/users.py                             | 10 +++++-----
 app/but/apc_edit_ue.py                       |  2 +-
 app/but/bulletin_but.py                      |  2 +-
 app/but/bulletin_but_court.py                |  2 +-
 app/but/bulletin_but_court_pdf.py            |  2 +-
 app/but/bulletin_but_pdf.py                  |  2 +-
 app/but/bulletin_but_xml_compat.py           |  2 +-
 app/but/change_refcomp.py                    |  6 +++---
 app/but/cursus_but.py                        |  2 +-
 app/but/forms/jury_but_forms.py              |  6 +++---
 app/but/forms/refcomp_forms.py               |  9 ++++++---
 app/but/import_refcomp.py                    |  2 +-
 app/but/jury_but.py                          |  2 +-
 app/but/jury_but_pv.py                       |  5 ++---
 app/but/jury_but_results.py                  |  5 ++---
 app/but/jury_but_validation_auto.py          |  5 ++---
 app/but/jury_but_view.py                     |  5 ++---
 app/but/jury_dut120.py                       |  3 ++-
 app/but/jury_edit_manual.py                  |  2 +-
 app/but/rcue.py                              |  5 ++---
 app/but/validations_view.py                  |  5 ++---
 app/comp/aux_stats.py                        |  5 ++---
 app/comp/bonus_spo.py                        |  2 +-
 app/comp/df_cache.py                         |  5 ++---
 app/comp/jury.py                             |  5 ++---
 app/comp/moy_mat.py                          |  5 ++---
 app/comp/moy_mod.py                          |  2 +-
 app/comp/moy_sem.py                          |  5 ++---
 app/comp/moy_ue.py                           |  5 ++---
 app/comp/res_but.py                          |  5 ++---
 app/comp/res_cache.py                        |  5 ++---
 app/comp/res_classic.py                      |  5 ++---
 app/comp/res_common.py                       |  5 ++---
 app/comp/res_compat.py                       |  5 ++---
 app/comp/res_sem.py                          |  5 ++---
 app/email.py                                 |  2 +-
 app/entreprises/activate.py                  |  2 +-
 app/entreprises/app_relations_entreprises.py |  8 ++++----
 app/entreprises/forms.py                     |  2 +-
 app/formations/edit_formation.py             |  2 +-
 app/formations/edit_matiere.py               |  5 ++---
 app/formations/edit_module.py                |  2 +-
 app/formations/edit_ue.py                    |  2 +-
 app/formations/formation_io.py               |  5 ++---
 app/formations/formation_recap.py            |  5 ++---
 app/formations/formation_versions.py         |  5 ++---
 app/forms/assiduite/ajout_assiduite_etud.py  |  2 +-
 app/forms/formsemestre/change_formation.py   |  3 ++-
 app/forms/formsemestre/edit_description.py   |  6 +++---
 app/forms/main/config_apo.py                 |  2 +-
 app/forms/main/config_assiduites.py          |  3 ++-
 app/forms/main/config_cas.py                 |  3 ++-
 app/forms/main/config_logos.py               |  2 +-
 app/forms/main/config_main.py                |  4 +++-
 app/forms/main/config_rgpd.py                |  3 ++-
 app/forms/main/create_bug_report.py          |  2 +-
 app/forms/main/create_dept.py                |  2 +-
 app/forms/main/role_create.py                |  2 +-
 app/forms/pe/pe_sem_recap.py                 |  3 ++-
 app/formsemestre/import_from_descr.py        |  2 +-
 app/models/but_refcomp.py                    | 11 ++++++++---
 app/models/formsemestre.py                   |  2 +-
 app/models/formsemestre_descr.py             |  2 +-
 app/models/groups.py                         |  5 ++---
 app/pe/moys/pe_interclasstag.py              |  4 ++--
 app/pe/moys/pe_rcstag.py                     |  2 +-
 app/pe/moys/pe_ressemtag.py                  |  2 +-
 app/pe/moys/pe_sxtag.py                      |  2 +-
 app/pe/moys/pe_tabletags.py                  |  2 +-
 app/pe/pe_comp.py                            |  2 +-
 app/pe/pe_etudiant.py                        |  2 +-
 app/pe/pe_jury.py                            |  2 +-
 app/pe/pe_view.py                            |  6 ++----
 app/scodoc/__init__.py                       |  5 ++---
 app/scodoc/codes_cursus.py                   |  3 ++-
 app/scodoc/gen_tables.py                     |  2 +-
 app/scodoc/html_sco_header.py                |  2 +-
 app/scodoc/html_sidebar.py                   |  2 +-
 app/scodoc/htmlutils.py                      |  5 ++---
 app/scodoc/notes_users.py                    |  5 ++---
 app/scodoc/safehtml.py                       |  2 +-
 app/scodoc/sco_abs_billets.py                |  5 ++---
 app/scodoc/sco_abs_notification.py           |  2 +-
 app/scodoc/sco_apogee_compare.py             |  2 +-
 app/scodoc/sco_apogee_csv.py                 |  2 +-
 app/scodoc/sco_apogee_reader.py              |  2 +-
 app/scodoc/sco_archives.py                   |  2 +-
 app/scodoc/sco_archives_etud.py              |  6 +++---
 app/scodoc/sco_archives_formsemestre.py      |  5 ++---
 app/scodoc/sco_bac.py                        |  2 +-
 app/scodoc/sco_bug_report.py                 |  2 +-
 app/scodoc/sco_bulletins.py                  |  2 +-
 app/scodoc/sco_bulletins_example.py          |  5 ++---
 app/scodoc/sco_bulletins_generator.py        |  2 +-
 app/scodoc/sco_bulletins_json.py             |  2 +-
 app/scodoc/sco_bulletins_legacy.py           |  8 ++++----
 app/scodoc/sco_bulletins_pdf.py              |  2 +-
 app/scodoc/sco_bulletins_signature.py        |  2 +-
 app/scodoc/sco_bulletins_standard.py         |  3 ++-
 app/scodoc/sco_bulletins_ucac.py             |  2 +-
 app/scodoc/sco_bulletins_xml.py              |  2 +-
 app/scodoc/sco_cache.py                      |  6 +++---
 app/scodoc/sco_cal.py                        |  5 ++---
 app/scodoc/sco_config_actions.py             |  6 ++----
 app/scodoc/sco_cost_formation.py             |  6 +++---
 app/scodoc/sco_cursus.py                     |  5 ++---
 app/scodoc/sco_cursus_dut.py                 |  5 ++---
 app/scodoc/sco_debouche.py                   |  2 +-
 app/scodoc/sco_dept.py                       |  5 ++---
 app/scodoc/sco_dump_db.py                    |  2 +-
 app/scodoc/sco_edit_apc.py                   |  5 ++---
 app/scodoc/sco_edt_cal.py                    |  2 +-
 app/scodoc/sco_etape_apogee.py               |  2 +-
 app/scodoc/sco_etape_apogee_view.py          |  2 +-
 app/scodoc/sco_etape_bilan.py                |  2 +-
 app/scodoc/sco_etud.py                       |  5 ++---
 app/scodoc/sco_evaluation_check_abs.py       |  5 ++---
 app/scodoc/sco_evaluation_db.py              |  5 ++---
 app/scodoc/sco_evaluation_edit.py            |  5 ++---
 app/scodoc/sco_evaluation_recap.py           |  2 +-
 app/scodoc/sco_evaluations.py                |  2 +-
 app/scodoc/sco_excel.py                      |  3 ++-
 app/scodoc/sco_exceptions.py                 |  5 ++---
 app/scodoc/sco_export_results.py             |  5 ++---
 app/scodoc/sco_find_etud.py                  |  5 ++---
 app/scodoc/sco_formsemestre.py               |  5 ++---
 app/scodoc/sco_formsemestre_custommenu.py    |  5 ++---
 app/scodoc/sco_formsemestre_edit.py          |  5 ++---
 app/scodoc/sco_formsemestre_exterieurs.py    |  2 +-
 app/scodoc/sco_formsemestre_inscriptions.py  |  5 ++---
 app/scodoc/sco_formsemestre_status.py        |  2 +-
 app/scodoc/sco_formsemestre_validation.py    |  2 +-
 app/scodoc/sco_formulas.py                   |  5 ++---
 app/scodoc/sco_groups.py                     |  5 ++---
 app/scodoc/sco_groups_edit.py                |  5 ++---
 app/scodoc/sco_groups_exports.py             |  5 ++---
 app/scodoc/sco_groups_view.py                |  2 +-
 app/scodoc/sco_import_etuds.py               |  5 ++---
 app/scodoc/sco_import_users.py               |  5 ++---
 app/scodoc/sco_inscr_passage.py              |  4 ++--
 app/scodoc/sco_liste_notes.py                |  5 ++---
 app/scodoc/sco_logos.py                      |  2 +-
 app/scodoc/sco_lycee.py                      |  8 ++++----
 app/scodoc/sco_modalites.py                  |  2 +-
 app/scodoc/sco_moduleimpl.py                 |  5 ++---
 app/scodoc/sco_moduleimpl_inscriptions.py    |  5 ++---
 app/scodoc/sco_moduleimpl_status.py          |  2 +-
 app/scodoc/sco_page_etud.py                  |  4 ++--
 app/scodoc/sco_pdf.py                        |  2 +-
 app/scodoc/sco_photos.py                     |  2 +-
 app/scodoc/sco_placement.py                  |  2 +-
 app/scodoc/sco_portal_apogee.py              |  5 ++---
 app/scodoc/sco_poursuite_dut.py              |  2 +-
 app/scodoc/sco_preferences.py                |  2 +-
 app/scodoc/sco_prepajury.py                  |  2 +-
 app/scodoc/sco_pv_dict.py                    |  4 ++--
 app/scodoc/sco_pv_forms.py                   |  2 +-
 app/scodoc/sco_pv_lettres_inviduelles.py     |  5 ++---
 app/scodoc/sco_pv_pdf.py                     |  5 ++---
 app/scodoc/sco_pv_templates.py               |  5 ++---
 app/scodoc/sco_recapcomplet.py               |  5 ++---
 app/scodoc/sco_report.py                     |  6 +++---
 app/scodoc/sco_report_but.py                 |  4 ++--
 app/scodoc/sco_saisie_excel.py               |  2 +-
 app/scodoc/sco_saisie_notes.py               |  2 +-
 app/scodoc/sco_semset.py                     |  2 +-
 app/scodoc/sco_synchro_etuds.py              |  5 ++---
 app/scodoc/sco_tag_module.py                 | 10 +++++-----
 app/scodoc/sco_trombino.py                   |  5 ++---
 app/scodoc/sco_trombino_doc.py               |  5 ++---
 app/scodoc/sco_trombino_tours.py             |  6 +++---
 app/scodoc/sco_ue_external.py                |  2 +-
 app/scodoc/sco_undo_notes.py                 |  2 +-
 app/scodoc/sco_up_to_date.py                 |  6 +++---
 app/scodoc/sco_users.py                      |  5 ++---
 app/scodoc/sco_utils.py                      |  2 +-
 app/scodoc/sco_vdi.py                        |  5 ++---
 app/scodoc/sco_xml.py                        |  5 ++---
 app/tables/__init__.py                       |  5 ++---
 app/tables/bilan_ues.py                      |  2 +-
 app/tables/jury_recap.py                     |  5 ++---
 app/tables/list_etuds.py                     |  5 ++---
 app/tables/recap.py                          |  5 ++---
 app/tables/table_builder.py                  |  5 ++---
 app/tables/visu_assiduites.py                |  2 +-
 app/views/absences.py                        |  2 +-
 app/views/assiduites.py                      |  2 +-
 app/views/but_formation.py                   |  2 +-
 app/views/jury_validations.py                |  2 +-
 app/views/notes.py                           |  2 +-
 app/views/notes_formsemestre.py              |  2 +-
 app/views/pn_modules.py                      |  2 +-
 app/views/scodoc.py                          |  2 +-
 app/views/scolar.py                          |  2 +-
 app/views/users.py                           |  3 ++-
 misc/csv2rules.py                            |  2 +-
 misc/geolocalize_lycees.py                   |  2 +-
 tests/unit/test_apogee_csv.py                |  2 +-
 tests/unit/test_apogee_export.py             |  4 ++--
 tests/unit/test_but_jury.py                  |  4 ++--
 tests/unit/yaml_setup.py                     |  2 +-
 tests/unit/yaml_setup_but.py                 |  4 ++--
 tools/anonymize_db.py                        |  2 +-
 tools/edt/edt_ens.py                         |  2 +-
 220 files changed, 390 insertions(+), 445 deletions(-)

diff --git a/README.md b/README.md
index 369f674ee..d0de96609 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
 # ScoDoc - Gestion de la scolarité - Version ScoDoc 9
 
-(c) Emmanuel Viennet 1999 - 2024 (voir LICENCE.txt).
+(c) Emmanuel Viennet 1999 - 2025 (voir LICENCE.txt).
 
 Installation: voir instructions à jour sur <https://scodoc.org/GuideInstallDebian12>
 
@@ -170,7 +170,7 @@ pip install snakeviz
 ```
 puis
 ```bash
-snakeviz -s --hostname 0.0.0.0 -p 5555 /opt/scodoc-data/GET.ScoDoc......prof 
+snakeviz -s --hostname 0.0.0.0 -p 5555 /opt/scodoc-data/GET.ScoDoc......prof
 ```
 ## Paquet Debian 12
 
diff --git a/app/api/assiduites.py b/app/api/assiduites.py
index 0644aa882..509babd46 100644
--- a/app/api/assiduites.py
+++ b/app/api/assiduites.py
@@ -1,6 +1,6 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 """ScoDoc 9 API : Assiduités"""
diff --git a/app/api/billets_absences.py b/app/api/billets_absences.py
index 1cb24cb0c..a0d253297 100644
--- a/app/api/billets_absences.py
+++ b/app/api/billets_absences.py
@@ -1,6 +1,6 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
diff --git a/app/api/departements.py b/app/api/departements.py
index 5965a03a1..92660851c 100644
--- a/app/api/departements.py
+++ b/app/api/departements.py
@@ -1,6 +1,6 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
diff --git a/app/api/etud_suivi.py b/app/api/etud_suivi.py
index 76703bad5..29cc74a69 100644
--- a/app/api/etud_suivi.py
+++ b/app/api/etud_suivi.py
@@ -1,15 +1,15 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
 """
-  API : itemsuivi devenir/débouché des étudiants
+API : itemsuivi devenir/débouché des étudiants
 
-  CATEGORY
-  --------
-  Étudiants
+CATEGORY
+--------
+Étudiants
 """
 import datetime
 
diff --git a/app/api/etudiants.py b/app/api/etudiants.py
index bc9b36352..73424ed38 100755
--- a/app/api/etudiants.py
+++ b/app/api/etudiants.py
@@ -1,6 +1,6 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
diff --git a/app/api/evaluations.py b/app/api/evaluations.py
index 36d48abcb..c12137d2e 100644
--- a/app/api/evaluations.py
+++ b/app/api/evaluations.py
@@ -1,15 +1,15 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
 """
-  ScoDoc 9 API : accès aux évaluations
+ScoDoc 9 API : accès aux évaluations
 
-  CATEGORY
-  --------
-  Évaluations
+CATEGORY
+--------
+Évaluations
 """
 from flask import g, request
 from flask_json import as_json
diff --git a/app/api/formations.py b/app/api/formations.py
index 815233d3e..4015362b6 100644
--- a/app/api/formations.py
+++ b/app/api/formations.py
@@ -1,15 +1,15 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
 """
-  ScoDoc 9 API : accès aux formations
+ScoDoc 9 API : accès aux formations
 
-  CATEGORY
-  --------
-  Formations
+CATEGORY
+--------
+Formations
 """
 
 from flask import flash, g, request
diff --git a/app/api/formsemestres.py b/app/api/formsemestres.py
index 1b208cf70..a7777a210 100644
--- a/app/api/formsemestres.py
+++ b/app/api/formsemestres.py
@@ -1,16 +1,16 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
 """
-  ScoDoc 9 API : accès aux formsemestres
+ScoDoc 9 API : accès aux formsemestres
 
 
-  CATEGORY
-  --------
-  FormSemestre
+CATEGORY
+--------
+FormSemestre
 
 """
 import base64
diff --git a/app/api/jury.py b/app/api/jury.py
index 795062bd5..7bce63853 100644
--- a/app/api/jury.py
+++ b/app/api/jury.py
@@ -1,6 +1,6 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
diff --git a/app/api/logos.py b/app/api/logos.py
index a97d782da..50f5f3aa3 100644
--- a/app/api/logos.py
+++ b/app/api/logos.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/api/moduleimpl.py b/app/api/moduleimpl.py
index 0ee6b2261..2226a499c 100644
--- a/app/api/moduleimpl.py
+++ b/app/api/moduleimpl.py
@@ -1,15 +1,15 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
 """
-  ScoDoc 9 API : accès aux moduleimpl
+ScoDoc 9 API : accès aux moduleimpl
 
-  CATEGORY
-  --------
-  ModuleImpl
+CATEGORY
+--------
+ModuleImpl
 """
 
 from flask_json import as_json
diff --git a/app/api/operations.py b/app/api/operations.py
index e8d87af90..cc3437624 100644
--- a/app/api/operations.py
+++ b/app/api/operations.py
@@ -1,15 +1,15 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
 """
-  ScoDoc 9 API : liste opérations effectuées par un utilisateur
+ScoDoc 9 API : liste opérations effectuées par un utilisateur
 
-  CATEGORY
-  --------
-  Operations
+CATEGORY
+--------
+Operations
 """
 
 from flask import url_for
diff --git a/app/api/partitions.py b/app/api/partitions.py
index 9008285fa..035a295ea 100644
--- a/app/api/partitions.py
+++ b/app/api/partitions.py
@@ -1,15 +1,15 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
 """
-  ScoDoc 9 API : partitions
+ScoDoc 9 API : partitions
 
-  CATEGORY
-  --------
-  Groupes et Partitions
+CATEGORY
+--------
+Groupes et Partitions
 
 """
 from operator import attrgetter
diff --git a/app/api/semset.py b/app/api/semset.py
index 981c5a095..b59923796 100644
--- a/app/api/semset.py
+++ b/app/api/semset.py
@@ -1,11 +1,11 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
 """
-  ScoDoc 9 API : accès aux formsemestres
+ScoDoc 9 API : accès aux formsemestres
 """
 # from flask import g, jsonify, request
 # from flask_login import login_required
diff --git a/app/api/tools.py b/app/api/tools.py
index a8deedc2d..35b664b60 100644
--- a/app/api/tools.py
+++ b/app/api/tools.py
@@ -1,10 +1,9 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
-"""ScoDoc 9 API : outils
-"""
+"""ScoDoc 9 API : outils"""
 
 from flask_login import current_user
 from sqlalchemy import desc, or_
diff --git a/app/api/users.py b/app/api/users.py
index 9437cebe4..e8720664b 100644
--- a/app/api/users.py
+++ b/app/api/users.py
@@ -1,15 +1,15 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
 """
-  ScoDoc 9 API : accès aux utilisateurs
+ScoDoc 9 API : accès aux utilisateurs
 
-  CATEGORY
-  --------
-  Utilisateurs
+CATEGORY
+--------
+Utilisateurs
 """
 
 from flask import g, request
diff --git a/app/but/apc_edit_ue.py b/app/but/apc_edit_ue.py
index 83d435920..a8e733ce1 100644
--- a/app/but/apc_edit_ue.py
+++ b/app/but/apc_edit_ue.py
@@ -1,6 +1,6 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
diff --git a/app/but/bulletin_but.py b/app/but/bulletin_but.py
index 22fc11238..68a7ec9aa 100644
--- a/app/but/bulletin_but.py
+++ b/app/but/bulletin_but.py
@@ -1,6 +1,6 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
diff --git a/app/but/bulletin_but_court.py b/app/but/bulletin_but_court.py
index 0254d102b..9017236ec 100644
--- a/app/but/bulletin_but_court.py
+++ b/app/but/bulletin_but_court.py
@@ -1,6 +1,6 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
diff --git a/app/but/bulletin_but_court_pdf.py b/app/but/bulletin_but_court_pdf.py
index b571a3161..141bd706b 100644
--- a/app/but/bulletin_but_court_pdf.py
+++ b/app/but/bulletin_but_court_pdf.py
@@ -1,6 +1,6 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
diff --git a/app/but/bulletin_but_pdf.py b/app/but/bulletin_but_pdf.py
index e76aa62a5..9cf09a47b 100644
--- a/app/but/bulletin_but_pdf.py
+++ b/app/but/bulletin_but_pdf.py
@@ -1,6 +1,6 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
diff --git a/app/but/bulletin_but_xml_compat.py b/app/but/bulletin_but_xml_compat.py
index 8159feade..e8ee5351b 100644
--- a/app/but/bulletin_but_xml_compat.py
+++ b/app/but/bulletin_but_xml_compat.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/but/change_refcomp.py b/app/but/change_refcomp.py
index 4f4a8e23f..d0f788a58 100644
--- a/app/but/change_refcomp.py
+++ b/app/but/change_refcomp.py
@@ -1,12 +1,12 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
 """Code expérimental: si deux référentiel sont presques identiques
- (mêmes compétences, niveaux, parcours)
- essaie de changer une formation de référentiel.
+(mêmes compétences, niveaux, parcours)
+essaie de changer une formation de référentiel.
 """
 
 from app import clear_scodoc_cache, db
diff --git a/app/but/cursus_but.py b/app/but/cursus_but.py
index 92d11f428..dc6e0ac10 100644
--- a/app/but/cursus_but.py
+++ b/app/but/cursus_but.py
@@ -1,6 +1,6 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
diff --git a/app/but/forms/jury_but_forms.py b/app/but/forms/jury_but_forms.py
index 69eeaa480..559cefea1 100644
--- a/app/but/forms/jury_but_forms.py
+++ b/app/but/forms/jury_but_forms.py
@@ -1,11 +1,10 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
-"""ScoDoc 9.3 : Formulaires / jurys BUT
-"""
+"""ScoDoc 9.3 : Formulaires / jurys BUT"""
 
 
 from flask_wtf import FlaskForm
@@ -14,5 +13,6 @@ from wtforms import SubmitField
 
 class FormSemestreValidationAutoBUTForm(FlaskForm):
     "simple form de confirmation"
+
     submit = SubmitField("Lancer le calcul")
     cancel = SubmitField("Annuler")
diff --git a/app/but/forms/refcomp_forms.py b/app/but/forms/refcomp_forms.py
index 5727454b1..618ad7f62 100644
--- a/app/but/forms/refcomp_forms.py
+++ b/app/but/forms/refcomp_forms.py
@@ -1,11 +1,10 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
-"""ScoDoc 9 : Formulaires / référentiel de compétence
-"""
+"""ScoDoc 9 : Formulaires / référentiel de compétence"""
 
 from flask_wtf import FlaskForm
 from flask_wtf.file import FileField, FileAllowed
@@ -15,6 +14,7 @@ from wtforms.validators import DataRequired
 
 class FormationRefCompForm(FlaskForm):
     "Choix d'un référentiel"
+
     referentiel_competence = SelectField(
         "Choisir parmi les référentiels déjà chargés :"
     )
@@ -24,6 +24,7 @@ class FormationRefCompForm(FlaskForm):
 
 class RefCompLoadForm(FlaskForm):
     "Upload d'un référentiel"
+
     referentiel_standard = SelectField(
         "Choisir un référentiel de compétences officiel BUT"
     )
@@ -41,6 +42,7 @@ class RefCompLoadForm(FlaskForm):
 
 class RefCompUploadForm(FlaskForm):
     "Upload d'un référentiel"
+
     upload = FileField(
         label="Sélectionner un fichier XML au format Orébut",
         validators=[
@@ -66,6 +68,7 @@ class RefCompUploadForm(FlaskForm):
 
 class FormationChangeRefCompForm(FlaskForm):
     "choix d'un nouveau ref. comp. pour une formation"
+
     object_select = SelectField(
         "Choisir le nouveau référentiel", validators=[DataRequired()]
     )
diff --git a/app/but/import_refcomp.py b/app/but/import_refcomp.py
index 8a11c2d82..693d5a2de 100644
--- a/app/but/import_refcomp.py
+++ b/app/but/import_refcomp.py
@@ -1,6 +1,6 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 from xml.etree import ElementTree
diff --git a/app/but/jury_but.py b/app/but/jury_but.py
index 5f72b3c11..882468137 100644
--- a/app/but/jury_but.py
+++ b/app/but/jury_but.py
@@ -1,6 +1,6 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
diff --git a/app/but/jury_but_pv.py b/app/but/jury_but_pv.py
index 49b21c383..eaa033f65 100644
--- a/app/but/jury_but_pv.py
+++ b/app/but/jury_but_pv.py
@@ -1,11 +1,10 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
-"""Jury BUT: table synthèse résultats semestre / PV
-"""
+"""Jury BUT: table synthèse résultats semestre / PV"""
 from flask import g, request, url_for
 
 from openpyxl.styles import Alignment
diff --git a/app/but/jury_but_results.py b/app/but/jury_but_results.py
index d55ea1576..774e27436 100644
--- a/app/but/jury_but_results.py
+++ b/app/but/jury_but_results.py
@@ -1,11 +1,10 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
-"""Jury BUT et classiques: récupération des résults pour API
-"""
+"""Jury BUT et classiques: récupération des résults pour API"""
 
 import numpy as np
 
diff --git a/app/but/jury_but_validation_auto.py b/app/but/jury_but_validation_auto.py
index 72ea51ca2..843704e5d 100644
--- a/app/but/jury_but_validation_auto.py
+++ b/app/but/jury_but_validation_auto.py
@@ -1,11 +1,10 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
-"""Jury BUT: calcul des décisions de jury annuelles "automatiques"
-"""
+"""Jury BUT: calcul des décisions de jury annuelles "automatiques" """
 from flask import g, url_for
 
 from app import db
diff --git a/app/but/jury_but_view.py b/app/but/jury_but_view.py
index 160cc8cdd..9482f3df6 100644
--- a/app/but/jury_but_view.py
+++ b/app/but/jury_but_view.py
@@ -1,11 +1,10 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
-"""Jury BUT: affichage/formulaire
-"""
+"""Jury BUT: affichage/formulaire"""
 
 import re
 import numpy as np
diff --git a/app/but/jury_dut120.py b/app/but/jury_dut120.py
index ffe4bdc63..3fd34e8b9 100644
--- a/app/but/jury_dut120.py
+++ b/app/but/jury_dut120.py
@@ -1,6 +1,6 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
@@ -45,6 +45,7 @@ def etud_ects_but1_but2(etud, referentiel_competence_id: int) -> float:
 
 class ValidationDUT120Form(FlaskForm):
     "Formulaire validation DUT120"
+
     submit = SubmitField("Enregistrer le diplôme DUT 120")
 
 
diff --git a/app/but/jury_edit_manual.py b/app/but/jury_edit_manual.py
index 8850c4a42..3bf2f7711 100644
--- a/app/but/jury_edit_manual.py
+++ b/app/but/jury_edit_manual.py
@@ -1,6 +1,6 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
diff --git a/app/but/rcue.py b/app/but/rcue.py
index 9a6ee73ce..0d4a646cc 100644
--- a/app/but/rcue.py
+++ b/app/but/rcue.py
@@ -1,11 +1,10 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
-"""Jury BUT: un RCUE, ou Regroupe Cohérent d'UEs
-"""
+"""Jury BUT: un RCUE, ou Regroupe Cohérent d'UEs"""
 from flask_sqlalchemy.query import Query
 
 from app.comp.res_but import ResultatsSemestreBUT
diff --git a/app/but/validations_view.py b/app/but/validations_view.py
index 713d4e137..b0c27fc27 100644
--- a/app/but/validations_view.py
+++ b/app/but/validations_view.py
@@ -1,11 +1,10 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
-"""Jury édition manuelle des décisions RCUE antérieures
-"""
+"""Jury édition manuelle des décisions RCUE antérieures"""
 
 from flask import render_template
 
diff --git a/app/comp/aux_stats.py b/app/comp/aux_stats.py
index 36b2efdf8..590161db5 100644
--- a/app/comp/aux_stats.py
+++ b/app/comp/aux_stats.py
@@ -1,11 +1,10 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
-"""Quelques classes auxiliaires pour les calculs des notes
-"""
+"""Quelques classes auxiliaires pour les calculs des notes"""
 
 import numpy as np
 
diff --git a/app/comp/bonus_spo.py b/app/comp/bonus_spo.py
index 0c7df6380..5ce02445f 100644
--- a/app/comp/bonus_spo.py
+++ b/app/comp/bonus_spo.py
@@ -1,6 +1,6 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
diff --git a/app/comp/df_cache.py b/app/comp/df_cache.py
index 59dded343..365ea2c1f 100644
--- a/app/comp/df_cache.py
+++ b/app/comp/df_cache.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,8 +25,7 @@
 #
 ##############################################################################
 
-"""caches pour tables APC
-"""
+"""caches pour tables APC"""
 from flask import g
 
 from app.scodoc import sco_cache
diff --git a/app/comp/jury.py b/app/comp/jury.py
index 899d3ad8a..d2e432e51 100644
--- a/app/comp/jury.py
+++ b/app/comp/jury.py
@@ -1,11 +1,10 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
-"""Stockage des décisions de jury
-"""
+"""Stockage des décisions de jury"""
 import pandas as pd
 import sqlalchemy as sa
 
diff --git a/app/comp/moy_mat.py b/app/comp/moy_mat.py
index e95e4c961..c77a76ca1 100644
--- a/app/comp/moy_mat.py
+++ b/app/comp/moy_mat.py
@@ -1,11 +1,10 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
-"""Calcul des moyennes de matières
-"""
+"""Calcul des moyennes de matières"""
 
 # C'est un recalcul (optionnel) effectué _après_ le calcul standard.
 
diff --git a/app/comp/moy_mod.py b/app/comp/moy_mod.py
index 20d8cb8bc..ce1c3a3d2 100644
--- a/app/comp/moy_mod.py
+++ b/app/comp/moy_mod.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/comp/moy_sem.py b/app/comp/moy_sem.py
index 540b78668..c46363911 100644
--- a/app/comp/moy_sem.py
+++ b/app/comp/moy_sem.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,8 +25,7 @@
 #
 ##############################################################################
 
-"""Fonctions de calcul des moyennes de semestre (indicatives dans le BUT)
-"""
+"""Fonctions de calcul des moyennes de semestre (indicatives dans le BUT)"""
 import numpy as np
 import pandas as pd
 
diff --git a/app/comp/moy_ue.py b/app/comp/moy_ue.py
index 8030208d3..d21d45f64 100644
--- a/app/comp/moy_ue.py
+++ b/app/comp/moy_ue.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,8 +25,7 @@
 #
 ##############################################################################
 
-"""Fonctions de calcul des moyennes d'UE (classiques ou BUT)
-"""
+"""Fonctions de calcul des moyennes d'UE (classiques ou BUT)"""
 import numpy as np
 import pandas as pd
 
diff --git a/app/comp/res_but.py b/app/comp/res_but.py
index fbde78658..7e3808914 100644
--- a/app/comp/res_but.py
+++ b/app/comp/res_but.py
@@ -1,11 +1,10 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
-"""Résultats semestres BUT
-"""
+"""Résultats semestres BUT"""
 import time
 import numpy as np
 import pandas as pd
diff --git a/app/comp/res_cache.py b/app/comp/res_cache.py
index 9374598b7..7f32cc089 100644
--- a/app/comp/res_cache.py
+++ b/app/comp/res_cache.py
@@ -1,11 +1,10 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
-"""Cache pour résultats (super classe)
-"""
+"""Cache pour résultats (super classe)"""
 
 from app.models import FormSemestre
 
diff --git a/app/comp/res_classic.py b/app/comp/res_classic.py
index 59f3790e4..431b2c237 100644
--- a/app/comp/res_classic.py
+++ b/app/comp/res_classic.py
@@ -1,11 +1,10 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
-"""Résultats semestres classiques (non APC)
-"""
+"""Résultats semestres classiques (non APC)"""
 import time
 import numpy as np
 import pandas as pd
diff --git a/app/comp/res_common.py b/app/comp/res_common.py
index 926bc7c97..d25436453 100644
--- a/app/comp/res_common.py
+++ b/app/comp/res_common.py
@@ -1,11 +1,10 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
-"""Résultats semestre: méthodes communes aux formations classiques et APC
-"""
+"""Résultats semestre: méthodes communes aux formations classiques et APC"""
 
 from collections import Counter, defaultdict
 from collections.abc import Generator
diff --git a/app/comp/res_compat.py b/app/comp/res_compat.py
index 82b1ad882..9f592985b 100644
--- a/app/comp/res_compat.py
+++ b/app/comp/res_compat.py
@@ -1,11 +1,10 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
-"""Classe résultats pour compatibilité avec le code ScoDoc 7
-"""
+"""Classe résultats pour compatibilité avec le code ScoDoc 7"""
 from functools import cached_property
 import pandas as pd
 
diff --git a/app/comp/res_sem.py b/app/comp/res_sem.py
index 8c28d7e44..48f3fce22 100644
--- a/app/comp/res_sem.py
+++ b/app/comp/res_sem.py
@@ -1,11 +1,10 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
-"""Chargement des résultats de semestres (tous types)
-"""
+"""Chargement des résultats de semestres (tous types)"""
 from flask import g
 
 from app import db
diff --git a/app/email.py b/app/email.py
index 797dfd2a9..36d4b6ea9 100644
--- a/app/email.py
+++ b/app/email.py
@@ -1,7 +1,7 @@
 # -*- coding: UTF-8 -*
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
diff --git a/app/entreprises/activate.py b/app/entreprises/activate.py
index 59a3d5c41..ae3f3ab2a 100644
--- a/app/entreprises/activate.py
+++ b/app/entreprises/activate.py
@@ -1,6 +1,6 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
diff --git a/app/entreprises/app_relations_entreprises.py b/app/entreprises/app_relations_entreprises.py
index e02a0c935..17802645d 100644
--- a/app/entreprises/app_relations_entreprises.py
+++ b/app/entreprises/app_relations_entreprises.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -345,9 +345,9 @@ def check_entreprises_import(m):
                     adresse=entreprise_data["adresse"],
                     ville=entreprise_data["ville"],
                     codepostal=entreprise_data["code_postal"],
-                    pays=entreprise_data["pays"]
-                    if entreprise_data["pays"]
-                    else "FRANCE",
+                    pays=(
+                        entreprise_data["pays"] if entreprise_data["pays"] else "FRANCE"
+                    ),
                     visible=True,
                 )
                 entreprises_import.append(entreprise_import)
diff --git a/app/entreprises/forms.py b/app/entreprises/forms.py
index 804e232b7..b5a6805d9 100644
--- a/app/entreprises/forms.py
+++ b/app/entreprises/forms.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/formations/edit_formation.py b/app/formations/edit_formation.py
index b796492a5..ac5d59a1d 100644
--- a/app/formations/edit_formation.py
+++ b/app/formations/edit_formation.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/formations/edit_matiere.py b/app/formations/edit_matiere.py
index 517e35707..7984145d7 100644
--- a/app/formations/edit_matiere.py
+++ b/app/formations/edit_matiere.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,8 +25,7 @@
 #
 ##############################################################################
 
-"""Ajout/Modification/Suppression matieres
-"""
+"""Ajout/Modification/Suppression matieres"""
 import flask
 from flask import flash, g, render_template, request, url_for
 
diff --git a/app/formations/edit_module.py b/app/formations/edit_module.py
index d6a3e8245..d81f4fe3d 100644
--- a/app/formations/edit_module.py
+++ b/app/formations/edit_module.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/formations/edit_ue.py b/app/formations/edit_ue.py
index aa0e911f0..77e40755c 100644
--- a/app/formations/edit_ue.py
+++ b/app/formations/edit_ue.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/formations/formation_io.py b/app/formations/formation_io.py
index 8b2dfd421..33baaf7f3 100644
--- a/app/formations/formation_io.py
+++ b/app/formations/formation_io.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,8 +25,7 @@
 #
 ##############################################################################
 
-"""Import / Export de formations
-"""
+"""Import / Export de formations"""
 import xml.dom.minidom
 
 import flask
diff --git a/app/formations/formation_recap.py b/app/formations/formation_recap.py
index 6bbdcaf31..bff6e2e2f 100644
--- a/app/formations/formation_recap.py
+++ b/app/formations/formation_recap.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,8 +25,7 @@
 #
 ##############################################################################
 
-"""Table recap formation (avec champs éditables)
-"""
+"""Table recap formation (avec champs éditables)"""
 import io
 from zipfile import ZipFile
 
diff --git a/app/formations/formation_versions.py b/app/formations/formation_versions.py
index 168119b1e..e5444edb4 100644
--- a/app/formations/formation_versions.py
+++ b/app/formations/formation_versions.py
@@ -4,7 +4,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -24,8 +24,7 @@
 #
 ##############################################################################
 
-"""Association de nouvelles versions de formation à des formsemestre
-"""
+"""Association de nouvelles versions de formation à des formsemestre"""
 import flask
 from flask import url_for, flash
 from flask import g, request
diff --git a/app/forms/assiduite/ajout_assiduite_etud.py b/app/forms/assiduite/ajout_assiduite_etud.py
index 378f2b660..c089fa2f4 100644
--- a/app/forms/assiduite/ajout_assiduite_etud.py
+++ b/app/forms/assiduite/ajout_assiduite_etud.py
@@ -4,7 +4,7 @@
 #
 # ScoDoc
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/forms/formsemestre/change_formation.py b/app/forms/formsemestre/change_formation.py
index c66e96778..3c3d0f664 100644
--- a/app/forms/formsemestre/change_formation.py
+++ b/app/forms/formsemestre/change_formation.py
@@ -4,7 +4,7 @@
 #
 # ScoDoc
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -36,6 +36,7 @@ from app.models import Formation
 
 class FormSemestreChangeFormationForm(FlaskForm):
     "Formulaire changement formation d'un formsemestre"
+
     # construit dynamiquement ci-dessous
 
 
diff --git a/app/forms/formsemestre/edit_description.py b/app/forms/formsemestre/edit_description.py
index d10cd8075..0726a8044 100644
--- a/app/forms/formsemestre/edit_description.py
+++ b/app/forms/formsemestre/edit_description.py
@@ -1,11 +1,10 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
-"""Formulaire édition description formsemestre
-"""
+"""Formulaire édition description formsemestre"""
 from wtforms import (
     BooleanField,
     FileField,
@@ -45,6 +44,7 @@ class DateDMYField(StringField):
 
 class FormSemestreDescriptionForm(ScoDocForm):
     "Formulaire édition description formsemestre"
+
     description = TextAreaField(
         "Description",
         validators=[Optional()],
diff --git a/app/forms/main/config_apo.py b/app/forms/main/config_apo.py
index 87e6d9fa6..d565477ec 100644
--- a/app/forms/main/config_apo.py
+++ b/app/forms/main/config_apo.py
@@ -5,7 +5,7 @@
 #
 # ScoDoc
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/forms/main/config_assiduites.py b/app/forms/main/config_assiduites.py
index fa880d31d..ccde95803 100644
--- a/app/forms/main/config_assiduites.py
+++ b/app/forms/main/config_assiduites.py
@@ -5,7 +5,7 @@
 #
 # ScoDoc
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -76,6 +76,7 @@ def check_ics_regexp(form, field):
 
 class ConfigAssiduitesForm(FlaskForm):
     "Formulaire paramétrage Module Assiduité"
+
     assi_morning_time = ScoTimeField("Début de la journée", "assi_morning_time")
     assi_lunch_time = ScoTimeField(
         "Heure de midi (date pivot entre matin et après-midi)", "assi_lunch_time"
diff --git a/app/forms/main/config_cas.py b/app/forms/main/config_cas.py
index 4c64c8ab5..3c5f45270 100644
--- a/app/forms/main/config_cas.py
+++ b/app/forms/main/config_cas.py
@@ -5,7 +5,7 @@
 #
 # ScoDoc
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -51,6 +51,7 @@ def check_cas_edt_id_from_xml_regexp(form, field):
 
 class ConfigCASForm(FlaskForm):
     "Formulaire paramétrage CAS"
+
     cas_enable = BooleanField("Activer le CAS")
     cas_force = BooleanField(
         "Forcer l'utilisation de CAS (tous les utilisateurs seront redirigés vers le CAS)"
diff --git a/app/forms/main/config_logos.py b/app/forms/main/config_logos.py
index 09264dcdb..fe0c3831d 100644
--- a/app/forms/main/config_logos.py
+++ b/app/forms/main/config_logos.py
@@ -5,7 +5,7 @@
 #
 # ScoDoc
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/forms/main/config_main.py b/app/forms/main/config_main.py
index 101bbe38b..87692b139 100644
--- a/app/forms/main/config_main.py
+++ b/app/forms/main/config_main.py
@@ -5,7 +5,7 @@
 #
 # ScoDoc
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -41,6 +41,7 @@ import app.scodoc.sco_utils as scu
 
 class BonusConfigurationForm(FlaskForm):
     "Panneau de configuration des logos"
+
     bonus_sport_func_name = SelectField(
         label="Fonction de calcul des bonus sport&culture",
         choices=[
@@ -54,6 +55,7 @@ class BonusConfigurationForm(FlaskForm):
 
 class ScoDocConfigurationForm(FlaskForm):
     "Panneau de configuration avancée"
+
     disable_passerelle = BooleanField(  # disable car par défaut activée
         """cacher les fonctions liées à une passerelle de publication des résultats vers les étudiants ("œil"). N'affecte pas l'API, juste la présentation."""
     )
diff --git a/app/forms/main/config_rgpd.py b/app/forms/main/config_rgpd.py
index d20ff7171..ebe48e2db 100644
--- a/app/forms/main/config_rgpd.py
+++ b/app/forms/main/config_rgpd.py
@@ -5,7 +5,7 @@
 #
 # ScoDoc
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -36,6 +36,7 @@ from wtforms.fields.simple import TextAreaField
 
 class ConfigRGPDForm(FlaskForm):
     "Formulaire paramétrage RGPD"
+
     rgpd_coordonnees_dpo = TextAreaField(
         label="Optionnel: coordonnées du DPO",
         description="""Le délégué à la protection des données (DPO) est chargé de mettre en œuvre
diff --git a/app/forms/main/create_bug_report.py b/app/forms/main/create_bug_report.py
index e94920f85..bdee4493e 100644
--- a/app/forms/main/create_bug_report.py
+++ b/app/forms/main/create_bug_report.py
@@ -5,7 +5,7 @@
 #
 # ScoDoc
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/forms/main/create_dept.py b/app/forms/main/create_dept.py
index 059af39ca..e97e3b775 100644
--- a/app/forms/main/create_dept.py
+++ b/app/forms/main/create_dept.py
@@ -5,7 +5,7 @@
 #
 # ScoDoc
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/forms/main/role_create.py b/app/forms/main/role_create.py
index aee79c0c3..1dec933b3 100644
--- a/app/forms/main/role_create.py
+++ b/app/forms/main/role_create.py
@@ -5,7 +5,7 @@
 #
 # ScoDoc
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/forms/pe/pe_sem_recap.py b/app/forms/pe/pe_sem_recap.py
index ae86cab48..ce798cc63 100644
--- a/app/forms/pe/pe_sem_recap.py
+++ b/app/forms/pe/pe_sem_recap.py
@@ -2,7 +2,7 @@
 #
 # ScoDoc
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -32,6 +32,7 @@ from wtforms import BooleanField, SubmitField
 
 class ParametrageClasseurPE(FlaskForm):
     "Formulaire paramétrage génération classeur PE"
+
     # cohorte_restreinte = BooleanField(
     #    "Restreindre aux étudiants inscrits dans le semestre (sans interclassement de promotion) (à venir)"
     # )
diff --git a/app/formsemestre/import_from_descr.py b/app/formsemestre/import_from_descr.py
index 07cdf0c3b..9dbe50263 100644
--- a/app/formsemestre/import_from_descr.py
+++ b/app/formsemestre/import_from_descr.py
@@ -4,7 +4,7 @@
 #
 # ScoDoc
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/models/but_refcomp.py b/app/models/but_refcomp.py
index 635af3f9c..9c46dbb55 100644
--- a/app/models/but_refcomp.py
+++ b/app/models/but_refcomp.py
@@ -1,10 +1,9 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
-"""ScoDoc 9 models : Référentiel Compétence BUT 2021
-"""
+"""ScoDoc 9 models : Référentiel Compétence BUT 2021"""
 from datetime import datetime
 import functools
 from operator import attrgetter
@@ -58,6 +57,7 @@ class XMLModel:
 
 class ApcReferentielCompetences(models.ScoDocModel, XMLModel):
     "Référentiel de compétence d'une spécialité"
+
     id = db.Column(db.Integer, primary_key=True)
     dept_id = db.Column(
         db.Integer, db.ForeignKey("departement.id", ondelete="CASCADE"), index=True
@@ -341,6 +341,7 @@ class ApcReferentielCompetences(models.ScoDocModel, XMLModel):
 
 class ApcCompetence(models.ScoDocModel, XMLModel):
     "Compétence"
+
     id = db.Column(db.Integer, primary_key=True)
     referentiel_id = db.Column(
         db.Integer,
@@ -412,6 +413,7 @@ class ApcCompetence(models.ScoDocModel, XMLModel):
 
 class ApcSituationPro(models.ScoDocModel, XMLModel):
     "Situation professionnelle"
+
     id = db.Column(db.Integer, primary_key=True)
     competence_id = db.Column(
         db.Integer,
@@ -427,6 +429,7 @@ class ApcSituationPro(models.ScoDocModel, XMLModel):
 
 class ApcComposanteEssentielle(models.ScoDocModel, XMLModel):
     "Composante essentielle"
+
     id = db.Column(db.Integer, primary_key=True)
     competence_id = db.Column(
         db.Integer,
@@ -610,6 +613,7 @@ app_critiques_modules = db.Table(
 
 class ApcAppCritique(models.ScoDocModel, XMLModel):
     "Apprentissage Critique BUT"
+
     id = db.Column(db.Integer, primary_key=True)
     niveau_id = db.Column(
         db.Integer, db.ForeignKey("apc_niveau.id", ondelete="CASCADE"), nullable=False
@@ -697,6 +701,7 @@ parcours_formsemestre = db.Table(
 
 class ApcParcours(models.ScoDocModel, XMLModel):
     "Un parcours BUT"
+
     id = db.Column(db.Integer, primary_key=True)
     referentiel_id = db.Column(
         db.Integer,
diff --git a/app/models/formsemestre.py b/app/models/formsemestre.py
index 438e6c011..d0410fb83 100644
--- a/app/models/formsemestre.py
+++ b/app/models/formsemestre.py
@@ -1,7 +1,7 @@
 # -*- coding: UTF-8 -*
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
diff --git a/app/models/formsemestre_descr.py b/app/models/formsemestre_descr.py
index cff561852..513352cea 100644
--- a/app/models/formsemestre_descr.py
+++ b/app/models/formsemestre_descr.py
@@ -1,6 +1,6 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
diff --git a/app/models/groups.py b/app/models/groups.py
index 55cd8ecf9..2e59b9384 100644
--- a/app/models/groups.py
+++ b/app/models/groups.py
@@ -1,12 +1,11 @@
 # -*- coding: UTF-8 -*
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
-"""ScoDoc models: Groups & partitions
-"""
+"""ScoDoc models: Groups & partitions"""
 from operator import attrgetter
 from sqlalchemy.exc import IntegrityError
 
diff --git a/app/pe/moys/pe_interclasstag.py b/app/pe/moys/pe_interclasstag.py
index 382d88feb..776af5820 100644
--- a/app/pe/moys/pe_interclasstag.py
+++ b/app/pe/moys/pe_interclasstag.py
@@ -2,7 +2,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -112,7 +112,7 @@ class InterClassTag(pe_tabletags.TableTag):
         # Les RCS (SemX ou RCSemX) suivis par les étudiants du jury,
         # en ne gardant que ceux associés aux diplomés
         self.suivis: dict[int, pe_rcs.RCS] = {}
-        """Association entre chaque étudiant et le SxTag ou RCSTag à prendre 
+        """Association entre chaque étudiant et le SxTag ou RCSTag à prendre
         pour l'aggrégat"""
         for etudid in self.diplomes_ids:
             self.suivis[etudid] = suivis[etudid][nom_rcs]
diff --git a/app/pe/moys/pe_rcstag.py b/app/pe/moys/pe_rcstag.py
index cf135174b..ba018f7f6 100644
--- a/app/pe/moys/pe_rcstag.py
+++ b/app/pe/moys/pe_rcstag.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/pe/moys/pe_ressemtag.py b/app/pe/moys/pe_ressemtag.py
index acd59ad29..9890fc222 100644
--- a/app/pe/moys/pe_ressemtag.py
+++ b/app/pe/moys/pe_ressemtag.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU Generfal Public License as published by
diff --git a/app/pe/moys/pe_sxtag.py b/app/pe/moys/pe_sxtag.py
index 9efa03279..26eb30363 100644
--- a/app/pe/moys/pe_sxtag.py
+++ b/app/pe/moys/pe_sxtag.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/pe/moys/pe_tabletags.py b/app/pe/moys/pe_tabletags.py
index 6c5ecbe4d..47035787b 100644
--- a/app/pe/moys/pe_tabletags.py
+++ b/app/pe/moys/pe_tabletags.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/pe/pe_comp.py b/app/pe/pe_comp.py
index 0ab973f4c..409731e3a 100644
--- a/app/pe/pe_comp.py
+++ b/app/pe/pe_comp.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/pe/pe_etudiant.py b/app/pe/pe_etudiant.py
index 748789ae5..7cbbe93cc 100644
--- a/app/pe/pe_etudiant.py
+++ b/app/pe/pe_etudiant.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet. c All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet. c All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/pe/pe_jury.py b/app/pe/pe_jury.py
index 0b1bcfbd4..46999a9f9 100644
--- a/app/pe/pe_jury.py
+++ b/app/pe/pe_jury.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/pe/pe_view.py b/app/pe/pe_view.py
index 6aebfa288..f9d0adbea 100644
--- a/app/pe/pe_view.py
+++ b/app/pe/pe_view.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -31,9 +31,7 @@
 ##############################################################################
 
 
-"""ScoDoc : interface des fonctions de gestion des avis de poursuites d'étude
-
-"""
+"""ScoDoc : interface des fonctions de gestion des avis de poursuites d'étude"""
 
 from flask import flash, g, redirect, render_template, request, send_file, url_for
 
diff --git a/app/scodoc/__init__.py b/app/scodoc/__init__.py
index 1edc8d5ff..6595afaa3 100644
--- a/app/scodoc/__init__.py
+++ b/app/scodoc/__init__.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,5 +25,4 @@
 #
 ##############################################################################
 
-"""ScoDoc core package
-"""
+"""ScoDoc core package"""
diff --git a/app/scodoc/codes_cursus.py b/app/scodoc/codes_cursus.py
index 3c4e6d155..8d0d8a90f 100644
--- a/app/scodoc/codes_cursus.py
+++ b/app/scodoc/codes_cursus.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -650,6 +650,7 @@ register_cursus(CursusBachelorISCID6())
 
 class CursusMasterISCID4(CursusISCID):
     "ISCID: Master en 2 ans (4 sem.)"
+
     TYPE_CURSUS = CodesCursus.ISCID4
     NAME = "CursusMasterISCID4"
     NB_SEM = 4
diff --git a/app/scodoc/gen_tables.py b/app/scodoc/gen_tables.py
index 3161c9cbc..1d0c06325 100644
--- a/app/scodoc/gen_tables.py
+++ b/app/scodoc/gen_tables.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/scodoc/html_sco_header.py b/app/scodoc/html_sco_header.py
index 2d2ad4c6a..1346932dd 100644
--- a/app/scodoc/html_sco_header.py
+++ b/app/scodoc/html_sco_header.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/scodoc/html_sidebar.py b/app/scodoc/html_sidebar.py
index 7036f4e4a..132049e3a 100755
--- a/app/scodoc/html_sidebar.py
+++ b/app/scodoc/html_sidebar.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/scodoc/htmlutils.py b/app/scodoc/htmlutils.py
index 3b49d18c0..19e3041ef 100644
--- a/app/scodoc/htmlutils.py
+++ b/app/scodoc/htmlutils.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,8 +25,7 @@
 #
 ##############################################################################
 
-"""Various HTML generation functions
-"""
+"""Various HTML generation functions"""
 from html.parser import HTMLParser
 from html.entities import name2codepoint
 from multiprocessing.sharedctypes import Value
diff --git a/app/scodoc/notes_users.py b/app/scodoc/notes_users.py
index b1ead8949..bc43a7c0d 100644
--- a/app/scodoc/notes_users.py
+++ b/app/scodoc/notes_users.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,7 +25,6 @@
 #
 ##############################################################################
 
-"""Basic User management
-"""
+"""Basic User management"""
 
 raise NotImplementedError()
diff --git a/app/scodoc/safehtml.py b/app/scodoc/safehtml.py
index d74bf40ff..eb503b802 100644
--- a/app/scodoc/safehtml.py
+++ b/app/scodoc/safehtml.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/scodoc/sco_abs_billets.py b/app/scodoc/sco_abs_billets.py
index ecb3b33c7..c795b815a 100644
--- a/app/scodoc/sco_abs_billets.py
+++ b/app/scodoc/sco_abs_billets.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,8 +25,7 @@
 #
 ##############################################################################
 
-"""Fonctions sur les billets d'absences
-"""
+"""Fonctions sur les billets d'absences"""
 
 from flask import g, url_for
 from flask_sqlalchemy.query import Query
diff --git a/app/scodoc/sco_abs_notification.py b/app/scodoc/sco_abs_notification.py
index f7dac412e..9cd888069 100644
--- a/app/scodoc/sco_abs_notification.py
+++ b/app/scodoc/sco_abs_notification.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/scodoc/sco_apogee_compare.py b/app/scodoc/sco_apogee_compare.py
index f830942aa..5bc75ead4 100644
--- a/app/scodoc/sco_apogee_compare.py
+++ b/app/scodoc/sco_apogee_compare.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/scodoc/sco_apogee_csv.py b/app/scodoc/sco_apogee_csv.py
index e3d180331..467ffb0b7 100644
--- a/app/scodoc/sco_apogee_csv.py
+++ b/app/scodoc/sco_apogee_csv.py
@@ -2,7 +2,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/scodoc/sco_apogee_reader.py b/app/scodoc/sco_apogee_reader.py
index 48d64cfe4..a052b7863 100644
--- a/app/scodoc/sco_apogee_reader.py
+++ b/app/scodoc/sco_apogee_reader.py
@@ -2,7 +2,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/scodoc/sco_archives.py b/app/scodoc/sco_archives.py
index 44acd08ae..d434b7e48 100644
--- a/app/scodoc/sco_archives.py
+++ b/app/scodoc/sco_archives.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/scodoc/sco_archives_etud.py b/app/scodoc/sco_archives_etud.py
index be0b70523..2cfae6a29 100644
--- a/app/scodoc/sco_archives_etud.py
+++ b/app/scodoc/sco_archives_etud.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -26,8 +26,8 @@
 ##############################################################################
 
 """ScoDoc : gestion des fichiers archivés associés aux étudiants
-     Il s'agit de fichiers quelconques, généralement utilisés pour conserver
-     les dossiers d'admission et autres pièces utiles.
+Il s'agit de fichiers quelconques, généralement utilisés pour conserver
+les dossiers d'admission et autres pièces utiles.
 """
 import flask
 from flask import flash, render_template, url_for
diff --git a/app/scodoc/sco_archives_formsemestre.py b/app/scodoc/sco_archives_formsemestre.py
index 3e4b54d20..6f3887f3d 100644
--- a/app/scodoc/sco_archives_formsemestre.py
+++ b/app/scodoc/sco_archives_formsemestre.py
@@ -2,7 +2,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -22,8 +22,7 @@
 #
 ##############################################################################
 
-"""ScoDoc : gestion des fichiers archivés associés au formsemestre (PV de jury, ...)
-"""
+"""ScoDoc : gestion des fichiers archivés associés au formsemestre (PV de jury, ...)"""
 import json
 
 import flask
diff --git a/app/scodoc/sco_bac.py b/app/scodoc/sco_bac.py
index c7411e241..13976842f 100644
--- a/app/scodoc/sco_bac.py
+++ b/app/scodoc/sco_bac.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/scodoc/sco_bug_report.py b/app/scodoc/sco_bug_report.py
index c7df1a111..e66ec5632 100644
--- a/app/scodoc/sco_bug_report.py
+++ b/app/scodoc/sco_bug_report.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/scodoc/sco_bulletins.py b/app/scodoc/sco_bulletins.py
index 80af7b86e..0d09b3ba1 100644
--- a/app/scodoc/sco_bulletins.py
+++ b/app/scodoc/sco_bulletins.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/scodoc/sco_bulletins_example.py b/app/scodoc/sco_bulletins_example.py
index a7e61568f..03a354379 100644
--- a/app/scodoc/sco_bulletins_example.py
+++ b/app/scodoc/sco_bulletins_example.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,8 +25,7 @@
 #
 ##############################################################################
 
-"""Generation bulletins de notes: exemple minimal pour les programmeurs
-"""
+"""Generation bulletins de notes: exemple minimal pour les programmeurs"""
 from reportlab.platypus import Paragraph
 
 from app.scodoc import sco_pdf
diff --git a/app/scodoc/sco_bulletins_generator.py b/app/scodoc/sco_bulletins_generator.py
index efb785b92..6c3c51d28 100644
--- a/app/scodoc/sco_bulletins_generator.py
+++ b/app/scodoc/sco_bulletins_generator.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/scodoc/sco_bulletins_json.py b/app/scodoc/sco_bulletins_json.py
index 455dd1b16..951f86c2c 100644
--- a/app/scodoc/sco_bulletins_json.py
+++ b/app/scodoc/sco_bulletins_json.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/scodoc/sco_bulletins_legacy.py b/app/scodoc/sco_bulletins_legacy.py
index 26de93813..cd4bafd2e 100644
--- a/app/scodoc/sco_bulletins_legacy.py
+++ b/app/scodoc/sco_bulletins_legacy.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -27,11 +27,11 @@
 
 """Generation bulletins de notes dans l'ancien format de ScoDoc (avant juillet 2011).
 
- Code partiellement redondant, copié de l'ancien système de gestion des bulletins.
+Code partiellement redondant, copié de l'ancien système de gestion des bulletins.
 
- Voir sco_bulletins_standard pour une version plus récente.
+Voir sco_bulletins_standard pour une version plus récente.
 
- CE FORMAT N'EVOLUERA PLUS ET EST CONSIDERE COMME OBSOLETE.
+CE FORMAT N'EVOLUERA PLUS ET EST CONSIDERE COMME OBSOLETE.
 
 """
 
diff --git a/app/scodoc/sco_bulletins_pdf.py b/app/scodoc/sco_bulletins_pdf.py
index 7a0bec950..a632fb72f 100644
--- a/app/scodoc/sco_bulletins_pdf.py
+++ b/app/scodoc/sco_bulletins_pdf.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/scodoc/sco_bulletins_signature.py b/app/scodoc/sco_bulletins_signature.py
index e862a1699..71bac08ff 100644
--- a/app/scodoc/sco_bulletins_signature.py
+++ b/app/scodoc/sco_bulletins_signature.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/scodoc/sco_bulletins_standard.py b/app/scodoc/sco_bulletins_standard.py
index d841627f2..d935b37af 100644
--- a/app/scodoc/sco_bulletins_standard.py
+++ b/app/scodoc/sco_bulletins_standard.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -77,6 +77,7 @@ from app.scodoc.sco_permissions import Permission
 # car il sera stocké en base de données (dans les préférences)
 class BulletinGeneratorStandard(sco_bulletins_generator.BulletinGenerator):
     "Les bulletins standards"
+
     # la description doit être courte: elle apparait dans le menu de paramètrage ScoDoc
     description = "standard ScoDoc (version 2011)"
     supported_formats = ["html", "pdf"]
diff --git a/app/scodoc/sco_bulletins_ucac.py b/app/scodoc/sco_bulletins_ucac.py
index 6ec66ccee..9cc4ac029 100644
--- a/app/scodoc/sco_bulletins_ucac.py
+++ b/app/scodoc/sco_bulletins_ucac.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/scodoc/sco_bulletins_xml.py b/app/scodoc/sco_bulletins_xml.py
index bd25e41ca..1c3a4e03f 100644
--- a/app/scodoc/sco_bulletins_xml.py
+++ b/app/scodoc/sco_bulletins_xml.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/scodoc/sco_cache.py b/app/scodoc/sco_cache.py
index caf1187c8..de14e7449 100644
--- a/app/scodoc/sco_cache.py
+++ b/app/scodoc/sco_cache.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -27,9 +27,9 @@
 
 """Gestion des caches
 
-  Ré-écrite pour ScoDoc8, utilise flask_caching et REDIS
+Ré-écrite pour ScoDoc8, utilise flask_caching et REDIS
 
-  ScoDoc est maintenant multiprocessus / mono-thread, avec un cache partagé.
+ScoDoc est maintenant multiprocessus / mono-thread, avec un cache partagé.
 """
 
 
diff --git a/app/scodoc/sco_cal.py b/app/scodoc/sco_cal.py
index ef88b70c0..55cb8f801 100644
--- a/app/scodoc/sco_cal.py
+++ b/app/scodoc/sco_cal.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,8 +25,7 @@
 #
 ##############################################################################
 
-"""Génération calendrier (ancienne présentation)
-"""
+"""Génération calendrier (ancienne présentation)"""
 
 import calendar
 import html
diff --git a/app/scodoc/sco_config_actions.py b/app/scodoc/sco_config_actions.py
index 236b7ae84..579a61093 100644
--- a/app/scodoc/sco_config_actions.py
+++ b/app/scodoc/sco_config_actions.py
@@ -5,7 +5,7 @@
 #
 # ScoDoc
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,9 +25,7 @@
 #
 ##############################################################################
 
-"""
-
-"""
+""" """
 from flask import current_app
 
 from app.scodoc.sco_logos import find_logo
diff --git a/app/scodoc/sco_cost_formation.py b/app/scodoc/sco_cost_formation.py
index 0a211f14c..72e9ae6cb 100644
--- a/app/scodoc/sco_cost_formation.py
+++ b/app/scodoc/sco_cost_formation.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -26,9 +26,9 @@
 ##############################################################################
 
 """Rapports estimation coût de formation basé sur le programme pédagogique
-   et les nombres de groupes.
+et les nombres de groupes.
 
-   (coût théorique en heures équivalent TD)
+(coût théorique en heures équivalent TD)
 """
 from flask import request, Response
 
diff --git a/app/scodoc/sco_cursus.py b/app/scodoc/sco_cursus.py
index 1d40e13a2..a2eca56dd 100644
--- a/app/scodoc/sco_cursus.py
+++ b/app/scodoc/sco_cursus.py
@@ -4,7 +4,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -24,8 +24,7 @@
 #
 ##############################################################################
 
-"""Gestion des cursus (jurys suivant la formation)
-"""
+"""Gestion des cursus (jurys suivant la formation)"""
 from sqlalchemy.sql import text
 
 from app import db
diff --git a/app/scodoc/sco_cursus_dut.py b/app/scodoc/sco_cursus_dut.py
index d4605454e..2743b653e 100644
--- a/app/scodoc/sco_cursus_dut.py
+++ b/app/scodoc/sco_cursus_dut.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,8 +25,7 @@
 #
 ##############################################################################
 
-"""Semestres: gestion parcours DUT (Arreté du 13 août 2005)
-"""
+"""Semestres: gestion parcours DUT (Arreté du 13 août 2005)"""
 
 from app import db
 from app.comp import res_sem
diff --git a/app/scodoc/sco_debouche.py b/app/scodoc/sco_debouche.py
index 259e8372c..eeeac6551 100644
--- a/app/scodoc/sco_debouche.py
+++ b/app/scodoc/sco_debouche.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/scodoc/sco_dept.py b/app/scodoc/sco_dept.py
index 1d5b3f4c5..1c84e47c1 100644
--- a/app/scodoc/sco_dept.py
+++ b/app/scodoc/sco_dept.py
@@ -5,7 +5,7 @@
 #
 # ScoDoc
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,8 +25,7 @@
 #
 ##############################################################################
 
-"""Page accueil département (liste des semestres, etc)
-"""
+"""Page accueil département (liste des semestres, etc)"""
 
 from sqlalchemy import desc
 from flask import g, url_for, render_template
diff --git a/app/scodoc/sco_dump_db.py b/app/scodoc/sco_dump_db.py
index f1f8b1522..bd1d8390f 100644
--- a/app/scodoc/sco_dump_db.py
+++ b/app/scodoc/sco_dump_db.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/scodoc/sco_edit_apc.py b/app/scodoc/sco_edit_apc.py
index 1915fa17e..077505254 100644
--- a/app/scodoc/sco_edit_apc.py
+++ b/app/scodoc/sco_edit_apc.py
@@ -2,7 +2,7 @@
 #
 # ScoDoc
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -22,8 +22,7 @@
 #
 ##############################################################################
 
-"""Édition formation APC (BUT)
-"""
+"""Édition formation APC (BUT)"""
 
 from flask.templating import render_template
 
diff --git a/app/scodoc/sco_edt_cal.py b/app/scodoc/sco_edt_cal.py
index fe1477fe5..ae3ae935e 100644
--- a/app/scodoc/sco_edt_cal.py
+++ b/app/scodoc/sco_edt_cal.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/scodoc/sco_etape_apogee.py b/app/scodoc/sco_etape_apogee.py
index ea586aaf9..b77804677 100644
--- a/app/scodoc/sco_etape_apogee.py
+++ b/app/scodoc/sco_etape_apogee.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/scodoc/sco_etape_apogee_view.py b/app/scodoc/sco_etape_apogee_view.py
index 32e0ad62b..801dc30c7 100644
--- a/app/scodoc/sco_etape_apogee_view.py
+++ b/app/scodoc/sco_etape_apogee_view.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/scodoc/sco_etape_bilan.py b/app/scodoc/sco_etape_bilan.py
index fb2c8bdf4..d0139602e 100644
--- a/app/scodoc/sco_etape_bilan.py
+++ b/app/scodoc/sco_etape_bilan.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/scodoc/sco_etud.py b/app/scodoc/sco_etud.py
index f74c3c421..db3e2d2ab 100644
--- a/app/scodoc/sco_etud.py
+++ b/app/scodoc/sco_etud.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,8 +25,7 @@
 #
 ##############################################################################
 
-""" Accès donnees etudiants
-"""
+"""Accès donnees etudiants"""
 
 # Ancien module "scolars"
 import os
diff --git a/app/scodoc/sco_evaluation_check_abs.py b/app/scodoc/sco_evaluation_check_abs.py
index 83532b136..53ac019d7 100644
--- a/app/scodoc/sco_evaluation_check_abs.py
+++ b/app/scodoc/sco_evaluation_check_abs.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,8 +25,7 @@
 #
 ##############################################################################
 
-"""Vérification des absences à une évaluation
-"""
+"""Vérification des absences à une évaluation"""
 from flask import g, render_template, url_for
 from flask_sqlalchemy.query import Query
 
diff --git a/app/scodoc/sco_evaluation_db.py b/app/scodoc/sco_evaluation_db.py
index d19c0c756..2afab37a4 100644
--- a/app/scodoc/sco_evaluation_db.py
+++ b/app/scodoc/sco_evaluation_db.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,8 +25,7 @@
 #
 ##############################################################################
 
-"""Gestion évaluations (ScoDoc7, code en voie de modernisation)
-"""
+"""Gestion évaluations (ScoDoc7, code en voie de modernisation)"""
 
 import flask
 from flask import url_for, g
diff --git a/app/scodoc/sco_evaluation_edit.py b/app/scodoc/sco_evaluation_edit.py
index 7d9f6f040..a63b22a45 100644
--- a/app/scodoc/sco_evaluation_edit.py
+++ b/app/scodoc/sco_evaluation_edit.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,8 +25,7 @@
 #
 ##############################################################################
 
-"""Formulaire ajout/édition d'une évaluation
-"""
+"""Formulaire ajout/édition d'une évaluation"""
 import datetime
 import time
 
diff --git a/app/scodoc/sco_evaluation_recap.py b/app/scodoc/sco_evaluation_recap.py
index f79ddcdab..87ea58b17 100644
--- a/app/scodoc/sco_evaluation_recap.py
+++ b/app/scodoc/sco_evaluation_recap.py
@@ -1,6 +1,6 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
diff --git a/app/scodoc/sco_evaluations.py b/app/scodoc/sco_evaluations.py
index 9c5fad6d7..ca85092c0 100644
--- a/app/scodoc/sco_evaluations.py
+++ b/app/scodoc/sco_evaluations.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/scodoc/sco_excel.py b/app/scodoc/sco_excel.py
index a9a696d54..65ce52949 100644
--- a/app/scodoc/sco_excel.py
+++ b/app/scodoc/sco_excel.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -54,6 +54,7 @@ from app.scodoc import notesdb, sco_preferences
 
 class COLORS(Enum):
     "Couleurs de base pour les styles excel"
+
     BLACK = "FF000000"
     WHITE = "FFFFFFFF"
     RED = "FFFF0000"
diff --git a/app/scodoc/sco_exceptions.py b/app/scodoc/sco_exceptions.py
index a70578838..248252d38 100644
--- a/app/scodoc/sco_exceptions.py
+++ b/app/scodoc/sco_exceptions.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,8 +25,7 @@
 #
 ##############################################################################
 
-"""Exception handling
-"""
+"""Exception handling"""
 from flask_login import current_user
 import app
 
diff --git a/app/scodoc/sco_export_results.py b/app/scodoc/sco_export_results.py
index aafeabe72..652a688a0 100644
--- a/app/scodoc/sco_export_results.py
+++ b/app/scodoc/sco_export_results.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,8 +25,7 @@
 #
 ##############################################################################
 
-"""Export d'une table avec les résultats de tous les étudiants
-"""
+"""Export d'une table avec les résultats de tous les étudiants"""
 from flask import url_for, g, render_template, request
 
 from app.comp import res_sem
diff --git a/app/scodoc/sco_find_etud.py b/app/scodoc/sco_find_etud.py
index 07c76cb3a..c2ba25162 100644
--- a/app/scodoc/sco_find_etud.py
+++ b/app/scodoc/sco_find_etud.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,8 +25,7 @@
 #
 ##############################################################################
 
-"""Recherche d'étudiants
-"""
+"""Recherche d'étudiants"""
 import flask
 from flask import url_for, g, render_template, request
 from flask_login import current_user
diff --git a/app/scodoc/sco_formsemestre.py b/app/scodoc/sco_formsemestre.py
index 8ca5a42fa..3a137e223 100644
--- a/app/scodoc/sco_formsemestre.py
+++ b/app/scodoc/sco_formsemestre.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,8 +25,7 @@
 #
 ##############################################################################
 
-"""Operations de base sur les formsemestres
-"""
+"""Operations de base sur les formsemestres"""
 import datetime
 import time
 from operator import itemgetter
diff --git a/app/scodoc/sco_formsemestre_custommenu.py b/app/scodoc/sco_formsemestre_custommenu.py
index f6542bf8f..41cb16554 100644
--- a/app/scodoc/sco_formsemestre_custommenu.py
+++ b/app/scodoc/sco_formsemestre_custommenu.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,8 +25,7 @@
 #
 ##############################################################################
 
-"""Menu "custom" (défini par l'utilisateur) dans les semestres
-"""
+"""Menu "custom" (défini par l'utilisateur) dans les semestres"""
 import flask
 from flask import g, url_for, render_template, request
 from flask_login import current_user
diff --git a/app/scodoc/sco_formsemestre_edit.py b/app/scodoc/sco_formsemestre_edit.py
index d24d64acc..8e5f670c9 100644
--- a/app/scodoc/sco_formsemestre_edit.py
+++ b/app/scodoc/sco_formsemestre_edit.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,8 +25,7 @@
 #
 ##############################################################################
 
-"""Form choix modules / responsables et creation formsemestre
-"""
+"""Form choix modules / responsables et creation formsemestre"""
 import flask
 from flask import flash, g, request, redirect, render_template, url_for
 from flask_login import current_user
diff --git a/app/scodoc/sco_formsemestre_exterieurs.py b/app/scodoc/sco_formsemestre_exterieurs.py
index 1e4f7a976..704c99189 100644
--- a/app/scodoc/sco_formsemestre_exterieurs.py
+++ b/app/scodoc/sco_formsemestre_exterieurs.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/scodoc/sco_formsemestre_inscriptions.py b/app/scodoc/sco_formsemestre_inscriptions.py
index 77b9eb7c9..b257fd529 100644
--- a/app/scodoc/sco_formsemestre_inscriptions.py
+++ b/app/scodoc/sco_formsemestre_inscriptions.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,8 +25,7 @@
 #
 ##############################################################################
 
-"""Opérations d'inscriptions aux semestres et modules
-"""
+"""Opérations d'inscriptions aux semestres et modules"""
 import collections
 
 import flask
diff --git a/app/scodoc/sco_formsemestre_status.py b/app/scodoc/sco_formsemestre_status.py
index 16d2dfd4d..d3140108a 100755
--- a/app/scodoc/sco_formsemestre_status.py
+++ b/app/scodoc/sco_formsemestre_status.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/scodoc/sco_formsemestre_validation.py b/app/scodoc/sco_formsemestre_validation.py
index fe598e570..28fd4ba27 100644
--- a/app/scodoc/sco_formsemestre_validation.py
+++ b/app/scodoc/sco_formsemestre_validation.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/scodoc/sco_formulas.py b/app/scodoc/sco_formulas.py
index ad61573b1..c53f9f9ba 100644
--- a/app/scodoc/sco_formulas.py
+++ b/app/scodoc/sco_formulas.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,8 +25,7 @@
 #
 ##############################################################################
 
-"""Une classe "vecteur" pour les formules utilisateurs de calcul des moyennes
-"""
+"""Une classe "vecteur" pour les formules utilisateurs de calcul des moyennes"""
 
 import operator
 from functools import reduce
diff --git a/app/scodoc/sco_groups.py b/app/scodoc/sco_groups.py
index 821cc92e6..5a81d1d47 100644
--- a/app/scodoc/sco_groups.py
+++ b/app/scodoc/sco_groups.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,8 +25,7 @@
 #
 ##############################################################################
 
-"""Gestion des groupes, nouvelle mouture (juin/nov 2009)
-"""
+"""Gestion des groupes, nouvelle mouture (juin/nov 2009)"""
 import collections
 import time
 
diff --git a/app/scodoc/sco_groups_edit.py b/app/scodoc/sco_groups_edit.py
index 0db4d638f..bbc47ce7e 100644
--- a/app/scodoc/sco_groups_edit.py
+++ b/app/scodoc/sco_groups_edit.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,8 +25,7 @@
 #
 ##############################################################################
 
-"""Formulaires gestion des groupes
-"""
+"""Formulaires gestion des groupes"""
 import flask
 from flask import flash, g, render_template, request, url_for
 
diff --git a/app/scodoc/sco_groups_exports.py b/app/scodoc/sco_groups_exports.py
index 4bce85126..72174de47 100644
--- a/app/scodoc/sco_groups_exports.py
+++ b/app/scodoc/sco_groups_exports.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,8 +25,7 @@
 #
 ##############################################################################
 
-"""Exports groupes
-"""
+"""Exports groupes"""
 
 from app.scodoc import notesdb as ndb
 from app.scodoc import sco_groups_view
diff --git a/app/scodoc/sco_groups_view.py b/app/scodoc/sco_groups_view.py
index adc145b58..1dfac16d7 100644
--- a/app/scodoc/sco_groups_view.py
+++ b/app/scodoc/sco_groups_view.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/scodoc/sco_import_etuds.py b/app/scodoc/sco_import_etuds.py
index ceedd9a9c..957075b60 100644
--- a/app/scodoc/sco_import_etuds.py
+++ b/app/scodoc/sco_import_etuds.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,8 +25,7 @@
 #
 ##############################################################################
 
-""" Importation des étudiants à partir de fichiers CSV
-"""
+"""Importation des étudiants à partir de fichiers CSV"""
 
 import io
 import os
diff --git a/app/scodoc/sco_import_users.py b/app/scodoc/sco_import_users.py
index 871bcd084..13b173e1a 100644
--- a/app/scodoc/sco_import_users.py
+++ b/app/scodoc/sco_import_users.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,8 +25,7 @@
 #
 ##############################################################################
 
-"""Import d'utilisateurs via fichier Excel
-"""
+"""Import d'utilisateurs via fichier Excel"""
 import random
 import time
 
diff --git a/app/scodoc/sco_inscr_passage.py b/app/scodoc/sco_inscr_passage.py
index 3497afb87..c1dc555da 100644
--- a/app/scodoc/sco_inscr_passage.py
+++ b/app/scodoc/sco_inscr_passage.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -26,7 +26,7 @@
 ##############################################################################
 
 """Form. pour inscription rapide des etudiants d'un semestre dans un autre
-   Utilise les autorisations d'inscription délivrées en jury.
+Utilise les autorisations d'inscription délivrées en jury.
 """
 import datetime
 from operator import itemgetter
diff --git a/app/scodoc/sco_liste_notes.py b/app/scodoc/sco_liste_notes.py
index b95581422..759cde29c 100644
--- a/app/scodoc/sco_liste_notes.py
+++ b/app/scodoc/sco_liste_notes.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,8 +25,7 @@
 #
 ##############################################################################
 
-"""Liste des notes d'une évaluation
-"""
+"""Liste des notes d'une évaluation"""
 from collections import defaultdict
 import numpy as np
 import pandas as pd
diff --git a/app/scodoc/sco_logos.py b/app/scodoc/sco_logos.py
index e10e6de77..e8c81b29a 100644
--- a/app/scodoc/sco_logos.py
+++ b/app/scodoc/sco_logos.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/scodoc/sco_lycee.py b/app/scodoc/sco_lycee.py
index b6b0ebe85..62e221c9d 100644
--- a/app/scodoc/sco_lycee.py
+++ b/app/scodoc/sco_lycee.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -26,11 +26,11 @@
 ##############################################################################
 
 """Rapports sur lycées d'origine des étudiants d'un  semestre.
-  - statistiques decisions
-  - suivi cohortes
+- statistiques decisions
+- suivi cohortes
 
 
-  TODO: remplacer Google Map par https://leafletjs.com/
+TODO: remplacer Google Map par https://leafletjs.com/
 """
 from operator import itemgetter
 
diff --git a/app/scodoc/sco_modalites.py b/app/scodoc/sco_modalites.py
index 669b1c69d..29868427f 100644
--- a/app/scodoc/sco_modalites.py
+++ b/app/scodoc/sco_modalites.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/scodoc/sco_moduleimpl.py b/app/scodoc/sco_moduleimpl.py
index 0aeaf8982..cd60c7c33 100644
--- a/app/scodoc/sco_moduleimpl.py
+++ b/app/scodoc/sco_moduleimpl.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,8 +25,7 @@
 #
 ##############################################################################
 
-"""Fonctions sur les moduleimpl (legacy: use models.moduleimpls instead)
-"""
+"""Fonctions sur les moduleimpl (legacy: use models.moduleimpls instead)"""
 
 import psycopg2
 
diff --git a/app/scodoc/sco_moduleimpl_inscriptions.py b/app/scodoc/sco_moduleimpl_inscriptions.py
index 505409861..49baa6606 100644
--- a/app/scodoc/sco_moduleimpl_inscriptions.py
+++ b/app/scodoc/sco_moduleimpl_inscriptions.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,8 +25,7 @@
 #
 ##############################################################################
 
-"""Opérations d'inscriptions aux modules (interface pour gérer options ou parcours)
-"""
+"""Opérations d'inscriptions aux modules (interface pour gérer options ou parcours)"""
 import collections
 from operator import attrgetter
 
diff --git a/app/scodoc/sco_moduleimpl_status.py b/app/scodoc/sco_moduleimpl_status.py
index a89fd4536..b474f568e 100644
--- a/app/scodoc/sco_moduleimpl_status.py
+++ b/app/scodoc/sco_moduleimpl_status.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/scodoc/sco_page_etud.py b/app/scodoc/sco_page_etud.py
index fd4683da0..386f90030 100644
--- a/app/scodoc/sco_page_etud.py
+++ b/app/scodoc/sco_page_etud.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -27,7 +27,7 @@
 
 """ScoDoc fiche_etud
 
-   Fiche description d'un étudiant et de son parcours
+Fiche description d'un étudiant et de son parcours
 
 """
 from flask import url_for, g, render_template, request
diff --git a/app/scodoc/sco_pdf.py b/app/scodoc/sco_pdf.py
index 4dfad60dd..2567c3926 100755
--- a/app/scodoc/sco_pdf.py
+++ b/app/scodoc/sco_pdf.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/scodoc/sco_photos.py b/app/scodoc/sco_photos.py
index 62cecb422..d341938b7 100755
--- a/app/scodoc/sco_photos.py
+++ b/app/scodoc/sco_photos.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/scodoc/sco_placement.py b/app/scodoc/sco_placement.py
index 3a4ac1575..da3eb4f0e 100644
--- a/app/scodoc/sco_placement.py
+++ b/app/scodoc/sco_placement.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/scodoc/sco_portal_apogee.py b/app/scodoc/sco_portal_apogee.py
index d0ef82c4a..d7b569f9a 100644
--- a/app/scodoc/sco_portal_apogee.py
+++ b/app/scodoc/sco_portal_apogee.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,8 +25,7 @@
 #
 ##############################################################################
 
-"""Liaison avec le portail ENT (qui donne accès aux infos Apogée)
-"""
+"""Liaison avec le portail ENT (qui donne accès aux infos Apogée)"""
 import datetime
 import os
 import time
diff --git a/app/scodoc/sco_poursuite_dut.py b/app/scodoc/sco_poursuite_dut.py
index ef7140fe7..fba9c832a 100644
--- a/app/scodoc/sco_poursuite_dut.py
+++ b/app/scodoc/sco_poursuite_dut.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/scodoc/sco_preferences.py b/app/scodoc/sco_preferences.py
index 84ae9f2de..b1150f5ea 100644
--- a/app/scodoc/sco_preferences.py
+++ b/app/scodoc/sco_preferences.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/scodoc/sco_prepajury.py b/app/scodoc/sco_prepajury.py
index abda900cb..328aeebe7 100644
--- a/app/scodoc/sco_prepajury.py
+++ b/app/scodoc/sco_prepajury.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/scodoc/sco_pv_dict.py b/app/scodoc/sco_pv_dict.py
index 07df64a55..aa87afedf 100644
--- a/app/scodoc/sco_pv_dict.py
+++ b/app/scodoc/sco_pv_dict.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -26,7 +26,7 @@
 ##############################################################################
 
 """Ancienne fonction de synthèse des information jury
-   (pour formations classiques)
+(pour formations classiques)
 """
 from operator import itemgetter
 
diff --git a/app/scodoc/sco_pv_forms.py b/app/scodoc/sco_pv_forms.py
index d5930bbde..d867e3760 100644
--- a/app/scodoc/sco_pv_forms.py
+++ b/app/scodoc/sco_pv_forms.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/scodoc/sco_pv_lettres_inviduelles.py b/app/scodoc/sco_pv_lettres_inviduelles.py
index 888b90459..2396980e8 100644
--- a/app/scodoc/sco_pv_lettres_inviduelles.py
+++ b/app/scodoc/sco_pv_lettres_inviduelles.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,8 +25,7 @@
 #
 ##############################################################################
 
-"""Edition des lettres individuelles de jury
-"""
+"""Edition des lettres individuelles de jury"""
 # code initialement dans sco_pvpdf.py
 
 import io
diff --git a/app/scodoc/sco_pv_pdf.py b/app/scodoc/sco_pv_pdf.py
index 8a4811a77..3f45a6d59 100644
--- a/app/scodoc/sco_pv_pdf.py
+++ b/app/scodoc/sco_pv_pdf.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,8 +25,7 @@
 #
 ##############################################################################
 
-"""Génération du PV de jury en PDF (celui en format paysage avec l'ensemble des décisions)
-"""
+"""Génération du PV de jury en PDF (celui en format paysage avec l'ensemble des décisions)"""
 import io
 
 import reportlab
diff --git a/app/scodoc/sco_pv_templates.py b/app/scodoc/sco_pv_templates.py
index cc22ac402..3bd52d0ce 100644
--- a/app/scodoc/sco_pv_templates.py
+++ b/app/scodoc/sco_pv_templates.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,8 +25,7 @@
 #
 ##############################################################################
 
-"""Edition des PV de jury
-"""
+"""Edition des PV de jury"""
 import io
 import re
 
diff --git a/app/scodoc/sco_recapcomplet.py b/app/scodoc/sco_recapcomplet.py
index 8e9f93403..66773a5a7 100644
--- a/app/scodoc/sco_recapcomplet.py
+++ b/app/scodoc/sco_recapcomplet.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,8 +25,7 @@
 #
 ##############################################################################
 
-"""Tableau récapitulatif des notes d'un semestre
-"""
+"""Tableau récapitulatif des notes d'un semestre"""
 import collections
 import datetime
 import time
diff --git a/app/scodoc/sco_report.py b/app/scodoc/sco_report.py
index f35cfa62b..ab38f6d3e 100644
--- a/app/scodoc/sco_report.py
+++ b/app/scodoc/sco_report.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -26,8 +26,8 @@
 ##############################################################################
 
 """Rapports suivi:
-  - statistiques decisions
-  - suivi cohortes
+- statistiques decisions
+- suivi cohortes
 """
 import collections
 import os
diff --git a/app/scodoc/sco_report_but.py b/app/scodoc/sco_report_but.py
index b57dc2c41..8e2aa2b07 100644
--- a/app/scodoc/sco_report_but.py
+++ b/app/scodoc/sco_report_but.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -26,7 +26,7 @@
 ##############################################################################
 
 """Rapport sur réussite en BUT pour enquête 2022
-  - statistiques decisions
+- statistiques decisions
 """
 from collections import defaultdict
 
diff --git a/app/scodoc/sco_saisie_excel.py b/app/scodoc/sco_saisie_excel.py
index cb972d55e..bc5ce0690 100644
--- a/app/scodoc/sco_saisie_excel.py
+++ b/app/scodoc/sco_saisie_excel.py
@@ -2,7 +2,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/scodoc/sco_saisie_notes.py b/app/scodoc/sco_saisie_notes.py
index a119c8e50..79d55c0b6 100644
--- a/app/scodoc/sco_saisie_notes.py
+++ b/app/scodoc/sco_saisie_notes.py
@@ -2,7 +2,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/scodoc/sco_semset.py b/app/scodoc/sco_semset.py
index 18d83d07a..d9d70e515 100644
--- a/app/scodoc/sco_semset.py
+++ b/app/scodoc/sco_semset.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/scodoc/sco_synchro_etuds.py b/app/scodoc/sco_synchro_etuds.py
index 4bb40ef8e..fef8b33ba 100644
--- a/app/scodoc/sco_synchro_etuds.py
+++ b/app/scodoc/sco_synchro_etuds.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,8 +25,7 @@
 #
 ##############################################################################
 
-"""Synchronisation des listes d'étudiants avec liste portail (Apogée)
-"""
+"""Synchronisation des listes d'étudiants avec liste portail (Apogée)"""
 
 import time
 from operator import itemgetter
diff --git a/app/scodoc/sco_tag_module.py b/app/scodoc/sco_tag_module.py
index 0d5bdff62..0413bb1f1 100644
--- a/app/scodoc/sco_tag_module.py
+++ b/app/scodoc/sco_tag_module.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -27,12 +27,12 @@
 
 """Gestion des tags sur les modules
 
-   Implementation expérimentale (Jul. 2016) pour grouper les modules sur
-   les avis de poursuites d'études.
+Implementation expérimentale (Jul. 2016) pour grouper les modules sur
+les avis de poursuites d'études.
 
-   TODO: réécrire avec SQLAlchemy.
+TODO: réécrire avec SQLAlchemy.
 
-   Pour l'UI, voir https://goodies.pixabay.com/jquery/tag-editor/demo.html
+Pour l'UI, voir https://goodies.pixabay.com/jquery/tag-editor/demo.html
 """
 import re
 
diff --git a/app/scodoc/sco_trombino.py b/app/scodoc/sco_trombino.py
index 245ba85b4..afb978d2f 100644
--- a/app/scodoc/sco_trombino.py
+++ b/app/scodoc/sco_trombino.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,8 +25,7 @@
 #
 ##############################################################################
 
-"""Photos: trombinoscopes
-"""
+"""Photos: trombinoscopes"""
 
 import io
 from zipfile import ZipFile, BadZipfile
diff --git a/app/scodoc/sco_trombino_doc.py b/app/scodoc/sco_trombino_doc.py
index b6517ca99..eb89c86bb 100644
--- a/app/scodoc/sco_trombino_doc.py
+++ b/app/scodoc/sco_trombino_doc.py
@@ -1,11 +1,10 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
-"""Génération d'un trombinoscope en doc
-"""
+"""Génération d'un trombinoscope en doc"""
 
 import docx
 from docx.shared import Mm
diff --git a/app/scodoc/sco_trombino_tours.py b/app/scodoc/sco_trombino_tours.py
index dc565cf09..928881daf 100644
--- a/app/scodoc/sco_trombino_tours.py
+++ b/app/scodoc/sco_trombino_tours.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -26,8 +26,8 @@
 ##############################################################################
 
 """Photos: trombinoscopes - Version IUT Tours
-   Code contribué par Jérôme Billoue, IUT de Tours, 2014
-   Modification Jérome Billoue,Vincent Grimaud, IUT de Tours, 2017
+Code contribué par Jérôme Billoue, IUT de Tours, 2014
+Modification Jérome Billoue,Vincent Grimaud, IUT de Tours, 2017
 """
 
 import io
diff --git a/app/scodoc/sco_ue_external.py b/app/scodoc/sco_ue_external.py
index 4e74e25dc..676912c28 100644
--- a/app/scodoc/sco_ue_external.py
+++ b/app/scodoc/sco_ue_external.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/scodoc/sco_undo_notes.py b/app/scodoc/sco_undo_notes.py
index 9fbf4a228..c40352c26 100644
--- a/app/scodoc/sco_undo_notes.py
+++ b/app/scodoc/sco_undo_notes.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/scodoc/sco_up_to_date.py b/app/scodoc/sco_up_to_date.py
index 4e93a293b..08e6269a2 100644
--- a/app/scodoc/sco_up_to_date.py
+++ b/app/scodoc/sco_up_to_date.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -26,8 +26,8 @@
 ##############################################################################
 
 
-""" Verification version logiciel vs version "stable" sur serveur
-    N'effectue pas la mise à jour automatiquement, mais permet un affichage d'avertissement.
+"""Verification version logiciel vs version "stable" sur serveur
+N'effectue pas la mise à jour automatiquement, mais permet un affichage d'avertissement.
 """
 import json
 import requests
diff --git a/app/scodoc/sco_users.py b/app/scodoc/sco_users.py
index 98076a588..3d8462c87 100644
--- a/app/scodoc/sco_users.py
+++ b/app/scodoc/sco_users.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,8 +25,7 @@
 #
 ##############################################################################
 
-"""Fonctions sur les utilisateurs
-"""
+"""Fonctions sur les utilisateurs"""
 
 # Anciennement ZScoUsers.py, fonctions de gestion des données réécrites avec flask/SQLAlchemy
 import datetime
diff --git a/app/scodoc/sco_utils.py b/app/scodoc/sco_utils.py
index 71bc7e4ce..e1ee3286d 100644
--- a/app/scodoc/sco_utils.py
+++ b/app/scodoc/sco_utils.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/scodoc/sco_vdi.py b/app/scodoc/sco_vdi.py
index 0ceca257a..e5b074903 100644
--- a/app/scodoc/sco_vdi.py
+++ b/app/scodoc/sco_vdi.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,8 +25,7 @@
 #
 ##############################################################################
 
-"""Apogée: gestion du VDI avec le code étape (noms de fichiers maquettes et code semestres)
-"""
+"""Apogée: gestion du VDI avec le code étape (noms de fichiers maquettes et code semestres)"""
 from app.scodoc.sco_exceptions import ScoValueError
 
 
diff --git a/app/scodoc/sco_xml.py b/app/scodoc/sco_xml.py
index 4f705302c..ef2f8d613 100644
--- a/app/scodoc/sco_xml.py
+++ b/app/scodoc/sco_xml.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -26,8 +26,7 @@
 ##############################################################################
 
 
-""" Exports XML
-"""
+"""Exports XML"""
 
 from xml.etree import ElementTree
 import xml.sax.saxutils
diff --git a/app/tables/__init__.py b/app/tables/__init__.py
index ad6ee4e5c..4646ebd02 100644
--- a/app/tables/__init__.py
+++ b/app/tables/__init__.py
@@ -1,8 +1,7 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
-"""Génération de tableaux
-"""
+"""Génération de tableaux"""
diff --git a/app/tables/bilan_ues.py b/app/tables/bilan_ues.py
index ee10aa7a2..1131fc930 100644
--- a/app/tables/bilan_ues.py
+++ b/app/tables/bilan_ues.py
@@ -1,6 +1,6 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
diff --git a/app/tables/jury_recap.py b/app/tables/jury_recap.py
index dbd4a8a3e..62486d5d9 100644
--- a/app/tables/jury_recap.py
+++ b/app/tables/jury_recap.py
@@ -1,11 +1,10 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
-"""Jury BUT et classiques: table recap annuelle et liens saisie
-"""
+"""Jury BUT et classiques: table recap annuelle et liens saisie"""
 
 import collections
 import time
diff --git a/app/tables/list_etuds.py b/app/tables/list_etuds.py
index 714cf29fb..99aaf3cbc 100644
--- a/app/tables/list_etuds.py
+++ b/app/tables/list_etuds.py
@@ -1,11 +1,10 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
-"""Liste simple d'étudiants
-"""
+"""Liste simple d'étudiants"""
 
 from app.models import FormSemestre, FormSemestreInscription, Identite
 from app.scodoc.sco_exceptions import ScoValueError
diff --git a/app/tables/recap.py b/app/tables/recap.py
index 5845cc9b1..adb2662ec 100644
--- a/app/tables/recap.py
+++ b/app/tables/recap.py
@@ -1,11 +1,10 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
-"""Table récapitulatif des résultats d'un semestre
-"""
+"""Table récapitulatif des résultats d'un semestre"""
 from functools import partial
 
 from flask import g, url_for
diff --git a/app/tables/table_builder.py b/app/tables/table_builder.py
index 2ae8f89f1..c2c7c8feb 100644
--- a/app/tables/table_builder.py
+++ b/app/tables/table_builder.py
@@ -1,11 +1,10 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
-"""Classes pour aider à construire des tables de résultats
-"""
+"""Classes pour aider à construire des tables de résultats"""
 from collections import defaultdict
 
 from openpyxl import Workbook
diff --git a/app/tables/visu_assiduites.py b/app/tables/visu_assiduites.py
index f160d0356..b71297546 100644
--- a/app/tables/visu_assiduites.py
+++ b/app/tables/visu_assiduites.py
@@ -1,6 +1,6 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
diff --git a/app/views/absences.py b/app/views/absences.py
index e539a0731..3fc9879fd 100644
--- a/app/views/absences.py
+++ b/app/views/absences.py
@@ -3,7 +3,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/views/assiduites.py b/app/views/assiduites.py
index 30867e030..27350d9ed 100644
--- a/app/views/assiduites.py
+++ b/app/views/assiduites.py
@@ -3,7 +3,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/views/but_formation.py b/app/views/but_formation.py
index 071420885..e5d124cd7 100644
--- a/app/views/but_formation.py
+++ b/app/views/but_formation.py
@@ -2,7 +2,7 @@
 #
 # ScoDoc
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/views/jury_validations.py b/app/views/jury_validations.py
index 1a636e1a0..17cf46af2 100644
--- a/app/views/jury_validations.py
+++ b/app/views/jury_validations.py
@@ -2,7 +2,7 @@
 #
 # ScoDoc
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/views/notes.py b/app/views/notes.py
index ddae58a1c..9a223f505 100644
--- a/app/views/notes.py
+++ b/app/views/notes.py
@@ -5,7 +5,7 @@
 #
 # ScoDoc
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/views/notes_formsemestre.py b/app/views/notes_formsemestre.py
index 85e5e9ce9..253832a98 100644
--- a/app/views/notes_formsemestre.py
+++ b/app/views/notes_formsemestre.py
@@ -4,7 +4,7 @@
 #
 # ScoDoc
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/views/pn_modules.py b/app/views/pn_modules.py
index 777808bea..a2b917295 100644
--- a/app/views/pn_modules.py
+++ b/app/views/pn_modules.py
@@ -5,7 +5,7 @@
 #
 # ScoDoc
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/views/scodoc.py b/app/views/scodoc.py
index 8918351d6..51fc8cfa9 100644
--- a/app/views/scodoc.py
+++ b/app/views/scodoc.py
@@ -5,7 +5,7 @@
 #
 # ScoDoc
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/views/scolar.py b/app/views/scolar.py
index 5d92e726a..96a630524 100644
--- a/app/views/scolar.py
+++ b/app/views/scolar.py
@@ -3,7 +3,7 @@
 #
 # ScoDoc
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/app/views/users.py b/app/views/users.py
index f9ec3dfc6..e6893889f 100644
--- a/app/views/users.py
+++ b/app/views/users.py
@@ -5,7 +5,7 @@
 #
 # ScoDoc
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -137,6 +137,7 @@ class ChangePasswordForm(FlaskForm):
 
 class Mode(IntEnum):
     "Mode d'envoi de mail lors de création d'utilisateur"
+
     WELCOME_AND_CHANGE_PASSWORD = auto()  # mail indiquant de changer mdp
     WELCOME_ONLY = auto()  # mail d'accueil simple
     SILENT = auto()  # pas de mail
diff --git a/misc/csv2rules.py b/misc/csv2rules.py
index d60fd998d..a02c8dba8 100755
--- a/misc/csv2rules.py
+++ b/misc/csv2rules.py
@@ -6,7 +6,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/misc/geolocalize_lycees.py b/misc/geolocalize_lycees.py
index 5e4f9d6b3..da303e8b5 100644
--- a/misc/geolocalize_lycees.py
+++ b/misc/geolocalize_lycees.py
@@ -5,7 +5,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tests/unit/test_apogee_csv.py b/tests/unit/test_apogee_csv.py
index 0bbed0b76..2d9732aa9 100644
--- a/tests/unit/test_apogee_csv.py
+++ b/tests/unit/test_apogee_csv.py
@@ -1,6 +1,6 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
diff --git a/tests/unit/test_apogee_export.py b/tests/unit/test_apogee_export.py
index 90e66ce1c..f06e62020 100644
--- a/tests/unit/test_apogee_export.py
+++ b/tests/unit/test_apogee_export.py
@@ -1,10 +1,10 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
-""" Test export Apogéee
+"""Test export Apogéee
 
 Ces tests sont généralement lents (construction de la base),
 et donc marqués par `@pytest.mark.slow`.
diff --git a/tests/unit/test_but_jury.py b/tests/unit/test_but_jury.py
index 3a4284b7a..b214e42db 100644
--- a/tests/unit/test_but_jury.py
+++ b/tests/unit/test_but_jury.py
@@ -1,10 +1,10 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
-""" Test jury BUT avec parcours
+"""Test jury BUT avec parcours
 
 Ces tests sont généralement lents (construction de la base),
 et donc marqués par `@pytest.mark.slow`.
diff --git a/tests/unit/yaml_setup.py b/tests/unit/yaml_setup.py
index 8bebe86aa..9987d0ce0 100644
--- a/tests/unit/yaml_setup.py
+++ b/tests/unit/yaml_setup.py
@@ -1,6 +1,6 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
diff --git a/tests/unit/yaml_setup_but.py b/tests/unit/yaml_setup_but.py
index c4ab421d4..dce620173 100644
--- a/tests/unit/yaml_setup_but.py
+++ b/tests/unit/yaml_setup_but.py
@@ -1,11 +1,11 @@
 ##############################################################################
 # ScoDoc
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 # See LICENSE
 ##############################################################################
 
 """Mise en place pour tests unitaires à partir de descriptions YAML:
-     fonctions spécifiques au BUT
+fonctions spécifiques au BUT
 """
 from pathlib import Path
 import re
diff --git a/tools/anonymize_db.py b/tools/anonymize_db.py
index fee271807..e8032f0a6 100755
--- a/tools/anonymize_db.py
+++ b/tools/anonymize_db.py
@@ -6,7 +6,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/tools/edt/edt_ens.py b/tools/edt/edt_ens.py
index 63d0acf3a..59ac0915a 100644
--- a/tools/edt/edt_ens.py
+++ b/tools/edt/edt_ens.py
@@ -2,7 +2,7 @@
 #
 # Gestion scolarite IUT
 #
-# Copyright (c) 1999 - 2024 Emmanuel Viennet.  All rights reserved.
+# Copyright (c) 1999 - 2025 Emmanuel Viennet.  All rights reserved.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
-- 
GitLab