Skip to content

Conversation

@aorumbayev
Copy link
Contributor

Proposed Changes

  • Refactors the OAS generator to automatically encode and decode byte fields to/from base64, aligning with the behavior of Rust and Typescript variants.
  • Decouples dependencies on algosdk's indexer and KMD clients.
  • Introduces encode_bytes_base64, decode_bytes_base64, encode_bytes_sequence, and decode_bytes_sequence helpers to handle byte encoding and decoding.

…s ( further aligning with rs and ts variants )

Better handling of x-algokit-bytes-base64 vendor extension
@aorumbayev aorumbayev force-pushed the decoupling-kmd-indexer-integration branch from 90fd4f7 to 39300f2 Compare November 10, 2025 10:05
@github-actions
Copy link

Coverage

Coverage Report
FileStmtsMissCoverMissing
src/algokit_algod_client
   client.py79762122%32, 44–64, 74–104, 115–147, 157–177, 191–219, 228–246, 255–273, 283–303, 312–330, 339–357, 369–389, 401–423, 438–467, 478–502, 515–540, 552–576, 585–603, 614–636, 648–670, 680–700, 710–730, 768, 778–798, 808–828, 837–855, 865–885, 894–912, 922–946, 956–980, 990–1010, 1021–1045, 1057–1083, 1092–1110, 1120–1140, 1149–1167, 1176–1194, 1203–1221, 1231–1257, 1271–1302, 1311–1329, 1338–1356, 1365–1383, 1417, 1457, 1469–1499, 1510–1530, 1540–1560, 1609, 1618–1636, 1648–1680, 1690–1720, 1731–1762, 1789, 1798–1816, 1826–1846, 1859, 1864, 1866, 1871, 1875, 1880, 1937, 1945, 1948–1952, 1966–1969
   exceptions.py7357%13–15
src/algokit_algod_client/models
   _serde_helpers.py1166445%17–21, 25, 30, 34–36, 40–50, 54–62, 67, 71, 78, 88–95, 99–108, 114–125, 130, 143
   block.py1081982%38–40, 49–56, 60–67
src/algokit_common
   address.py19479%7, 10, 15, 21
src/algokit_common/serde
   _core.py2573188%122, 128, 196, 209, 219, 221, 234, 238, 241–242, 250, 286–287, 301, 305–308, 315–316, 326–327, 362, 390–391, 412, 418, 427, 433, 442, 448
   _primitives.py732467%5–7, 11–13, 17, 23, 35–37, 41–43, 47–49, 55, 60–61, 122, 126, 128, 130
src/algokit_indexer_client
   client.py56345519%33, 44–62, 79–110, 125–156, 170–198, 213–244, 259–290, 316–380, 391–413, 425–447, 464–501, 517–551, 563–585, 613–683, 695–717, 770–820, 833–858, 883, 886, 889, 905, 922–960, 980–1024, 1059, 1062, 1065, 1068, 1071, 1074, 1080, 1083, 1086, 1089, 1092, 1095, 1098, 1101, 1104, 1107, 1110, 1113, 1116, 1132, 1141–1157, 1160–1167, 1223, 1226–1227, 1231, 1234–1238, 1241–1248, 1251–1256
src/algokit_indexer_client/models
   _serde_helpers.py1168229%17–21, 25, 30, 34–36, 40–50, 54–62, 66–73, 78, 88–95, 99–108, 114–125, 129–136, 142–145, 149–152
src/algokit_kmd_client
   client.py39525236%32, 75, 85–116, 126–157, 198, 208–239, 249–280, 321, 332–363, 373–404, 414–445, 455–486, 527, 568, 578–609, 637, 651, 692, 702–733, 743–774, 784–815, 825–856, 866–897, 907–938, 947–965, 977–983, 986–990, 994, 997–1000, 1056, 1059–1060, 1064, 1067–1071, 1074–1081, 1084–1089
   exceptions.py7357%13–15
src/algokit_kmd_client/models
   _serde_helpers.py1168229%17–21, 25, 30, 34–36, 40–50, 54–62, 66–73, 78, 88–95, 99–108, 114–125, 129–136, 142–145, 149–152
src/algokit_transact/codec
   signed.py35586%18, 20, 23, 39, 43
   transaction.py41295%16, 65
src/algokit_transact/models
   app_call.py32220337%67–81, 85–88, 96, 98, 101, 114, 119, 125, 132–144, 148–251, 295–298, 306, 312–314, 326, 330–332, 341, 354–355, 361–362, 366, 369–375, 378–389, 392–396, 399–402, 405–413, 416–426, 429–436
   state_proof.py73593%96, 108, 119–127
