From 8444ca06ce3e4a9138792dd72aa0b412be187aae Mon Sep 17 00:00:00 2001 From: MrWaradana Date: Thu, 20 Nov 2025 17:25:12 +0700 Subject: [PATCH] fix NoneType math --- .../__pycache__/service.cpython-311.pyc | Bin 8934 -> 9327 bytes src/plant_transaction_data/service.py | 20 +++++++++++++----- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/plant_transaction_data/__pycache__/service.cpython-311.pyc b/src/plant_transaction_data/__pycache__/service.cpython-311.pyc index d032b246c3fb68a5a4f6f291658dbddf0b32d8c2..ded6dd8d2dc455f9e1aa441a27bc434cd20072bb 100644 GIT binary patch delta 1440 zcmZ8gUuauZ7(XXBxoMi@rpv#k`PbVfZd~2EZtW)PLZ?VYu+(iq-KyASxhGj>nv8RA zx+uerF{Ppp9hc2M_-6>}!yZ&3KKmqs_z=vXT&N=W4}3612Gs}g`%YXV9=N~ne1Cr5 z`Q7i_`}5rIPbeSx{euM7-QUucPvbX~7(IDo-zTea-OCasr|!G%TukbI7S@Aw zN3dM1lB@?HpVp~9^fnb$d!S;pU!e!VPxXCZgs#hrD%O@9dKlPaf)`-4u;Z91<669SbP3bJTOf~7{$Mb~}tG=Wb>$Mfe zxT&6No>R@bTB_Cy=6 z1;Xp6UT?nHTnp@MdBa^oU7nRk?cYJ z{F1>81C-bylNV~%oFib}PDNYXQKs@RaCpr6UP=t{2<&aC%uGH8yQFo(`3}vrww&Kk znzio8M`+yoK~6p?#6Ig0 z_gy;PiVl1so!$$91&+7HaS&yAV0BMuA&!^N2M``aIDoJpA&HOzuqEhedswZp%y_|M zVxHE7?^=q7MY>WmwICOg4Bx`U{zc%i^egFgwmS?fLjXU`9BI6JYa zwr{%Qo8D4JHnN@gR9l(uDAU^#^&k1E7dqBfW;)8uw#(r^eorQWIMy9%D~CJE;cd6% zpXy4)6T0Ukq4b8{Ngrw~j9=C=P;fL@q<3$7=fgzL-gh*dcB;F36w~i*#k6yrS1>qvXu5kV$xP}j4S9)K4 z_LW|2XWl2Y3Mt zf39_FRHiS;_45~5(c~eF;s0ezhRMY@&2t#TPf%R8n4%CPI&uvY*ip>-uYufhU2jy` mEPoYZ`2QLs4(nI-yKy%Stsm_YFdIym|3kR-9x|e}45b0= z=9&!^{xyC&hPl}~B>>fNt1d`|tX&C#eb}-asaFY75%R;}lfsr0BtX(3a2!#{xJ{1e zcgaWnGbg!Bo>8sD3dV2l9+B!n9cuuXj+GK+cQC4!@|tP~pCn0o2RGp17O2Krz!A`& zJD!r5G01-+B(D2hz4Jl*0FQ72Oh+!CyGfZB_A<|`ug5VM!yun2E-e)cEP{q}zmbZ? z&PX zVciuTNRFbuF@Q;^>V~&(Mi3Vfc&6+U z;xb|!Ap6-Bc$rR>YH3YlYyu;bh$+NX#5Cd>Vg@mbxQ^fubBK9F8gT>B?+41h>L?lX z4D0LB_!$Ma6p=+7jK}Z~t3JTNfUv3F6uz{q;EY9xJ~DnpySbAgEVlkP%9XilAH3k! zA5~FTtzMyd3iS+}AM|l)U5H{)YjuuEo;R85hZp^{0~kO@CpC` diff --git a/src/plant_transaction_data/service.py b/src/plant_transaction_data/service.py index f811a09..7657a4c 100644 --- a/src/plant_transaction_data/service.py +++ b/src/plant_transaction_data/service.py @@ -15,6 +15,16 @@ from src.auth.service import CurrentUser logger = logging.getLogger(__name__) +def _safe_float(x: object) -> float: + """Safely convert `x` to float, returning 0.0 for None or invalid values.""" + try: + if x is None: + return 0.0 + return float(x) + except Exception: + return 0.0 + + async def get( *, db_session: DbSession, transaction_data_id: str ) -> Optional[PlantTransactionData]: @@ -67,12 +77,12 @@ async def get_charts( for idx, item in enumerate(chart_data): total_cost = ( - float(item.chart_capex_annualized) - + float(item.chart_oem_annualized) - + float(item.chart_fuel_cost_annualized) - + float(item.cost_disposal_cost) + _safe_float(item.chart_capex_annualized) + + _safe_float(item.chart_oem_annualized) + + _safe_float(item.chart_fuel_cost_annualized) + + _safe_float(item.cost_disposal_cost) ) - revenue = float(item.chart_revenue_annualized) + revenue = _safe_float(item.chart_revenue_annualized) if previous_total_cost is not None and previous_revenue is not None: prev_diff = previous_total_cost - previous_revenue