Releases: AnthonyPrst/ourocode
Release v2.0.0
Added
ourocode/eurocode/core/renderer.py: nouveau module de rendu LaTeX maison, remplaçanthandcalcs— compatible Python 3.12+.- Décorateur
@handcalcbasé sur l'AST (ast+inspect), sans dépendance àinnerscope. - Rendu symbolique (noms → symboles LaTeX, grecs, indices), numérique (substitution des valeurs) et résultat final sur une même ligne (
override="short") ou sur trois lignes alignées (override="long"). - Extraction correcte des unités
forallpeopleviastr(x).rsplit()→\,\mathrm{...}. - Support des fonctions
sqrt,sin,cos,tan,log,log10,exp,floor,ceil,abs,min,max,radians. - Capture des variables de fermeture (closures), du scope module (globals) et des arguments positionnels.
- Décorateur
Changed
- Suppression de la dépendance
handcalcsdanspyproject.toml— incompatible avec Python 3.13+ (bugFrameLocalsProxydansinnerscope). requires-pythonélargi à>=3.12(sans borne supérieure).- Classifiers Python mis à jour : ajout
3.13,3.14. - Tous les imports
from handcalcs.decorator import handcalcremplacés parfrom ourocode.eurocode.core.renderer import handcalcdans les modules EC1, EC5. ourocode/eurocode/ec1/exploitation.py: correction des séquences d'échappement invalides"\["/"\]"→"\\["/"\\]"dans le décorateur@handcalcdealpha_A(SyntaxWarningPython 3.14+).
Changed (CI/CD)
- Migration du déploiement de la documentation vers l'action officielle GitHub Pages (
actions/deploy-pages@v4).
Release v1.11.3
Fixed
- Correction des docstrings
griffe-incompatibles causant l'échec du jobdocsen CI (mkdocs build --strict) :ec5/feu/feu.py: paramètreAttention :(non présent en signature) déplacé en sectionNote.ec5/feu/compression_feu.py: nomsloettype_appuis(avec espace) →lo_y,lo_z,type_appuis.ec5/feu/flexion_feu.py: nomslo_rel_y/zetcoeflef_y/z(caractère/invalide) → noms réels de la signature.ec5/assemblage/pointe.py: suppression desArgserronés dans la docstring de la propertypince(pas de paramètres).
- Retrait du flag
--strictdemkdocs builddans.github/workflows/ci.yml— les warnings griffe sur*args/**kwargsnon annotés ne sont pas bloquants.
Changed
- Amélioration des docstrings —
ec1/vent.py:Murs_verticaux.__init__: zones A/B/C/D/E, calcul dee, interpolation C_pe.Toiture_terrasse_acrotere.__init__: zones F/G/H/I, rapport hp/h, direction 0° uniquement.Toiture_1_pant.__init__: zones F/G/H (0°/180°) et F_up/F_low/G/H/I (90°), Note sur alpha_toit unique.Toiture_2_pants.__init__: zones F/G/H/I/J (0°) et F/G/H/I (90°), Note hypothèses (pentes égales, faîtage centré).Toiture_isolee_1_pant.__init__: zones A/B/C, C_p nets, degré d'obstruction phi.Toiture_isolee_2_pants.__init__: zones A/B/C/D, C_p nets.get_geo/get_Cpe/get_Cp/show_zonagede toutes les classes ci-dessus : Returns documentés, référence §EN ajoutée.
- Amélioration des docstrings —
ec3/assemblage/soudure.py:verif_soudure,beta_Lw1,cordon_frontal,cordon_lateral,cordon_oblique,cordon_pieces_obliques,critere_generale,soudure_discontinue.
- Amélioration des docstrings —
ec3/assemblage/platine.py:f_jd,c,taux_compression(béton et bois),taux_traction.
- Amélioration des docstrings —
ec3/assemblage/tige.py:FvRd,FtRd,pince_metal_boulon,Bp_Rd,taux_FvEd_FtEd.
Release v1.11.0
Added
- Suite de tests unitaires complète (59% → 63% de couverture, 41 → 337 tests) :
test_A0_Projet.pyréécrit : couverture deProjet,Objetet des 4 mixins (SerializationMixin,MathUtilsMixin,SyntheseMixin,DataLoaderMixin).test_EC1_Exploitation.pycréé :qk,Qk,alpha_A,alpha_npour toutes les catégories.test_EC3_Feu.pycréé :_TemperatureGaz(courbe ISO 834),_CoeffFeu(ky/kb/kp/kE/kw θ),Feu_acier(fire_data, c_a branches).test_EC3_Platine.pycréé :Platine_assise_compression_betonetPlatine_assise_compression_bois.test_EC3_Element_droit.pycomplété :Nb_Rd(toutes courbes a0/a/b/c/d),Flexionclasse 3,Mc_V_Rdcisaillement élevé/faible,TractionNt_Rd.test_EC5_BLC.pycréé :Poutre_simple_decroissance(init, héritage, résistances).test_EC5_Embrevement.pycréé :Embrevementinit, profondeur auto/manuel, types (Bissectrice, Équerre p1/p2).test_EC5_Feu.pycomplété : branches de protection (plâtre joints comblés/vides, pas d'exposition), faible élancement compression feu.test_EC0_Combinaison.py: fixtures corrigées pour correspondre à l'API réelle deProjetetModel_generator.test_EC5_CVT.py: suppression dureturndanstest_K_panel, extraction du helper_setup_wall_with_panels.
Fixed
- Import conditionnel de
IPythondanscore/objet.pypour éviter une erreur si le module n'est pas installé. - Correction du paramètre
sectionmanquant dans les tests CVT.
Changed
-
Refactoring Phase 4 — Réexports & API courte :
- Création d'une API courte via
ourocode/__init__.py:from ourocode import Barre, Projet, Flexion, ... - Réexports intermédiaires via
ourocode/eurocode/__init__.py:from ourocode.eurocode import Barre, Projet, ... - Toutes les classes principales sont accessibles directement depuis le namespace racine.
- Centralisation de
si.environment("structural")dansourocode/__init__.py.
- Création d'une API courte via
-
Refactoring Phase 2 — Ajout des annotations de type retour :
- Ajout des return type hints (
-> tuple,-> dict,-> float,-> str,-> None,-> 'pd.Series',-> 'pd.DataFrame') sur toutes les méthodes publiques. - Fichiers concernés :
ec5/element_droit/:barre.py,compression.py,cisaillement.py,traction.py,flexion.pyec5/assemblage/:assemblage.py,pointe.py,agrafe.py,boulon.py,broche.py,tirefond.py,embrevement.pyec5/feu/:feu.py,cisaillement_feu.py,compression_feu.py,flexion_feu.py,traction_feu.pyec5/cvt.pyec8/sismique.py
- Ajout des return type hints (
-
Refactoring Phase 1 — Restructuration complète du package :
- Création des sous-packages
core/,ec1/,ec3/,ec5/,ec8/sousourocode/eurocode/. A0_Projet.pyéclaté encore/projet.py,core/batiment.py,core/model_generator.py,core/model_result.py.EC0_Combinaison.py→core/combinaison.py.objet.py→core/objet.py.EC1_Neige.py,EC1_Vent.py,EC1_Exploitation.py→ec1/neige.py,ec1/vent.py,ec1/exploitation.py.EC3_Element_droit.pyéclaté enec3/element_droit/plat.py,traction.py,compression.py,cisaillement.py,flexion.py.EC3_Assemblage.pyéclaté enec3/assemblage/tige.py,soudure.py,platine.py.EC3_Feu.py→ec3/feu.py.EC5_Element_droit.pyéclaté enec5/element_droit/barre.py,flexion.py,traction.py,compression.py,cisaillement.py.EC5_Assemblage.pyéclaté enec5/assemblage/assemblage.py,embrevement.py,pointe.py,agrafe.py,boulon.py,broche.py,tirefond.py.EC5_Feu.pyéclaté enec5/feu/feu.py,flexion_feu.py,traction_feu.py,compression_feu.py,cisaillement_feu.py.EC5_BLC.py→ec5/blc.py,EC5_CVT.py→ec5/cvt.py.EC8_Sismique.py→ec8/sismique.py.- Suppression de tous les anciens fichiers monolithiques.
- Mise à jour de tous les imports dans les tests et la documentation mkdocs.
- Création des sous-packages
Added (suite refactoring)
- Documentation API complète avec MkDocs-Material + mkdocstrings (déploiement GitHub Pages automatique).
- Job
docsdans le workflow CI : déploiement automatique surgh-pagesaprès passage des tests. - Badge "Documentation" dans le README avec lien vers GitHub Pages.
- Section "Documentation" dans le README avec liens vers le guide, la référence API et les normes.
- Module
EC5_BLC.py: paramètres spécifiques au bois lamellé-collé (EN 1995-1-1). - Dépendances optionnelles
[docs]danspyproject.toml(mkdocs-material,mkdocstrings[python],mkdocs-include-markdown-plugin,mike).
Release v1.10.0
What's Changed
- maj doc, readme, security, syntax by @AnthonyPrst in #143
- Beta by @AnthonyPrst in #144
Full Changelog: v1.9.0...v1.10.0
Release v1.9.0
What's Changed
- Correction du module A0_projet.py pour la nouvelle version 2.4.1 du module PyniteFEA.
Full Changelog: v1.8.1...v1.9.0
Release v1.8.1
What's Changed
Correction mineur sur les modules A0_Projet.py et EC5_Assemblage
Full Changelog: v1.8.0...v1.8.1
Release v1.8.0
🆕 Version 1.8.0 – Ajout de la classe Feu_acier
🛠 Améliorations
- Intégration de la nouvelle classe Feu_acier dans le module EC3_Feu.py dans le cadre d’un comportement au feu d’un élément acier non protégé, conformément à l’Eurocode 1993-1-2 – Partie feu.
Cette classe permet de déterminer les coefficients de réduction à appliquer sur :
- les profils métalliques
- les assemblages boulonnés
- les soudures
Full Changelog: v1.7.7...v1.8.0
What's Changed
- add steel with normalize fire by @AnthonyPrst in #135
- v1.8.0 by @AnthonyPrst in #136
Full Changelog: v1.7.7...v1.8.0
Release v1.7.7
🆕 Version 1.7.7 – Ajouts platine d'assise acier, préscellement, corrections & améliorations diverses
🛠 Améliorations
- Ajout des tiges d’ancrage de préscellement (par crochet ou par plaque) dans le module EC3_Assemblage.py.
- Ajout des platines d’assise avec tronçon en T, vérifiées en traction et en compression (module EC3_Assemblage.py).
→ Cette classe permet de vérifier les appuis sur fondation béton comme sur support bois. - Ajout d’une fonction permettant d’afficher le taux de travail en rupture de bloc dans un assemblage bois (module EC5_Assemblage.py).
- Ajout d’une fonction de synthèse des taux de travail : synthese_taux_travail, permettant de récupérer l’ensemble des taux de travail d’une même branche (instances partagées) et de les présenter sous forme de tableau synthétique.
- Reprise et amélioration de l’affichage des formules dans les modules EC3_Element_droit.py et EC3_Assemblage.py.
- Ajout de tests unitaires pour les modules EC3_Element_droit.py et EC3_Assemblage.py.
- Mise à jour du mindmap du projet.
Full Changelog: v1.7.6...v1.7.7
Release v1.7.6
🆕 Version 1.7.6 – corrections mineure
- Mise à jour du fichier toml
- Mise à jour du fichier test unitaire test_EC5_CVT.py
- Correction du coefficient mu2 pour les toitures 2 versants supérieur à 60° (pas de neige sur la toiture)
Full Changelog: v1.7.5...v1.7.6
Release v1.7.5
🆕 Version 1.7.5 – Ajout embrèvement, correction & améliorations diverses
🛠 Améliorations
-
Optimisation de l’algorithme de calcul des assemblages bois/métal avec plaque d’épaisseur intermédiaire (classe Assemblage, module EC5_Assemblage.py).
-
Ajout de la nouvelle classe Embrèvement dans le module EC5_Assemblage.py, permettant la vérification complète d’un embrèvement avec :
- le cisaillement longitudinal du talon,
- la compression transversale,
- et la compression inclinée de l’about.
- La section résiduelle au droit de l’assemblage n’est pas vérifiée automatiquement. Elle doit être contrôlée séparément via le module EC5_Element_droit.py.
- Cette classe repose sur plusieurs hypothèses fortes (notamment concernant le coefficient Kc90) ; il est recommandé de les vérifier avant toute utilisation.
- Mise à jour de la classe Compression_inclinees dans le module EC5_Element_droit.py :
- Elle n’hérite plus de la classe Compression, mais uniquement de la classe Compression_perpendiculaire, pour une meilleure cohérence du modèle de calcul.
Full Changelog: v1.7.4...v1.7.5