package Ġcom . jetbrains . snake charm . lang . validation Ċ Ċ import Ġcom . intellij . lang . annotation . Highlight Severity . ERROR Ċ import Ġcom . jetbrains . python . psi . Py Keyword Argument Ċ import Ġcom . jetbrains . python . psi . Py Star Argument Ċ import Ġcom . jetbrains . snake charm . Sn ak em ake Bundle Ċ import Ġcom . jetbrains . snake charm . code Insight . Sn ak em ake API . EXEC UTION _ SECTION S _ KEYWORD S Ċ import Ġcom . jetbrains . snake charm . ins pe ctions . quick fix . Intro duce Keyword Argument Ċ import Ġcom . jetbrains . snake charm . lang . Sn ak em ake Language Dialect Ċ import Ġcom . jetbrains . snake charm . lang . psi .* Ċ Ċ object ĠS mk SyntaxError Annot ator Ġ: ĠS mk Annot ator () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġvisit S mk Rule Or Checkpoint Args Section ( st : ĠS mk Rule Or Checkpoint Args Section ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfind And Highlight Incorrect Arguments ( st ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvisit S mk Workflow Args Section ( st : ĠS mk Workflow Args Section ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfind And Highlight Incorrect Arguments ( st ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfind And Highlight Incorrect Arguments ( args Section : ĠS mk Args Section ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! Sn ak em ake Language Dialect . is Inside S mk File ( args Section )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġseen Keywords 2 Value Ġ= ĠHashMap < String , ĠString >() ĊĠĠĠĠĠĠĠ Ġvar Ġencountered Keyword Argument Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġargs Section . argument List ?. arguments ?. forEach Ġ{ Ġarg Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( arg ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠPy Keyword Argument Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg . keyword ?. let Ġ{ Ġkeyword Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkeyword Value Ġ= Ġseen Keywords 2 Value [ keyword ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( keyword Value Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġarg Ġvalue Ġis Ġnullable , Ġlet 's Ġtake Ġarg Ġtext Ġwhich Ġisn 't Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġseen Keywords 2 Value [ keyword ] Ġ= Ġarg . text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . new Annotation ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠERROR , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ak em ake Bundle . message (" AN N . keyword . argument . already . provided ", Ġkeyword Value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). range ( arg . keyword Node Ġ?: Ġreturn @ let ). create () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġencountered Keyword Argument Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! is ĠPy Star Argument Ġ-> Ġif Ġ( en counter ed Keyword Argument ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . new Annotation ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠERROR , ĠSn ak em ake Bundle . message (" AN N . positional . argument . after . keyword . argument ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). range ( arg ). with Fix ( Intro duce Keyword Argument ( arg )). create () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvisit S mk Rule ( rule : ĠS mk Rule ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck Multiple Execution Sections ( rule ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvisit S mk Check Point ( check Point : ĠS mk Check Point ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck Multiple Execution Sections ( check Point ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck Multiple Execution Sections ( rule Or Checkpoint : ĠS mk Rule Or Checkpoint ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġseen Execution Section : ĠString ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġval Ġsections Ġ= Ġrule Or Checkpoint . get Sections () ĊĠĠĠĠĠĠĠ Ġfor Ġ( st Ġin Ġsections ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( st ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠS mk Rule Or Checkpoint Args Section Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsection Name Ġ= Ġst . section Keyword ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Execution Section Ġ= Ġsection Name Ġin ĠEXEC UTION _ SECTION S _ KEYWORD S ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Execution Section ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( seen Execution Section Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . new Annotation ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠERROR , ĠSn ak em ake Bundle . message (" AN N . multiple . execution . sections ", Ġseen Execution Section ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). range ( st ). create () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġseen Execution Section Ġ= Ġsection Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠS mk Run Section Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( seen Execution Section Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . new Annotation ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠERROR , ĠSn ak em ake Bundle . message (" AN N . multiple . execution . sections ", Ġseen Execution Section ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). range ( st ). create () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġseen Execution Section Ġ= Ġst . section Keyword !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }