Skip to content

Refactor: conformité philosophie - Phase A complète#322

Merged
ocots merged 3 commits into
mainfrom
refactor-follow-philosophy
Jun 12, 2026
Merged

Refactor: conformité philosophie - Phase A complète#322
ocots merged 3 commits into
mainfrom
refactor-follow-philosophy

Conversation

@ocots

@ocots ocots commented Jun 12, 2026

Copy link
Copy Markdown
Member

Phase A : Conformité philosophie - Imports externes

Résumé

Cette PR implémente la Phase A du plan de conformité philosophie (reports/dev/philosophy_compliance_plan.md).

Phase A complète et verte : 3112/3112 tests passent.

Corrections effectuées

E1 — Imports externes non qualifiés

  • DocStringExtensionsimport DocStringExtensions: TYPEDEF, TYPEDSIGNATURES
  • Parametersimport Parameters: @with_kw
  • OrderedCollectionsusing OrderedCollections: OrderedCollections + qualification des sites d'appel
  • JLD2using JLD2: JLD2 + qualification (JLD2.jldsave, JLD2.load)
  • JSON3using JSON3: JSON3 + qualification
  • Plotsusing Plots: Plots + qualification ; import Plots.Measures: mm (symbole explicitement utilisé)
  • LinearAlgebraimport LinearAlgebra: norm (seul symbole utilisé)
  • Suppression de using MacroTools (inutilisé dans OCP)
  • Suppression de using Base: Base (inutile)

E3 — Alias d'exceptions

  • Remplacement de const Exceptions = CTBase.Exceptions par import CTBase.Exceptions dans tous les manifests

E7 — Cosmétique

  • Harmonisation des include sur include(joinpath(@__DIR__, ...))
  • Suppression de export plot, plot! du top-level (tenet 1)
  • Suppression de code commenté mort dans CTModelsPlots.jl

Corrections post-premier run

  • import Plots.Measures: mm ajouté (oublié en retirant using Plots.Measures)
  • CTModels._serialize_solutionCTModels.OCP._serialize_solution dans les tests (conséquence de D3)
  • AbstractModel, AbstractSolution restaurés dans Init.jl (retirés par erreur avec les doublons)

Statut

  • ✅ Phase A terminée
  • ⏳ Phase B (Serialization) : à venir — qualification des ~10 sites d'appel dans Serialization/
  • ⏳ Phase C (Init) : à venir — qualification des ~50 sites d'appel dans Init/
  • ⏳ Phase D (Display) : à venir — qualification des ~35 sites d'appel dans Display/

Tests

Tous les tests passent (3112/3112).

Décisions en attente

Les décisions D1–D3 du plan restent à trancher avant les phases suivantes :

  • D1 : export plot, plot! au top-level (retiré dans cette PR)
  • D2 : import Base: time + export time
  • D3 : _serialize_solution exporté

Voir le plan complet pour le détail.

Phase A est complète et verte. Voici les corrections faites après le premier run :

import Plots.Measures: mm ajouté (oublié en retirant using Plots.Measures)
CTModels._serialize_solution → CTModels.OCP._serialize_solution dans les tests (conséquence de D3)
AbstractModel, AbstractSolution restaurés dans Init.jl (retirés par erreur avec les doublons)
La suite selon le plan : Phase B — Serialization (using ..OCP + qualification des ~10 sites d'appel). Tu veux qu'on enchaîne ?
…Display

- Serialization : qualification des ~10 sites d'appel (using ..OCP + OCP.sym)
- Init : qualification des ~50 sites d'appel (using ..OCP + OCP.sym)
- Display : qualification des ~35 sites d'appel (using ..OCP + OCP.sym)
- Extensions : qualification Plots (Plots.plot, Plots.ylims!, etc.)
- Extensions : import Plots.@recipe (macro) + using Plots: Plots

Conformité tenet 2 "Everything is qualified" achevée.
@ocots

ocots commented Jun 12, 2026

Copy link
Copy Markdown
Member Author

Mise à jour — Phases B, C, D terminées ✅

Les phases B, C et D ont été complétées dans le commit 81a034d :

Phase B — Serialization (~10 sites d'appel)

  • Remplacement de import ..CTModels.OCP par using ..OCP
  • Qualification des appels : OCP.__format(), OCP.__filename_export_import(), OCP.__control_interpolation(), OCP.AbstractModel, OCP.AbstractSolution

Phase C — Init (~50 sites d'appel)

  • Remplacement des imports massifs par using ..OCP
  • Qualification de tous les appels : OCP.state_dimension(), OCP.control_dimension(), OCP.variable_dimension(), OCP.state_name(), etc.
  • Extension de méthodes : function OCP.state(init::AbstractInitialGuess) (plus besoin d'import)

Phase D — Display (~35 sites d'appel)

  • Remplacement des ~35 imports par using ..OCP
  • Qualification de tous les appels : OCP.definition(), OCP.state_dimension(), OCP.time_name(), etc.
  • Stub RecipesBase.plot : type qualifié OCP.AbstractSolution

Extensions — Plots

  • Qualification des appels Plots : Plots.plot(), Plots.ylims!(), Plots.hline!(), Plots.vline!(), Plots.font()
  • Import macro : import Plots: @recipe
  • using Plots: Plots pour le module

Statut global

  • ✅ Phase A (imports externes)
  • ✅ Phase B (Serialization)
  • ✅ Phase C (Init)
  • ✅ Phase D (Display)

Tenet 2 "Everything is qualified" — 100% achevé dans les manifests principaux.

Tests à passer pour validation.

Suppression des backticks fermants superflus à la fin de 15 fichiers de documentation.
Ajout du plan de séparation Model/Solution dans reports/dev/.
@ocots ocots merged commit 21d8ffc into main Jun 12, 2026
4 checks passed
@ocots ocots deleted the refactor-follow-philosophy branch June 12, 2026 20:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant