package Ġsecurity . fixes Ċ Ċ import Ġcom . intellij . code Insight . int ention . High Priority Action Ċ import Ġcom . intellij . code Insight . int ention . Int ention Action Ċ import Ġcom . intellij . code Inspection . Local Quick Fix Ċ import Ġcom . intellij . code Inspection . Problem Descriptor Ċ import Ġcom . intellij . openapi . application . Application Manager Ċ import Ġcom . intellij . openapi . editor . Editor Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . psi . Psi Element Ċ import Ġcom . intellij . psi . Psi File Ċ import Ġcom . intellij . util . Incorrect OperationException Ċ import Ġcom . jetbrains . python . psi .* Ċ Ċ class ĠUse Compare Digest Fixer Ġ: ĠLocal Quick Fix , ĠInt ention Action , ĠHigh Priority Action Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠgetText (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġname ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Family Name (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" Use Ġcompare _ digest ()" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Available ( project : ĠProject , Ġeditor : ĠEditor , Ġfile : ĠPsi File ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Incorrect OperationException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġinvoke ( project : ĠProject , Ġeditor : ĠEditor , Ġfile : ĠPsi File ) Ġ{ ĊĠĠĠĠĠĠĠ ĠApplication Manager . getApplication (). run Write Action Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Binary Expression ElementAt Caret ( file , Ġeditor )?. let Ġ{ Ġrun Fix ( project , Ġfile , Ġit ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget New Expression At Caret ( file : ĠPsi File , Ġproject : ĠProject , Ġold Element : ĠPy Binary Expression ): ĠPy Call Expression ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġelement Generator Ġ= ĠPy Element Generator . getInstance ( project ) ĊĠĠĠĠĠĠĠ Ġif Ġ( file Ġ! is ĠPy File ) Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġlanguage Level Ġ= Ġfile . language Level ĊĠĠĠĠĠĠĠ Ġvar Ġcompare Digest Module Ġ= Ġ" hmac " ĊĠĠĠĠĠĠĠ Ġif Ġ( language Level . is At Least ( Language Level . PYTHON 3 7 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompare Digest Module Ġ= Ġ" secrets " ĊĠĠĠĠĠĠĠ Ġimport From ( file , Ġproject , Ġcompare Digest Module , Ġ" compare _ digest ") ĊĠĠĠĠĠĠĠ Ġval Ġel Ġ= Ġelement Generator . create Call Expression ( language Level , Ġ" compare _ digest ") ĊĠĠĠĠĠĠĠ Ġel . argument List ?. add Argument ( old Element . left Expression ) ĊĠĠĠĠĠĠĠ Ġold Element . right Expression ?. let Ġ{ Ġel . argument List ?. add Argument ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġel ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstart In Write Action (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrun Fix ( project : ĠProject , Ġfile : ĠPsi File , Ġoriginal Element : ĠPsi Element ){ ĊĠĠĠĠĠĠĠ Ġif Ġ( original Element Ġ! is ĠPy Binary Expression ) Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġnew El Ġ= Ġget New Expression At Caret ( file , Ġproject , Ġoriginal Element ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġoriginal Element . replace ( new El ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġapply Fix ( project : ĠProject , Ġdescriptor : ĠProblem Descriptor ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Fix ( project , Ġdescriptor . psi Element . containing File , Ġdescriptor . psi Element ) ĊĠĠĠ Ġ} Ċ }