/** Ċ Ġ* Ġ ĠCopyright Ġ 2 0 2 1 ĠMichael Ġvan ĠTell ingen Ċ Ġ*/ Ċ package Ġio . v rap . codegen . languages . python . client Ċ Ċ import Ġio . v rap . codegen . languages . extensions . is Pattern Property Ċ import Ġio . v rap . codegen . languages . extensions . resource Ċ import Ġio . v rap . codegen . languages . extensions . returnType Ċ import Ġio . v rap . codegen . languages . python . model . Py ObjectType Extensions Ċ import Ġio . v rap . codegen . languages . python . model . py TypeName Ċ import Ġio . v rap . codegen . languages . python . model . simple Py Name Ċ import Ġio . v rap . codegen . languages . python . py Generated Comment Ċ import Ġio . v rap . codegen . languages . python . snake Case Ċ import Ġio . v rap . codegen . languages . python . to Doc String Ċ import Ġio . v rap . codegen . languages . python . to Relative PackageName Ċ import Ġio . v rap . rm f . codegen . di . Client PackageName Ċ import Ġio . v rap . rm f . codegen . io . Template File Ċ import Ġio . v rap . rm f . codegen . rendering . Resource Renderer Ċ import Ġio . v rap . rm f . codegen . rendering . utils . escape All Ċ import Ġio . v rap . rm f . codegen . rendering . utils . keep Indent ation Ċ import Ġio . v rap . rm f . codegen . types . V rap ArrayType Ċ import Ġio . v rap . rm f . codegen . types . V rap Enum Type Ċ import Ġio . v rap . rm f . codegen . types . V rap ObjectType Ċ import Ġio . v rap . rm f . codegen . types . V rap Scalar Type Ċ import Ġio . v rap . rm f . codegen . types . V rap Type Ċ import Ġio . v rap . rm f . codegen . types . V rap Type Provider Ċ import Ġio . v rap . rm f . r aml . model . resources . Method Ċ import Ġio . v rap . rm f . r aml . model . resources . Resource Ċ import Ġjava . util .* Ċ Ċ class ĠRequest Builder Ġconstructor ( ĊĠĠĠ Ġ@ Client PackageName Ġval Ġclient _ package : ĠString , ĊĠĠĠ Ġoverride Ġval Ġv rap Type Provider : ĠV rap Type Provider Ċ ) Ġ: ĠResource Renderer , ĠPyObject Type Extensions Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġrender ( type : ĠResource ): ĠTemplate File Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġpkg Ġ= Ġ( type . to Python V rap Type () Ġas ĠV rap ObjectType ). ` package ` ĊĠĠĠĠĠĠĠ Ġval Ġmodule Ġ= Ġtype . py Request ModuleName ( pkg ) ĊĠĠĠĠĠĠĠ Ġval Ġfilename Ġ= Ġmodule . replace (".", Ġ"/") ĊĊĠĠĠĠĠĠĠ Ġval Ġclient Path Ġ= Ġ" base _ client ". to Relative PackageName ( module ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠTemplate File ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrelative Path Ġ= Ġ"$ filename . py ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Ġ= Ġ""" | ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| $ py Generated Comment ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ${ type . imports ( type . py Request ModuleName ( pkg ))} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| if Ġtyping . TYPE _ CHECK ING : ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġfrom Ġ$ client Path Ġimport ĠBase Client ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| class Ġ${ type . to RequestBuilder Name ()} : ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ< ${ type . constructor () }> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ< ${ type . sub Resources (" self ._ client "). escape All () }> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ< ${ type . methods (). escape All () }> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Margin (). keep Indent ation () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun ĠResource . constructor (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpath Args Ġ= Ġif Ġ(! this . full Uri . variables . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. full Uri ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. variables ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . snake Case () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġ"$ it : Ġstr " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. join ToString ( separator Ġ= Ġ", \ n ") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ Ġ"" Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġpath Types Ġ= Ġif Ġ(! this . full Uri . variables . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. full Uri ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. variables ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . snake Case () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġ"_ $ it : Ġstr " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. join ToString ( separator Ġ= Ġ"\ n ") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ Ġ"" Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġassignments Ġ= Ġthis . full Uri . variables ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . snake Case () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġ" self ._ $ it Ġ= Ġ$ it " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. join ToString ( separator Ġ= Ġ"\ n ") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ|_ client : Ġ" Base Client " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| $ path Types ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| def Ġ__ init __( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġself , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ<$ path Args >, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġclient : Ġ" Base Client ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ): ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ<$ assignments > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġself ._ client Ġ= Ġclient ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Margin (). keep Indent ation () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun ĠResource . methods (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . methods ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġrender Method ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. join ToString ( separator Ġ= Ġ"\ n \ n ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrender Method ( method : ĠMethod ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmethod Kw args Ġ= ĠlistOf (" self ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. plus ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbody V rap Type Ġ= Ġmethod . v rap Type () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( body V rap Type Ġ!= Ġnull ) Ġ" body : Ġ${ method . v rap Type ()?. py TypeName () }" Ġelse Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. plus ("* ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. plus ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmethod . query Parameters ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . required ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . is Pattern Property ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ it . param Name ()} : Ġtyping . Dict [ str , Ġ${ it . type . to Python V rap Type (). py TypeName ()} ]" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ it . name . snake Case ()} : Ġ${ it . type . to Python V rap Type (). py TypeName () }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( it . is Pattern Property ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ it . param Name ()} : Ġtyping . Dict [ str , Ġ${ it . type . to Python V rap Type (). py TypeName ()} ] Ġ= ĠNone " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ it . name . snake Case ()} : Ġ${ it . type . to Python V rap Type (). py TypeName ()} Ġ= ĠNone " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. plus (" headers : Ġtyping . Dict [ str , Ġstr ] Ġ= ĠNone ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. plus (" options : Ġtyping . Dict [ str , Ġtyping . Any ] Ġ= ĠNone ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġ!= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. join ToString ( separator Ġ= Ġ", Ġ") ĊĊĠĠĠĠĠĠĠ Ġval Ġparams Kw arg Ġ= Ġmethod . query Parameters ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġ! it . is Pattern Property () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" "${ it . name } ": Ġ${ it . name . snake Case ()} """ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. join ToString (", Ġ", Ġprefix Ġ= Ġ"{ ", Ġpostfix Ġ= Ġ" }") ĊĊĠĠĠĠĠĠĠ Ġval Ġparams Pattern Dict s Ġ= Ġmethod . query Parameters ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . is Pattern Property () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ it . param Name ()} Ġand Ġparams . update (${ it . template () })" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. join ToString ("\ n ") ĊĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠKey ( val ĠclassName : ĠString , Ġval Ġsuccess : ĠBoolean ) ĊĠĠĠĠĠĠĠ Ġvar Ġidx Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar ĠreturnType Optional Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġresponse Handler Ġ= Ġmethod . responses ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠstatusCode Ġ= Ġit . statusCode ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . bodies . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv rap Ġ= Ġit . bodies [ 0 ]. type . to Python V rap Type () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv rap . simple Py Name () Ġto ĠstatusCode ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" None " Ġto ĠstatusCode ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. groupBy Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKey ( it . first , Ġ( it . second . toInt () Ġin Ġ( 2 0 0 .. 2 9 9 ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Values Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentry Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentry . value . map Ġ{ Ġit . second . toInt () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstatus Codes Ġ= Ġmutable ListOf < Int >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Codes . addAll ( it . value ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠHack Ġto Ġwork Ġaround Ġincorrect Ġimport api Ġr aml Ġvs Ġimplementation ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( status Codes . contains ( 2 0 1 ) Ġ&& Ġ! status Codes . contains ( 2 0 0 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Codes . add ( 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcondition Ġ= Ġif Ġ( status Codes . size Ġ> Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Codes . join ToString ( prefix Ġ= Ġ" in Ġ( ", Ġseparator Ġ= Ġ",", Ġpostfix Ġ= Ġ") ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" == Ġ${ status Codes [ 0 ]}" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstmt Ġ= Ġ"${ if Ġ( idx Ġ== Ġ 0 ) Ġ" if " Ġelse Ġ" elif "} Ġresponse . status _ code Ġ$ condition " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġidx ++ Ġ// ĠShould Ġuse Ġmap Indexed ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . key . success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . key . className Ġ== Ġ" None ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠreturnType Optional Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| $ stmt : ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġreturn ĠNone ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Margin () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| $ stmt : ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġreturn Ġ${ it . key . className }. deserialize ( response . json ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Margin () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . key . className Ġ== Ġ" None ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠreturnType Optional Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| $ stmt : ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġreturn ĠNone ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Margin () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| $ stmt : ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġobj Ġ= Ġ${ it . key . className }. deserialize ( response . json ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġraise Ġself ._ client ._ create _ exception ( obj , Ġresponse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Margin () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. join ToString ("\ n ") ĊĊĠĠĠĠĠĠĠ Ġvar Ġmethod Return Ġ= Ġ"${ method . returnType (). to Python V rap Type (). py TypeName () }" ĊĠĠĠĠĠĠĠ Ġif Ġ( returnType Optional ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmethod Return Ġ= Ġ" typing . Optional [$ method Return ]" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġendpoint Ġ= Ġtransform Uri Template ( method . resource (). full Uri . template ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġbody Expr Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġval Ġbody V rap Type Ġ= Ġmethod . v rap Type () ĊĠĠĠĠĠĠĠ Ġif Ġ( body V rap Type Ġis ĠV rap Scalar Type Ġ&& Ġbody V rap Type . scalar Type Ġ== Ġ" typing . Binary IO ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbody Expr Ġ= Ġ" data = body . read (), " ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( body V rap Type Ġis ĠV rap ObjectType ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbody Expr Ġ= Ġ" json = body . serialize (), " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ""" ĊĠĠĠĠĠĠĠ Ġ| def Ġ${ method . methodName } (< $ method Kw args >) Ġ- \> Ġ$ method Return : ĊĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ< ${ method . to Doc String (). escape All () }> ĊĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ< ${ if Ġ( params Pattern Dict s . isNotEmpty ()) Ġ" params Ġ= Ġ$ params Kw arg " Ġelse Ġ"" }> ĊĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ<$ params Pattern Dict s > ĊĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġheaders Ġ= Ġ{} Ġif Ġheaders Ġis ĠNone Ġelse Ġheaders ĊĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġresponse Ġ= Ġself ._ client ._ ${ method . methodName . lowercase ( Locale . getDefault ()) }( ĊĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġendpoint = f '$ endpoint ', ĊĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġ< ${ if Ġ( params Pattern Dict s . isEmpty ()) Ġ" params =$ params Kw arg " Ġelse Ġ" params = params "} >, ĊĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġ<$ body Expr > ĊĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġheaders =< ${ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( method . py MediaType (). isNotEmpty ()) Ġ"{ ${ method . py MediaType ()}, Ġ** headers }" Ġelse Ġ" headers " ĊĠĠĠĠĠĠĠ Ġ} >, ĊĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ Ġoptions = options ĊĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ<$ response Handler > ĊĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġwarnings . warn (" Unhandled Ġstatus Ġcode Ġ% d " Ġ% Ġresponse . status _ code ) ĊĠĠĠĠĠĠĠ Ġ""" . trim Margin (). keep Indent ation () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtransform Uri Template ( template : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġregex Ġ= Ġ"\\ { ([^ } ]+ )} ". to Regex () ĊĠĠĠĠĠĠĠ Ġval Ġmatches Ġ= Ġregex . findAll ( template ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġtemplate ĊĠĠĠĠĠĠĠ Ġmatches . map Ġ{ Ġit . group Values [ 1 ] Ġ}. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġresult . replace (" {$ it }", Ġ"{ self ._ ${ it . snake Case ()}} ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠMethod . v rap Type (): ĠV rap Type ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( bodies . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġbodies [ 0 ]. type . to Python V rap Type () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠResource . imports ( moduleName : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . resources ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . py Request V rap Type ( client _ package ). create Python V rap Type () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. plus ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . methods ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġmethod Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmethod . bodies ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. plus ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmethod . query Parameters ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . type Ġ!= Ġnull Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . type . to Python V rap Type () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit Ġis ĠV rap Enum Type Ġ|| Ġit Ġis ĠV rap ObjectType Ġ|| Ġ( it Ġis ĠV rap ArrayType Ġ&& Ġit . item Type Ġis ĠV rap ObjectType ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. plus ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . methods ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . responses ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . bodies . isNotEmpty () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . bodies [ 0 ]. type . to Python V rap Type () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Imports For Model V rap Types ( moduleName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. plus (" import Ġtyping ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. plus (" import Ġwarnings ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. join ToString ("\ n ") ĊĠĠĠ Ġ} Ċ } Ċ