package Ġorg . jetbrains . kotlin x . jupyter Ċ Ċ import Ġorg . jetbrains . kotlin x . jupyter . api . J upyter Client Type Ċ Ċ object ĠJupyter Client Detector Ġ{ ĊĠĠĠ Ġfun Ġdetect (): ĠJupyter Client Type Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Detect () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠLink age Error ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . error (" Unable Ġto Ġdetect ĠJupyter Ġclient Ġtype Ġbecause Ġof Ġincompatible ĠJVM Ġversion ", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJupyter Client Type . UNKNOWN ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdo Detect (): ĠJupyter Client Type Ġ{ ĊĠĠĠĠĠĠĠ Ġlog . info (" Detect ing ĠJupyter Ġclient Ġtype ") ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Handle Ġ= ĠProcess Handle . current () ĊĠĠĠĠĠĠĠ Ġval Ġan cestors Ġ= Ġgenerate Sequence ( current Handle ) Ġ{ Ġit . parent (). orElse ( null ) Ġ}. toList () ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( handle Ġin Ġan cestors ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinfo Ġ= Ġhandle . info () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcommand Ġ= Ġinfo . command (). orElse ("") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġinfo . arguments (). orElse ( empty Array ()). toList () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . info (" Inspect ing Ġprocess : Ġ$ command Ġ${ arguments . join ToString (" Ġ" )} ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcorrect Detector Ġ= Ġdetector s . first OrNull Ġ{ Ġit . is This Client ( command , Ġarguments ) Ġ} Ġ?: Ġcontinue ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . info (" Detected Ġtype Ġis Ġ${ correct Detector . type }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcorrect Detector . type ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġlog . info (" Client Ġtype Ġhas Ġnot Ġbeen Ġdetected ") ĊĠĠĠĠĠĠĠ Ġreturn ĠJupyter Client Type . UNKNOWN ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinterface ĠDetector Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtype : ĠJupyter Client Type ĊĠĠĠĠĠĠĠ Ġfun Ġis This Client ( command : ĠString , Ġarguments : ĠList < String >): ĠBoolean ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdetector ( type : ĠJupyter Client Type , Ġpredicate : Ġ( String , ĠList < String >) Ġ-> ĠBoolean ) Ġ= Ġobject Ġ: ĠDetector Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġtype : ĠJupyter Client Type Ġget () Ġ= Ġtype ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġis This Client ( command : ĠString , Ġarguments : ĠList < String >): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġpredicate ( command , Ġarguments ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġdetector s Ġ= ĠlistOf < Detector >( ĊĠĠĠĠĠĠĠ Ġdetector ( J upyter Client Type . J UP Y TER _ NOTE BOOK ) Ġ{ Ġcommand , Ġargs Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" jupyter - notebook " Ġin Ġcommand Ġ|| Ġargs . any Ġ{ Ġ" jupyter - notebook " Ġin Ġit Ġ} ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġdetector ( J upyter Client Type . J UP Y TER _ LAB ) Ġ{ Ġcommand , Ġargs Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" jupyter - lab " Ġin Ġcommand Ġ|| Ġargs . any Ġ{ Ġ" jupyter - lab " Ġin Ġit Ġ} ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġdetector ( J upyter Client Type . KERNEL _ TESTS ) Ġ{ Ġcommand , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcommand . endsWith (" idea 6 4 . exe ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ċ } Ċ