defapply_pattern(pattern:str,current:str)->bool:"""Apply a pattern to a routing key."""pattern_queue=iter(pattern.split("."))current_queue=iter(current.split("."))pattern_symb=next(pattern_queue,None)whilepattern_symb:if(next_symb:=next(current_queue,None))isNone:returnFalseelifpattern_symb=="#":next_pattern=next(pattern_queue,None)ifnext_patternisNone:returnTrueif(next_symb:=next(current_queue,None))isNone:returnFalsewhilenext_pattern=="*":next_pattern=next(pattern_queue,None)if(next_symb:=next(current_queue,None))isNone:returnFalsewhilenext_symb!=next_pattern:if(next_symb:=next(current_queue,None))isNone:returnFalsepattern_symb=next(pattern_queue,None)elifpattern_symb=="*"orpattern_symb==next_symb:pattern_symb=next(pattern_queue,None)else:returnFalsereturnnext(current_queue,None)isNone