package Ġcom . get around . py charm . db t . actions Ċ Ċ import Ġcom . get around . py charm . db t . services . Db t Project Service Ċ import Ġcom . intellij . execution . ExecutionException Ċ import Ġcom . intellij . openapi . action System . An Action Ċ import Ġcom . intellij . openapi . action System . An ActionEvent Ċ import Ġcom . intellij . openapi . application . Application Manager Ċ import Ġcom . intellij . openapi . components . service Ċ import Ġcom . intellij . openapi . progress . Progress Indicator Ċ import Ġcom . intellij . openapi . progress . Progress Manager Ċ import Ġcom . intellij . openapi . progress . Task Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . web core . packaging . Packages Notification Panel Ċ import Ġcom . jetbrains . python . Py Bundle Ċ import Ġcom . jetbrains . python . Py Psi Package Util Ċ import Ġcom . jetbrains . python . packaging . Py PI Package Util Ċ import Ġcom . jetbrains . python . packaging . Py Package Ċ import Ġcom . jetbrains . python . packaging . Py PackageManager Ċ import Ġcom . jetbrains . python . packaging . Py Package Util Ċ import Ġcom . jetbrains . python . packaging . ui . Py Package Management Service Ċ import Ġcom . jetbrains . python . sdk . python Sdk Ċ Ċ class ĠUpdate DB T Version Action ( ĊĠĠĠ Ġval Ġproject : ĠProject , ĊĠĠĠ Ġval Ġcallback : Ġ( p : ĠPy Package ?) Ġ-> ĠUnit Ġ= Ġ{} Ċ ) Ġ: ĊĠĠĠ ĠAn Action ( action Text ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠDB T _ PY PACKAGE _ NAME Ġ= Ġ" db t " ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġaction Text : ĠString Ġ= Ġ" Update ĠDB T " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate ( e : ĠAn ActionEvent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġe . presentation . text Ġ= Ġaction Text ĊĠĠĠĠĠĠĠ Ġe . presentation . description Ġ= Ġaction Text ĊĠĠĠĠĠĠĠ Ġe . presentation . isEnabled And Visible Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠactionPerformed ( e : ĠAn ActionEvent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĠPy Bundle . message (" python . install . framework . ensure . installed ", ĠDB T _ PY PACKAGE _ NAME ) ĊĠĠĠĠĠĠĠ ĠProgress Manager . getInstance (). run ( object Ġ: ĠTask . Modal ( project , Ġmessage , Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun ( indicator : ĠProgress Indicator ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproject Service Ġ= Ġproject . service < Db t Project Service >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpython Sdk Ġ= Ġproject . python Sdk Ġ?: Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpackage Manager Ġ= ĠPy PackageManager . getInstance ( python Sdk ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠFirst Ġcheck Ġif Ġwe Ġneed Ġto Ġdo Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindicator . text Ġ= ĠPy Bundle . message ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" python . install . framework . checking . is . installed ", ĠDB T _ PY PACKAGE _ NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġpackages Ġ= ĠPy Package Util . refresh AndGet Packages Mod ally ( python Sdk ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġpy Package Ġ= ĠPy Psi Package Util . find Package ( packages , ĠDB T _ PY PACKAGE _ NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġversion Ġ= ĠPy PI Package Util . INSTANCE . fetch Latest Package Version ( project , ĠDB T _ PY PACKAGE _ NAME ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( py Package Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject Service . notify Error (" Package Ġwas Ġnot Ġfound , Ġplease Ġinstall Ġthis Ġpackage Ġfirst ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( version Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject Service . notify Error (" Unable Ġto Ġdetermine Ġnew Ġversion Ġto Ġinstall ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindicator . text Ġ= ĠPy Bundle . message ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" python . install . framework . installing ", ĠDB T _ PY PACKAGE _ NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Manager . install ("$ DB T _ PY PACKAGE _ NAME == $ version ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Manager . refresh () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠExecution Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġerror Description Ġ= ĠPy Package Management Service . to Error Description ( listOf ( e ), Ġpython Sdk ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( error Description Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Unable Ġto Ġdescribe Ġerror Ġ$ e ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġapp Ġ= ĠApplication Manager . getApplication () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp . invoke Later Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPackages Notification Panel . show Error ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPy Bundle . message ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" python . new . project . install . failed . title ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDB T _ PY PACKAGE _ NAME ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Description ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackages Ġ= ĠPy Package Util . refresh AndGet Packages Mod ally ( python Sdk ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpy Package Ġ= ĠPy Psi Package Util . find Package ( packages , ĠDB T _ PY PACKAGE _ NAME ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ( py Package ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ } Ċ