package Ġorg . jetbrains . kotlin x . jupyter Ċ Ċ import Ġjupyter . kotlin . Java Runtime Ċ import Ġkotlinx . serialization . K Serializer Ċ import Ġkotlinx . serialization . Serializable Ċ import Ġkotlinx . serialization . decode FromString Ċ import Ġkotlinx . serialization . descriptors . Serial Descriptor Ċ import Ġkotlinx . serialization . encode ToString Ċ import Ġkotlinx . serialization . encoding . Decoder Ċ import Ġkotlinx . serialization . encoding . Encoder Ċ import Ġkotlinx . serialization . json . Json Ċ import Ġkotlinx . serialization . json . Json Primitive Ċ import Ġkotlinx . serialization . json . decode FromJson Element Ċ import Ġkotlinx . serialization . serializer Ċ import Ġorg . jetbrains . kotlin x . jupyter . api . Kotlin Kernel Version Ċ import Ġorg . jetbrains . kotlin x . jupyter . common . getName ForUser Ċ import Ġorg . jetbrains . kotlin x . jupyter . config . getLogger Ċ import Ġorg . jetbrains . kotlin x . jupyter . config . read Resource As Ini File Ċ import Ġorg . jetbrains . kotlin x . jupyter . dependencies . Resolver Config Ċ import Ġorg . jetbrains . kotlin x . jupyter . libraries . Resolution Info Provider Ċ import Ġorg . jetbrains . kotlin x . jupyter . libraries . get Standard Resolver Ċ import Ġorg . zer om q . Socket Type Ċ import Ġjava . io . File Ċ import Ġkotlin . script . experimental . dependencies . Repository Coordinates Ċ Ċ const Ġval Ġprotocol Version Ġ= Ġ" 5 . 3 " Ċ Ċ internal Ġval Ġlog Ġby Ġlazy Ġ{ Ġget Logger () Ġ} Ċ Ċ val Ġdefault Repositories Ġ= ĠlistOf ( ĊĠĠĠ ĠRepository Coordinates (" https :// repo . maven . apache . org / maven 2 / "), ĊĠĠĠ ĠRepository Coordinates (" https :// jit pack . io / "), Ċ ) Ċ Ċ val Ġdefault Runtime Properties Ġby Ġlazy Ġ{ ĊĠĠĠ ĠRuntime Kernel Properties ( read Resource As Ini File (" runtime . properties ")) Ċ } Ċ Ċ enum Ġclass ĠJupyter Sockets ( val Ġz mq Kernel Type : ĠSocket Type , Ġval Ġz mq Client Type : ĠSocket Type ) Ġ{ ĊĠĠĠ ĠH B ( Socket Type . REP , ĠSocket Type . REQ ), ĊĠĠĠ ĠS HE LL ( Socket Type . ROUT ER , ĠSocket Type . REQ ), ĊĠĠĠ ĠCONT ROL ( Socket Type . ROUT ER , ĠSocket Type . REQ ), ĊĠĠĠ ĠSTD IN ( Socket Type . ROUT ER , ĠSocket Type . REQ ), ĊĠĠĠ ĠI OP UB ( Socket Type . PUB , ĠSocket Type . SUB ); ĊĊĠĠĠ Ġval Ġname ForUser Ġ= ĠgetName ForUser ( name ) Ċ } Ċ Ċ data Ġclass ĠOutput Config ( ĊĠĠĠ Ġvar Ġcapture Output : ĠBoolean Ġ= Ġtrue , ĊĠĠĠ Ġvar Ġcapture Buffer Time Limit Ms : ĠLong Ġ= Ġ 1 0 0 , ĊĠĠĠ Ġvar Ġcapture Buffer MaxSize : ĠInt Ġ= Ġ 1 0 0 0 , ĊĠĠĠ Ġvar Ġcell Output MaxSize : ĠInt Ġ= Ġ 1 0 0 0 0 0 , ĊĠĠĠ Ġvar Ġcapture New line BufferSize : ĠInt Ġ= Ġ 1 0 0 Ċ ) Ġ{ ĊĠĠĠ Ġfun Ġupdate ( other : ĠOutput Config ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcapture Output Ġ= Ġother . capture Output ĊĠĠĠĠĠĠĠ Ġcapture Buffer Time Limit Ms Ġ= Ġother . capture Buffer Time Limit Ms ĊĠĠĠĠĠĠĠ Ġcapture Buffer MaxSize Ġ= Ġother . capture Buffer MaxSize ĊĠĠĠĠĠĠĠ Ġcell Output MaxSize Ġ= Ġother . cell Output MaxSize ĊĠĠĠĠĠĠĠ Ġcapture New line BufferSize Ġ= Ġother . capture New line BufferSize ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠRuntime Kernel Properties ( val Ġmap : ĠMap < String , ĠString >) Ġ: ĠRe pl Runtime Properties Ġ{ ĊĠĠĠ Ġoverride Ġval Ġversion : ĠKotlin Kernel Version ? Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġmap [" version "] ?. let Ġ{ ĠKotlin Kernel Version . from ( it ) Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġval Ġlibraries Format Version : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġmap [" libraries Format Version "] ?. toInt OrNull () Ġ?: Ġthrow ĠRuntimeException (" Libraries Ġformat Ġversion Ġis Ġnot Ġspecified !") ĊĠĠĠ Ġoverride Ġval Ġcurrent Branch : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġmap [" current Branch "] Ġ?: Ġthrow ĠRuntimeException (" Current Ġbranch Ġis Ġnot Ġspecified !") ĊĠĠĠ Ġoverride Ġval Ġcurrent Sha : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġmap [" current Sha "] Ġ?: Ġthrow ĠRuntimeException (" Current Ġcommit ĠSHA Ġis Ġnot Ġspecified !") ĊĠĠĠ Ġoverride Ġval Ġj vm Target For Snippets Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġmap [" jvm Target For Snippets "] Ġ?: ĠJava Runtime . version ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Serializable ( Kernel J upyter Params Serializer :: class ) Ċ data Ġclass ĠKernel J upyter Params ( ĊĠĠĠ Ġval Ġsig Scheme : ĠString ?, ĊĠĠĠ Ġval Ġkey : ĠString ?, ĊĠĠĠ Ġval Ġports : ĠList < Int >, ĊĠĠĠ Ġval Ġtransport : ĠString ? Ċ ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġfrom File ( cfg File : ĠFile ): ĠKernel J upyter Params Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson String Ġ= Ġcfg File . canonical File . read Text () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠJson . decode FromString ( json String ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ object ĠKernel J upyter Params Serializer Ġ: ĠK Serializer < Kernel J upyter Params > Ġ{ ĊĠĠĠ Ġprivate Ġval Ġutil Serializer Ġ= Ġserializer < Map < String , ĠJson Primitive >>() ĊĊĠĠĠ Ġoverride Ġval Ġdescriptor : ĠSerial Descriptor ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġutil Serializer . descriptor ĊĊĠĠĠ Ġoverride Ġfun Ġdeserialize ( decoder : ĠDecoder ): ĠKernel J upyter Params Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġutil Serializer . deserialize ( decoder ) ĊĠĠĠĠĠĠĠ Ġreturn ĠKernel J upyter Params ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap [" signature _ scheme "] ?. content , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap [" key "] ?. content , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJupyter Sockets . values (). map Ġ{ Ġsocket Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠfieldName Ġ= Ġ"${ socket . name ForUser }_ port " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap [ fieldName ]?. let Ġ{ ĠJson . decode FromJson Element < Int >( it ) Ġ} Ġ?: Ġthrow ĠRuntimeException (" Cannot Ġfind Ġ$ fieldName Ġin Ġconfig ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap [" transport "] ?. content Ġ?: Ġ" tcp " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġserialize ( encoder : ĠEncoder , Ġvalue : ĠKernel J upyter Params ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġmutable Map Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" signature _ scheme " Ġto ĠJson Primitive ( value . sig Scheme ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" key " Ġto ĠJson Primitive ( value . key ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" transport " Ġto ĠJson Primitive ( value . transport ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠJupyter Sockets . values (). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap [" ${ it . name ForUser }_ port "] Ġ= ĠJson Primitive ( value . ports [ it . ordinal ]) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġutil Serializer . serialize ( encoder , Ġmap ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ data Ġclass ĠKernel Config ( ĊĠĠĠ Ġval Ġports : ĠList < Int >, ĊĠĠĠ Ġval Ġtransport : ĠString , ĊĠĠĠ Ġval Ġsignature Scheme : ĠString , ĊĠĠĠ Ġval Ġsignature Key : ĠString , ĊĠĠĠ Ġval Ġscript Classpath : ĠList < File > Ġ= Ġempty List (), ĊĠĠĠ Ġval Ġhome Dir : ĠFile ?, ĊĠĠĠ Ġval Ġresolver Config : ĠResolver Config ?, ĊĠĠĠ Ġval Ġresolution Info Provider : ĠResolution Info Provider , ĊĠĠĠ Ġval Ġembedded : ĠBoolean Ġ= Ġfalse , Ċ ) Ġ{ ĊĠĠĠ Ġfun Ġto Args ( prefix : ĠString Ġ= Ġ"") : ĠKernel Args Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparams Ġ= ĠKernel J upyter Params ( signature Scheme , Ġsignature Key , Ġports , Ġtransport ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcfg File Ġ= ĠFile . create TempFile (" kotlin - kernel - config -$ prefix ", Ġ". json ") ĊĠĠĠĠĠĠĠ Ġcfg File . delete On Exit () ĊĠĠĠĠĠĠĠ Ġval Ġformat Ġ= ĠJson Ġ{ Ġpretty Print Ġ= Ġtrue Ġ} ĊĠĠĠĠĠĠĠ Ġcfg File . write Text ( format . encode ToString ( params )) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠKernel Args ( cfg File , Ġscript Classpath , Ġhome Dir ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġfrom Args ( args : ĠKernel Args , Ġresolution Info Provider : ĠResolution Info Provider ): ĠKernel Config Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ( cfg File , Ġscript Classpath , Ġhome Dir ) Ġ= Ġargs ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcfg Ġ= ĠKernel J upyter Params . from File ( cfg File ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfrom Config ( cfg , Ġresolution Info Provider , Ġscript Classpath , Ġhome Dir ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġfrom Config ( cfg : ĠKernel J upyter Params , Ġresolution Info Provider : ĠResolution Info Provider , Ġscript Classpath : ĠList < File >, Ġhome Dir : ĠFile ?, Ġembedded : ĠBoolean Ġ= Ġfalse ): ĠKernel Config Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠKernel Config ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġports Ġ= Ġcfg . ports , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransport Ġ= Ġcfg . transport Ġ?: Ġ" tcp ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsignature Scheme Ġ= Ġcfg . sig Scheme Ġ?: Ġ" hmac 1 - sha 2 5 6 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsignature Key Ġ= Ġif Ġ( cfg . sig Scheme Ġ== Ġnull Ġ|| Ġcfg . key Ġ== Ġnull ) Ġ"" Ġelse Ġcfg . key , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscript Classpath Ġ= Ġscript Classpath , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhome Dir Ġ= Ġhome Dir , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresolver Config Ġ= Ġhome Dir ?. let Ġ{ Ġload Resolver Config ( it . toString (), Ġresolution Info Provider ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresolution Info Provider Ġ= Ġresolution Info Provider , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġembedded Ġ= Ġembedded , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġload Resolver Config ( home Dir : ĠString , Ġresolution Info Provider : ĠResolution Info Provider ) Ġ= ĠResolver Config ( default Repositories , Ġget Standard Resolver ( home Dir , Ġresolution Info Provider )) Ċ