package Ġorg . jetbrains . kotlin x . jupyter . codegen Ċ Ċ import Ġjupyter . kotlin . Compiler Args Ċ import Ġjupyter . kotlin . Dep ends On Ċ import Ġjupyter . kotlin . Kotlin Kernel Host Provider Ċ import Ġjupyter . kotlin . Repository Ċ import Ġorg . jetbrains . kotlin x . jupyter . api . File Annotation Callback Ċ import Ġorg . jetbrains . kotlin x . jupyter . api . File Annotation Handler Ċ import Ġorg . jetbrains . kotlin x . jupyter . api . Kotlin Kernel Host Ċ import Ġorg . jetbrains . kotlin x . jupyter . compiler . Compiler Args Configurator Ċ import Ġorg . jetbrains . kotlin x . jupyter . dependencies . Script Dependency Annotation Handler Ċ import Ġorg . jetbrains . kotlin x . jupyter . exceptions . Library Problem Part Ċ import Ġorg . jetbrains . kotlin x . jupyter . exceptions . re throw As Library Exception Ċ import Ġorg . jetbrains . kotlin x . jupyter . repl . impl . J upyter Compiler Ċ import Ġkotlin . script . experimental . api . Result With Diagnostics Ċ import Ġkotlin . script . experimental . api . Script Collected Data Ċ import Ġkotlin . script . experimental . api . Script Compilation Configuration Ċ import Ġkotlin . script . experimental . api . Script Configuration Ref inement Context Ċ import Ġkotlin . script . experimental . api . as Diagnostics Ċ import Ġkotlin . script . experimental . api . as Success Ċ import Ġkotlin . script . experimental . api . found Annotations Ċ import Ġkotlin . script . experimental . api . value Or Ċ Ċ class ĠFile Annotations Processor Impl ( ĊĠĠĠ Ġval Ġdependency Annotations Handler : ĠScript Dependency Annotation Handler , ĊĠĠĠ Ġval Ġcompiler Args Configurator : ĠCompiler Args Configurator , ĊĠĠĠ Ġval Ġcompiler : ĠJupyter Compiler , ĊĠĠĠ Ġval Ġkernel Host Provider : ĠKotlin Kernel Host Provider Ċ ) Ġ: ĠFile Annotations Processor Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġhandlers Ġ= Ġmutable Map Of < String , ĠFile Annotation Callback >() ĊĊĠĠĠ Ġoverride Ġfun Ġregister ( handler : ĠFile Annotation Handler ) Ġ{ ĊĠĠĠĠĠĠĠ Ġhandlers [ handler . annotation . qualified Name !! ] Ġ= Ġhandler . callback ĊĠĠĠĠĠĠĠ Ġcompiler . update Compilation Config On Annotation ( handler ) Ġ{ Ġcontext Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprocess ( context , Ġkernel Host Provider . host !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġprocess ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠScript Configuration Ref inement Context , ĊĠĠĠĠĠĠĠ Ġhost : ĠKotlin Kernel Host ĊĠĠĠ Ġ): ĠResult With Diagnostics < Script Compilation Configuration > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcollected Ġ= Ġmutable ListOf < Annotation >() ĊĊĠĠĠĠĠĠĠ Ġfun Ġprocess Collected ( conf : ĠScript Compilation Configuration ): ĠResult With Diagnostics < Script Compilation Configuration > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( collected . isEmpty ()) Ġreturn Ġconf . as Success () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclazz Ġ= Ġcollected [ 0 ]. annotation Class ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( clazz ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDep ends On :: class , ĠRepository :: class Ġ-> Ġdependency Annotations Handler . configure ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconf , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcollected ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCompiler Args :: class Ġ-> Ġcompiler Args Configurator . configure ( conf , Ġcollected ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandlers [ clazz . qualified Name !! ]?. let Ġ{ Ġhandler Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre throw As Library Exception ( Library Problem Part . FILE _ AN NOT ATIONS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . invoke ( host , Ġcollected ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconf . as Success () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult With Diagnostics . Failure ( e . as Diagnostics ( path Ġ= Ġcontext . script . location Id )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcollected . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġconfig Ġ= Ġcontext . compilation Configuration ĊĊĠĠĠĠĠĠĠ Ġval Ġfound Annotations Ġ= Ġcontext . collected Data ?. get ( Script Collected Data . found Annotations ) ĊĊĠĠĠĠĠĠĠ Ġfound Annotations ?. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( collected . isEmpty () Ġ|| Ġcollected [ 0 ]. annotation Class Ġ== Ġit . annotation Class ) Ġcollected . add ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Ġ= Ġprocess Collected ( config ). value Or Ġ{ Ġreturn Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcollected . add ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġprocess Collected ( config ) ĊĠĠĠ Ġ} Ċ } Ċ