diff --git a/bittensor_cli/src/__init__.py b/bittensor_cli/src/__init__.py index 9cd290417..6ffebe864 100644 --- a/bittensor_cli/src/__init__.py +++ b/bittensor_cli/src/__init__.py @@ -168,471 +168,446 @@ class WalletValidationTypes(Enum): } UNITS = [ - # Greek Alphabet (0-24) - "\u03c4", # τ (tau, 0) - "\u03b1", # α (alpha, 1) - "\u03b2", # β (beta, 2) - "\u03b3", # γ (gamma, 3) - "\u03b4", # δ (delta, 4) - "\u03b5", # ε (epsilon, 5) - "\u03b6", # ζ (zeta, 6) - "\u03b7", # η (eta, 7) - "\u03b8", # θ (theta, 8) - "\u03b9", # ι (iota, 9) - "\u03ba", # κ (kappa, 10) - "\u03bb", # λ (lambda, 11) - "\u03bc", # μ (mu, 12) - "\u03bd", # ν (nu, 13) - "\u03be", # ξ (xi, 14) - "\u03bf", # ο (omicron, 15) - "\u03c0", # π (pi, 16) - "\u03c1", # ρ (rho, 17) - "\u03c3", # σ (sigma, 18) - "t", # t (tau, 19) - "\u03c5", # υ (upsilon, 20) - "\u03c6", # φ (phi, 21) - "\u03c7", # χ (chi, 22) - "\u03c8", # ψ (psi, 23) - "\u03c9", # ω (omega, 24) - # Hebrew Alphabet (25-51) - "\u05d0", # א (aleph, 25) - "\u05d1", # ב (bet, 26) - "\u05d2", # ג (gimel, 27) - "\u05d3", # ד (dalet, 28) - "\u05d4", # ה (he, 29) - "\u05d5", # ו (vav, 30) - "\u05d6", # ז (zayin, 31) - "\u05d7", # ח (het, 32) - "\u05d8", # ט (tet, 33) - "\u05d9", # י (yod, 34) - "\u05da", # ך (final kaf, 35) - "\u05db", # כ (kaf, 36) - "\u05dc", # ל (lamed, 37) - "\u05dd", # ם (final mem, 38) - "\u05de", # מ (mem, 39) - "\u05df", # ן (final nun, 40) - "\u05e0", # נ (nun, 41) - "\u05e1", # ס (samekh, 42) - "\u05e2", # ע (ayin, 43) - "\u05e3", # ף (final pe, 44) - "\u05e4", # פ (pe, 45) - "\u05e5", # ץ (final tsadi, 46) - "\u05e6", # צ (tsadi, 47) - "\u05e7", # ק (qof, 48) - "\u05e8", # ר (resh, 49) - "\u05e9", # ש (shin, 50) - "\u05ea", # ת (tav, 51) - # Arabic Alphabet (52-81) - "\u0627", # ا (alif, 52) - "\u0628", # ب (ba, 53) - "\u062a", # ت (ta, 54) - "\u062b", # ث (tha, 55) - "\u062c", # ج (jeem, 56) - "\u062d", # ح (ha, 57) - "\u062e", # خ (kha, 58) - "\u062f", # د (dal, 59) - "\u0630", # ذ (dhal, 60) - "\u0631", # ر (ra, 61) - "\u0632", # ز (zay, 62) - "\u0633", # س (seen, 63) - "\u0634", # ش (sheen, 64) - "\u0635", # ص (sad, 65) - "\u0636", # ض (dad, 66) - "\u0637", # ط (ta, 67) - "\u0638", # ظ (dha, 68) - "\u0639", # ع (ain, 69) - "\u063a", # غ (ghain, 70) - "\u0641", # ف (fa, 71) - "\u0642", # ق (qaf, 72) - "\u0643", # ك (kaf, 73) - "\u0644", # ل (lam, 74) - "\u0645", # م (meem, 75) - "\u0646", # ن (noon, 76) - "\u0647", # ه (ha, 77) - "\u0648", # و (waw, 78) - "\u064a", # ي (ya, 79) - "\u0649", # ى (alef maksura, 80) - "\u064a", # ي (ya, 81) - # Runic Alphabet (82-90) - "\u16a0", # ᚠ (fehu, 82) - "\u16a2", # ᚢ (uruz, 83) - "\u16a6", # ᚦ (thurisaz, 84) - "\u16a8", # ᚨ (ansuz, 85) - "\u16b1", # ᚱ (raidho, 86) - "\u16b3", # ᚲ (kaunan, 87) - "\u16c7", # ᛇ (eihwaz, 88) - "\u16c9", # ᛉ (algiz, 89) - "\u16d2", # ᛒ (berkanan, 90) - # Ogham Alphabet (91-97) - "\u1680", #   (Space, 91) - "\u1681", # ᚁ (Beith, 92) - "\u1682", # ᚂ (Luis, 93) - "\u1683", # ᚃ (Fearn, 94) - "\u1684", # ᚄ (Sail, 95) - "\u1685", # ᚅ (Nion, 96) - "\u169b", # ᚛ (Forfeda, 97) - # Georgian Alphabet (98-103) - "\u10d0", # ა (ani, 98) - "\u10d1", # ბ (bani, 99) - "\u10d2", # გ (gani, 100) - "\u10d3", # დ (doni, 101) - "\u10d4", # ე (eni, 102) - "\u10d5", # ვ (vini, 103) - # Armenian Alphabet (104-110) - "\u0531", # Ա (Ayp, 104) - "\u0532", # Բ (Ben, 105) - "\u0533", # Գ (Gim, 106) - "\u0534", # Դ (Da, 107) - "\u0535", # Ե (Ech, 108) - "\u0536", # Զ (Za, 109) - "\u055e", # ՞ (Question mark, 110) - # Cyrillic Alphabet (111-116) - "\u0400", # Ѐ (Ie with grave, 111) - "\u0401", # Ё (Io, 112) - "\u0402", # Ђ (Dje, 113) - "\u0403", # Ѓ (Gje, 114) - "\u0404", # Є (Ukrainian Ie, 115) - "\u0405", # Ѕ (Dze, 116) - # Coptic Alphabet (117-122) - "\u2c80", # Ⲁ (Alfa, 117) - "\u2c81", # ⲁ (Small Alfa, 118) - "\u2c82", # Ⲃ (Vida, 119) - "\u2c83", # ⲃ (Small Vida, 120) - "\u2c84", # Ⲅ (Gamma, 121) - "\u2c85", # ⲅ (Small Gamma, 122) - # Brahmi Script (123-127) - "\U00011000", # 𑀀 (A, 123) - "\U00011001", # 𑀁 (Aa, 124) - "\U00011002", # 𑀂 (I, 125) - "\U00011003", # 𑀃 (Ii, 126) - "\U00011005", # 𑀅 (U, 127) - # Tifinagh Alphabet (128-133) - "\u2d30", # ⴰ (Ya, 128) - "\u2d31", # ⴱ (Yab, 129) - "\u2d32", # ⴲ (Yabh, 130) - "\u2d33", # ⴳ (Yag, 131) - "\u2d34", # ⴴ (Yagh, 132) - "\u2d35", # ⴵ (Yaj, 133) - # Glagolitic Alphabet (134-166) - "\u2c00", # Ⰰ (Az, 134) - "\u2c01", # Ⰱ (Buky, 135) - "\u2c02", # Ⰲ (Vede, 136) - "\u2c03", # Ⰳ (Glagoli, 137) - "\u2c04", # Ⰴ (Dobro, 138) - "\u2c05", # Ⰵ (Yest, 139) - "\u2c06", # Ⰶ (Zhivete, 140) - "\u2c07", # Ⰷ (Zemlja, 141) - "\u2c08", # Ⰸ (Izhe, 142) - "\u2c09", # Ⰹ (Initial Izhe, 143) - "\u2c0a", # Ⰺ (I, 144) - "\u2c0b", # Ⰻ (Djerv, 145) - "\u2c0c", # Ⰼ (Kako, 146) - "\u2c0d", # Ⰽ (Ljudije, 147) - "\u2c0e", # Ⰾ (Myse, 148) - "\u2c0f", # Ⰿ (Nash, 149) - "\u2c10", # Ⱀ (On, 150) - "\u2c11", # Ⱁ (Pokoj, 151) - "\u2c12", # Ⱂ (Rtsy, 152) - "\u2c13", # Ⱃ (Slovo, 153) - "\u2c14", # Ⱄ (Tvrido, 154) - "\u2c15", # Ⱅ (Uku, 155) - "\u2c16", # Ⱆ (Fert, 156) - "\u2c17", # Ⱇ (Xrivi, 157) - "\u2c18", # Ⱈ (Ot, 158) - "\u2c19", # Ⱉ (Cy, 159) - "\u2c1a", # Ⱊ (Shcha, 160) - "\u2c1b", # Ⱋ (Er, 161) - "\u2c1c", # Ⱌ (Yeru, 162) - "\u2c1d", # Ⱍ (Small Yer, 163) - "\u2c1e", # Ⱎ (Yo, 164) - "\u2c1f", # Ⱏ (Yu, 165) - "\u2c20", # Ⱐ (Ja, 166) - # Thai Alphabet (167-210) - "\u0e01", # ก (Ko Kai, 167) - "\u0e02", # ข (Kho Khai, 168) - "\u0e03", # ฃ (Kho Khuat, 169) - "\u0e04", # ค (Kho Khon, 170) - "\u0e05", # ฅ (Kho Rakhang, 171) - "\u0e06", # ฆ (Kho Khwai, 172) - "\u0e07", # ง (Ngo Ngu, 173) - "\u0e08", # จ (Cho Chan, 174) - "\u0e09", # ฉ (Cho Ching, 175) - "\u0e0a", # ช (Cho Chang, 176) - "\u0e0b", # ซ (So So, 177) - "\u0e0c", # ฌ (Cho Choe, 178) - "\u0e0d", # ญ (Yo Ying, 179) - "\u0e0e", # ฎ (Do Chada, 180) - "\u0e0f", # ฏ (To Patak, 181) - "\u0e10", # ฐ (Tho Than, 182) - "\u0e11", # ฑ (Tho Nangmontho, 183) - "\u0e12", # ฒ (Tho Phuthao, 184) - "\u0e13", # ณ (No Nen, 185) - "\u0e14", # ด (Do Dek, 186) - "\u0e15", # ต (To Tao, 187) - "\u0e16", # ถ (Tho Thung, 188) - "\u0e17", # ท (Tho Thahan, 189) - "\u0e18", # ธ (Tho Thong, 190) - "\u0e19", # น (No Nu, 191) - "\u0e1a", # บ (Bo Baimai, 192) - "\u0e1b", # ป (Po Pla, 193) - "\u0e1c", # ผ (Pho Phung, 194) - "\u0e1d", # ฝ (Fo Fa, 195) - "\u0e1e", # พ (Pho Phan, 196) - "\u0e1f", # ฟ (Fo Fan, 197) - "\u0e20", # ภ (Pho Samphao, 198) - "\u0e21", # ม (Mo Ma, 199) - "\u0e22", # ย (Yo Yak, 200) - "\u0e23", # ร (Ro Rua, 201) - "\u0e25", # ล (Lo Ling, 202) - "\u0e27", # ว (Wo Waen, 203) - "\u0e28", # ศ (So Sala, 204) - "\u0e29", # ษ (So Rusi, 205) - "\u0e2a", # ส (So Sua, 206) - "\u0e2b", # ห (Ho Hip, 207) - "\u0e2c", # ฬ (Lo Chula, 208) - "\u0e2d", # อ (O Ang, 209) - "\u0e2e", # ฮ (Ho Nokhuk, 210) - # Hangul Consonants (211-224) - "\u1100", # ㄱ (Giyeok, 211) - "\u1101", # ㄴ (Nieun, 212) - "\u1102", # ㄷ (Digeut, 213) - "\u1103", # ㄹ (Rieul, 214) - "\u1104", # ㅁ (Mieum, 215) - "\u1105", # ㅂ (Bieup, 216) - "\u1106", # ㅅ (Siot, 217) - "\u1107", # ㅇ (Ieung, 218) - "\u1108", # ㅈ (Jieut, 219) - "\u1109", # ㅊ (Chieut, 220) - "\u110a", # ㅋ (Kieuk, 221) - "\u110b", # ㅌ (Tieut, 222) - "\u110c", # ㅍ (Pieup, 223) - "\u110d", # ㅎ (Hieut, 224) - # Hangul Vowels (225-245) - "\u1161", # ㅏ (A, 225) - "\u1162", # ㅐ (Ae, 226) - "\u1163", # ㅑ (Ya, 227) - "\u1164", # ㅒ (Yae, 228) - "\u1165", # ㅓ (Eo, 229) - "\u1166", # ㅔ (E, 230) - "\u1167", # ㅕ (Yeo, 231) - "\u1168", # ㅖ (Ye, 232) - "\u1169", # ㅗ (O, 233) - "\u116a", # ㅘ (Wa, 234) - "\u116b", # ㅙ (Wae, 235) - "\u116c", # ㅚ (Oe, 236) - "\u116d", # ㅛ (Yo, 237) - "\u116e", # ㅜ (U, 238) - "\u116f", # ㅝ (Weo, 239) - "\u1170", # ㅞ (We, 240) - "\u1171", # ㅟ (Wi, 241) - "\u1172", # ㅠ (Yu, 242) - "\u1173", # ㅡ (Eu, 243) - "\u1174", # ㅢ (Ui, 244) - "\u1175", # ㅣ (I, 245) - # Ethiopic Alphabet (246-274) - "\u12a0", # አ (Glottal A, 246) - "\u12a1", # ኡ (Glottal U, 247) - "\u12a2", # ኢ (Glottal I, 248) - "\u12a3", # ኣ (Glottal Aa, 249) - "\u12a4", # ኤ (Glottal E, 250) - "\u12a5", # እ (Glottal Ie, 251) - "\u12a6", # ኦ (Glottal O, 252) - "\u12a7", # ኧ (Glottal Wa, 253) - "\u12c8", # ወ (Wa, 254) - "\u12c9", # ዉ (Wu, 255) - "\u12ca", # ዊ (Wi, 256) - "\u12cb", # ዋ (Waa, 257) - "\u12cc", # ዌ (We, 258) - "\u12cd", # ው (Wye, 259) - "\u12ce", # ዎ (Wo, 260) - "\u12b0", # ኰ (Ko, 261) - "\u12b1", # ኱ (Ku, 262) - "\u12b2", # ኲ (Ki, 263) - "\u12b3", # ኳ (Kua, 264) - "\u12b4", # ኴ (Ke, 265) - "\u12b5", # ኵ (Kwe, 266) - "\u12b6", # ኶ (Ko, 267) - "\u12a0", # ጐ (Go, 268) - "\u12a1", # ጑ (Gu, 269) - "\u12a2", # ጒ (Gi, 270) - "\u12a3", # መ (Gua, 271) - "\u12a4", # ጔ (Ge, 272) - "\u12a5", # ጕ (Gwe, 273) - "\u12a6", # ጖ (Go, 274) - # Devanagari Alphabet (275-318) - "\u0905", # अ (A, 275) - "\u0906", # आ (Aa, 276) - "\u0907", # इ (I, 277) - "\u0908", # ई (Ii, 278) - "\u0909", # उ (U, 279) - "\u090a", # ऊ (Uu, 280) - "\u090b", # ऋ (R, 281) - "\u090f", # ए (E, 282) - "\u0910", # ऐ (Ai, 283) - "\u0913", # ओ (O, 284) - "\u0914", # औ (Au, 285) - "\u0915", # क (Ka, 286) - "\u0916", # ख (Kha, 287) - "\u0917", # ग (Ga, 288) - "\u0918", # घ (Gha, 289) - "\u0919", # ङ (Nga, 290) - "\u091a", # च (Cha, 291) - "\u091b", # छ (Chha, 292) - "\u091c", # ज (Ja, 293) - "\u091d", # झ (Jha, 294) - "\u091e", # ञ (Nya, 295) - "\u091f", # ट (Ta, 296) - "\u0920", # ठ (Tha, 297) - "\u0921", # ड (Da, 298) - "\u0922", # ढ (Dha, 299) - "\u0923", # ण (Na, 300) - "\u0924", # त (Ta, 301) - "\u0925", # थ (Tha, 302) - "\u0926", # द (Da, 303) - "\u0927", # ध (Dha, 304) - "\u0928", # न (Na, 305) - "\u092a", # प (Pa, 306) - "\u092b", # फ (Pha, 307) - "\u092c", # ब (Ba, 308) - "\u092d", # भ (Bha, 309) - "\u092e", # म (Ma, 310) - "\u092f", # य (Ya, 311) - "\u0930", # र (Ra, 312) - "\u0932", # ल (La, 313) - "\u0935", # व (Va, 314) - "\u0936", # श (Sha, 315) - "\u0937", # ष (Ssa, 316) - "\u0938", # स (Sa, 317) - "\u0939", # ह (Ha, 318) - # Katakana Alphabet (319-364) - "\u30a2", # ア (A, 319) - "\u30a4", # イ (I, 320) - "\u30a6", # ウ (U, 321) - "\u30a8", # エ (E, 322) - "\u30aa", # オ (O, 323) - "\u30ab", # カ (Ka, 324) - "\u30ad", # キ (Ki, 325) - "\u30af", # ク (Ku, 326) - "\u30b1", # ケ (Ke, 327) - "\u30b3", # コ (Ko, 328) - "\u30b5", # サ (Sa, 329) - "\u30b7", # シ (Shi, 330) - "\u30b9", # ス (Su, 331) - "\u30bb", # セ (Se, 332) - "\u30bd", # ソ (So, 333) - "\u30bf", # タ (Ta, 334) - "\u30c1", # チ (Chi, 335) - "\u30c4", # ツ (Tsu, 336) - "\u30c6", # テ (Te, 337) - "\u30c8", # ト (To, 338) - "\u30ca", # ナ (Na, 339) - "\u30cb", # ニ (Ni, 340) - "\u30cc", # ヌ (Nu, 341) - "\u30cd", # ネ (Ne, 342) - "\u30ce", # ノ (No, 343) - "\u30cf", # ハ (Ha, 344) - "\u30d2", # ヒ (Hi, 345) - "\u30d5", # フ (Fu, 346) - "\u30d8", # ヘ (He, 347) - "\u30db", # ホ (Ho, 348) - "\u30de", # マ (Ma, 349) - "\u30df", # ミ (Mi, 350) - "\u30e0", # ム (Mu, 351) - "\u30e1", # メ (Me, 352) - "\u30e2", # モ (Mo, 353) - "\u30e4", # ヤ (Ya, 354) - "\u30e6", # ユ (Yu, 355) - "\u30e8", # ヨ (Yo, 356) - "\u30e9", # ラ (Ra, 357) - "\u30ea", # リ (Ri, 358) - "\u30eb", # ル (Ru, 359) - "\u30ec", # レ (Re, 360) - "\u30ed", # ロ (Ro, 361) - "\u30ef", # ワ (Wa, 362) - "\u30f2", # ヲ (Wo, 363) - "\u30f3", # ン (N, 364) - # Tifinagh Alphabet (365-400) - "\u2d30", # ⴰ (Ya, 365) - "\u2d31", # ⴱ (Yab, 366) - "\u2d32", # ⴲ (Yabh, 367) - "\u2d33", # ⴳ (Yag, 368) - "\u2d34", # ⴴ (Yagh, 369) - "\u2d35", # ⴵ (Yaj, 370) - "\u2d36", # ⴶ (Yach, 371) - "\u2d37", # ⴷ (Yad, 372) - "\u2d38", # ⴸ (Yadh, 373) - "\u2d39", # ⴹ (Yadh, emphatic, 374) - "\u2d3a", # ⴺ (Yaz, 375) - "\u2d3b", # ⴻ (Yazh, 376) - "\u2d3c", # ⴼ (Yaf, 377) - "\u2d3d", # ⴽ (Yak, 378) - "\u2d3e", # ⴾ (Yak, variant, 379) - "\u2d3f", # ⴿ (Yaq, 380) - "\u2d40", # ⵀ (Yah, 381) - "\u2d41", # ⵁ (Yahh, 382) - "\u2d42", # ⵂ (Yahl, 383) - "\u2d43", # ⵃ (Yahm, 384) - "\u2d44", # ⵄ (Yayn, 385) - "\u2d45", # ⵅ (Yakh, 386) - "\u2d46", # ⵆ (Yakl, 387) - "\u2d47", # ⵇ (Yahq, 388) - "\u2d48", # ⵈ (Yash, 389) - "\u2d49", # ⵉ (Yi, 390) - "\u2d4a", # ⵊ (Yij, 391) - "\u2d4b", # ⵋ (Yizh, 392) - "\u2d4c", # ⵌ (Yink, 393) - "\u2d4d", # ⵍ (Yal, 394) - "\u2d4e", # ⵎ (Yam, 395) - "\u2d4f", # ⵏ (Yan, 396) - "\u2d50", # ⵐ (Yang, 397) - "\u2d51", # ⵑ (Yany, 398) - "\u2d52", # ⵒ (Yap, 399) - "\u2d53", # ⵓ (Yu, 400) - # Sinhala Alphabet (401-444) - "\u0d85", # අ (A, 401) - "\u0d86", # ආ (Aa, 402) - "\u0d87", # ඉ (I, 403) - "\u0d88", # ඊ (Ii, 404) - "\u0d89", # උ (U, 405) - "\u0d8a", # ඌ (Uu, 406) - "\u0d8b", # ඍ (R, 407) - "\u0d8c", # ඎ (Rr, 408) - "\u0d8f", # ඏ (L, 409) - "\u0d90", # ඐ (Ll, 410) - "\u0d91", # එ (E, 411) - "\u0d92", # ඒ (Ee, 412) - "\u0d93", # ඓ (Ai, 413) - "\u0d94", # ඔ (O, 414) - "\u0d95", # ඕ (Oo, 415) - "\u0d96", # ඖ (Au, 416) - "\u0d9a", # ක (Ka, 417) - "\u0d9b", # ඛ (Kha, 418) - "\u0d9c", # ග (Ga, 419) - "\u0d9d", # ඝ (Gha, 420) - "\u0d9e", # ඞ (Nga, 421) - "\u0d9f", # ච (Cha, 422) - "\u0da0", # ඡ (Chha, 423) - "\u0da1", # ජ (Ja, 424) - "\u0da2", # ඣ (Jha, 425) - "\u0da3", # ඤ (Nya, 426) - "\u0da4", # ට (Ta, 427) - "\u0da5", # ඥ (Tha, 428) - "\u0da6", # ඦ (Da, 429) - "\u0da7", # ට (Dha, 430) - "\u0da8", # ඨ (Na, 431) - "\u0daa", # ඪ (Pa, 432) - "\u0dab", # ණ (Pha, 433) - "\u0dac", # ඬ (Ba, 434) - "\u0dad", # ත (Bha, 435) - "\u0dae", # ථ (Ma, 436) - "\u0daf", # ද (Ya, 437) - "\u0db0", # ධ (Ra, 438) - "\u0db1", # ඲ (La, 439) - "\u0db2", # ඳ (Va, 440) - "\u0db3", # ප (Sha, 441) - "\u0db4", # ඵ (Ssa, 442) - "\u0db5", # බ (Sa, 443) - "\u0db6", # භ (Ha, 444) + b"\xCE\xA4".decode(), # Τ (Upper case Tau, 0) + b"\xCE\xB1".decode(), # α (Alpha, 1) + b"\xCE\xB2".decode(), # β (Beta, 2) + b"\xCE\xB3".decode(), # γ (Gamma, 3) + b"\xCE\xB4".decode(), # δ (Delta, 4) + b"\xCE\xB5".decode(), # ε (Epsilon, 5) + b"\xCE\xB6".decode(), # ζ (Zeta, 6) + b"\xCE\xB7".decode(), # η (Eta, 7) + b"\xCE\xB8".decode(), # θ (Theta, 8) + b"\xCE\xB9".decode(), # ι (Iota, 9) + b"\xCE\xBA".decode(), # κ (Kappa, 10) + b"\xCE\xBB".decode(), # λ (Lambda, 11) + b"\xCE\xBC".decode(), # μ (Mu, 12) + b"\xCE\xBD".decode(), # ν (Nu, 13) + b"\xCE\xBE".decode(), # ξ (Xi, 14) + b"\xCE\xBF".decode(), # ο (Omicron, 15) + b"\xCF\x80".decode(), # π (Pi, 16) + b"\xCF\x81".decode(), # ρ (Rho, 17) + b"\xCF\x83".decode(), # σ (Sigma, 18) + "t", # t (Tau, 19) + b"\xCF\x85".decode(), # υ (Upsilon, 20) + b"\xCF\x86".decode(), # φ (Phi, 21) + b"\xCF\x87".decode(), # χ (Chi, 22) + b"\xCF\x88".decode(), # ψ (Psi, 23) + b"\xCF\x89".decode(), # ω (Omega, 24) + b"\xD7\x90".decode(), # א (Aleph, 25) + b"\xD7\x91".decode(), # ב (Bet, 26) + b"\xD7\x92".decode(), # ג (Gimel, 27) + b"\xD7\x93".decode(), # ד (Dalet, 28) + b"\xD7\x94".decode(), # ה (He, 29) + b"\xD7\x95".decode(), # ו (Vav, 30) + b"\xD7\x96".decode(), # ז (Zayin, 31) + b"\xD7\x97".decode(), # ח (Het, 32) + b"\xD7\x98".decode(), # ט (Tet, 33) + b"\xD7\x99".decode(), # י (Yod, 34) + b"\xD7\x9A".decode(), # ך (Final Kaf, 35) + b"\xD7\x9B".decode(), # כ (Kaf, 36) + b"\xD7\x9C".decode(), # ל (Lamed, 37) + b"\xD7\x9D".decode(), # ם (Final Mem, 38) + b"\xD7\x9E".decode(), # מ (Mem, 39) + b"\xD7\x9F".decode(), # ן (Final Nun, 40) + b"\xD7\xA0".decode(), # נ (Nun, 41) + b"\xD7\xA1".decode(), # ס (Samekh, 42) + b"\xD7\xA2".decode(), # ע (Ayin, 43) + b"\xD7\xA3".decode(), # ף (Final Pe, 44) + b"\xD7\xA4".decode(), # פ (Pe, 45) + b"\xD7\xA5".decode(), # ץ (Final Tsadi, 46) + b"\xD7\xA6".decode(), # צ (Tsadi, 47) + b"\xD7\xA7".decode(), # ק (Qof, 48) + b"\xD7\xA8".decode(), # ר (Resh, 49) + b"\xD7\xA9".decode(), # ש (Shin, 50) + b"\xD7\xAA".decode(), # ת (Tav, 51) + b"\xD8\xA7".decode(), # ا (Alif, 52) + b"\xD8\xA8".decode(), # ب (Ba, 53) + b"\xD8\xAA".decode(), # ت (Ta, 54) + b"\xD8\xAB".decode(), # ث (Tha, 55) + b"\xD8\xAC".decode(), # ج (Jim, 56) + b"\xD8\xAD".decode(), # ح (Ha, 57) + b"\xD8\xAE".decode(), # خ (Kha, 58) + b"\xD8\xAF".decode(), # د (Dal, 59) + b"\xD8\xB0".decode(), # ذ (Dhal, 60) + b"\xD8\xB1".decode(), # ر (Ra, 61) + b"\xD8\xB2".decode(), # ز (Zay, 62) + b"\xD8\xB3".decode(), # س (Sin, 63) + b"\xD8\xB4".decode(), # ش (Shin, 64) + b"\xD8\xB5".decode(), # ص (Sad, 65) + b"\xD8\xB6".decode(), # ض (Dad, 66) + b"\xD8\xB7".decode(), # ط (Ta, 67) + b"\xD8\xB8".decode(), # ظ (Dha, 68) + b"\xD8\xB9".decode(), # ع (Ain, 69) + b"\xD8\xBA".decode(), # غ (Ghayn, 70) + b"\xD9\x81".decode(), # ف (Fa, 71) + b"\xD9\x82".decode(), # ق (Qaf, 72) + b"\xD9\x83".decode(), # ك (Kaf, 73) + b"\xD9\x84".decode(), # ل (Lam, 74) + b"\xD9\x85".decode(), # م (Mim, 75) + b"\xD9\x86".decode(), # ن (Nun, 76) + b"\xD9\x87".decode(), # ه (Ha, 77) + b"\xD9\x88".decode(), # و (Waw, 78) + b"\xD9\x8A".decode(), # ي (Ya, 79) + b"\xD9\x89".decode(), # ى (Alef Maksura, 80) + b"\xE1\x9A\xA0".decode(), # ᚠ (Fehu, wealth, 81) + b"\xE1\x9A\xA2".decode(), # ᚢ (Uruz, strength, 82) + b"\xE1\x9A\xA6".decode(), # ᚦ (Thurisaz, giant, 83) + b"\xE1\x9A\xA8".decode(), # ᚨ (Ansuz, god, 84) + b"\xE1\x9A\xB1".decode(), # ᚱ (Raidho, ride, 85) + b"\xE1\x9A\xB3".decode(), # ᚲ (Kaunan, ulcer, 86) + b"\xD0\xAB".decode(), # Ы (Cyrillic Yeru, 87) + b"\xE1\x9B\x89".decode(), # ᛉ (Algiz, protection, 88) + b"\xE1\x9B\x92".decode(), # ᛒ (Berkanan, birch, 89) + b"\xE1\x9A\x80".decode(), #   (Space, 90) + b"\xE1\x9A\x81".decode(), # ᚁ (Beith, birch, 91) + b"\xE1\x9A\x82".decode(), # ᚂ (Luis, rowan, 92) + b"\xE1\x9A\x83".decode(), # ᚃ (Fearn, alder, 93) + b"\xE1\x9A\x84".decode(), # ᚄ (Sail, willow, 94) + b"\xE1\x9A\x85".decode(), # ᚅ (Nion, ash, 95) + b"\xE1\x9A\x9B".decode(), # ᚛ (Forfeda, 96) + b"\xE1\x83\x90".decode(), # ა (Ani, 97) + b"\xE1\x83\x91".decode(), # ბ (Bani, 98) + b"\xE1\x83\x92".decode(), # გ (Gani, 99) + b"\xE1\x83\x93".decode(), # დ (Doni, 100) + b"\xE1\x83\x94".decode(), # ე (Eni, 101) + b"\xE1\x83\x95".decode(), # ვ (Vini, 102) + b"\xD4\xB1".decode(), # Ա (Ayp, 103) + b"\xD4\xB2".decode(), # Բ (Ben, 104) + b"\xD4\xB3".decode(), # Գ (Gim, 105) + b"\xD4\xB4".decode(), # Դ (Da, 106) + b"\xD4\xB5".decode(), # Ե (Ech, 107) + b"\xD4\xB6".decode(), # Զ (Za, 108) + b"\xD5\x9E".decode(), # ՞ (Question mark, 109) + b"\xD0\x80".decode(), # Ѐ (Ie with grave, 110) + b"\xD0\x81".decode(), # Ё (Io, 111) + b"\xD0\x82".decode(), # Ђ (Dje, 112) + b"\xD0\x83".decode(), # Ѓ (Gje, 113) + b"\xD0\x84".decode(), # Є (Ukrainian Ie, 114) + b"\xD0\x85".decode(), # Ѕ (Dze, 115) + b"\xD1\x8A".decode(), # Ъ (Hard sign, 116) + b"\xE2\xB2\x80".decode(), # Ⲁ (Alfa, 117) + b"\xE2\xB2\x81".decode(), # ⲁ (Small Alfa, 118) + b"\xE2\xB2\x82".decode(), # Ⲃ (Vida, 119) + b"\xE2\xB2\x83".decode(), # ⲃ (Small Vida, 120) + b"\xE2\xB2\x84".decode(), # Ⲅ (Gamma, 121) + b"\xE2\xB2\x85".decode(), # ⲅ (Small Gamma, 122) + b"\xF0\x91\x80\x80".decode(), # 𑀀 (A, 123) + b"\xF0\x91\x80\x81".decode(), # 𑀁 (Aa, 124) + b"\xF0\x91\x80\x82".decode(), # 𑀂 (I, 125) + b"\xF0\x91\x80\x83".decode(), # 𑀃 (Ii, 126) + b"\xF0\x91\x80\x85".decode(), # 𑀅 (U, 127) + b"\xE0\xB6\xB1".decode(), # ඲ (La, 128) + b"\xE0\xB6\xB2".decode(), # ඳ (Va, 129) + b"\xE0\xB6\xB3".decode(), # ප (Sha, 130) + b"\xE0\xB6\xB4".decode(), # ඵ (Ssa, 131) + b"\xE0\xB6\xB5".decode(), # බ (Sa, 132) + b"\xE0\xB6\xB6".decode(), # භ (Ha, 133) + b"\xE2\xB0\x80".decode(), # Ⰰ (Az, 134) + b"\xE2\xB0\x81".decode(), # Ⰱ (Buky, 135) + b"\xE2\xB0\x82".decode(), # Ⰲ (Vede, 136) + b"\xE2\xB0\x83".decode(), # Ⰳ (Glagoli, 137) + b"\xE2\xB0\x84".decode(), # Ⰴ (Dobro, 138) + b"\xE2\xB0\x85".decode(), # Ⰵ (Yest, 139) + b"\xE2\xB0\x86".decode(), # Ⰶ (Zhivete, 140) + b"\xE2\xB0\x87".decode(), # Ⰷ (Zemlja, 141) + b"\xE2\xB0\x88".decode(), # Ⰸ (Izhe, 142) + b"\xE2\xB0\x89".decode(), # Ⰹ (Initial Izhe, 143) + b"\xE2\xB0\x8A".decode(), # Ⰺ (I, 144) + b"\xE2\xB0\x8B".decode(), # Ⰻ (Djerv, 145) + b"\xE2\xB0\x8C".decode(), # Ⰼ (Kako, 146) + b"\xE2\xB0\x8D".decode(), # Ⰽ (Ljudije, 147) + b"\xE2\xB0\x8E".decode(), # Ⰾ (Myse, 148) + b"\xE2\xB0\x8F".decode(), # Ⰿ (Nash, 149) + b"\xE2\xB0\x90".decode(), # Ⱀ (On, 150) + b"\xE2\xB0\x91".decode(), # Ⱁ (Pokoj, 151) + b"\xE2\xB0\x92".decode(), # Ⱂ (Rtsy, 152) + b"\xE2\xB0\x93".decode(), # Ⱃ (Slovo, 153) + b"\xE2\xB0\x94".decode(), # Ⱄ (Tvrido, 154) + b"\xE2\xB0\x95".decode(), # Ⱅ (Uku, 155) + b"\xE2\xB0\x96".decode(), # Ⱆ (Fert, 156) + b"\xE2\xB0\x97".decode(), # Ⱇ (Xrivi, 157) + b"\xE2\xB0\x98".decode(), # Ⱈ (Ot, 158) + b"\xE2\xB0\x99".decode(), # Ⱉ (Cy, 159) + b"\xE2\xB0\x9A".decode(), # Ⱊ (Shcha, 160) + b"\xE2\xB0\x9B".decode(), # Ⱋ (Er, 161) + b"\xE2\xB0\x9C".decode(), # Ⱌ (Yeru, 162) + b"\xE2\xB0\x9D".decode(), # Ⱍ (Small Yer, 163) + b"\xE2\xB0\x9E".decode(), # Ⱎ (Yo, 164) + b"\xE2\xB0\x9F".decode(), # Ⱏ (Yu, 165) + b"\xE2\xB0\xA0".decode(), # Ⱐ (Ja, 166) + b"\xE0\xB8\x81".decode(), # ก (Ko Kai, 167) + b"\xE0\xB8\x82".decode(), # ข (Kho Khai, 168) + b"\xE0\xB8\x83".decode(), # ฃ (Kho Khuat, 169) + b"\xE0\xB8\x84".decode(), # ค (Kho Khon, 170) + b"\xE0\xB8\x85".decode(), # ฅ (Kho Rakhang, 171) + b"\xE0\xB8\x86".decode(), # ฆ (Kho Khwai, 172) + b"\xE0\xB8\x87".decode(), # ง (Ngo Ngu, 173) + b"\xE0\xB8\x88".decode(), # จ (Cho Chan, 174) + b"\xE0\xB8\x89".decode(), # ฉ (Cho Ching, 175) + b"\xE0\xB8\x8A".decode(), # ช (Cho Chang, 176) + b"\xE0\xB8\x8B".decode(), # ซ (So So, 177) + b"\xE0\xB8\x8C".decode(), # ฌ (Cho Choe, 178) + b"\xE0\xB8\x8D".decode(), # ญ (Yo Ying, 179) + b"\xE0\xB8\x8E".decode(), # ฎ (Do Chada, 180) + b"\xE0\xB8\x8F".decode(), # ฏ (To Patak, 181) + b"\xE0\xB8\x90".decode(), # ฐ (Tho Than, 182) + b"\xE0\xB8\x91".decode(), # ฑ (Tho Nangmontho, 183) + b"\xE0\xB8\x92".decode(), # ฒ (Tho Phuthao, 184) + b"\xE0\xB8\x93".decode(), # ณ (No Nen, 185) + b"\xE0\xB8\x94".decode(), # ด (Do Dek, 186) + b"\xE0\xB8\x95".decode(), # ต (To Tao, 187) + b"\xE0\xB8\x96".decode(), # ถ (Tho Thung, 188) + b"\xE0\xB8\x97".decode(), # ท (Tho Thahan, 189) + b"\xE0\xB8\x98".decode(), # ธ (Tho Thong, 190) + b"\xE0\xB8\x99".decode(), # น (No Nu, 191) + b"\xE0\xB8\x9A".decode(), # บ (Bo Baimai, 192) + b"\xE0\xB8\x9B".decode(), # ป (Po Pla, 193) + b"\xE0\xB8\x9C".decode(), # ผ (Pho Phung, 194) + b"\xE0\xB8\x9D".decode(), # ฝ (Fo Fa, 195) + b"\xE0\xB8\x9E".decode(), # พ (Pho Phan, 196) + b"\xE0\xB8\x9F".decode(), # ฟ (Fo Fan, 197) + b"\xE0\xB8\xA0".decode(), # ภ (Pho Samphao, 198) + b"\xE0\xB8\xA1".decode(), # ม (Mo Ma, 199) + b"\xE0\xB8\xA2".decode(), # ย (Yo Yak, 200) + b"\xE0\xB8\xA3".decode(), # ร (Ro Rua, 201) + b"\xE0\xB8\xA5".decode(), # ล (Lo Ling, 202) + b"\xE0\xB8\xA7".decode(), # ว (Wo Waen, 203) + b"\xE0\xB8\xA8".decode(), # ศ (So Sala, 204) + b"\xE0\xB8\xA9".decode(), # ษ (So Rusi, 205) + b"\xE0\xB8\xAA".decode(), # ส (So Sua, 206) + b"\xE0\xB8\xAB".decode(), # ห (Ho Hip, 207) + b"\xE0\xB8\xAC".decode(), # ฬ (Lo Chula, 208) + b"\xE0\xB8\xAD".decode(), # อ (O Ang, 209) + b"\xE0\xB8\xAE".decode(), # ฮ (Ho Nokhuk, 210) + b"\xE1\x84\x80".decode(), # ㄱ (Giyeok, 211) + b"\xE1\x84\x81".decode(), # ㄴ (Nieun, 212) + b"\xE1\x84\x82".decode(), # ㄷ (Digeut, 213) + b"\xE1\x84\x83".decode(), # ㄹ (Rieul, 214) + b"\xE1\x84\x84".decode(), # ㅁ (Mieum, 215) + b"\xE1\x84\x85".decode(), # ㅂ (Bieup, 216) + b"\xE1\x84\x86".decode(), # ㅅ (Siot, 217) + b"\xE1\x84\x87".decode(), # ㅇ (Ieung, 218) + b"\xE1\x84\x88".decode(), # ㅈ (Jieut, 219) + b"\xE1\x84\x89".decode(), # ㅊ (Chieut, 220) + b"\xE1\x84\x8A".decode(), # ㅋ (Kieuk, 221) + b"\xE1\x84\x8B".decode(), # ㅌ (Tieut, 222) + b"\xE1\x84\x8C".decode(), # ㅍ (Pieup, 223) + b"\xE1\x84\x8D".decode(), # ㅎ (Hieut, 224) + b"\xE1\x85\xA1".decode(), # ㅏ (A, 225) + b"\xE1\x85\xA2".decode(), # ㅐ (Ae, 226) + b"\xE1\x85\xA3".decode(), # ㅑ (Ya, 227) + b"\xE1\x85\xA4".decode(), # ㅒ (Yae, 228) + b"\xE1\x85\xA5".decode(), # ㅓ (Eo, 229) + b"\xE1\x85\xA6".decode(), # ㅔ (E, 230) + b"\xE1\x85\xA7".decode(), # ㅕ (Yeo, 231) + b"\xE1\x85\xA8".decode(), # ㅖ (Ye, 232) + b"\xE1\x85\xA9".decode(), # ㅗ (O, 233) + b"\xE1\x85\xAA".decode(), # ㅘ (Wa, 234) + b"\xE1\x85\xAB".decode(), # ㅙ (Wae, 235) + b"\xE1\x85\xAC".decode(), # ㅚ (Oe, 236) + b"\xE1\x85\xAD".decode(), # ㅛ (Yo, 237) + b"\xE1\x85\xAE".decode(), # ㅜ (U, 238) + b"\xE1\x85\xAF".decode(), # ㅝ (Weo, 239) + b"\xE1\x85\xB0".decode(), # ㅞ (We, 240) + b"\xE1\x85\xB1".decode(), # ㅟ (Wi, 241) + b"\xE1\x85\xB2".decode(), # ㅠ (Yu, 242) + b"\xE1\x85\xB3".decode(), # ㅡ (Eu, 243) + b"\xE1\x85\xB4".decode(), # ㅢ (Ui, 244) + b"\xE1\x85\xB5".decode(), # ㅣ (I, 245) + b"\xE1\x8A\xA0".decode(), # አ (Glottal A, 246) + b"\xE1\x8A\xA1".decode(), # ኡ (Glottal U, 247) + b"\xE1\x8A\xA2".decode(), # ኢ (Glottal I, 248) + b"\xE1\x8A\xA3".decode(), # ኣ (Glottal Aa, 249) + b"\xE1\x8A\xA4".decode(), # ኤ (Glottal E, 250) + b"\xE1\x8A\xA5".decode(), # እ (Glottal Ie, 251) + b"\xE1\x8A\xA6".decode(), # ኦ (Glottal O, 252) + b"\xE1\x8A\xA7".decode(), # ኧ (Glottal Wa, 253) + b"\xE1\x8B\x88".decode(), # ወ (Wa, 254) + b"\xE1\x8B\x89".decode(), # ዉ (Wu, 255) + b"\xE1\x8B\x8A".decode(), # ዊ (Wi, 256) + b"\xE1\x8B\x8B".decode(), # ዋ (Waa, 257) + b"\xE1\x8B\x8C".decode(), # ዌ (We, 258) + b"\xE1\x8B\x8D".decode(), # ው (Wye, 259) + b"\xE1\x8B\x8E".decode(), # ዎ (Wo, 260) + b"\xE1\x8A\xB0".decode(), # ኰ (Ko, 261) + b"\xE1\x8A\xB1".decode(), # ኱ (Ku, 262) + b"\xE1\x8A\xB2".decode(), # ኲ (Ki, 263) + b"\xE1\x8A\xB3".decode(), # ኳ (Kua, 264) + b"\xE1\x8A\xB4".decode(), # ኴ (Ke, 265) + b"\xE1\x8A\xB5".decode(), # ኵ (Kwe, 266) + b"\xE1\x8A\xB6".decode(), # ኶ (Ko, 267) + b"\xE1\x8A\x90".decode(), # ጐ (Go, 268) + b"\xE1\x8A\x91".decode(), # ጑ (Gu, 269) + b"\xE1\x8A\x92".decode(), # ጒ (Gi, 270) + b"\xE1\x8A\x93".decode(), # መ (Gua, 271) + b"\xE1\x8A\x94".decode(), # ጔ (Ge, 272) + b"\xE1\x8A\x95".decode(), # ጕ (Gwe, 273) + b"\xE1\x8A\x96".decode(), # ጖ (Go, 274) + b"\xE0\xA4\x85".decode(), # अ (A, 275) + b"\xE0\xA4\x86".decode(), # आ (Aa, 276) + b"\xE0\xA4\x87".decode(), # इ (I, 277) + b"\xE0\xA4\x88".decode(), # ई (Ii, 278) + b"\xE0\xA4\x89".decode(), # उ (U, 279) + b"\xE0\xA4\x8A".decode(), # ऊ (Uu, 280) + b"\xE0\xA4\x8B".decode(), # ऋ (R, 281) + b"\xE0\xA4\x8F".decode(), # ए (E, 282) + b"\xE0\xA4\x90".decode(), # ऐ (Ai, 283) + b"\xE0\xA4\x93".decode(), # ओ (O, 284) + b"\xE0\xA4\x94".decode(), # औ (Au, 285) + b"\xE0\xA4\x95".decode(), # क (Ka, 286) + b"\xE0\xA4\x96".decode(), # ख (Kha, 287) + b"\xE0\xA4\x97".decode(), # ग (Ga, 288) + b"\xE0\xA4\x98".decode(), # घ (Gha, 289) + b"\xE0\xA4\x99".decode(), # ङ (Nga, 290) + b"\xE0\xA4\x9A".decode(), # च (Cha, 291) + b"\xE0\xA4\x9B".decode(), # छ (Chha, 292) + b"\xE0\xA4\x9C".decode(), # ज (Ja, 293) + b"\xE0\xA4\x9D".decode(), # झ (Jha, 294) + b"\xE0\xA4\x9E".decode(), # ञ (Nya, 295) + b"\xE0\xA4\x9F".decode(), # ट (Ta, 296) + b"\xE0\xA4\xA0".decode(), # ठ (Tha, 297) + b"\xE0\xA4\xA1".decode(), # ड (Da, 298) + b"\xE0\xA4\xA2".decode(), # ढ (Dha, 299) + b"\xE0\xA4\xA3".decode(), # ण (Na, 300) + b"\xE0\xA4\xA4".decode(), # त (Ta, 301) + b"\xE0\xA4\xA5".decode(), # थ (Tha, 302) + b"\xE0\xA4\xA6".decode(), # द (Da, 303) + b"\xE0\xA4\xA7".decode(), # ध (Dha, 304) + b"\xE0\xA4\xA8".decode(), # न (Na, 305) + b"\xE0\xA4\xAA".decode(), # प (Pa, 306) + b"\xE0\xA4\xAB".decode(), # फ (Pha, 307) + b"\xE0\xA4\xAC".decode(), # ब (Ba, 308) + b"\xE0\xA4\xAD".decode(), # भ (Bha, 309) + b"\xE0\xA4\xAE".decode(), # म (Ma, 310) + b"\xE0\xA4\xAF".decode(), # य (Ya, 311) + b"\xE0\xA4\xB0".decode(), # र (Ra, 312) + b"\xE0\xA4\xB2".decode(), # ल (La, 313) + b"\xE0\xA4\xB5".decode(), # व (Va, 314) + b"\xE0\xA4\xB6".decode(), # श (Sha, 315) + b"\xE0\xA4\xB7".decode(), # ष (Ssa, 316) + b"\xE0\xA4\xB8".decode(), # स (Sa, 317) + b"\xE0\xA4\xB9".decode(), # ह (Ha, 318) + b"\xE3\x82\xA2".decode(), # ア (A, 319) + b"\xE3\x82\xA4".decode(), # イ (I, 320) + b"\xE3\x82\xA6".decode(), # ウ (U, 321) + b"\xE3\x82\xA8".decode(), # エ (E, 322) + b"\xE3\x82\xAA".decode(), # オ (O, 323) + b"\xE3\x82\xAB".decode(), # カ (Ka, 324) + b"\xE3\x82\xAD".decode(), # キ (Ki, 325) + b"\xE3\x82\xAF".decode(), # ク (Ku, 326) + b"\xE3\x82\xB1".decode(), # ケ (Ke, 327) + b"\xE3\x82\xB3".decode(), # コ (Ko, 328) + b"\xE3\x82\xB5".decode(), # サ (Sa, 329) + b"\xE3\x82\xB7".decode(), # シ (Shi, 330) + b"\xE3\x82\xB9".decode(), # ス (Su, 331) + b"\xE3\x82\xBB".decode(), # セ (Se, 332) + b"\xE3\x82\xBD".decode(), # ソ (So, 333) + b"\xE3\x82\xBF".decode(), # タ (Ta, 334) + b"\xE3\x83\x81".decode(), # チ (Chi, 335) + b"\xE3\x83\x84".decode(), # ツ (Tsu, 336) + b"\xE3\x83\x86".decode(), # テ (Te, 337) + b"\xE3\x83\x88".decode(), # ト (To, 338) + b"\xE3\x83\x8A".decode(), # ナ (Na, 339) + b"\xE3\x83\x8B".decode(), # ニ (Ni, 340) + b"\xE3\x83\x8C".decode(), # ヌ (Nu, 341) + b"\xE3\x83\x8D".decode(), # ネ (Ne, 342) + b"\xE3\x83\x8E".decode(), # ノ (No, 343) + b"\xE3\x83\x8F".decode(), # ハ (Ha, 344) + b"\xE3\x83\x92".decode(), # ヒ (Hi, 345) + b"\xE3\x83\x95".decode(), # フ (Fu, 346) + b"\xE3\x83\x98".decode(), # ヘ (He, 347) + b"\xE3\x83\x9B".decode(), # ホ (Ho, 348) + b"\xE3\x83\x9E".decode(), # マ (Ma, 349) + b"\xE3\x83\x9F".decode(), # ミ (Mi, 350) + b"\xE3\x83\xA0".decode(), # ム (Mu, 351) + b"\xE3\x83\xA1".decode(), # メ (Me, 352) + b"\xE3\x83\xA2".decode(), # モ (Mo, 353) + b"\xE3\x83\xA4".decode(), # ヤ (Ya, 354) + b"\xE3\x83\xA6".decode(), # ユ (Yu, 355) + b"\xE3\x83\xA8".decode(), # ヨ (Yo, 356) + b"\xE3\x83\xA9".decode(), # ラ (Ra, 357) + b"\xE3\x83\xAA".decode(), # リ (Ri, 358) + b"\xE3\x83\xAB".decode(), # ル (Ru, 359) + b"\xE3\x83\xAC".decode(), # レ (Re, 360) + b"\xE3\x83\xAD".decode(), # ロ (Ro, 361) + b"\xE3\x83\xAF".decode(), # ワ (Wa, 362) + b"\xE3\x83\xB2".decode(), # ヲ (Wo, 363) + b"\xE3\x83\xB3".decode(), # ン (N, 364) + b"\xE2\xB4\xB0".decode(), # ⴰ (Ya, 365) + b"\xE2\xB4\xB1".decode(), # ⴱ (Yab, 366) + b"\xE2\xB4\xB2".decode(), # ⴲ (Yabh, 367) + b"\xE2\xB4\xB3".decode(), # ⴳ (Yag, 368) + b"\xE2\xB4\xB4".decode(), # ⴴ (Yagh, 369) + b"\xE2\xB4\xB5".decode(), # ⴵ (Yaj, 370) + b"\xE2\xB4\xB6".decode(), # ⴶ (Yach, 371) + b"\xE2\xB4\xB7".decode(), # ⴷ (Yad, 372) + b"\xE2\xB4\xB8".decode(), # ⴸ (Yadh, 373) + b"\xE2\xB4\xB9".decode(), # ⴹ (Yadh, emphatic, 374) + b"\xE2\xB4\xBA".decode(), # ⴺ (Yaz, 375) + b"\xE2\xB4\xBB".decode(), # ⴻ (Yazh, 376) + b"\xE2\xB4\xBC".decode(), # ⴼ (Yaf, 377) + b"\xE2\xB4\xBD".decode(), # ⴽ (Yak, 378) + b"\xE2\xB4\xBE".decode(), # ⴾ (Yak, variant, 379) + b"\xE2\xB4\xBF".decode(), # ⴿ (Yaq, 380) + b"\xE2\xB5\x80".decode(), # ⵀ (Yah, 381) + b"\xE2\xB5\x81".decode(), # ⵁ (Yahh, 382) + b"\xE2\xB5\x82".decode(), # ⵂ (Yahl, 383) + b"\xE2\xB5\x83".decode(), # ⵃ (Yahm, 384) + b"\xE2\xB5\x84".decode(), # ⵄ (Yayn, 385) + b"\xE2\xB5\x85".decode(), # ⵅ (Yakh, 386) + b"\xE2\xB5\x86".decode(), # ⵆ (Yakl, 387) + b"\xE2\xB5\x87".decode(), # ⵇ (Yahq, 388) + b"\xE2\xB5\x88".decode(), # ⵈ (Yash, 389) + b"\xE2\xB5\x89".decode(), # ⵉ (Yi, 390) + b"\xE2\xB5\x8A".decode(), # ⵊ (Yij, 391) + b"\xE2\xB5\x8B".decode(), # ⵋ (Yizh, 392) + b"\xE2\xB5\x8C".decode(), # ⵌ (Yink, 393) + b"\xE2\xB5\x8D".decode(), # ⵍ (Yal, 394) + b"\xE2\xB5\x8E".decode(), # ⵎ (Yam, 395) + b"\xE2\xB5\x8F".decode(), # ⵏ (Yan, 396) + b"\xE2\xB5\x90".decode(), # ⵐ (Yang, 397) + b"\xE2\xB5\x91".decode(), # ⵑ (Yany, 398) + b"\xE2\xB5\x92".decode(), # ⵒ (Yap, 399) + b"\xE2\xB5\x93".decode(), # ⵓ (Yu, 400) + b"\xE0\xB6\x85".decode(), # අ (A, 401) + b"\xE0\xB6\x86".decode(), # ආ (Aa, 402) + b"\xE0\xB6\x87".decode(), # ඉ (I, 403) + b"\xE0\xB6\x88".decode(), # ඊ (Ii, 404) + b"\xE0\xB6\x89".decode(), # උ (U, 405) + b"\xE0\xB6\x8A".decode(), # ඌ (Uu, 406) + b"\xE0\xB6\x8B".decode(), # ඍ (R, 407) + b"\xE0\xB6\x8C".decode(), # ඎ (Rr, 408) + b"\xE0\xB6\x8F".decode(), # ඏ (L, 409) + b"\xE0\xB6\x90".decode(), # ඐ (Ll, 410) + b"\xE0\xB6\x91".decode(), # එ (E, 411) + b"\xE0\xB6\x92".decode(), # ඒ (Ee, 412) + b"\xE0\xB6\x93".decode(), # ඓ (Ai, 413) + b"\xE0\xB6\x94".decode(), # ඔ (O, 414) + b"\xE0\xB6\x95".decode(), # ඕ (Oo, 415) + b"\xE0\xB6\x96".decode(), # ඖ (Au, 416) + b"\xE0\xB6\x9A".decode(), # ක (Ka, 417) + b"\xE0\xB6\x9B".decode(), # ඛ (Kha, 418) + b"\xE0\xB6\x9C".decode(), # ග (Ga, 419) + b"\xE0\xB6\x9D".decode(), # ඝ (Gha, 420) + b"\xE0\xB6\x9E".decode(), # ඞ (Nga, 421) + b"\xE0\xB6\x9F".decode(), # ච (Cha, 422) + b"\xE0\xB6\xA0".decode(), # ඡ (Chha, 423) + b"\xE0\xB6\xA1".decode(), # ජ (Ja, 424) + b"\xE0\xB6\xA2".decode(), # ඣ (Jha, 425) + b"\xE0\xB6\xA3".decode(), # ඤ (Nya, 426) + b"\xE0\xB6\xA4".decode(), # ට (Ta, 427) + b"\xE0\xB6\xA5".decode(), # ඥ (Tha, 428) + b"\xE0\xB6\xA6".decode(), # ඦ (Da, 429) + b"\xE0\xB6\xA7".decode(), # ට (Dha, 430) + b"\xE0\xB6\xA8".decode(), # ඨ (Na, 431) + b"\xE0\xB6\xAA".decode(), # ඪ (Pa, 432) + b"\xE0\xB6\xAB".decode(), # ණ (Pha, 433) + b"\xE0\xB6\xAC".decode(), # ඬ (Ba, 434) + b"\xE0\xB6\xAD".decode(), # ත (Bha, 435) + b"\xE0\xB6\xAE".decode(), # ථ (Ma, 436) + b"\xE0\xB6\xAF".decode(), # ද (Ya, 437) + b"\xE0\xB6\xB0".decode(), # ධ (Ra, 438) + ] NETWORK_EXPLORER_MAP = { diff --git a/pyproject.toml b/pyproject.toml index 4a4069001..4dfa5a998 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,5 +1,5 @@ [build-system] -requires = ["setuptools~=70.0.0", "wheel"] +requires = ["setuptools>=70.0.0", "wheel"] build-backend = "setuptools.build_meta" [project] diff --git a/tests/e2e_tests/test_staking_sudo.py b/tests/e2e_tests/test_staking_sudo.py index 2dfd1102c..b34b05b17 100644 --- a/tests/e2e_tests/test_staking_sudo.py +++ b/tests/e2e_tests/test_staking_sudo.py @@ -298,7 +298,7 @@ def test_staking(local_chain, wallet_setup): # Parse all hyperparameters and single out max_burn in TAO all_hyperparams = hyperparams.stdout.splitlines() - max_burn_tao = all_hyperparams[22].split()[3] + max_burn_tao = all_hyperparams[22].split()[2].strip('\u200e') # Assert max_burn is 100 TAO from default assert Balance.from_tao(float(max_burn_tao)) == Balance.from_tao(100.0) @@ -359,7 +359,7 @@ def test_staking(local_chain, wallet_setup): # Parse updated hyperparameters all_updated_hyperparams = updated_hyperparams.stdout.splitlines() - updated_max_burn_tao = all_updated_hyperparams[22].split()[3] + updated_max_burn_tao = all_updated_hyperparams[22].split()[2].strip('\u200e') # Assert max_burn is now 10 TAO assert Balance.from_tao(float(updated_max_burn_tao)) == Balance.from_tao(10) diff --git a/tests/e2e_tests/utils.py b/tests/e2e_tests/utils.py index 9379b962e..490ae5941 100644 --- a/tests/e2e_tests/utils.py +++ b/tests/e2e_tests/utils.py @@ -57,7 +57,7 @@ def exec_command( return keypair, wallet, wallet_path, exec_command -def extract_coldkey_balance(text: str, wallet_name: str, coldkey_address: str) -> dict: +def extract_coldkey_balance(cleaned_text: str, wallet_name: str, coldkey_address: str) -> dict: """ Extracts the free, staked, and total balances for a given wallet name and coldkey address from the input string. @@ -72,11 +72,12 @@ def extract_coldkey_balance(text: str, wallet_name: str, coldkey_address: str) - each containing the corresponding balance as a Balance object. Returns a dictionary with all zeros if the wallet name or coldkey address is not found. """ + cleaned_text = cleaned_text.replace('\u200e', '') pattern = ( - rf"{wallet_name}\s+{coldkey_address}\s+" r"τ\s*([\d,]+\.\d+)" # Free Balance + rf"{wallet_name}\s+{coldkey_address}\s+([\d,]+\.\d+)\s*τ" # Free Balance ) - match = re.search(pattern, text) + match = re.search(pattern, cleaned_text) if not match: return {