src/algokit_transact/ops
   fees.py20195%28
   group.py21290%15, 22
   validate.py209399%60, 74, 76
src/algokit_transact/signing
   multisig.py541965%17, 19, 21, 32–45, 60, 66, 68, 73
   types.py28968%10, 14, 18–24
src/algokit_utils
   _debugging.py1401490%41–43, 46, 55, 63, 82, 86, 95, 109–113, 139
   algorand.py1051487%66–67, 81–82, 112–113, 140–141, 176–177, 321, 344, 360, 379
   config.py782963%23, 30–34, 73–74, 90, 95, 100, 111–116, 140–156
src/algokit_utils/accounts
   account_manager.py2553985%167, 183–184, 211–216, 295–305, 339–344, 391–393, 422, 461, 481–485, 498, 557, 578, 735, 841, 920, 925, 940–941, 964
   kmd_account_manager.py861286%53–59, 104, 108, 134, 172, 179
src/algokit_utils/applications
   abi.py1376850%75, 111, 117, 119, 121, 141–160, 176, 179–185, 201–214, 227–239, 254–265
   app_client.py76522571%136, 144, 331–334, 337, 340, 343, 346, 358–361, 364, 367, 370, 373, 385, 394, 403, 406–468, 481–539, 563–565, 582–585, 593–596, 604–607, 615–618, 626–629, 640–643, 656, 752–755, 789, 801, 813, 825, 837, 852, 867, 877, 887, 897, 907, 917, 954–967, 983, 1000, 1017, 1034, 1055, 1076, 1166, 1222, 1363, 1427–1428, 1477, 1479, 1485, 1538–1546, 1579–1582, 1585–1588, 1609, 1657, 1686, 1720–1722, 1735–1746, 1791, 1808, 1810, 1813, 1817, 1964–1983, 2013, 2026–2028, 2032, 2043–2044, 2072, 2082–2084, 2087–2109, 2119, 2128–2143, 2148–2153
   app_deployer.py2393984%96, 270, 277, 287–292, 295–299, 375–376, 591, 603–617, 629, 634–637, 646, 660, 667, 674, 703, 715–758
   app_factory.py2702790%429, 450, 459, 651, 661, 711, 943, 957–962, 973–974, 1007, 1045, 1063–1064, 1107, 1115–1128
   app_manager.py2231892%258, 279–280, 350–351, 396–401, 433, 457–458, 488, 516–519, 551, 560
src/algokit_utils/applications/app_spec
   arc32.py95892%198–207
   arc56.py5741997%171, 292, 308–309, 379, 399–401, 453, 462, 464, 736, 750, 909, 911, 968, 970–971, 987
src/algokit_utils/assets
   asset_manager.py1281291%282–283, 292, 298–322, 332
src/algokit_utils/clients
   client_manager.py1735171%79–86, 111, 143–145, 205, 216–219, 244, 283, 318–323, 358–360, 393, 414, 435, 480–483, 523–526, 567–570, 607–610, 632–657, 695, 708, 720
   dispenser_api_client.py912078%89, 93, 134–135, 139–142, 190–200, 210–221
src/algokit_utils/errors
   logic_error.py541180%90, 105–121
src/algokit_utils/models
   account.py921584%32, 34, 80–81, 128, 136, 144, 168–175, 188, 196, 209, 217
   amount.py1021783%35, 42, 88, 98, 104, 112, 117–119, 126, 131–133, 140, 147, 160, 166
   state.py41588%61, 65–68
   transaction.py51394%66, 86, 91
src/algokit_utils/transactions
   transaction_composer.py112610691%91, 101–105, 599, 644, 647, 652, 656–667, 699, 736, 816, 823, 845, 884, 981–1010, 1039, 1067–1082, 1087, 1095, 1097, 1099, 1115, 1121, 1159, 1167, 1276, 1326, 1410, 1412–1413, 1806–1807, 1846–1847, 1888, 2101, 2104, 2123, 2128, 2156–2158, 2199–2235, 2242–2249, 2391, 2395, 2528, 2530–2531, 2581–2582
   transaction_creator.py75791%394, 427, 482, 520, 557, 590, 688
   transaction_sender.py1611094%101, 270, 313–314, 712–717, 722–723, 888
TOTAL11049265876% 

Tests Skipped Failures Errors Time
478 0 💤 0 ❌ 0 🔥 1m 45s ⏱️

@aorumbayev aorumbayev merged commit 35faf1c into decoupling Nov 10, 2025
5 checks passed
@aorumbayev aorumbayev deleted the decoupling-kmd-indexer-integration branch November 10, 2025 10:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants