2626
2727# Bidirectional formatting characters that can be used to obfuscate tool names
2828BIDIRECTIONAL_FORMATTING_CHARS = {
29- '' , # LEFT-TO-RIGHT MARK
30- '' , # RIGHT-TO-LEFT MARK
Hidden Unicode 31- '' , # LEFT-TO-RIGHT EMBEDDING
Hidden Unicode 32- '' , # RIGHT-TO-LEFT EMBEDDING
Hidden Unicode 33- '' , # POP DIRECTIONAL FORMATTING
Hidden Unicode 34- '' , # LEFT-TO-RIGHT OVERRIDE
Hidden Unicode 35- '' , # RIGHT-TO-LEFT OVERRIDE
Hidden Unicode 36- '' , # LEFT-TO-RIGHT ISOLATE
Hidden Unicode 37- '' , # RIGHT-TO-LEFT ISOLATE
Hidden Unicode 38- '' , # FIRST STRONG ISOLATE
Hidden Unicode 39- '' , # POP DIRECTIONAL ISOLATE
40- '' , # ARABIC LETTER MARK
29+ "" , # LEFT-TO-RIGHT MARK
30+ "" , # RIGHT-TO-LEFT MARK
Hidden Unicode 31+ "" , # LEFT-TO-RIGHT EMBEDDING
Hidden Unicode 32+ "" , # RIGHT-TO-LEFT EMBEDDING
Hidden Unicode 33+ "" , # POP DIRECTIONAL FORMATTING
Hidden Unicode 34+ "" , # LEFT-TO-RIGHT OVERRIDE
Hidden Unicode 35+ "" , # RIGHT-TO-LEFT OVERRIDE
Hidden Unicode 36+ "" , # LEFT-TO-RIGHT ISOLATE
Hidden Unicode 37+ "" , # RIGHT-TO-LEFT ISOLATE
Hidden Unicode 38+ "" , # FIRST STRONG ISOLATE
Hidden Unicode 39+ "" , # POP DIRECTIONAL ISOLATE
40+ "" , # ARABIC LETTER MARK
4141}
4242
4343
@@ -92,7 +92,7 @@ def validate_tool_name(name: str) -> ToolNameValidationResult:
9292 # NFKC is the compatibility normalization form that converts:
9393 # - Fullwidth characters to ASCII (a → a)
9494 # - Composed characters to canonical form
95- normalized = unicodedata .normalize (' NFKC' , name )
95+ normalized = unicodedata .normalize (" NFKC" , name )
9696 if normalized != name :
9797 warnings .append (
9898 f"Tool name contains Unicode characters that normalize to a different form. "
0 commit comments