From 9321d73cdee6658c16c9d3ea3a7441cab4986f9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A1n=20Todorovich?= Date: Mon, 3 Nov 2025 09:38:36 -0300 Subject: [PATCH 1/4] [FIX] fastapi: support both starlette < and >= `0.48` Starting from `starlette >= 0.48`, the `status.HTTP_422_UNPROCESSABLE_ENTITY` emits a deprecation warning, as it has been replaced by `status.HTTP_422_UNPROCESSABLE_CONTENT`. To be compatible with past and future versions, we simply use the integer value `422`, aligning also with the updated `fastapi` documentation: See: - https://github.com/fastapi/fastapi/pull/14077 --- fastapi/error_handlers.py | 5 ++++- fastapi/tests/test_fastapi.py | 4 +--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/fastapi/error_handlers.py b/fastapi/error_handlers.py index 0c67a52e9..1f19bd567 100644 --- a/fastapi/error_handlers.py +++ b/fastapi/error_handlers.py @@ -29,7 +29,10 @@ def convert_exception_to_status_body(exc: Exception) -> tuple[int, dict]: status_code = exc.status_code details = exc.detail elif isinstance(exc, RequestValidationError): - status_code = status.HTTP_422_UNPROCESSABLE_CONTENT + # Use integer status code to supress starlette >= 0.48 deprecation warning + # See: https://github.com/fastapi/fastapi/pull/14077 + # status_code = status.HTTP_422_UNPROCESSABLE_CONTENT + status_code = 422 details = jsonable_encoder(exc.errors()) elif isinstance(exc, WebSocketRequestValidationError): status_code = status.WS_1008_POLICY_VIOLATION diff --git a/fastapi/tests/test_fastapi.py b/fastapi/tests/test_fastapi.py index 9008f09bd..e074325e0 100644 --- a/fastapi/tests/test_fastapi.py +++ b/fastapi/tests/test_fastapi.py @@ -157,9 +157,7 @@ def test_request_validation_error(self) -> None: route = "/fastapi_demo/demo/exception?exception_type=BAD&error_message=" response = self.url_open(route, timeout=200) mocked_commit.assert_not_called() - self.assertEqual( - response.status_code, status.HTTP_422_UNPROCESSABLE_CONTENT - ) + self.assertEqual(response.status_code, 422) def test_no_commit_on_exception(self) -> None: # this test check that the way we mock the cursor is working as expected From d4c55c229ffe9751b637ffe58435fcb6159b1d41 Mon Sep 17 00:00:00 2001 From: Florian Mounier Date: Fri, 5 Dec 2025 08:43:01 +0100 Subject: [PATCH 2/4] [FIX] fastapi: Change circular import fix to avoid crash with fastapi>=0.123.7 Remove TYPE_CHECKING import condition and delay dependencies import to solve the circular import --- fastapi/dependencies.py | 6 ++---- fastapi/models/fastapi_endpoint.py | 13 +++++++++---- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/fastapi/dependencies.py b/fastapi/dependencies.py index 5c24d40e6..4dd93053a 100644 --- a/fastapi/dependencies.py +++ b/fastapi/dependencies.py @@ -1,7 +1,7 @@ # Copyright 2022 ACSONE SA/NV # License LGPL-3.0 or later (http://www.gnu.org/licenses/LGPL). -from typing import TYPE_CHECKING, Annotated +from typing import Annotated from odoo.api import Environment from odoo.exceptions import AccessDenied @@ -13,11 +13,9 @@ from fastapi.security import HTTPBasic, HTTPBasicCredentials from .context import odoo_env_ctx +from .models.fastapi_endpoint import FastapiEndpoint from .schemas import Paging -if TYPE_CHECKING: - from .models.fastapi_endpoint import FastapiEndpoint - def company_id() -> int | None: """This method may be overriden by the FastAPI app to set the allowed company diff --git a/fastapi/models/fastapi_endpoint.py b/fastapi/models/fastapi_endpoint.py index 39b3ee6f1..c55d7ebd6 100644 --- a/fastapi/models/fastapi_endpoint.py +++ b/fastapi/models/fastapi_endpoint.py @@ -15,7 +15,6 @@ from fastapi import APIRouter, Depends, FastAPI -from .. import dependencies from ..middleware import ASGIMiddleware _logger = logging.getLogger(__name__) @@ -311,9 +310,12 @@ def _get_app(self) -> FastAPI: return app def _get_app_dependencies_overrides(self) -> dict[Callable, Callable]: + # Import here to avoid circular import while waiting for lazy imports + from ..dependencies import company_id, fastapi_endpoint_id + return { - dependencies.fastapi_endpoint_id: partial(lambda a: a, self.id), - dependencies.company_id: partial(lambda a: a, self.company_id.id), + fastapi_endpoint_id: partial(lambda a: a, self.id), + company_id: partial(lambda a: a, self.company_id.id), } def _prepare_fastapi_app_params(self) -> dict[str, Any]: @@ -338,7 +340,10 @@ def _get_fastapi_app_middlewares(self) -> list[Middleware]: def _get_fastapi_app_dependencies(self) -> list[Depends]: """Return the dependencies to use for the fastapi app.""" - return [Depends(dependencies.accept_language)] + # Import here to avoid circular import too + from ..dependencies import accept_language + + return [Depends(accept_language)] # test utility @api.model From bab99646b4c2191390bbbb45244d9e06971c0fd1 Mon Sep 17 00:00:00 2001 From: Lois Rilo Date: Wed, 15 Apr 2026 13:58:18 +0200 Subject: [PATCH 3/4] [IMP] fastapi: renew icon style --- fastapi/static/description/icon.png | Bin 36542 -> 1629 bytes fastapi/static/description/icon.svg | 71 ++++++++++++++++++++++++++++ 2 files changed, 71 insertions(+) create mode 100644 fastapi/static/description/icon.svg diff --git a/fastapi/static/description/icon.png b/fastapi/static/description/icon.png index e09b3918c29d2347d658f0386d1e3d6a34bc009f..6154f7ea3f37942d16f7408d6edf92b34e6ced12 100644 GIT binary patch literal 1629 zcmV-j2BP_iP)pF8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H11?ove zK~#90&6{g%6jc<*|7Uh~yKSN6WlBrSL#+r2VgO?W3svc^@PWh_`9L))LVz!;A*eA? zn;H#YG-62RU0qAkJjNGXNxYwq!jRA|_pJ3IH@@t5>V z_uO;-`_Dah?#$dJW`$DuqcP(XiK?iTIRaq1K1qe3RehVbyk)AIn%=kp23cxsx zT8eS3Z(QAHCJRa%Q;uwKvjwz`+uMc7n$pH_D6lpX4Blb7sI)P}2*elyl6{-D{%N|d z{EVT1W(?7`Aj-;Ll>|-IrlK%s%ALsG0P1>ZB{JVi4D9%&vomA5F5sn=fT@R=RHB_#`JiNZ=fX|1_CWZd;gBQ?5E~4S`o!;G<3|c8}~JS7T;X zrRM^UKWUOQ)m9)9BKN@3h%#drdRiyT1iKm&#n2r8n&fD1(Ehx;A}_3UGJ&qfh+Jl- ze?4+EHyF9=m?snDYRphJW8_j@Q)#1dOqqd7JR}q4YRvg`rq;h0cbe-fLE4s=%OD(; z33D~(?BLK?|7zT6t~b&~1GXhzl?g0r%)B*g!e=iGM%8F43=wd9z5W-C1WMqpo-;DB zMUBai;%Oo$)snuLIlc@N%H=lUKKLLMOG-cZDr!vQsDWDm{k!vp`rGJ)9TJ`n1r#;L zqV&!F^vKa%U#T-a6KIue3tgh9F(RA3(Vr%FqBddfM2+hUqcaps?(;gVXk%xD6)9bj z98I+qh}xR2(}W-G(SuKwGPL;O8?O3D_X?x2jj{~1;kH91T|J5#v(KLK+N6ooPL-xh z4sEvqglEF7-CvhFyr?nU-kuMQo<3(vUE?2~kJ3m`Q)%Odu^Mgz2%p-A7QE;yh3vz! zMNhXatP2e-CC5?rO=gYB<{!Vw*`O-lzx3M{&&J}EuY&-dkF%=8>5jKCc$dnY#M~B& zr{49OM}2>Ig6~kAaE}U8fWVD`N@IF$w$`Xh7Mw9Xt&=HrH&`Y+o4!e`)MoV#t@v6+lYW;Az?qNQcoew8)KEc@Cqh8 zj3plrC>2xyv&M9ESP)oP+F;sfw{{!*X^v52atpqg4Z;NPBl#=)T=jG66&1#)F;v?A z<)VPqhWp;nDi>4)v#rG5_b&|I5Q!!K|364CnXcube0Be60Ar-bFp_pWwM6Get`Np% zOs@LeJa{wZwC&^`3c?h?pfLpDsf~ze9hM$EsY{O=+K(9ghy21z;MYU3?maryxM60- zbS;knSRfNhpx;923e~SvJY&R|eAU3M0A$|9=7lBh$FdL4>(=CknHfX8NHXw+@Z!{A zy<+4rVhjT_B*G5ck?ix@#Yker7y_Sm2^nN&aBR9Yxk literal 36542 zcmV(#K;*xPP)%qhP)=ggV;=E8`dKYsIH zAF_JehI{O@e#8Cd=2jiC``WdKZJV3hJ%nw=({o{NF8^rjwrwGP8b2)ChA_7(eqMiE zQG{K_j-hGMeb}~bYxXIOwJkO(+tI`EKR8~bX>Jw$UNua^uua|haUHB)k}PLg>Ltu5)m7(y$V5!g1_X6px@DXpJdUw!qBH~cWt_TB5Z zY<=JEYc_r8Nx$_Q-)(lpUv$hhgg?3P!sBkb=iVRMxNhAMYH!Ts=7Vu2tD=#s@VR|O z2+y44)=?G)00N=LsK$8EFrcN2ZYUKs#yJ<+m{NWoWeA{Ea@|e{jZ)eq!)80~S!ND+_Xjk^LEHjZ3 zA9|ogeUpsSPyCeEt+wG3cB}@Y!{%&ku@m9GzhJO-GQgA|lFb!60)^j_bb18X0ce$~ zT>~gD{31|Czd4OJz(;_y&t7%<3AcF7rVVQ!Ee~c$3V&>=nG9`(00Q0A{W#@rk!e0} zD1hxhqtz1=at~IjxCSDjJv8DuH5696H^4hrczu=x>%HKpV8F)nBjGnd3w49MIB;WJ zQ0BqxYTWg-tj3VWCUQH*MkGXqV}-SIR2@+7l#x^WPaxpvF-ikhbDnB$%p@zX z)>(AZUs$s$oM2Q}%s}Of51N$$2Sejyo`Zl_!)lY@fL0Pf)wH^ai6C(3ilD4h zD8cDL6IB2!V48dhidASM3c-dWf9lGbSq~YNe1xQA?B_%l5g;~Ug9QZ|wihuOWtI_<{F;G{8nY~(Bm^Fk z@z>e`11|HBIV;Mf4-yafISoI-uItz-s?=AHI_il3ai4<@x~Alb{{4hEzj@D%n|8l= z?dnzgl}ZkcF1zZgaAUOGUtG7@1~DYLas}ZIFr2cpwH*T=M1c?xa>9wx^nf}ciNiE? zYe}r!*#w*MH3%G5SRx-mOZ(yvMM65J%v0?+b4cWIorP5xLzDtRi2@9eIA8paRSN1r z9|77U^Mq%Wym)NVE@5;vAol64q!2O*9Z8wB(`?>AC&@zk7vU36CA>@up9CfIEW~KW zrlIKjoT2bp?%8lFVFoUac8MWDs+^R+`T&n4fM6ar9bt-&{}u_QA(OePz(n@IC;NZ` z2P_<`d2H^<63!11uardOhxs%Az07s83aHJfetG;Lf;CYi0~hKedZ9F^^IzD!Oj>k- zSMohJt_y3TN4VdnO{nYT{BGE?^(TkiWZz>Rc+yE%DGTM7JD+{_n*VXj+k9*7>bb+L zr}F(Pt_(lE^2%`8HP?h2ZzKa3w;Sn)za=aXrU=hLzu^DMJTVK6u_(!v+Y3!Pm?l+8 zQ)G?C6;@=J*$OB?Qq7daObV~O$J_@^DieU!ghUYLK4e^L4cNR;GExrl)7WrSag6dx zN1{z2SkcRJ^(ioc^bT4lk1*#SF^HyU4HJnI%|ye`=r3#-dq?@uj{=CSlt?GbMg(i- zQ6_k0XjQ}lTFhqfV9m`RKM z89h!>Q}&RsK{t6aw3O*4>qMKCSxd?TWg5p?vpRy-#!X@WJ@yC(@3UvN7;fFV?du2L z@%AT4c&MCv{NKL)1AA@Ua8E(HOMm&x@QurU8ojFMkrj$6(jf1Ne*{$0C)sbbiWd-F zv=!Esp&W`y63)dl*st5|R%Hg-S%PczWU2?7dW?%F=FTrGz)PuASBPH0Cp8Czy`$d_CO z)KoYxyR8MIgf-%+m)$eLC7>F$jPq*jtdfw7ekWRVVOEzYrz;2UnwPq$$yYWXS1v-* z21$_|lsup_Ay2jZVZahy$rb`6vf#QZI*F>Z3ef``M%h8X5P)0bpr?f_b>x`{Y~L_> zwGHS30i9^wZ?}!%sQvbf|3UH^Zfg4MIua+w+f zu=uu?4w9g8`{hgS8~131GNo6|zM z$7hf;ob$|ejH0M~hcZe#3Dr|c24E(}*fxxP^iB2)N5%i4RN~)jSFb)6b`O!3C%xmH z-`luu{h{#tmwx!e@V(2g@VC8-VTA=2Eg`Yq6fcYoiFlE>I}Kqi?%`<|BBIl{+Q`xa z!z7-(VY!uRNk~al_Q-O5NllIZ@xsuU34bgrYF;vyJyUH-TP7J0Pb$xkTYKRU$R&p4 z&IwL~Km{M+SzCUgWLQgRc?c|5*_=qhu<(HtpVkf49eG0Wg^O2!Q}41w8Rs z?_9f(>Gl>ZpoqP#L{J*TdY_iRItw4SD94D#&Qso+lt=TsrRSN+z|N8f;d!tnDJzAq zUfq?qgO~8c=cYt27U*ebx&S~CZ&kBMw7cHF$kWQis3nYX$Xri)UUX%G1wxVKFjg0F)axU_OkC@N6=UQUVoPX=a`R}fx{ zbaJb0hiSP$NHKF*(4JVKtOB>DjG~sDmSe#5oGtom>INAM8=R$963(hqDBy;5uIV`}^vjqei=8>c~SiVRhmkkvbV0e&pEnBQS z)qw`CIY6xU~E{{fhczw!F(e{b$_Z+rVk zc3ZpdxBu~L-v~Esz0r!Cs9*!Cw7FJq93*qAW#FQ1T6v7ZHU{t*Ezg5@Q=_)o8Ojty ztU;#O0Am@@?Cxp3kG}}vD74GeT0;^cvZL25Faq*4*JS%MXn|8;Ey{*u&ZuJf3MJG~ zwK`GXqP&|I!*M!uM$qEXN@L)^6*jFZ7>sKr(~$$%H|0vKXoMmFWmaJ(f-MbY)j3hX z)5^D2RO{NgO94Drmz^;sMIhkr0*3W+c%nQ(!c`w>$Q!I>LmwA>5jkS`gDlN|M2#3c zv55iy0{@8TnL8@|`W~e`Z*$QSiNL>W*RBqCI`T-UQ+w0g6W;druYc#~S04NApIs(? zKt`<0g`C>{PX;b*#wPjgW%$WZPH`)jcGyR@kPHpYmmOH zV+cI97D&s4bcc-W#4{CWDo2XIi__GG)#1{_L~bb3#Jz-LBty$ov31wV0+TR2lfjFH>ulJaD&VMnu;k z16rOT33yZqejT_3T>c^sfZIAIzf`Fk^Ot5;m|g|s@-(%>+9>6ljEP^Ucc&Z!`{3@q z(-Z)gN%)%MnV>_-b+H#wmiC-8+EEP~;BWL(G#6V6a%PXwxLIEY zwC;A?F+ZPs#GBr-?Q`GzK9~4+wy`qBD&f3PCFO^qrdjg9jPC1uHh_jzYK1&2!(U-J zip2Cyl*50aPKy-@UPwSl*|}SC85~16PoKB*e~-`JJVqx9S$xSdMf^~iqH%tZXn!8jiXWcxmz84P?-CjSG{K2_pi9z zcr623FQjF2rDG z9J5fgy;?Rdp|j-`vjOGdA)+!0GxM+u=H|ISLlmn%k)G(s7SJ{MTFLrLp^??8DyRin z&~lzhA~8B?G*mX8logg__P{IsLBnTHEA#qjjJBr(1ET;l@`=xlrAGOc2$Pvm=xXTT z4XkutP|*p;EEfemxzN%lenyxMfPPTiF`T=@OJ2V1XIE1-yZ$u2A#Tx9Tu;!z4ypKq z@14{AX}L!T_6lX4a_}wY}>j=s!;49(BkoWpe0O(!>n~tYnqXQk1S^$ zzWa*EIW1P6mQ%;rj03kyFt7_YOi~4hkIdFAgctrJ-`S|EScvDG@h<1PDrWpxlEP$4 zDfFZ#{DismmT0T{CpKvYCarCp6dEkN%?#MA7ICO{x`4dx9I}WX@L9%7=+Z8X1Gziu z6c|Q~5)&>D6ALGB;pXPKU3GYhz){!}KkRv?Zm}rR2jG@+yhsxh<9W`OW|`Q&8#aWw zTRi`NZ@Y1e@v1~9RoOs3MPiUex#D~KC+KnsTAl>OPUILyw||k66NmGm<|^&r90)Dl zYvg0YwMLa-zy+HmWou1@l!%i2@C#dCgH7sP+9a&BW$D>)H0e;D3`WIhiGus-l|115 zmH$k$v3=IPO!fkHf}4nSjr+8O4P@Z<)Lc$9i9k(Id}(8xZJv%w#4{n8Sb%PF2Wksd zqZ6{2DW-!a=aC=Wr4f!is`7xL0Z>f2O)FIa+)0Ze9YeDaou^Hb`sspIDx}(TK6jdS zl7m%A__Wk*#ZM>HMAl|C64V=s+SghbpNfU&@XX=d@y~lc%@bEha*Od%q|}Auq*=&d zoN50jNrs7w&2c5MEVf-xC^=$yBD0*V(w?IPP98+dx-KIU`DynBdB9u#+0^(Ci-*~+ zPsIfqAHqYo5L4QVLd%NUVhhmEZIYl^c4llBAcYnD@8Dv?o`?WcZVe>5Y=xD6jmoru zQPlyfz$LKHC!Hy=!G=s`o|1Fhe$@i$K(>k){xtKC%#3>dNe{!brG633>|Nw4sWeo; zWUlHWK2{Hs3J4E)_d63ad}r~8e@~!QDJ*$Hb|{c10*z;`)M26l2;zr9KRlNoJ~#Da zYI`^roRLFR(zUtc&u75WrUrme`1K`cWshx-q-Y7m+Jez;=$Tx|j{PQq8|BsZWzGzM zDt_4t)5;w<7qnzb)+y~MlqedOJZQ}C$|O_3awAC03;u-_$0ns|zGA8LYg;C)fzXcy zKSPqLj4C{8U%kG>&uqC1HA($v2IWmz^}(81YFL7nI373-E|wDF<(*4!I6pTL&yy*< zQG8C>$XsYF#uCPm!3uAPsFc)558G~h=rQt;35tD`c2n>&g`>$*6ygd{m$4O0GUGzU zsUs%=tp+bDIom!P9zT+W$ezpI11)L+d|n+rtOBs`OX^L*AYJ`fYn^3)zp~^CnEGcU zgAZB~6k0rEsYsy-WmY8`Xc#EJwo55EFT^x?hOgu@?Yf)Sq7y&o;E@HG>50yTde+s} zZN#fu0b0~WQTgpE3sW!iYprM^7F}RKYfGk+2Dj3F>6lGJ)0qZ2##6CRFvFAx2np(a z6RNqhfVL8PdX!UeP~?|{J@H?6v&M9kALB99bHBA-vwU?DB~_A35HYD6SrV6xcK_%rE zXMM4C$TAVANuhdcaWjkOa(_CZ8N{>fIF3B5rbOhT`>H>cXPk{`w0o3qa zOa5Ts@$Rb(kW0{N%p>Iud2zwvMIWRX!7_-C-KgH=^fni3Z(95rs;*rGRAmrV^B>TU zDql?xc!_xY+6{zknaW;4m-)(N zBzBk{{(vkH>-x|$NSXcbIz6$VudR(T1h*(kgflQfnj#m%!z`8;h!qYyqefRM@5 z*Lo%Wt8LlPCFCG)6GYpKZk*i&^D7X=PkDVR)SXoNZbd~?ua57*9A zCT1RIQ77*ihpziaRtgAsJ2`C8wlW&iT7CTCj3s3@Nd<^me!>js%R7$ykLP1Te{~EK58RXeGdsj!Jxp zkDm~8SR$DE0X9@!#@O5&-VnAH;g9sRN+tFWG$)wJcBWdAW;*ix1QS+*B4dqv=1w%7 zK~89`;9VqQKqZAZwE@W|R9q@d^Cv@JQ{2(=65%^aFr&So49G4G;5H41>++fQZr(LAv3js)&vB! zfKH@?h$fv8l+1NrZCmf2xNh?p$YGgBfm{M@E! zcE(cy!AfQVJVvkuOY?=BcFI|yO{|kZq8R3W3A*=s3Yv!eAkI1TAv9sb*hrhLL6SvR< zOCFZ6kUIBdC}+9kdnBY$RZeusKu~Vr_L`BKn8+sVzPea65(J+TmzCm_A9yQD0~FoD zOJG=nEE0j^C8${%2C8v4><&4@?sAou;CWQa34K|_wR+_pZ<1pW%09N50wj?{HikAI zcxW+{j^R@iCX~@a-trWz>QF{!Z- z<8uly#LQAmZd!xz!2L-;QoK0_cMoX-O^;Oo!wS|+yVOk_OYj(5ws@qDv%e zy;5Jv*)-XJnk5gyQ#ldfffj&O?8hzC6(z@U{Ihms?(JGCm0Fo!DfrUf2^K?dNrnS| zF<=>xo3}v1f)<&Ecgq8Vtx>%OUS-OOW2&LVui%b&u|E!*JdjDDY&yoHCRAmqIW~pQfW5&S_+JD_XXd4CF;fw+2vzfkj6OLKWZDZP7a^8?NCB7?)9tW$ zAiMsxxqCs#B!hnoQz7C<6?TdQr3&WWe#;w^!a0%+ANP z^FVThmts66QvoOdOjN^?=4Dm#pyb6IHAn@WijR4_sMs4nC!pzX!Z1h z@^jAFL*}QHEf8I4-pRIYF4HgtJX>BR+*&l2o3#hQ<{{l9Imv$zxs+!F2PCmo*fdq86&b6r+g03cPISxG*TzXibkFt_vT_Mxdv@=G%>`|=ptn{n>P)U%ZbAg$0+1~8a1=wtXRkhS z>E=1srh$a0(F}UB#xPsFSJ~U?GwsBd7F-b-^mZn+^?ZpzG86x8&e(dCz5XfOVq!8N z6&4hlD{bI0Yt(k~vT!IE6oSGbv4iXfr-L$P88~dw@Q@WStGjdfn6QL8qx42Hasu8W z5yd!=z3rSSWtO++?unAs$-Rz;?a+OUb;|%2uehQVhJ$uyZbU z-~@D?wjyjb@c4mXO3U8eV>Au(G2xKv9@3thF8t-zX<@g9e&k)>;DnN1ofc^m++@?g zPfJ-Ub7mthu>g0)@V3v=k2JK4(Uq*S_JRh)d7Yx2!kUKteu1&_(mXH5$_Z@wZM3F>_T2001BWNkl5u%K5@{re<@mhCXDfVuMhtfyu)&xt9$V$8yTy=2wumM6a^cc`m;LN2;^Q>t{ zL!(51^TR^tl~SwITTM9_8`?btKEg2`-s^ILR$gR)W-(Il!dO<|Y{xEB;Y6tCMP*8l ztZ(sw`stS=lx@-+Y;9Zx3__wYMwF8(2siKyh=EQRDEdmo=0XxcwL8Mv0;bL5XHOY0 z?7apI*`{DxSW;`jP!f3(j{ez-c$}l0yZ|D3$GDm$hhW5j;<{UqG3P(ia5Q-Zrc$?+ z{v;5^3{PFe{z_fqhX}B8;o?^=V97&l_?f~2KRiQ3MK#-<1E3|!(!L4Q7!i+|8B-Iq z0Dw4=S}Jpg?)u0PD2ROkq)2;a@FQR05Ik3H%>u866M9U)w%F5akDw)Se1m@ZI2D(w zs?=SwV%Zj@;k$s8bxB8`T<{j%F@{;{4-w^f6*>m}(hfmc#=Se@Q6G!N2*K9M&aot` z`0vkA(XVODl&xW9ut4j`*cm=x0^}`t-}+fOQ*keP z)}D-bJV|h>1#|93!$zCqYxUzPr!^v*N2%jcHg1|5Qfq)b5#PvoW-_)95&;5Cwq!yu zMZd#_IjE_DaroA&wol1)8WU&1r1TGy)3|BrOB4YwnvsVXbSV$ekJv?ePISxa7~7a( z6?TUoOVLBxg|+;%C@<=#=Y_4jS*`2jIWwoY{i%Q%^xlL#%{ykfxYz=3YXGZq3_%sX zlfZLvOWF%Zdc~zZWcE5oChJ4-QiXw zohEBA)!623V`IW&0WDFc27A(Nsjc^kMEc7E+SDg0fz}PV$rCkAN`m)53&Byes4k!s z`rW*k?)VTzKKha{XtSjTEtQK!C{}g+E-82u+^Oo?K9smlk8>whDExc-5&&u-x`Dql zD#$F_i=qMJLIL2}vfk0|A!w4`Sr}3X2B%kKUV@PMqLF~kfPK}cv(O-cE@GhWS({RJ z@?gSiyDd~gc_fZ&V+|?+VbfMi)c!+`~&82xr@v3oOGNbTTDkOtidH#*4 z3GHG*)0W(lVWI=YWdpv-8pD?cb}i}vBTkpg60A31$4NOcqF(Wh8Rpf}Sw6LLS_;|) zAH`0Z;UQ81o{{yma?bc6agj$-(6td@e!p41dk6zF&=i75xmN~g(|0Q`o5HyqJn&Im z@XF;i{=EwNFFz+@(gH|rs1?}|evclOJnPk=m`Ro10*&dSTpBz%=V(1uh~zR2KI}sx zGQ@^_y|?iQ@BDQ%QNVn#D>}`NprQ&{umBJ8b}Sd^3IB%w$k8D}BO`xoDJzxjx?A$V z!_Xb^xYWsV^ZW6EC7(299=x zmEW5=EhbkyZ_gBx0ns#YcuNB{@MRRgNxQl^8xn2uIrB*d;N-S%p7abk>%6OG3|!?? zD3}^?Q=eHciLEqW^|s?2o3{wjbJBmM*P5uOPDM)uWL&;im%(!@XZKM0t8|;^fV5S2 zy7SW0f{P5a1gJaMLQ148AcbwTFB#Cq7g5p@v>g0QHUknY6ty-(Rw84d(t#5iz*qIL zBN{|@8&#F#O_Ht2+lXd3Jmm1o3DxuIq?O4l2T{J**D%Fp9iuo4~6awJn6T8mEdt&Gs6o}mGg4iMQKRTxEcJqb|R_)NQ;LYNlEw^+}A zAa8UcEx;2l)yClhwdgvyTF1#|rmxk4=(_-4&c?&Z+B$rkUSu&;T zTo4H+hQWaP$LXlMZpSQ)K@GeJi%9ku24z~oyeR3z5mY~@FOQ{(5(`=mN*j_jcM;PQ zm2L|U&3LMu=sgYaBe5PE_Hr+zyKTc{rpu;Ql7r9y2Ehj4@{f6_*X}kLs5wv(4EC!C z&;)0+^HxQ?@Y~fH`m&wVVjhb}j3E#+)&hc65u-1ptG*Xapv8GfXlQGrTe=9~%nMYu zzzU1lyH^>Yo*UU)-IHlliz`13|5T0uO6F%zO8_^xsYGX>;|NfUiEn8?XCX?iu#p7!;9p`fbgdY}za7jWPjT}nBX zp|kMZVSdw2SR@3p1(VbmTE4UK&Lt``(<&4AyzV8SE7>FVkD>_y8M$`txSR{cv$^ip zdHH~K$%l3iTPvYMgj=2<+kC7p$b4Q>y7);1|+B+O^`Gi`95xEZ`yAe_cXh38c;? z5%2NOex^A^*cG;luJUFNLJW^Tw_E#2qRTrXSfDVH9+8xWxOT>RphjEZX44C^^D2==zC*7gm!1MThjMD4tZ~Hd zJcpWjpH3)S%h4>-JiI#(u>lbkcce7pA@tJ8lsWkt4CCM&j?>#3C}zx=&)tF)UF~Mm zWA3O-cx-EjuF;5UkI8Ax2re)l($fMh!|(>ME6Msj@+Y+>`*93EHmN*A5gLStGB%9R z3r_{#fS*pdmUv1XO3`79?<6hqEb!mh&?;EnJOs~ug_{b zArit~0j;7F8o~rTgm1O;>=;`%7oDWT8T^jNFzTL>;`PsMn}Dce`T<*(^Kpd$d;tNm znOj+jeii&mpe2&F4G2Bp6=KLi851uJmK+y-n32PZf{}yjfJlaIjJ@gfoaiDeOGYO@ zTiCN|8q34Fmhv6y0s&Uir|b?Tp&nL1#;i&)Wr9)%V-Vg8WklfwnMH->u(%X7*BOBy z8nu-#Q&A;j!jtV)0}QQp^gv-g)&>jaBwH*rk@b%t&VT{A8%YTETkZ`08Qd@s!yf_e zI%kL9svurJwh|F_on>aGO3#bJaOmLipFc~wAX%l_60O+_*b2)?$2+^2@HK|uo)U9_ zD|5A=Wd`c$NYYDBc?A$;PRt!{+T5hz@2P4=W}o^;eLznu=aq|n1z_MClqtZjdC~#@ zB%g((y8n(&P&VlI!SU4$~KzS}nL8ejikQNhDTCc#7*`XPQ*EL#R zQ)p1Zi4k;cTb||fnwOx6a08%QfC7HbvmOJ6q8#~}$)Yd3#Fo(uuYAy|4K*EPrEz-U zAohMfU(S_@dlN?xI@_2|%Ic))#cJ<33rCt!= zm&*dTVuhhFJs{E?bH2J{=(=5KFNKqFZ(8}_0j*-~%1l0$z zhsJ_u7fsSe{z348srZWq?T(g|r@3d}B*UqJ1BOr!tC&<-p{wivU|xt<1O@Mg)i6+q z7E74n?i?k);BP})=Q0(Pql8>wERl8(v;?&V6$d*eF@bStOl7UJFe2J#1f^0A5_$Mc zjuhq2i#AKc(#kY&MiNGniuhvGN_A~ctJZ5;OtMo2IC-Eyc|$lASIL<%@gJ+~y zXI+v}k(%iO29kb#Ry{ZTn`*pna!LnaEiBJ15mF(d7 ztpZ^7w7TUK25d#{Y#;3fGv%1bhA9uKJrz7jqytm%%hCxm?1o!6hlYo{LX$1^8mn7V{mk&#l+s(LnOy~HVTNordG<%hTqg{ zvnqM3U17V_#4@p!TgR_xjw@!3&r#RlsuhKbsDMXWlh_uUcCy9BG}S{yp8x0a3Ie*LVdj z9xdq%+fCCSBJ%CxD~p#<-IKGg0{&dG$hNhB;=)0_dPvZ+O|AI1(qQ7m`?9nq{e@jZ z04)3CA`ow}=Heuwp<()BM^7u$io{;md{~l7ENQrpaK@&3C*oxsrBIj;A7HH$8$_gd2SY#QbuA})dmF^ zKIj3CMFaMXS&X6Sy^CzEWjAwLMzs|mBLaI;mQ(x@W$n9ZUu{v=7#6{D&9v zf(&RydRYT*;Thdt9n=2-VP5L_rG^StGOL!ou1L18!IOB|W42GU0(884l6vnyF%h;t3*Hv)AI98Ny z4hd+6n1+&I^$!nT-EfKX76H>^#Jd75Eb-8$b#tlU!oV>YGPJ@#4a@1PQn);=*iH^L zW1y{;%JeJsX7`Yv!EWJq1n0UCQl_cEQmaAQBoMITJ~ixZB%gFP&S7#L*9i|b@+m|j zl7oI#_R?m=dk;|t$uCvrC1CdXpMgE|M@0ZYXXw;u<5wV#b${82EP`pCEIWh??2 z!%P8#(!p-5Zb&hpk1@O+X+p^;KEXVAt*H9s@yZelT2YA}yZE@g6{6YTeF2aR>?MHS z{Lo+wC}rxYhLA5Nc|QYX38Y=hXY5}UlW7#s)O3vV7Tw4Bmedoa>VvRdv&vv&nwMvA ztgkw5)j9QBVg(abjGPgsi?j@@nHlP@f*)o`DlScth42bxXs5xQU_MiglF5LkIGuX1 zIwWK}#cmo5_Cf+2s&gk5_Lr@61K}YyH^Q<~bhK80)=5`8tyx^^vd6z$hrNY|$h#U~ zb4imXXXmBFT8phx`M3%x5<+Kk#CE>kCgV{Bccv^Kf!#$~G>=eep9r2^bNHT*33;g% z&jYpIN-cLw8zUc1t#L_{01kWUp4Q|GK%xJtH#8p)JcZ>N!j))-&x!aJE^@W3f}TifR+F?g>MOn8`!3z)k^>y6BZonz4uU{AyWlj9r3-2 ztSjgxH9QccnpLF-qB-zEhon0dwm3N@+pfuLW+cspI?lSs@kr;h@@O+htKS)2%wr0p zeY;5WD+FSB
  • 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 AF#rGn diff --git a/fastapi/static/description/icon.svg b/fastapi/static/description/icon.svg new file mode 100644 index 000000000..b991f80cd --- /dev/null +++ b/fastapi/static/description/icon.svg @@ -0,0 +1,71 @@ + + From 7537bbbdf465e1ef13e625de4ef8c127f77c0a48 Mon Sep 17 00:00:00 2001 From: "Laurent Mignon (ACSONE)" Date: Thu, 16 Apr 2026 10:02:28 +0200 Subject: [PATCH 4/4] oca-port: blacklist PR(s) 607 for fastapi --- .oca/oca-port/blacklist/fastapi.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.oca/oca-port/blacklist/fastapi.json b/.oca/oca-port/blacklist/fastapi.json index 8cbdd039c..88279ef5a 100644 --- a/.oca/oca-port/blacklist/fastapi.json +++ b/.oca/oca-port/blacklist/fastapi.json @@ -7,6 +7,7 @@ "OCA/rest-framework#440": "(auto) Nothing to port from PR #440", "OCA/rest-framework#476": "(auto) Nothing to port from PR #476", "OCA/rest-framework#364": "(auto) Nothing to port from PR #364", - "OCA/rest-framework#486": "(auto) Nothing to port from PR #486" + "OCA/rest-framework#486": "(auto) Nothing to port from PR #486", + "OCA/rest-framework#607": "(auto) Nothing to port from PR #607" } }