index.html 151 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811
  1. <!DOCTYPE html>
  2. <html lang="en" class="h-full">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width,initial-scale=1">
  6. <meta name="color-scheme" content="light dark">
  7. <meta name="turbo-cache-control" content="no-cache" data-turbo-track="reload" data-track-token="4.3.0.827133044009">
  8. <!-- See retype.com -->
  9. <meta name="generator" content="Retype 4.3.0">
  10. <!-- Primary Meta Tags -->
  11. <title>Functions | Portable Python 3.x Interpreter in Modern C</title>
  12. <meta name="title" content="Functions | Portable Python 3.x Interpreter in Modern C">
  13. <!-- Canonical -->
  14. <link rel="canonical" href="https://pocketpy.dev/c-api/functions/">
  15. <!-- Open Graph -->
  16. <meta property="og:type" content="website">
  17. <meta property="og:url" content="https://pocketpy.dev/c-api/functions/">
  18. <meta property="og:title" content="Functions | Portable Python 3.x Interpreter in Modern C">
  19. <meta property="og:site_name" content="pocketpy">
  20. <meta property="og:locale" content="en_US">
  21. <!-- Twitter -->
  22. <meta name="twitter:card" content="summary_large_image">
  23. <meta name="twitter:url" content="https://pocketpy.dev/c-api/functions/">
  24. <meta name="twitter:title" content="Functions | Portable Python 3.x Interpreter in Modern C">
  25. <script data-cfasync="false">(function(){var cl=document.documentElement.classList,ls=localStorage.getItem("retype_scheme"),hd=cl.contains("dark"),hl=cl.contains("light"),wm=window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches;if(ls==="dark"||(!ls&&wm&&!hd&&!hl)){cl.remove("light");cl.add("dark")}else if(ls==="light"||(!ls&&!wm&&!hd&&!hl)){cl.remove("dark");cl.add("light")}})();</script>
  26. <link id="retype-favicon" rel="icon" href="../../static/logo.png" />
  27. <link href="../../resources/css/retype.css?v=4.3.0.827133044009" rel="stylesheet">
  28. <script data-cfasync="false" src="../../resources/js/config.js?v=4.3.0.827133044009" data-turbo-eval="false" defer></script>
  29. <script data-cfasync="false" src="../../resources/js/retype.js?v=4.3.0" data-turbo-eval="false" defer></script>
  30. <script id="lunr-js" data-cfasync="false" src="../../resources/js/lunr.js?v=4.3.0.827133044009" data-turbo-eval="false" defer></script>
  31. <script id="prism-js" data-cfasync="false" src="../../resources/js/prism.js?v=4.3.0.827133044009" defer></script>
  32. </head>
  33. <body>
  34. <div id="retype-app" class="relative text-base antialiased text-base-text bg-base-bg font-body">
  35. <div class="absolute bottom-0 left-0" style="top: 5rem; right: 50%"></div>
  36. <header id="retype-header" class="sticky top-0 z-30 flex w-full h-16 bg-header-bg border-b border-header-border md:h-20">
  37. <div class="container relative flex items-center justify-between pr-6 grow md:justify-start">
  38. <!-- Mobile menu button skeleton -->
  39. <button v-cloak class="skeleton retype-mobile-menu-button flex items-center justify-center shrink-0 overflow-hidden dark:text-white focus:outline-hidden rounded-full w-10 h-10 ml-3.5 md:hidden"><svg xmlns="http://www.w3.org/2000/svg" class="mb-px shrink-0" width="24" height="24" viewBox="0 0 24 24" role="presentation" style="margin-bottom: 0px;"><g fill="currentColor"><path d="M2 4h20v2H2zM2 11h20v2H2zM2 18h20v2H2z"></path></g></svg></button>
  40. <div v-cloak id="retype-sidebar-left-toggle-button"></div>
  41. <!-- Logo -->
  42. <div class="flex items-center justify-between h-full py-2 md:w-75">
  43. <div class="flex items-center px-2 md:px-6">
  44. <a id="retype-branding-logo" href="https://pocketpy.dev/" class="flex items-center leading-snug text-2xl">
  45. <span class="w-10 mr-2 grow-0 shrink-0 overflow-hidden">
  46. <img class="max-h-10 dark:hidden md:inline-block" src="../../static/logo.png" alt="" width="512" height="512">
  47. <img class="max-h-10 hidden dark:inline-block" src="../../static/logo.png" alt="" width="512" height="512">
  48. </span>
  49. <span class="dark:text-white font-bold line-clamp-1 md:line-clamp-2">pocketpy</span>
  50. </a><span id="retype-branding-label" class="inline-flex mt-1 px-2 py-1 ml-4 text-xs font-medium leading-none items-center rounded-md bg-branding-label-bg text-branding-label-text ring-1 ring-branding-label-border ring-inset md:inline-block">v2.1.8</span>
  51. </div>
  52. <span class="hidden h-8 border-r md:inline-block border-base-border"></span>
  53. </div>
  54. <div class="flex justify-between md:grow">
  55. <!-- Top Nav -->
  56. <nav id="retype-header-nav" class="hidden md:flex">
  57. <ul class="flex flex-col mb-4 md:pl-16 md:mb-0 md:flex-row md:items-center">
  58. <li class="mr-6">
  59. <a class="py-2 md:mb-0 inline-flex items-center text-sm whitespace-nowrap transition-colors duration-200 ease-linear md:text-header-text font-header-text hover:text-header-text-hover" href="">
  60. <svg xmlns="http://www.w3.org/2000/svg" class="mb-px mr-1.5" width="18" height="18" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" focusable="false">
  61. <path d="M11.03 2.59a1.501 1.501 0 0 1 1.94 0l7.5 6.363a1.5 1.5 0 0 1 .53 1.144V19.5a1.5 1.5 0 0 1-1.5 1.5h-5.75a.75.75 0 0 1-.75-.75V14h-2v6.25a.75.75 0 0 1-.75.75H4.5A1.5 1.5 0 0 1 3 19.5v-9.403c0-.44.194-.859.53-1.144ZM12 3.734l-7.5 6.363V19.5h5v-6.25a.75.75 0 0 1 .75-.75h3.5a.75.75 0 0 1 .75.75v6.25h5v-9.403Z"/>
  62. </svg>
  63. <span>Home</span>
  64. </a>
  65. </li>
  66. <li class="mr-6">
  67. <a class="py-2 md:mb-0 inline-flex items-center text-sm whitespace-nowrap transition-colors duration-200 ease-linear md:text-header-text font-header-text hover:text-header-text-hover" href="https://pocketpy.dev/static/web/" target="_blank">
  68. <svg xmlns="http://www.w3.org/2000/svg" class="mb-px mr-1.5" width="18" height="18" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" focusable="false">
  69. <path d="M9.5 15.584V8.416a.5.5 0 0 1 .77-.42l5.576 3.583a.5.5 0 0 1 0 .842l-5.576 3.584a.5.5 0 0 1-.77-.42Z"/><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12Zm11-9.5A9.5 9.5 0 0 0 2.5 12a9.5 9.5 0 0 0 9.5 9.5 9.5 9.5 0 0 0 9.5-9.5A9.5 9.5 0 0 0 12 2.5Z"/>
  70. </svg>
  71. <span>Live Demo</span>
  72. </a>
  73. </li>
  74. <li class="mr-6">
  75. <a class="py-2 md:mb-0 inline-flex items-center text-sm whitespace-nowrap transition-colors duration-200 ease-linear md:text-header-text font-header-text hover:text-header-text-hover" href="https://pocketpy.github.io/examples/" target="_blank">
  76. <svg xmlns="http://www.w3.org/2000/svg" class="mb-px mr-1.5" width="18" height="18" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" focusable="false">
  77. <path d="M15.22 4.97a.75.75 0 0 1 1.06 0l6.5 6.5a.75.75 0 0 1 0 1.06l-6.5 6.5a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L21.19 12l-5.97-5.97a.75.75 0 0 1 0-1.06Zm-6.44 0a.75.75 0 0 1 0 1.06L2.81 12l5.97 5.97a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215l-6.5-6.5a.75.75 0 0 1 0-1.06l6.5-6.5a.75.75 0 0 1 1.06 0Z"/>
  78. </svg>
  79. <span>Live Examples</span>
  80. </a>
  81. </li>
  82. <li class="mr-6">
  83. <a class="py-2 md:mb-0 inline-flex items-center text-sm whitespace-nowrap transition-colors duration-200 ease-linear md:text-header-text font-header-text hover:text-header-text-hover" href="https://github.com/blueloveth/pocketpy" target="_blank">
  84. <svg xmlns="http://www.w3.org/2000/svg" class="mb-px mr-1.5" width="18" height="18" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" focusable="false">
  85. <path d="M10.303 16.652c-2.837-.344-4.835-2.385-4.835-5.028 0-1.074.387-2.235 1.031-3.008-.279-.709-.236-2.214.086-2.837.86-.107 2.02.344 2.708.967.816-.258 1.676-.386 2.728-.386 1.053 0 1.913.128 2.686.365.666-.602 1.848-1.053 2.708-.946.3.581.344 2.085.064 2.815.688.817 1.053 1.913 1.053 3.03 0 2.643-1.998 4.641-4.877 5.006.73.473 1.224 1.504 1.224 2.686v2.235c0 .644.537 1.01 1.182.752 3.889-1.483 6.94-5.372 6.94-10.185 0-6.081-4.942-11.044-11.022-11.044-6.081 0-10.98 4.963-10.98 11.044a10.84 10.84 0 0 0 7.112 10.206c.58.215 1.139-.172 1.139-.752v-1.719a2.768 2.768 0 0 1-1.032.215c-1.418 0-2.256-.773-2.857-2.213-.237-.58-.495-.924-.989-.988-.258-.022-.344-.129-.344-.258 0-.258.43-.451.86-.451.623 0 1.16.386 1.719 1.181.43.623.881.903 1.418.903.537 0 .881-.194 1.375-.688.365-.365.645-.687.903-.902Z"/>
  86. </svg>
  87. <span>Github</span>
  88. </a>
  89. </li>
  90. <li class="mr-6">
  91. <a class="py-2 md:mb-0 inline-flex items-center text-sm whitespace-nowrap transition-colors duration-200 ease-linear md:text-header-text font-header-text hover:text-header-text-hover" href="https://discord.gg/WWaq72GzXv" target="_blank">
  92. <svg xmlns="http://www.w3.org/2000/svg" class="mb-px mr-1.5" width="18" height="18" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" focusable="false">
  93. <path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 14.25 14H8.061l-2.574 2.573A1.458 1.458 0 0 1 3 15.543V14H1.75A1.75 1.75 0 0 1 0 12.25v-9.5C0 1.784.784 1 1.75 1ZM1.5 2.75v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Z"/><path d="M22.5 8.75a.25.25 0 0 0-.25-.25h-3.5a.75.75 0 0 1 0-1.5h3.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 22.25 20H21v1.543a1.457 1.457 0 0 1-2.487 1.03L15.939 20H10.75A1.75 1.75 0 0 1 9 18.25v-1.465a.75.75 0 0 1 1.5 0v1.465c0 .138.112.25.25.25h5.5a.75.75 0 0 1 .53.22l2.72 2.72v-2.19a.75.75 0 0 1 .75-.75h2a.25.25 0 0 0 .25-.25v-9.5Z"/>
  94. </svg>
  95. <span>Discord</span>
  96. </a>
  97. </li>
  98. </ul>
  99. </nav>
  100. <div v-cloak class="flex justify-end grow">
  101. <div id="retype-mobile-search-button"></div>
  102. <doc-search-desktop></doc-search-desktop>
  103. <doc-theme-switch class="lg:ml-2"></doc-theme-switch>
  104. <doc-history></doc-history>
  105. </div>
  106. </div>
  107. </div>
  108. </header>
  109. <div id="retype-container" class="container relative flex bg-white">
  110. <!-- Sidebar Skeleton -->
  111. <div v-cloak class="fixed flex flex-col shrink-0 duration-300 ease-in-out bg-sidebar-left-bg border-sidebar-left-border sidebar top-20 w-75 border-r h-screen md:sticky transition-transform skeleton">
  112. <div class="flex items-center h-16 px-6">
  113. <input id="retype-filter-input-mock" class="w-full h-10 pl-8 px-3 py-2 transition-colors duration-200 ease-linear bg-filter-bg border border-filter-border rounded-lg shadow-none md:text-sm hover:border-filter-border-hover focus:outline-hidden focus:border-filter-border-focus placeholder-filter-placeholder" type="text">
  114. </div>
  115. <div class="pl-6 mt-1 mb-4">
  116. <div class="w-32 h-3 mb-4 bg-skeleton-bg rounded-full loading"></div>
  117. <div class="w-48 h-3 mb-4 bg-skeleton-bg rounded-full loading"></div>
  118. <div class="w-40 h-3 mb-4 bg-skeleton-bg rounded-full loading"></div>
  119. <div class="w-32 h-3 mb-4 bg-skeleton-bg rounded-full loading"></div>
  120. <div class="w-48 h-3 mb-4 bg-skeleton-bg rounded-full loading"></div>
  121. <div class="w-40 h-3 mb-4 bg-skeleton-bg rounded-full loading"></div>
  122. </div>
  123. <div class="shrink-0 mt-auto bg-transparent dark:border-base-border">
  124. <a class="flex items-center justify-center flex-nowrap h-16 text-gray-350 dark:text-dark-400 hover:text-gray-600 dark:hover:text-dark-300 transition-colors duration-150 ease-in docs-powered-by" target="_blank" href="https://retype.com/" rel="noopener">
  125. <span class="text-xs whitespace-nowrap">Powered by</span>
  126. <svg xmlns="http://www.w3.org/2000/svg" class="ml-2" fill="currentColor" width="96" height="20" overflow="visible"><path d="M0 0v20h13.59V0H0zm11.15 17.54H2.44V2.46h8.71v15.08zM15.8 20h2.44V4.67L15.8 2.22zM20.45 6.89V20h2.44V9.34z"/><g><path d="M40.16 8.44c0 1.49-.59 2.45-1.75 2.88l2.34 3.32h-2.53l-2.04-2.96h-1.43v2.96h-2.06V5.36h3.5c1.43 0 2.46.24 3.07.73s.9 1.27.9 2.35zm-2.48 1.1c.26-.23.38-.59.38-1.09 0-.5-.13-.84-.4-1.03s-.73-.28-1.39-.28h-1.54v2.75h1.5c.72 0 1.2-.12 1.45-.35zM51.56 5.36V7.2h-4.59v1.91h4.13v1.76h-4.13v1.92h4.74v1.83h-6.79V5.36h6.64zM60.09 7.15v7.48h-2.06V7.15h-2.61V5.36h7.28v1.79h-2.61zM70.81 14.64h-2.06v-3.66l-3.19-5.61h2.23l1.99 3.45 1.99-3.45H74l-3.19 5.61v3.66zM83.99 6.19c.65.55.97 1.4.97 2.55s-.33 1.98-1 2.51-1.68.8-3.04.8h-1.23v2.59h-2.06V5.36h3.26c1.42 0 2.45.28 3.1.83zm-1.51 3.65c.25-.28.37-.69.37-1.22s-.16-.92-.48-1.14c-.32-.23-.82-.34-1.5-.34H79.7v3.12h1.38c.68 0 1.15-.14 1.4-.42zM95.85 5.36V7.2h-4.59v1.91h4.13v1.76h-4.13v1.92H96v1.83h-6.79V5.36h6.64z"/></g></svg>
  127. </a>
  128. </div>
  129. </div>
  130. <!-- Sidebar component -->
  131. <doc-sidebar v-cloak>
  132. <template #sidebar-footer>
  133. <div class="shrink-0 mt-auto border-t md:bg-transparent md:border-none dark:border-base-border">
  134. <div class="py-3 px-6 md:hidden border-b dark:border-base-border">
  135. <nav>
  136. <ul class="flex flex-wrap justify-center items-center">
  137. <li class="mr-6">
  138. <a class="block py-1 inline-flex items-center text-sm whitespace-nowrap transition-colors duration-200 ease-linear md:text-header-text font-header-text hover:text-header-text-hover" href="">
  139. <svg xmlns="http://www.w3.org/2000/svg" class="mb-px mr-1.5" width="18" height="18" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" focusable="false">
  140. <path d="M11.03 2.59a1.501 1.501 0 0 1 1.94 0l7.5 6.363a1.5 1.5 0 0 1 .53 1.144V19.5a1.5 1.5 0 0 1-1.5 1.5h-5.75a.75.75 0 0 1-.75-.75V14h-2v6.25a.75.75 0 0 1-.75.75H4.5A1.5 1.5 0 0 1 3 19.5v-9.403c0-.44.194-.859.53-1.144ZM12 3.734l-7.5 6.363V19.5h5v-6.25a.75.75 0 0 1 .75-.75h3.5a.75.75 0 0 1 .75.75v6.25h5v-9.403Z"/>
  141. </svg>
  142. <span>Home</span>
  143. </a>
  144. </li>
  145. <li class="mr-6">
  146. <a class="block py-1 inline-flex items-center text-sm whitespace-nowrap transition-colors duration-200 ease-linear md:text-header-text font-header-text hover:text-header-text-hover" href="https://pocketpy.dev/static/web/" target="_blank">
  147. <svg xmlns="http://www.w3.org/2000/svg" class="mb-px mr-1.5" width="18" height="18" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" focusable="false">
  148. <path d="M9.5 15.584V8.416a.5.5 0 0 1 .77-.42l5.576 3.583a.5.5 0 0 1 0 .842l-5.576 3.584a.5.5 0 0 1-.77-.42Z"/><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12Zm11-9.5A9.5 9.5 0 0 0 2.5 12a9.5 9.5 0 0 0 9.5 9.5 9.5 9.5 0 0 0 9.5-9.5A9.5 9.5 0 0 0 12 2.5Z"/>
  149. </svg>
  150. <span>Live Demo</span>
  151. </a>
  152. </li>
  153. <li class="mr-6">
  154. <a class="block py-1 inline-flex items-center text-sm whitespace-nowrap transition-colors duration-200 ease-linear md:text-header-text font-header-text hover:text-header-text-hover" href="https://pocketpy.github.io/examples/" target="_blank">
  155. <svg xmlns="http://www.w3.org/2000/svg" class="mb-px mr-1.5" width="18" height="18" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" focusable="false">
  156. <path d="M15.22 4.97a.75.75 0 0 1 1.06 0l6.5 6.5a.75.75 0 0 1 0 1.06l-6.5 6.5a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L21.19 12l-5.97-5.97a.75.75 0 0 1 0-1.06Zm-6.44 0a.75.75 0 0 1 0 1.06L2.81 12l5.97 5.97a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215l-6.5-6.5a.75.75 0 0 1 0-1.06l6.5-6.5a.75.75 0 0 1 1.06 0Z"/>
  157. </svg>
  158. <span>Live Examples</span>
  159. </a>
  160. </li>
  161. <li class="mr-6">
  162. <a class="block py-1 inline-flex items-center text-sm whitespace-nowrap transition-colors duration-200 ease-linear md:text-header-text font-header-text hover:text-header-text-hover" href="https://github.com/blueloveth/pocketpy" target="_blank">
  163. <svg xmlns="http://www.w3.org/2000/svg" class="mb-px mr-1.5" width="18" height="18" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" focusable="false">
  164. <path d="M10.303 16.652c-2.837-.344-4.835-2.385-4.835-5.028 0-1.074.387-2.235 1.031-3.008-.279-.709-.236-2.214.086-2.837.86-.107 2.02.344 2.708.967.816-.258 1.676-.386 2.728-.386 1.053 0 1.913.128 2.686.365.666-.602 1.848-1.053 2.708-.946.3.581.344 2.085.064 2.815.688.817 1.053 1.913 1.053 3.03 0 2.643-1.998 4.641-4.877 5.006.73.473 1.224 1.504 1.224 2.686v2.235c0 .644.537 1.01 1.182.752 3.889-1.483 6.94-5.372 6.94-10.185 0-6.081-4.942-11.044-11.022-11.044-6.081 0-10.98 4.963-10.98 11.044a10.84 10.84 0 0 0 7.112 10.206c.58.215 1.139-.172 1.139-.752v-1.719a2.768 2.768 0 0 1-1.032.215c-1.418 0-2.256-.773-2.857-2.213-.237-.58-.495-.924-.989-.988-.258-.022-.344-.129-.344-.258 0-.258.43-.451.86-.451.623 0 1.16.386 1.719 1.181.43.623.881.903 1.418.903.537 0 .881-.194 1.375-.688.365-.365.645-.687.903-.902Z"/>
  165. </svg>
  166. <span>Github</span>
  167. </a>
  168. </li>
  169. <li class="mr-6">
  170. <a class="block py-1 inline-flex items-center text-sm whitespace-nowrap transition-colors duration-200 ease-linear md:text-header-text font-header-text hover:text-header-text-hover" href="https://discord.gg/WWaq72GzXv" target="_blank">
  171. <svg xmlns="http://www.w3.org/2000/svg" class="mb-px mr-1.5" width="18" height="18" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" focusable="false">
  172. <path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 14.25 14H8.061l-2.574 2.573A1.458 1.458 0 0 1 3 15.543V14H1.75A1.75 1.75 0 0 1 0 12.25v-9.5C0 1.784.784 1 1.75 1ZM1.5 2.75v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Z"/><path d="M22.5 8.75a.25.25 0 0 0-.25-.25h-3.5a.75.75 0 0 1 0-1.5h3.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 22.25 20H21v1.543a1.457 1.457 0 0 1-2.487 1.03L15.939 20H10.75A1.75 1.75 0 0 1 9 18.25v-1.465a.75.75 0 0 1 1.5 0v1.465c0 .138.112.25.25.25h5.5a.75.75 0 0 1 .53.22l2.72 2.72v-2.19a.75.75 0 0 1 .75-.75h2a.25.25 0 0 0 .25-.25v-9.5Z"/>
  173. </svg>
  174. <span>Discord</span>
  175. </a>
  176. </li>
  177. </ul>
  178. </nav>
  179. </div>
  180. <a class="flex items-center justify-center flex-nowrap h-16 text-gray-350 dark:text-dark-400 hover:text-gray-600 dark:hover:text-dark-300 transition-colors duration-150 ease-in docs-powered-by" target="_blank" href="https://retype.com/" rel="noopener">
  181. <span class="text-xs whitespace-nowrap">Powered by</span>
  182. <svg xmlns="http://www.w3.org/2000/svg" class="ml-2" fill="currentColor" width="96" height="20" overflow="visible"><path d="M0 0v20h13.59V0H0zm11.15 17.54H2.44V2.46h8.71v15.08zM15.8 20h2.44V4.67L15.8 2.22zM20.45 6.89V20h2.44V9.34z"/><g><path d="M40.16 8.44c0 1.49-.59 2.45-1.75 2.88l2.34 3.32h-2.53l-2.04-2.96h-1.43v2.96h-2.06V5.36h3.5c1.43 0 2.46.24 3.07.73s.9 1.27.9 2.35zm-2.48 1.1c.26-.23.38-.59.38-1.09 0-.5-.13-.84-.4-1.03s-.73-.28-1.39-.28h-1.54v2.75h1.5c.72 0 1.2-.12 1.45-.35zM51.56 5.36V7.2h-4.59v1.91h4.13v1.76h-4.13v1.92h4.74v1.83h-6.79V5.36h6.64zM60.09 7.15v7.48h-2.06V7.15h-2.61V5.36h7.28v1.79h-2.61zM70.81 14.64h-2.06v-3.66l-3.19-5.61h2.23l1.99 3.45 1.99-3.45H74l-3.19 5.61v3.66zM83.99 6.19c.65.55.97 1.4.97 2.55s-.33 1.98-1 2.51-1.68.8-3.04.8h-1.23v2.59h-2.06V5.36h3.26c1.42 0 2.45.28 3.1.83zm-1.51 3.65c.25-.28.37-.69.37-1.22s-.16-.92-.48-1.14c-.32-.23-.82-.34-1.5-.34H79.7v3.12h1.38c.68 0 1.15-.14 1.4-.42zM95.85 5.36V7.2h-4.59v1.91h4.13v1.76h-4.13v1.92H96v1.83h-6.79V5.36h6.64z"/></g></svg>
  183. </a>
  184. </div>
  185. </template>
  186. </doc-sidebar>
  187. <div class="grow min-w-0 bg-body-bg">
  188. <!-- Render "toolbar" template here on api pages --><!-- Render page content -->
  189. <div class="flex">
  190. <div id="retype-main" class="min-w-0 p-4 grow md:px-16">
  191. <main class="relative pb-12 lg:pt-2">
  192. <div class="retype-markdown" id="retype-content">
  193. <!-- Rendered if sidebar right is enabled -->
  194. <div id="retype-sidebar-right-toggle"></div>
  195. <!-- Page content -->
  196. <h1 id="functions">Functions</h1>
  197. <h3 id="py_initialize">py_initialize</h3>
  198. <div id="py_initialize-code-1" class="codeblock-wrapper"><doc-codeblock>
  199. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Initialize pocketpy and the default VM.
  200. PK_API void py_initialize();</code></pre>
  201. </doc-codeblock></div>
  202. <h3 id="py_finalize">py_finalize</h3>
  203. <div id="py_finalize-code-1" class="codeblock-wrapper"><doc-codeblock>
  204. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Finalize pocketpy and free all VMs. This opearation is irreversible.
  205. /// After this call, you cannot use any function from this header anymore.
  206. PK_API void py_finalize();</code></pre>
  207. </doc-codeblock></div>
  208. <h3 id="py_currentvm">py_currentvm</h3>
  209. <div id="py_currentvm-code-1" class="codeblock-wrapper"><doc-codeblock>
  210. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Get the current VM index.
  211. PK_API int py_currentvm();</code></pre>
  212. </doc-codeblock></div>
  213. <h3 id="py_switchvm">py_switchvm</h3>
  214. <div id="py_switchvm-code-1" class="codeblock-wrapper"><doc-codeblock>
  215. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Switch to a VM.
  216. /// @param index index of the VM ranging from 0 to 16 (exclusive). `0` is the default VM.
  217. PK_API void py_switchvm(int index);</code></pre>
  218. </doc-codeblock></div>
  219. <h3 id="py_resetvm">py_resetvm</h3>
  220. <div id="py_resetvm-code-1" class="codeblock-wrapper"><doc-codeblock>
  221. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Reset the current VM.
  222. PK_API void py_resetvm();</code></pre>
  223. </doc-codeblock></div>
  224. <h3 id="py_resetallvm">py_resetallvm</h3>
  225. <div id="py_resetallvm-code-1" class="codeblock-wrapper"><doc-codeblock>
  226. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Reset All VMs.
  227. PK_API void py_resetallvm();</code></pre>
  228. </doc-codeblock></div>
  229. <h3 id="py_getvmctx">py_getvmctx</h3>
  230. <div id="py_getvmctx-code-1" class="codeblock-wrapper"><doc-codeblock>
  231. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Get the current VM context. This is used for user-defined data.
  232. PK_API void* py_getvmctx();</code></pre>
  233. </doc-codeblock></div>
  234. <h3 id="py_setvmctx">py_setvmctx</h3>
  235. <div id="py_setvmctx-code-1" class="codeblock-wrapper"><doc-codeblock>
  236. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Set the current VM context. This is used for user-defined data.
  237. PK_API void py_setvmctx(void* ctx);</code></pre>
  238. </doc-codeblock></div>
  239. <h3 id="py_callbacks">py_callbacks</h3>
  240. <div id="py_callbacks-code-1" class="codeblock-wrapper"><doc-codeblock>
  241. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Setup the callbacks for the current VM.
  242. PK_API py_Callbacks* py_callbacks();</code></pre>
  243. </doc-codeblock></div>
  244. <h3 id="py_appcallbacks">py_appcallbacks</h3>
  245. <div id="py_appcallbacks-code-1" class="codeblock-wrapper"><doc-codeblock>
  246. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Setup the application callbacks
  247. PK_API py_AppCallbacks* py_appcallbacks();</code></pre>
  248. </doc-codeblock></div>
  249. <h3 id="py_sys_setargv">py_sys_setargv</h3>
  250. <div id="py_sys_setargv-code-1" class="codeblock-wrapper"><doc-codeblock>
  251. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Set `sys.argv`. Used for storing command-line arguments.
  252. PK_API void py_sys_setargv(int argc, char** argv);</code></pre>
  253. </doc-codeblock></div>
  254. <h3 id="py_sys_settrace">py_sys_settrace</h3>
  255. <div id="py_sys_settrace-code-1" class="codeblock-wrapper"><doc-codeblock>
  256. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Set the trace function for the current VM.
  257. PK_API void py_sys_settrace(py_TraceFunc func, bool reset);</code></pre>
  258. </doc-codeblock></div>
  259. <h3 id="py_gc_collect">py_gc_collect</h3>
  260. <div id="py_gc_collect-code-1" class="codeblock-wrapper"><doc-codeblock>
  261. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Invoke the garbage collector.
  262. PK_API int py_gc_collect();</code></pre>
  263. </doc-codeblock></div>
  264. <h3 id="py_malloc">py_malloc</h3>
  265. <div id="py_malloc-code-1" class="codeblock-wrapper"><doc-codeblock>
  266. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Wrapper for `PK_MALLOC(size)`.
  267. PK_API void* py_malloc(size_t size);</code></pre>
  268. </doc-codeblock></div>
  269. <h3 id="py_realloc">py_realloc</h3>
  270. <div id="py_realloc-code-1" class="codeblock-wrapper"><doc-codeblock>
  271. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Wrapper for `PK_REALLOC(ptr, size)`.
  272. PK_API void* py_realloc(void* ptr, size_t size);</code></pre>
  273. </doc-codeblock></div>
  274. <h3 id="py_free">py_free</h3>
  275. <div id="py_free-code-1" class="codeblock-wrapper"><doc-codeblock>
  276. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Wrapper for `PK_FREE(ptr)`.
  277. PK_API void py_free(void* ptr);</code></pre>
  278. </doc-codeblock></div>
  279. <h3 id="py_true">py_True</h3>
  280. <div id="py_true-code-1" class="codeblock-wrapper"><doc-codeblock>
  281. <pre translate="no" class="language-c"><code v-pre class="language-c">/// A shorthand for `True`.
  282. PK_API py_GlobalRef py_True();</code></pre>
  283. </doc-codeblock></div>
  284. <h3 id="py_false">py_False</h3>
  285. <div id="py_false-code-1" class="codeblock-wrapper"><doc-codeblock>
  286. <pre translate="no" class="language-c"><code v-pre class="language-c">/// A shorthand for `False`.
  287. PK_API py_GlobalRef py_False();</code></pre>
  288. </doc-codeblock></div>
  289. <h3 id="py_none">py_None</h3>
  290. <div id="py_none-code-1" class="codeblock-wrapper"><doc-codeblock>
  291. <pre translate="no" class="language-c"><code v-pre class="language-c">/// A shorthand for `None`.
  292. PK_API py_GlobalRef py_None();</code></pre>
  293. </doc-codeblock></div>
  294. <h3 id="py_nil">py_NIL</h3>
  295. <div id="py_nil-code-1" class="codeblock-wrapper"><doc-codeblock>
  296. <pre translate="no" class="language-c"><code v-pre class="language-c">/// A shorthand for `nil`. `nil` is not a valid python object.
  297. PK_API py_GlobalRef py_NIL();</code></pre>
  298. </doc-codeblock></div>
  299. <h3 id="py_frame_newglobals">py_Frame_newglobals</h3>
  300. <div id="py_frame_newglobals-code-1" class="codeblock-wrapper"><doc-codeblock>
  301. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Python equivalent to `globals()` with respect to the given frame.
  302. PK_API void py_Frame_newglobals(py_Frame* frame, py_OutRef out);</code></pre>
  303. </doc-codeblock></div>
  304. <h3 id="py_frame_newlocals">py_Frame_newlocals</h3>
  305. <div id="py_frame_newlocals-code-1" class="codeblock-wrapper"><doc-codeblock>
  306. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Python equivalent to `locals()` with respect to the given frame.
  307. PK_API void py_Frame_newlocals(py_Frame* frame, py_OutRef out);</code></pre>
  308. </doc-codeblock></div>
  309. <h3 id="py_frame_function">py_Frame_function</h3>
  310. <div id="py_frame_function-code-1" class="codeblock-wrapper"><doc-codeblock>
  311. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Get the function object of the frame.
  312. /// Returns `NULL` if not available.
  313. PK_API py_StackRef py_Frame_function(py_Frame* frame);</code></pre>
  314. </doc-codeblock></div>
  315. <h3 id="py_compile">py_compile <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  316. <span>raise</span>
  317. </a> <a href="../introduction/#py_return-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-primary-text bg-badge-primary border border-badge-primary-border hover:text-badge-primary-text-hover hover:bg-badge-primary-hover hover:border-badge-primary-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  318. <span>return</span>
  319. </a></h3>
  320. <div id="py_compile-code-1" class="codeblock-wrapper"><doc-codeblock>
  321. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Compile a source string into a code object.
  322. /// Use python's `exec()` or `eval()` to execute it.
  323. PK_API bool py_compile(const char* source,
  324. const char* filename,
  325. enum py_CompileMode mode,
  326. bool is_dynamic);</code></pre>
  327. </doc-codeblock></div>
  328. <h3 id="py_compilefile">py_compilefile <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  329. <span>raise</span>
  330. </a></h3>
  331. <div id="py_compilefile-code-1" class="codeblock-wrapper"><doc-codeblock>
  332. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Compile a `.py` file into a `.pyc` file.
  333. PK_API bool py_compilefile(const char* src_path,
  334. const char* dst_path);</code></pre>
  335. </doc-codeblock></div>
  336. <h3 id="py_execo">py_execo <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  337. <span>raise</span>
  338. </a> <a href="../introduction/#py_return-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-primary-text bg-badge-primary border border-badge-primary-border hover:text-badge-primary-text-hover hover:bg-badge-primary-hover hover:border-badge-primary-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  339. <span>return</span>
  340. </a></h3>
  341. <div id="py_execo-code-1" class="codeblock-wrapper"><doc-codeblock>
  342. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Run a compiled code object.
  343. PK_API bool py_execo(const void* data, int size, const char* filename, py_Ref module);</code></pre>
  344. </doc-codeblock></div>
  345. <h3 id="py_exec">py_exec <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  346. <span>raise</span>
  347. </a> <a href="../introduction/#py_return-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-primary-text bg-badge-primary border border-badge-primary-border hover:text-badge-primary-text-hover hover:bg-badge-primary-hover hover:border-badge-primary-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  348. <span>return</span>
  349. </a></h3>
  350. <div id="py_exec-code-1" class="codeblock-wrapper"><doc-codeblock>
  351. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Run a source string.
  352. /// @param source source string.
  353. /// @param filename filename (for error messages).
  354. /// @param mode compile mode. Use `EXEC_MODE` for statements `EVAL_MODE` for expressions.
  355. /// @param module target module. Use NULL for the main module.
  356. /// @return `true` if the execution is successful or `false` if an exception is raised.
  357. PK_API bool py_exec(const char* source,
  358. const char* filename,
  359. enum py_CompileMode mode,
  360. py_Ref module);</code></pre>
  361. </doc-codeblock></div>
  362. <h3 id="py_eval">py_eval <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  363. <span>raise</span>
  364. </a> <a href="../introduction/#py_return-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-primary-text bg-badge-primary border border-badge-primary-border hover:text-badge-primary-text-hover hover:bg-badge-primary-hover hover:border-badge-primary-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  365. <span>return</span>
  366. </a></h3>
  367. <div id="py_eval-code-1" class="codeblock-wrapper"><doc-codeblock>
  368. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Evaluate a source string. Equivalent to `py_exec(source, &quot;&lt;string&gt;&quot;, EVAL_MODE, module)`.
  369. PK_API bool py_eval(const char* source, py_Ref module);</code></pre>
  370. </doc-codeblock></div>
  371. <h3 id="py_smartexec">py_smartexec <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  372. <span>raise</span>
  373. </a> <a href="../introduction/#py_return-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-primary-text bg-badge-primary border border-badge-primary-border hover:text-badge-primary-text-hover hover:bg-badge-primary-hover hover:border-badge-primary-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  374. <span>return</span>
  375. </a></h3>
  376. <div id="py_smartexec-code-1" class="codeblock-wrapper"><doc-codeblock>
  377. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Run a source string with smart interpretation.
  378. /// Example:
  379. /// `py_newstr(py_r0(), &quot;abc&quot;);`
  380. /// `py_newint(py_r1(), 123);`
  381. /// `py_smartexec(&quot;print(_0, _1)&quot;, NULL, py_r0(), py_r1());`
  382. /// `// &quot;abc 123&quot; will be printed`.
  383. PK_API bool py_smartexec(const char* source, py_Ref module, ...);</code></pre>
  384. </doc-codeblock></div>
  385. <h3 id="py_smarteval">py_smarteval <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  386. <span>raise</span>
  387. </a> <a href="../introduction/#py_return-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-primary-text bg-badge-primary border border-badge-primary-border hover:text-badge-primary-text-hover hover:bg-badge-primary-hover hover:border-badge-primary-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  388. <span>return</span>
  389. </a></h3>
  390. <div id="py_smarteval-code-1" class="codeblock-wrapper"><doc-codeblock>
  391. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Evaluate a source string with smart interpretation.
  392. /// Example:
  393. /// `py_newstr(py_r0(), &quot;abc&quot;);`
  394. /// `py_smarteval(&quot;len(_)&quot;, NULL, py_r0());`
  395. /// `int res = py_toint(py_retval());`
  396. /// `// res will be 3`.
  397. PK_API bool py_smarteval(const char* source, py_Ref module, ...);</code></pre>
  398. </doc-codeblock></div>
  399. <h3 id="py_newint">py_newint</h3>
  400. <div id="py_newint-code-1" class="codeblock-wrapper"><doc-codeblock>
  401. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Create an `int` object.
  402. PK_API void py_newint(py_OutRef, py_i64);</code></pre>
  403. </doc-codeblock></div>
  404. <h3 id="py_newtrivial">py_newtrivial</h3>
  405. <div id="py_newtrivial-code-1" class="codeblock-wrapper"><doc-codeblock>
  406. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Create a trivial value object.
  407. PK_API void py_newtrivial(py_OutRef out, py_Type type, void* data, int size);</code></pre>
  408. </doc-codeblock></div>
  409. <h3 id="py_newfloat">py_newfloat</h3>
  410. <div id="py_newfloat-code-1" class="codeblock-wrapper"><doc-codeblock>
  411. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Create a `float` object.
  412. PK_API void py_newfloat(py_OutRef, py_f64);</code></pre>
  413. </doc-codeblock></div>
  414. <h3 id="py_newbool">py_newbool</h3>
  415. <div id="py_newbool-code-1" class="codeblock-wrapper"><doc-codeblock>
  416. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Create a `bool` object.
  417. PK_API void py_newbool(py_OutRef, bool);</code></pre>
  418. </doc-codeblock></div>
  419. <h3 id="py_newstr">py_newstr</h3>
  420. <div id="py_newstr-code-1" class="codeblock-wrapper"><doc-codeblock>
  421. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Create a `str` object from a null-terminated string (utf-8).
  422. PK_API void py_newstr(py_OutRef, const char*);</code></pre>
  423. </doc-codeblock></div>
  424. <h3 id="py_newstrn">py_newstrn</h3>
  425. <div id="py_newstrn-code-1" class="codeblock-wrapper"><doc-codeblock>
  426. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Create a `str` object with `n` UNINITIALIZED bytes plus `'\0'`.
  427. PK_API char* py_newstrn(py_OutRef, int);</code></pre>
  428. </doc-codeblock></div>
  429. <h3 id="py_newstrv">py_newstrv</h3>
  430. <div id="py_newstrv-code-1" class="codeblock-wrapper"><doc-codeblock>
  431. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Create a `str` object from a `c11_sv`.
  432. PK_API void py_newstrv(py_OutRef, c11_sv);</code></pre>
  433. </doc-codeblock></div>
  434. <h3 id="py_newfstr">py_newfstr</h3>
  435. <div id="py_newfstr-code-1" class="codeblock-wrapper"><doc-codeblock>
  436. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Create a formatted `str` object.
  437. PK_API void py_newfstr(py_OutRef, const char*, ...);</code></pre>
  438. </doc-codeblock></div>
  439. <h3 id="py_newnone">py_newnone</h3>
  440. <div id="py_newnone-code-1" class="codeblock-wrapper"><doc-codeblock>
  441. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Create a `None` object.
  442. PK_API void py_newnone(py_OutRef);</code></pre>
  443. </doc-codeblock></div>
  444. <h3 id="py_newnotimplemented">py_newnotimplemented</h3>
  445. <div id="py_newnotimplemented-code-1" class="codeblock-wrapper"><doc-codeblock>
  446. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Create a `NotImplemented` object.
  447. PK_API void py_newnotimplemented(py_OutRef);</code></pre>
  448. </doc-codeblock></div>
  449. <h3 id="py_newellipsis">py_newellipsis</h3>
  450. <div id="py_newellipsis-code-1" class="codeblock-wrapper"><doc-codeblock>
  451. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Create a `...` object.
  452. PK_API void py_newellipsis(py_OutRef);</code></pre>
  453. </doc-codeblock></div>
  454. <h3 id="py_newnil">py_newnil</h3>
  455. <div id="py_newnil-code-1" class="codeblock-wrapper"><doc-codeblock>
  456. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Create a `nil` object. `nil` is an invalid representation of an object.
  457. /// Don't use it unless you know what you are doing.
  458. PK_API void py_newnil(py_OutRef);</code></pre>
  459. </doc-codeblock></div>
  460. <h3 id="py_newnativefunc">py_newnativefunc</h3>
  461. <div id="py_newnativefunc-code-1" class="codeblock-wrapper"><doc-codeblock>
  462. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Create a `nativefunc` object.
  463. PK_API void py_newnativefunc(py_OutRef, py_CFunction);</code></pre>
  464. </doc-codeblock></div>
  465. <h3 id="py_newfunction">py_newfunction</h3>
  466. <div id="py_newfunction-code-1" class="codeblock-wrapper"><doc-codeblock>
  467. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Create a `function` object.
  468. PK_API py_Name py_newfunction(py_OutRef out,
  469. const char* sig,
  470. py_CFunction f,
  471. const char* docstring,
  472. int slots);</code></pre>
  473. </doc-codeblock></div>
  474. <h3 id="py_newboundmethod">py_newboundmethod</h3>
  475. <div id="py_newboundmethod-code-1" class="codeblock-wrapper"><doc-codeblock>
  476. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Create a `boundmethod` object.
  477. PK_API void py_newboundmethod(py_OutRef out, py_Ref self, py_Ref func);</code></pre>
  478. </doc-codeblock></div>
  479. <h3 id="py_newobject">py_newobject</h3>
  480. <div id="py_newobject-code-1" class="codeblock-wrapper"><doc-codeblock>
  481. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Create a new object.
  482. /// @param out output reference.
  483. /// @param type type of the object.
  484. /// @param slots number of slots. Use `-1` to create a `__dict__`.
  485. /// @param udsize size of your userdata.
  486. /// @return pointer to the userdata.
  487. PK_API void* py_newobject(py_OutRef out, py_Type type, int slots, int udsize);</code></pre>
  488. </doc-codeblock></div>
  489. <h3 id="py_name">py_name</h3>
  490. <div id="py_name-code-1" class="codeblock-wrapper"><doc-codeblock>
  491. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Convert a null-terminated string to a name.
  492. PK_API py_Name py_name(const char*);</code></pre>
  493. </doc-codeblock></div>
  494. <h3 id="py_name2ref">py_name2ref</h3>
  495. <div id="py_name2ref-code-1" class="codeblock-wrapper"><doc-codeblock>
  496. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Convert a name to a python `str` object with cache.
  497. PK_API py_GlobalRef py_name2ref(py_Name);</code></pre>
  498. </doc-codeblock></div>
  499. <h3 id="py_namev">py_namev</h3>
  500. <div id="py_namev-code-1" class="codeblock-wrapper"><doc-codeblock>
  501. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Convert a `c11_sv` to a name.
  502. PK_API py_Name py_namev(c11_sv);</code></pre>
  503. </doc-codeblock></div>
  504. <h3 id="py_name2sv">py_name2sv</h3>
  505. <div id="py_name2sv-code-1" class="codeblock-wrapper"><doc-codeblock>
  506. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Convert a name to a `c11_sv`.
  507. PK_API c11_sv py_name2sv(py_Name);</code></pre>
  508. </doc-codeblock></div>
  509. <h3 id="py_bind">py_bind</h3>
  510. <div id="py_bind-code-1" class="codeblock-wrapper"><doc-codeblock>
  511. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Bind a function to the object via &quot;decl-based&quot; style.
  512. /// @param obj the target object.
  513. /// @param sig signature of the function. e.g. `add(x, y)`.
  514. /// @param f function to bind.
  515. PK_API void py_bind(py_Ref obj, const char* sig, py_CFunction f);</code></pre>
  516. </doc-codeblock></div>
  517. <h3 id="py_bindmethod">py_bindmethod</h3>
  518. <div id="py_bindmethod-code-1" class="codeblock-wrapper"><doc-codeblock>
  519. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Bind a method to type via &quot;argc-based&quot; style.
  520. /// @param type the target type.
  521. /// @param name name of the method.
  522. /// @param f function to bind.
  523. PK_API void py_bindmethod(py_Type type, const char* name, py_CFunction f);</code></pre>
  524. </doc-codeblock></div>
  525. <h3 id="py_bindstaticmethod">py_bindstaticmethod</h3>
  526. <div id="py_bindstaticmethod-code-1" class="codeblock-wrapper"><doc-codeblock>
  527. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Bind a static method to type via &quot;argc-based&quot; style.
  528. /// @param type the target type.
  529. /// @param name name of the method.
  530. /// @param f function to bind.
  531. PK_API void py_bindstaticmethod(py_Type type, const char* name, py_CFunction f);</code></pre>
  532. </doc-codeblock></div>
  533. <h3 id="py_bindfunc">py_bindfunc</h3>
  534. <div id="py_bindfunc-code-1" class="codeblock-wrapper"><doc-codeblock>
  535. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Bind a function to the object via &quot;argc-based&quot; style.
  536. /// @param obj the target object.
  537. /// @param name name of the function.
  538. /// @param f function to bind.
  539. PK_API void py_bindfunc(py_Ref obj, const char* name, py_CFunction f);</code></pre>
  540. </doc-codeblock></div>
  541. <h3 id="py_bindproperty">py_bindproperty</h3>
  542. <div id="py_bindproperty-code-1" class="codeblock-wrapper"><doc-codeblock>
  543. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Bind a property to type.
  544. /// @param type the target type.
  545. /// @param name name of the property.
  546. /// @param getter getter function.
  547. /// @param setter setter function. Use `NULL` if not needed.
  548. PK_API void py_bindproperty(py_Type type, const char* name, py_CFunction getter, py_CFunction setter);</code></pre>
  549. </doc-codeblock></div>
  550. <h3 id="py_bindmagic">py_bindmagic</h3>
  551. <div id="py_bindmagic-code-1" class="codeblock-wrapper"><doc-codeblock>
  552. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Bind a magic method to type.
  553. PK_API void py_bindmagic(py_Type type, py_Name name, py_CFunction f);</code></pre>
  554. </doc-codeblock></div>
  555. <h3 id="py_toint">py_toint</h3>
  556. <div id="py_toint-code-1" class="codeblock-wrapper"><doc-codeblock>
  557. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Convert an `int` object in python to `int64_t`.
  558. PK_API py_i64 py_toint(py_Ref);</code></pre>
  559. </doc-codeblock></div>
  560. <h3 id="py_totrivial">py_totrivial</h3>
  561. <div id="py_totrivial-code-1" class="codeblock-wrapper"><doc-codeblock>
  562. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Get the address of the trivial value object (16 bytes).
  563. PK_API void* py_totrivial(py_Ref);</code></pre>
  564. </doc-codeblock></div>
  565. <h3 id="py_tofloat">py_tofloat</h3>
  566. <div id="py_tofloat-code-1" class="codeblock-wrapper"><doc-codeblock>
  567. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Convert a `float` object in python to `double`.
  568. PK_API py_f64 py_tofloat(py_Ref);</code></pre>
  569. </doc-codeblock></div>
  570. <h3 id="py_castfloat">py_castfloat <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  571. <span>raise</span>
  572. </a></h3>
  573. <div id="py_castfloat-code-1" class="codeblock-wrapper"><doc-codeblock>
  574. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Cast a `int` or `float` object in python to `double`.
  575. /// If successful, return true and set the value to `out`.
  576. /// Otherwise, return false and raise `TypeError`.
  577. PK_API bool py_castfloat(py_Ref, py_f64* out);</code></pre>
  578. </doc-codeblock></div>
  579. <h3 id="py_castfloat32">py_castfloat32 <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  580. <span>raise</span>
  581. </a></h3>
  582. <div id="py_castfloat32-code-1" class="codeblock-wrapper"><doc-codeblock>
  583. <pre translate="no" class="language-c"><code v-pre class="language-c">/// 32-bit version of `py_castfloat`.
  584. PK_API bool py_castfloat32(py_Ref, float* out);</code></pre>
  585. </doc-codeblock></div>
  586. <h3 id="py_castint">py_castint <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  587. <span>raise</span>
  588. </a></h3>
  589. <div id="py_castint-code-1" class="codeblock-wrapper"><doc-codeblock>
  590. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Cast a `int` object in python to `int64_t`.
  591. PK_API bool py_castint(py_Ref, py_i64* out);</code></pre>
  592. </doc-codeblock></div>
  593. <h3 id="py_tobool">py_tobool</h3>
  594. <div id="py_tobool-code-1" class="codeblock-wrapper"><doc-codeblock>
  595. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Convert a `bool` object in python to `bool`.
  596. PK_API bool py_tobool(py_Ref);</code></pre>
  597. </doc-codeblock></div>
  598. <h3 id="py_totype">py_totype</h3>
  599. <div id="py_totype-code-1" class="codeblock-wrapper"><doc-codeblock>
  600. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Convert a `type` object in python to `py_Type`.
  601. PK_API py_Type py_totype(py_Ref);</code></pre>
  602. </doc-codeblock></div>
  603. <h3 id="py_touserdata">py_touserdata</h3>
  604. <div id="py_touserdata-code-1" class="codeblock-wrapper"><doc-codeblock>
  605. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Convert a user-defined object to its userdata.
  606. PK_API void* py_touserdata(py_Ref);</code></pre>
  607. </doc-codeblock></div>
  608. <h3 id="py_tosv">py_tosv</h3>
  609. <div id="py_tosv-code-1" class="codeblock-wrapper"><doc-codeblock>
  610. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Convert a `str` object in python to `c11_sv`.
  611. PK_API c11_sv py_tosv(py_Ref);</code></pre>
  612. </doc-codeblock></div>
  613. <h3 id="py_bytes_resize">py_bytes_resize</h3>
  614. <div id="py_bytes_resize-code-1" class="codeblock-wrapper"><doc-codeblock>
  615. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Resize a `bytes` object. It can only be resized down.
  616. PK_API void py_bytes_resize(py_Ref, int size);</code></pre>
  617. </doc-codeblock></div>
  618. <h3 id="py_newtype">py_newtype</h3>
  619. <div id="py_newtype-code-1" class="codeblock-wrapper"><doc-codeblock>
  620. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Create a new type.
  621. /// @param name name of the type.
  622. /// @param base base type.
  623. /// @param module module where the type is defined. Use `NULL` for built-in types.
  624. /// @param dtor destructor function. Use `NULL` if not needed.
  625. PK_API py_Type py_newtype(const char* name, py_Type base, const py_GlobalRef module, py_Dtor dtor);</code></pre>
  626. </doc-codeblock></div>
  627. <h3 id="py_istype">py_istype</h3>
  628. <div id="py_istype-code-1" class="codeblock-wrapper"><doc-codeblock>
  629. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Check if the object is exactly the given type.
  630. PK_API bool py_istype(py_Ref, py_Type);</code></pre>
  631. </doc-codeblock></div>
  632. <h3 id="py_typeof">py_typeof</h3>
  633. <div id="py_typeof-code-1" class="codeblock-wrapper"><doc-codeblock>
  634. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Get the type of the object.
  635. PK_API py_Type py_typeof(py_Ref self);</code></pre>
  636. </doc-codeblock></div>
  637. <h3 id="py_isinstance">py_isinstance</h3>
  638. <div id="py_isinstance-code-1" class="codeblock-wrapper"><doc-codeblock>
  639. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Check if the object is an instance of the given type.
  640. PK_API bool py_isinstance(py_Ref obj, py_Type type);</code></pre>
  641. </doc-codeblock></div>
  642. <h3 id="py_issubclass">py_issubclass</h3>
  643. <div id="py_issubclass-code-1" class="codeblock-wrapper"><doc-codeblock>
  644. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Check if the derived type is a subclass of the base type.
  645. PK_API bool py_issubclass(py_Type derived, py_Type base);</code></pre>
  646. </doc-codeblock></div>
  647. <h3 id="py_gettype">py_gettype</h3>
  648. <div id="py_gettype-code-1" class="codeblock-wrapper"><doc-codeblock>
  649. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Get type by module and name. e.g. `py_gettype(&quot;time&quot;, py_name(&quot;struct_time&quot;))`.
  650. /// Return `0` if not found.
  651. PK_API py_Type py_gettype(const char* module, py_Name name);</code></pre>
  652. </doc-codeblock></div>
  653. <h3 id="py_checktype">py_checktype <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  654. <span>raise</span>
  655. </a></h3>
  656. <div id="py_checktype-code-1" class="codeblock-wrapper"><doc-codeblock>
  657. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Check if the object is an instance of the given type exactly.
  658. /// Raise `TypeError` if the check fails.
  659. PK_API bool py_checktype(py_Ref self, py_Type type);</code></pre>
  660. </doc-codeblock></div>
  661. <h3 id="py_checkinstance">py_checkinstance <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  662. <span>raise</span>
  663. </a></h3>
  664. <div id="py_checkinstance-code-1" class="codeblock-wrapper"><doc-codeblock>
  665. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Check if the object is an instance of the given type or its subclass.
  666. /// Raise `TypeError` if the check fails.
  667. PK_API bool py_checkinstance(py_Ref self, py_Type type);</code></pre>
  668. </doc-codeblock></div>
  669. <h3 id="py_tpfindmagic">py_tpfindmagic</h3>
  670. <div id="py_tpfindmagic-code-1" class="codeblock-wrapper"><doc-codeblock>
  671. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Search the magic method from the given type to the base type.
  672. /// Return `NULL` if not found.
  673. PK_API py_GlobalRef py_tpfindmagic(py_Type, py_Name name);</code></pre>
  674. </doc-codeblock></div>
  675. <h3 id="py_tpfindname">py_tpfindname</h3>
  676. <div id="py_tpfindname-code-1" class="codeblock-wrapper"><doc-codeblock>
  677. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Search the name from the given type to the base type.
  678. /// Return `NULL` if not found.
  679. PK_API py_ItemRef py_tpfindname(py_Type, py_Name name);</code></pre>
  680. </doc-codeblock></div>
  681. <h3 id="py_tpbase">py_tpbase</h3>
  682. <div id="py_tpbase-code-1" class="codeblock-wrapper"><doc-codeblock>
  683. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Get the base type of the given type.
  684. PK_API py_Type py_tpbase(py_Type type);</code></pre>
  685. </doc-codeblock></div>
  686. <h3 id="py_tpobject">py_tpobject</h3>
  687. <div id="py_tpobject-code-1" class="codeblock-wrapper"><doc-codeblock>
  688. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Get the type object of the given type.
  689. PK_API py_GlobalRef py_tpobject(py_Type type);</code></pre>
  690. </doc-codeblock></div>
  691. <h3 id="py_tpsetfinal">py_tpsetfinal</h3>
  692. <div id="py_tpsetfinal-code-1" class="codeblock-wrapper"><doc-codeblock>
  693. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Disable the type for subclassing.
  694. PK_API void py_tpsetfinal(py_Type type);</code></pre>
  695. </doc-codeblock></div>
  696. <h3 id="py_tphookattributes">py_tphookattributes</h3>
  697. <div id="py_tphookattributes-code-1" class="codeblock-wrapper"><doc-codeblock>
  698. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Set attribute hooks for the given type.
  699. PK_API void py_tphookattributes(py_Type type,
  700. bool (*getattribute)(py_Ref self, py_Name name) PY_RAISE PY_RETURN,
  701. bool (*setattribute)(py_Ref self, py_Name name, py_Ref val)
  702. PY_RAISE PY_RETURN,
  703. bool (*delattribute)(py_Ref self, py_Name name) PY_RAISE,
  704. bool (*getunboundmethod)(py_Ref self, py_Name name) PY_RETURN);</code></pre>
  705. </doc-codeblock></div>
  706. <h3 id="py_inspect_currentfunction">py_inspect_currentfunction</h3>
  707. <div id="py_inspect_currentfunction-code-1" class="codeblock-wrapper"><doc-codeblock>
  708. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Get the current `Callable` object on the stack of the most recent vectorcall.
  709. /// Return `NULL` if not available.
  710. /// NOTE: This function should be placed at the beginning of your bindings or you will get wrong result.
  711. PK_API py_StackRef py_inspect_currentfunction();</code></pre>
  712. </doc-codeblock></div>
  713. <h3 id="py_inspect_currentmodule">py_inspect_currentmodule</h3>
  714. <div id="py_inspect_currentmodule-code-1" class="codeblock-wrapper"><doc-codeblock>
  715. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Get the current `module` object where the code is executed.
  716. /// Return `NULL` if not available.
  717. PK_API py_GlobalRef py_inspect_currentmodule();</code></pre>
  718. </doc-codeblock></div>
  719. <h3 id="py_inspect_currentframe">py_inspect_currentframe</h3>
  720. <div id="py_inspect_currentframe-code-1" class="codeblock-wrapper"><doc-codeblock>
  721. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Get the current frame object.
  722. /// Return `NULL` if not available.
  723. PK_API py_Frame* py_inspect_currentframe();</code></pre>
  724. </doc-codeblock></div>
  725. <h3 id="py_newglobals">py_newglobals</h3>
  726. <div id="py_newglobals-code-1" class="codeblock-wrapper"><doc-codeblock>
  727. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Python equivalent to `globals()`.
  728. PK_API void py_newglobals(py_OutRef);</code></pre>
  729. </doc-codeblock></div>
  730. <h3 id="py_newlocals">py_newlocals</h3>
  731. <div id="py_newlocals-code-1" class="codeblock-wrapper"><doc-codeblock>
  732. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Python equivalent to `locals()`.
  733. PK_API void py_newlocals(py_OutRef);</code></pre>
  734. </doc-codeblock></div>
  735. <h3 id="py_getreg">py_getreg</h3>
  736. <div id="py_getreg-code-1" class="codeblock-wrapper"><doc-codeblock>
  737. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Get the i-th register.
  738. /// All registers are located in a contiguous memory.
  739. PK_API py_GlobalRef py_getreg(int i);</code></pre>
  740. </doc-codeblock></div>
  741. <h3 id="py_setreg">py_setreg</h3>
  742. <div id="py_setreg-code-1" class="codeblock-wrapper"><doc-codeblock>
  743. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Set the i-th register.
  744. PK_API void py_setreg(int i, py_Ref val);</code></pre>
  745. </doc-codeblock></div>
  746. <h3 id="py_retval">py_retval</h3>
  747. <div id="py_retval-code-1" class="codeblock-wrapper"><doc-codeblock>
  748. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Get the last return value.
  749. /// Please note that `py_retval()` cannot be used as input argument.
  750. PK_API py_GlobalRef py_retval();</code></pre>
  751. </doc-codeblock></div>
  752. <h3 id="py_getdict">py_getdict</h3>
  753. <div id="py_getdict-code-1" class="codeblock-wrapper"><doc-codeblock>
  754. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Get an item from the object's `__dict__`.
  755. /// Return `NULL` if not found.
  756. PK_API py_ItemRef py_getdict(py_Ref self, py_Name name);</code></pre>
  757. </doc-codeblock></div>
  758. <h3 id="py_setdict">py_setdict</h3>
  759. <div id="py_setdict-code-1" class="codeblock-wrapper"><doc-codeblock>
  760. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Set an item to the object's `__dict__`.
  761. PK_API void py_setdict(py_Ref self, py_Name name, py_Ref val);</code></pre>
  762. </doc-codeblock></div>
  763. <h3 id="py_deldict">py_deldict</h3>
  764. <div id="py_deldict-code-1" class="codeblock-wrapper"><doc-codeblock>
  765. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Delete an item from the object's `__dict__`.
  766. /// Return `true` if the deletion is successful.
  767. PK_API bool py_deldict(py_Ref self, py_Name name);</code></pre>
  768. </doc-codeblock></div>
  769. <h3 id="py_emplacedict">py_emplacedict</h3>
  770. <div id="py_emplacedict-code-1" class="codeblock-wrapper"><doc-codeblock>
  771. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Prepare an insertion to the object's `__dict__`.
  772. PK_API py_ItemRef py_emplacedict(py_Ref self, py_Name name);</code></pre>
  773. </doc-codeblock></div>
  774. <h3 id="py_applydict">py_applydict <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  775. <span>raise</span>
  776. </a></h3>
  777. <div id="py_applydict-code-1" class="codeblock-wrapper"><doc-codeblock>
  778. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Apply a function to all items in the object's `__dict__`.
  779. /// Return `true` if the function is successful for all items.
  780. /// NOTE: Be careful if `f` modifies the object's `__dict__`.
  781. PK_API bool py_applydict(py_Ref self, bool (*f)(py_Name name, py_Ref val, void* ctx), void* ctx);</code></pre>
  782. </doc-codeblock></div>
  783. <h3 id="py_cleardict">py_cleardict</h3>
  784. <div id="py_cleardict-code-1" class="codeblock-wrapper"><doc-codeblock>
  785. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Clear the object's `__dict__`. This function is dangerous.
  786. PK_API void py_cleardict(py_Ref self);</code></pre>
  787. </doc-codeblock></div>
  788. <h3 id="py_getslot">py_getslot</h3>
  789. <div id="py_getslot-code-1" class="codeblock-wrapper"><doc-codeblock>
  790. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Get the i-th slot of the object.
  791. /// The object must have slots and `i` must be in valid range.
  792. PK_API py_ObjectRef py_getslot(py_Ref self, int i);</code></pre>
  793. </doc-codeblock></div>
  794. <h3 id="py_setslot">py_setslot</h3>
  795. <div id="py_setslot-code-1" class="codeblock-wrapper"><doc-codeblock>
  796. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Set the i-th slot of the object.
  797. PK_API void py_setslot(py_Ref self, int i, py_Ref val);</code></pre>
  798. </doc-codeblock></div>
  799. <h3 id="py_getbuiltin">py_getbuiltin</h3>
  800. <div id="py_getbuiltin-code-1" class="codeblock-wrapper"><doc-codeblock>
  801. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Get variable in the `builtins` module.
  802. PK_API py_ItemRef py_getbuiltin(py_Name name);</code></pre>
  803. </doc-codeblock></div>
  804. <h3 id="py_getglobal">py_getglobal</h3>
  805. <div id="py_getglobal-code-1" class="codeblock-wrapper"><doc-codeblock>
  806. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Get variable in the `__main__` module.
  807. PK_API py_ItemRef py_getglobal(py_Name name);</code></pre>
  808. </doc-codeblock></div>
  809. <h3 id="py_setglobal">py_setglobal</h3>
  810. <div id="py_setglobal-code-1" class="codeblock-wrapper"><doc-codeblock>
  811. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Set variable in the `__main__` module.
  812. PK_API void py_setglobal(py_Name name, py_Ref val);</code></pre>
  813. </doc-codeblock></div>
  814. <h3 id="py_peek">py_peek</h3>
  815. <div id="py_peek-code-1" class="codeblock-wrapper"><doc-codeblock>
  816. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Get the i-th object from the top of the stack.
  817. /// `i` should be negative, e.g. (-1) means TOS.
  818. PK_API py_StackRef py_peek(int i);</code></pre>
  819. </doc-codeblock></div>
  820. <h3 id="py_push">py_push</h3>
  821. <div id="py_push-code-1" class="codeblock-wrapper"><doc-codeblock>
  822. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Push the object to the stack.
  823. PK_API void py_push(py_Ref src);</code></pre>
  824. </doc-codeblock></div>
  825. <h3 id="py_pushnil">py_pushnil</h3>
  826. <div id="py_pushnil-code-1" class="codeblock-wrapper"><doc-codeblock>
  827. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Push a `nil` object to the stack.
  828. PK_API void py_pushnil();</code></pre>
  829. </doc-codeblock></div>
  830. <h3 id="py_pushnone">py_pushnone</h3>
  831. <div id="py_pushnone-code-1" class="codeblock-wrapper"><doc-codeblock>
  832. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Push a `None` object to the stack.
  833. PK_API void py_pushnone();</code></pre>
  834. </doc-codeblock></div>
  835. <h3 id="py_pushname">py_pushname</h3>
  836. <div id="py_pushname-code-1" class="codeblock-wrapper"><doc-codeblock>
  837. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Push a `py_Name` to the stack. This is used for keyword arguments.
  838. PK_API void py_pushname(py_Name name);</code></pre>
  839. </doc-codeblock></div>
  840. <h3 id="py_pop">py_pop</h3>
  841. <div id="py_pop-code-1" class="codeblock-wrapper"><doc-codeblock>
  842. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Pop an object from the stack.
  843. PK_API void py_pop();</code></pre>
  844. </doc-codeblock></div>
  845. <h3 id="py_shrink">py_shrink</h3>
  846. <div id="py_shrink-code-1" class="codeblock-wrapper"><doc-codeblock>
  847. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Shrink the stack by n.
  848. PK_API void py_shrink(int n);</code></pre>
  849. </doc-codeblock></div>
  850. <h3 id="py_pushtmp">py_pushtmp</h3>
  851. <div id="py_pushtmp-code-1" class="codeblock-wrapper"><doc-codeblock>
  852. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Get a temporary variable from the stack.
  853. PK_API py_StackRef py_pushtmp();</code></pre>
  854. </doc-codeblock></div>
  855. <h3 id="py_pushmethod">py_pushmethod</h3>
  856. <div id="py_pushmethod-code-1" class="codeblock-wrapper"><doc-codeblock>
  857. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Get the unbound method of the object.
  858. /// Assume the object is located at the top of the stack.
  859. /// If return true: `[self] -&gt; [unbound, self]`.
  860. /// If return false: `[self] -&gt; [self]` (no change).
  861. PK_API bool py_pushmethod(py_Name name);</code></pre>
  862. </doc-codeblock></div>
  863. <h3 id="py_pusheval">py_pusheval <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  864. <span>raise</span>
  865. </a></h3>
  866. <div id="py_pusheval-code-1" class="codeblock-wrapper"><doc-codeblock>
  867. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Evaluate an expression and push the result to the stack.
  868. /// This function is used for testing.
  869. PK_API bool py_pusheval(const char* expr, py_GlobalRef module);</code></pre>
  870. </doc-codeblock></div>
  871. <h3 id="py_vectorcall">py_vectorcall <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  872. <span>raise</span>
  873. </a> <a href="../introduction/#py_return-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-primary-text bg-badge-primary border border-badge-primary-border hover:text-badge-primary-text-hover hover:bg-badge-primary-hover hover:border-badge-primary-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  874. <span>return</span>
  875. </a></h3>
  876. <div id="py_vectorcall-code-1" class="codeblock-wrapper"><doc-codeblock>
  877. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Call a callable object via pocketpy's calling convention.
  878. /// You need to prepare the stack using the following format:
  879. /// `callable, self/nil, arg1, arg2, ..., k1, v1, k2, v2, ...`.
  880. /// `argc` is the number of positional arguments excluding `self`.
  881. /// `kwargc` is the number of keyword arguments.
  882. /// The result will be set to `py_retval()`.
  883. /// The stack size will be reduced by `2 + argc + kwargc * 2`.
  884. PK_API bool py_vectorcall(uint16_t argc, uint16_t kwargc);</code></pre>
  885. </doc-codeblock></div>
  886. <h3 id="py_call">py_call <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  887. <span>raise</span>
  888. </a> <a href="../introduction/#py_return-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-primary-text bg-badge-primary border border-badge-primary-border hover:text-badge-primary-text-hover hover:bg-badge-primary-hover hover:border-badge-primary-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  889. <span>return</span>
  890. </a></h3>
  891. <div id="py_call-code-1" class="codeblock-wrapper"><doc-codeblock>
  892. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Call a function.
  893. /// It prepares the stack and then performs a `vectorcall(argc, 0, false)`.
  894. /// The result will be set to `py_retval()`.
  895. /// The stack remains unchanged if successful.
  896. PK_API bool py_call(py_Ref f, int argc, py_Ref argv);</code></pre>
  897. </doc-codeblock></div>
  898. <h3 id="py_tpcall">py_tpcall <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  899. <span>raise</span>
  900. </a> <a href="../introduction/#py_return-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-primary-text bg-badge-primary border border-badge-primary-border hover:text-badge-primary-text-hover hover:bg-badge-primary-hover hover:border-badge-primary-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  901. <span>return</span>
  902. </a></h3>
  903. <div id="py_tpcall-code-1" class="codeblock-wrapper"><doc-codeblock>
  904. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Call a type to create a new instance.
  905. PK_API bool py_tpcall(py_Type type, int argc, py_Ref argv);</code></pre>
  906. </doc-codeblock></div>
  907. <h3 id="py_callcfunc">py_callcfunc <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  908. <span>raise</span>
  909. </a> <a href="../introduction/#py_return-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-primary-text bg-badge-primary border border-badge-primary-border hover:text-badge-primary-text-hover hover:bg-badge-primary-hover hover:border-badge-primary-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  910. <span>return</span>
  911. </a></h3>
  912. <div id="py_callcfunc-code-1" class="codeblock-wrapper"><doc-codeblock>
  913. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Call a `py_CFunction` in a safe way.
  914. /// This function does extra checks to help you debug `py_CFunction`.
  915. PK_API bool py_callcfunc(py_CFunction f, int argc, py_Ref argv);</code></pre>
  916. </doc-codeblock></div>
  917. <h3 id="py_binaryop">py_binaryop <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  918. <span>raise</span>
  919. </a> <a href="../introduction/#py_return-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-primary-text bg-badge-primary border border-badge-primary-border hover:text-badge-primary-text-hover hover:bg-badge-primary-hover hover:border-badge-primary-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  920. <span>return</span>
  921. </a></h3>
  922. <div id="py_binaryop-code-1" class="codeblock-wrapper"><doc-codeblock>
  923. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Perform a binary operation.
  924. /// The result will be set to `py_retval()`.
  925. /// The stack remains unchanged after the operation.
  926. PK_API bool py_binaryop(py_Ref lhs, py_Ref rhs, py_Name op, py_Name rop);</code></pre>
  927. </doc-codeblock></div>
  928. <h3 id="py_binaryadd">py_binaryadd <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  929. <span>raise</span>
  930. </a> <a href="../introduction/#py_return-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-primary-text bg-badge-primary border border-badge-primary-border hover:text-badge-primary-text-hover hover:bg-badge-primary-hover hover:border-badge-primary-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  931. <span>return</span>
  932. </a></h3>
  933. <div id="py_binaryadd-code-1" class="codeblock-wrapper"><doc-codeblock>
  934. <pre translate="no" class="language-c"><code v-pre class="language-c">/// lhs + rhs
  935. PK_API bool py_binaryadd(py_Ref lhs, py_Ref rhs);</code></pre>
  936. </doc-codeblock></div>
  937. <h3 id="py_binarysub">py_binarysub <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  938. <span>raise</span>
  939. </a> <a href="../introduction/#py_return-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-primary-text bg-badge-primary border border-badge-primary-border hover:text-badge-primary-text-hover hover:bg-badge-primary-hover hover:border-badge-primary-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  940. <span>return</span>
  941. </a></h3>
  942. <div id="py_binarysub-code-1" class="codeblock-wrapper"><doc-codeblock>
  943. <pre translate="no" class="language-c"><code v-pre class="language-c">/// lhs - rhs
  944. PK_API bool py_binarysub(py_Ref lhs, py_Ref rhs);</code></pre>
  945. </doc-codeblock></div>
  946. <h3 id="py_binarymul">py_binarymul <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  947. <span>raise</span>
  948. </a> <a href="../introduction/#py_return-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-primary-text bg-badge-primary border border-badge-primary-border hover:text-badge-primary-text-hover hover:bg-badge-primary-hover hover:border-badge-primary-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  949. <span>return</span>
  950. </a></h3>
  951. <div id="py_binarymul-code-1" class="codeblock-wrapper"><doc-codeblock>
  952. <pre translate="no" class="language-c"><code v-pre class="language-c">/// lhs * rhs
  953. PK_API bool py_binarymul(py_Ref lhs, py_Ref rhs);</code></pre>
  954. </doc-codeblock></div>
  955. <h3 id="py_binarytruediv">py_binarytruediv <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  956. <span>raise</span>
  957. </a> <a href="../introduction/#py_return-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-primary-text bg-badge-primary border border-badge-primary-border hover:text-badge-primary-text-hover hover:bg-badge-primary-hover hover:border-badge-primary-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  958. <span>return</span>
  959. </a></h3>
  960. <div id="py_binarytruediv-code-1" class="codeblock-wrapper"><doc-codeblock>
  961. <pre translate="no" class="language-c"><code v-pre class="language-c">/// lhs / rhs
  962. PK_API bool py_binarytruediv(py_Ref lhs, py_Ref rhs);</code></pre>
  963. </doc-codeblock></div>
  964. <h3 id="py_binaryfloordiv">py_binaryfloordiv <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  965. <span>raise</span>
  966. </a> <a href="../introduction/#py_return-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-primary-text bg-badge-primary border border-badge-primary-border hover:text-badge-primary-text-hover hover:bg-badge-primary-hover hover:border-badge-primary-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  967. <span>return</span>
  968. </a></h3>
  969. <div id="py_binaryfloordiv-code-1" class="codeblock-wrapper"><doc-codeblock>
  970. <pre translate="no" class="language-c"><code v-pre class="language-c">/// lhs // rhs
  971. PK_API bool py_binaryfloordiv(py_Ref lhs, py_Ref rhs);</code></pre>
  972. </doc-codeblock></div>
  973. <h3 id="py_binarymod">py_binarymod <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  974. <span>raise</span>
  975. </a> <a href="../introduction/#py_return-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-primary-text bg-badge-primary border border-badge-primary-border hover:text-badge-primary-text-hover hover:bg-badge-primary-hover hover:border-badge-primary-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  976. <span>return</span>
  977. </a></h3>
  978. <div id="py_binarymod-code-1" class="codeblock-wrapper"><doc-codeblock>
  979. <pre translate="no" class="language-c"><code v-pre class="language-c">/// lhs % rhs
  980. PK_API bool py_binarymod(py_Ref lhs, py_Ref rhs);</code></pre>
  981. </doc-codeblock></div>
  982. <h3 id="py_binarypow">py_binarypow <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  983. <span>raise</span>
  984. </a> <a href="../introduction/#py_return-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-primary-text bg-badge-primary border border-badge-primary-border hover:text-badge-primary-text-hover hover:bg-badge-primary-hover hover:border-badge-primary-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  985. <span>return</span>
  986. </a></h3>
  987. <div id="py_binarypow-code-1" class="codeblock-wrapper"><doc-codeblock>
  988. <pre translate="no" class="language-c"><code v-pre class="language-c">/// lhs ** rhs
  989. PK_API bool py_binarypow(py_Ref lhs, py_Ref rhs);</code></pre>
  990. </doc-codeblock></div>
  991. <h3 id="py_binarylshift">py_binarylshift <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  992. <span>raise</span>
  993. </a> <a href="../introduction/#py_return-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-primary-text bg-badge-primary border border-badge-primary-border hover:text-badge-primary-text-hover hover:bg-badge-primary-hover hover:border-badge-primary-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  994. <span>return</span>
  995. </a></h3>
  996. <div id="py_binarylshift-code-1" class="codeblock-wrapper"><doc-codeblock>
  997. <pre translate="no" class="language-c"><code v-pre class="language-c">/// lhs &lt;&lt; rhs
  998. PK_API bool py_binarylshift(py_Ref lhs, py_Ref rhs);</code></pre>
  999. </doc-codeblock></div>
  1000. <h3 id="py_binaryrshift">py_binaryrshift <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1001. <span>raise</span>
  1002. </a> <a href="../introduction/#py_return-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-primary-text bg-badge-primary border border-badge-primary-border hover:text-badge-primary-text-hover hover:bg-badge-primary-hover hover:border-badge-primary-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1003. <span>return</span>
  1004. </a></h3>
  1005. <div id="py_binaryrshift-code-1" class="codeblock-wrapper"><doc-codeblock>
  1006. <pre translate="no" class="language-c"><code v-pre class="language-c">/// lhs &gt;&gt; rhs
  1007. PK_API bool py_binaryrshift(py_Ref lhs, py_Ref rhs);</code></pre>
  1008. </doc-codeblock></div>
  1009. <h3 id="py_binaryand">py_binaryand <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1010. <span>raise</span>
  1011. </a> <a href="../introduction/#py_return-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-primary-text bg-badge-primary border border-badge-primary-border hover:text-badge-primary-text-hover hover:bg-badge-primary-hover hover:border-badge-primary-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1012. <span>return</span>
  1013. </a></h3>
  1014. <div id="py_binaryand-code-1" class="codeblock-wrapper"><doc-codeblock>
  1015. <pre translate="no" class="language-c"><code v-pre class="language-c">/// lhs &amp; rhs
  1016. PK_API bool py_binaryand(py_Ref lhs, py_Ref rhs);</code></pre>
  1017. </doc-codeblock></div>
  1018. <h3 id="py_binaryor">py_binaryor <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1019. <span>raise</span>
  1020. </a> <a href="../introduction/#py_return-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-primary-text bg-badge-primary border border-badge-primary-border hover:text-badge-primary-text-hover hover:bg-badge-primary-hover hover:border-badge-primary-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1021. <span>return</span>
  1022. </a></h3>
  1023. <div id="py_binaryor-code-1" class="codeblock-wrapper"><doc-codeblock>
  1024. <pre translate="no" class="language-c"><code v-pre class="language-c">/// lhs | rhs
  1025. PK_API bool py_binaryor(py_Ref lhs, py_Ref rhs);</code></pre>
  1026. </doc-codeblock></div>
  1027. <h3 id="py_binaryxor">py_binaryxor <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1028. <span>raise</span>
  1029. </a> <a href="../introduction/#py_return-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-primary-text bg-badge-primary border border-badge-primary-border hover:text-badge-primary-text-hover hover:bg-badge-primary-hover hover:border-badge-primary-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1030. <span>return</span>
  1031. </a></h3>
  1032. <div id="py_binaryxor-code-1" class="codeblock-wrapper"><doc-codeblock>
  1033. <pre translate="no" class="language-c"><code v-pre class="language-c">/// lhs ^ rhs
  1034. PK_API bool py_binaryxor(py_Ref lhs, py_Ref rhs);</code></pre>
  1035. </doc-codeblock></div>
  1036. <h3 id="py_binarymatmul">py_binarymatmul <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1037. <span>raise</span>
  1038. </a> <a href="../introduction/#py_return-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-primary-text bg-badge-primary border border-badge-primary-border hover:text-badge-primary-text-hover hover:bg-badge-primary-hover hover:border-badge-primary-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1039. <span>return</span>
  1040. </a></h3>
  1041. <div id="py_binarymatmul-code-1" class="codeblock-wrapper"><doc-codeblock>
  1042. <pre translate="no" class="language-c"><code v-pre class="language-c">/// lhs @ rhs
  1043. PK_API bool py_binarymatmul(py_Ref lhs, py_Ref rhs);</code></pre>
  1044. </doc-codeblock></div>
  1045. <h3 id="py_eq">py_eq <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1046. <span>raise</span>
  1047. </a> <a href="../introduction/#py_return-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-primary-text bg-badge-primary border border-badge-primary-border hover:text-badge-primary-text-hover hover:bg-badge-primary-hover hover:border-badge-primary-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1048. <span>return</span>
  1049. </a></h3>
  1050. <div id="py_eq-code-1" class="codeblock-wrapper"><doc-codeblock>
  1051. <pre translate="no" class="language-c"><code v-pre class="language-c">/// lhs == rhs
  1052. PK_API bool py_eq(py_Ref lhs, py_Ref rhs);</code></pre>
  1053. </doc-codeblock></div>
  1054. <h3 id="py_ne">py_ne <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1055. <span>raise</span>
  1056. </a> <a href="../introduction/#py_return-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-primary-text bg-badge-primary border border-badge-primary-border hover:text-badge-primary-text-hover hover:bg-badge-primary-hover hover:border-badge-primary-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1057. <span>return</span>
  1058. </a></h3>
  1059. <div id="py_ne-code-1" class="codeblock-wrapper"><doc-codeblock>
  1060. <pre translate="no" class="language-c"><code v-pre class="language-c">/// lhs != rhs
  1061. PK_API bool py_ne(py_Ref lhs, py_Ref rhs);</code></pre>
  1062. </doc-codeblock></div>
  1063. <h3 id="py_lt">py_lt <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1064. <span>raise</span>
  1065. </a> <a href="../introduction/#py_return-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-primary-text bg-badge-primary border border-badge-primary-border hover:text-badge-primary-text-hover hover:bg-badge-primary-hover hover:border-badge-primary-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1066. <span>return</span>
  1067. </a></h3>
  1068. <div id="py_lt-code-1" class="codeblock-wrapper"><doc-codeblock>
  1069. <pre translate="no" class="language-c"><code v-pre class="language-c">/// lhs &lt; rhs
  1070. PK_API bool py_lt(py_Ref lhs, py_Ref rhs);</code></pre>
  1071. </doc-codeblock></div>
  1072. <h3 id="py_le">py_le <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1073. <span>raise</span>
  1074. </a> <a href="../introduction/#py_return-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-primary-text bg-badge-primary border border-badge-primary-border hover:text-badge-primary-text-hover hover:bg-badge-primary-hover hover:border-badge-primary-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1075. <span>return</span>
  1076. </a></h3>
  1077. <div id="py_le-code-1" class="codeblock-wrapper"><doc-codeblock>
  1078. <pre translate="no" class="language-c"><code v-pre class="language-c">/// lhs &lt;= rhs
  1079. PK_API bool py_le(py_Ref lhs, py_Ref rhs);</code></pre>
  1080. </doc-codeblock></div>
  1081. <h3 id="py_gt">py_gt <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1082. <span>raise</span>
  1083. </a> <a href="../introduction/#py_return-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-primary-text bg-badge-primary border border-badge-primary-border hover:text-badge-primary-text-hover hover:bg-badge-primary-hover hover:border-badge-primary-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1084. <span>return</span>
  1085. </a></h3>
  1086. <div id="py_gt-code-1" class="codeblock-wrapper"><doc-codeblock>
  1087. <pre translate="no" class="language-c"><code v-pre class="language-c">/// lhs &gt; rhs
  1088. PK_API bool py_gt(py_Ref lhs, py_Ref rhs);</code></pre>
  1089. </doc-codeblock></div>
  1090. <h3 id="py_ge">py_ge <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1091. <span>raise</span>
  1092. </a> <a href="../introduction/#py_return-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-primary-text bg-badge-primary border border-badge-primary-border hover:text-badge-primary-text-hover hover:bg-badge-primary-hover hover:border-badge-primary-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1093. <span>return</span>
  1094. </a></h3>
  1095. <div id="py_ge-code-1" class="codeblock-wrapper"><doc-codeblock>
  1096. <pre translate="no" class="language-c"><code v-pre class="language-c">/// lhs &gt;= rhs
  1097. PK_API bool py_ge(py_Ref lhs, py_Ref rhs);</code></pre>
  1098. </doc-codeblock></div>
  1099. <h3 id="py_isidentical">py_isidentical</h3>
  1100. <div id="py_isidentical-code-1" class="codeblock-wrapper"><doc-codeblock>
  1101. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Python equivalent to `lhs is rhs`.
  1102. PK_API bool py_isidentical(py_Ref, py_Ref);</code></pre>
  1103. </doc-codeblock></div>
  1104. <h3 id="py_bool">py_bool <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1105. <span>raise</span>
  1106. </a></h3>
  1107. <div id="py_bool-code-1" class="codeblock-wrapper"><doc-codeblock>
  1108. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Python equivalent to `bool(val)`.
  1109. /// 1: true, 0: false, -1: error
  1110. PK_API int py_bool(py_Ref val);</code></pre>
  1111. </doc-codeblock></div>
  1112. <h3 id="py_equal">py_equal <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1113. <span>raise</span>
  1114. </a></h3>
  1115. <div id="py_equal-code-1" class="codeblock-wrapper"><doc-codeblock>
  1116. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Compare two objects.
  1117. /// 1: lhs == rhs, 0: lhs != rhs, -1: error
  1118. PK_API int py_equal(py_Ref lhs, py_Ref rhs);</code></pre>
  1119. </doc-codeblock></div>
  1120. <h3 id="py_less">py_less <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1121. <span>raise</span>
  1122. </a></h3>
  1123. <div id="py_less-code-1" class="codeblock-wrapper"><doc-codeblock>
  1124. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Compare two objects.
  1125. /// 1: lhs &lt; rhs, 0: lhs &gt;= rhs, -1: error
  1126. PK_API int py_less(py_Ref lhs, py_Ref rhs);</code></pre>
  1127. </doc-codeblock></div>
  1128. <h3 id="py_callable">py_callable</h3>
  1129. <div id="py_callable-code-1" class="codeblock-wrapper"><doc-codeblock>
  1130. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Python equivalent to `callable(val)`.
  1131. PK_API bool py_callable(py_Ref val);</code></pre>
  1132. </doc-codeblock></div>
  1133. <h3 id="py_hash">py_hash <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1134. <span>raise</span>
  1135. </a></h3>
  1136. <div id="py_hash-code-1" class="codeblock-wrapper"><doc-codeblock>
  1137. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Get the hash value of the object.
  1138. PK_API bool py_hash(py_Ref, py_i64* out);</code></pre>
  1139. </doc-codeblock></div>
  1140. <h3 id="py_iter">py_iter <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1141. <span>raise</span>
  1142. </a> <a href="../introduction/#py_return-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-primary-text bg-badge-primary border border-badge-primary-border hover:text-badge-primary-text-hover hover:bg-badge-primary-hover hover:border-badge-primary-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1143. <span>return</span>
  1144. </a></h3>
  1145. <div id="py_iter-code-1" class="codeblock-wrapper"><doc-codeblock>
  1146. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Get the iterator of the object.
  1147. PK_API bool py_iter(py_Ref);</code></pre>
  1148. </doc-codeblock></div>
  1149. <h3 id="py_next">py_next <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1150. <span>raise</span>
  1151. </a> <a href="../introduction/#py_return-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-primary-text bg-badge-primary border border-badge-primary-border hover:text-badge-primary-text-hover hover:bg-badge-primary-hover hover:border-badge-primary-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1152. <span>return</span>
  1153. </a></h3>
  1154. <div id="py_next-code-1" class="codeblock-wrapper"><doc-codeblock>
  1155. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Get the next element from the iterator.
  1156. /// 1: success, 0: StopIteration, -1: error
  1157. PK_API int py_next(py_Ref);</code></pre>
  1158. </doc-codeblock></div>
  1159. <h3 id="py_str">py_str <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1160. <span>raise</span>
  1161. </a> <a href="../introduction/#py_return-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-primary-text bg-badge-primary border border-badge-primary-border hover:text-badge-primary-text-hover hover:bg-badge-primary-hover hover:border-badge-primary-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1162. <span>return</span>
  1163. </a></h3>
  1164. <div id="py_str-code-1" class="codeblock-wrapper"><doc-codeblock>
  1165. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Python equivalent to `str(val)`.
  1166. PK_API bool py_str(py_Ref val);</code></pre>
  1167. </doc-codeblock></div>
  1168. <h3 id="py_repr">py_repr <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1169. <span>raise</span>
  1170. </a> <a href="../introduction/#py_return-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-primary-text bg-badge-primary border border-badge-primary-border hover:text-badge-primary-text-hover hover:bg-badge-primary-hover hover:border-badge-primary-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1171. <span>return</span>
  1172. </a></h3>
  1173. <div id="py_repr-code-1" class="codeblock-wrapper"><doc-codeblock>
  1174. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Python equivalent to `repr(val)`.
  1175. PK_API bool py_repr(py_Ref val);</code></pre>
  1176. </doc-codeblock></div>
  1177. <h3 id="py_len">py_len <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1178. <span>raise</span>
  1179. </a> <a href="../introduction/#py_return-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-primary-text bg-badge-primary border border-badge-primary-border hover:text-badge-primary-text-hover hover:bg-badge-primary-hover hover:border-badge-primary-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1180. <span>return</span>
  1181. </a></h3>
  1182. <div id="py_len-code-1" class="codeblock-wrapper"><doc-codeblock>
  1183. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Python equivalent to `len(val)`.
  1184. PK_API bool py_len(py_Ref val);</code></pre>
  1185. </doc-codeblock></div>
  1186. <h3 id="py_getattr">py_getattr <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1187. <span>raise</span>
  1188. </a> <a href="../introduction/#py_return-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-primary-text bg-badge-primary border border-badge-primary-border hover:text-badge-primary-text-hover hover:bg-badge-primary-hover hover:border-badge-primary-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1189. <span>return</span>
  1190. </a></h3>
  1191. <div id="py_getattr-code-1" class="codeblock-wrapper"><doc-codeblock>
  1192. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Python equivalent to `getattr(self, name)`.
  1193. PK_API bool py_getattr(py_Ref self, py_Name name);</code></pre>
  1194. </doc-codeblock></div>
  1195. <h3 id="py_setattr">py_setattr <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1196. <span>raise</span>
  1197. </a></h3>
  1198. <div id="py_setattr-code-1" class="codeblock-wrapper"><doc-codeblock>
  1199. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Python equivalent to `setattr(self, name, val)`.
  1200. PK_API bool py_setattr(py_Ref self, py_Name name, py_Ref val);</code></pre>
  1201. </doc-codeblock></div>
  1202. <h3 id="py_delattr">py_delattr <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1203. <span>raise</span>
  1204. </a></h3>
  1205. <div id="py_delattr-code-1" class="codeblock-wrapper"><doc-codeblock>
  1206. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Python equivalent to `delattr(self, name)`.
  1207. PK_API bool py_delattr(py_Ref self, py_Name name);</code></pre>
  1208. </doc-codeblock></div>
  1209. <h3 id="py_getitem">py_getitem <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1210. <span>raise</span>
  1211. </a> <a href="../introduction/#py_return-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-primary-text bg-badge-primary border border-badge-primary-border hover:text-badge-primary-text-hover hover:bg-badge-primary-hover hover:border-badge-primary-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1212. <span>return</span>
  1213. </a></h3>
  1214. <div id="py_getitem-code-1" class="codeblock-wrapper"><doc-codeblock>
  1215. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Python equivalent to `self[key]`.
  1216. PK_API bool py_getitem(py_Ref self, py_Ref key);</code></pre>
  1217. </doc-codeblock></div>
  1218. <h3 id="py_setitem">py_setitem <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1219. <span>raise</span>
  1220. </a></h3>
  1221. <div id="py_setitem-code-1" class="codeblock-wrapper"><doc-codeblock>
  1222. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Python equivalent to `self[key] = val`.
  1223. PK_API bool py_setitem(py_Ref self, py_Ref key, py_Ref val);</code></pre>
  1224. </doc-codeblock></div>
  1225. <h3 id="py_delitem">py_delitem <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1226. <span>raise</span>
  1227. </a></h3>
  1228. <div id="py_delitem-code-1" class="codeblock-wrapper"><doc-codeblock>
  1229. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Python equivalent to `del self[key]`.
  1230. PK_API bool py_delitem(py_Ref self, py_Ref key);</code></pre>
  1231. </doc-codeblock></div>
  1232. <h3 id="py_getmodule">py_getmodule</h3>
  1233. <div id="py_getmodule-code-1" class="codeblock-wrapper"><doc-codeblock>
  1234. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Get a module by path.
  1235. PK_API py_GlobalRef py_getmodule(const char* path);</code></pre>
  1236. </doc-codeblock></div>
  1237. <h3 id="py_newmodule">py_newmodule</h3>
  1238. <div id="py_newmodule-code-1" class="codeblock-wrapper"><doc-codeblock>
  1239. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Create a new module.
  1240. PK_API py_GlobalRef py_newmodule(const char* path);</code></pre>
  1241. </doc-codeblock></div>
  1242. <h3 id="py_importlib_reload">py_importlib_reload <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1243. <span>raise</span>
  1244. </a> <a href="../introduction/#py_return-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-primary-text bg-badge-primary border border-badge-primary-border hover:text-badge-primary-text-hover hover:bg-badge-primary-hover hover:border-badge-primary-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1245. <span>return</span>
  1246. </a></h3>
  1247. <div id="py_importlib_reload-code-1" class="codeblock-wrapper"><doc-codeblock>
  1248. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Reload an existing module.
  1249. PK_API bool py_importlib_reload(py_Ref module);</code></pre>
  1250. </doc-codeblock></div>
  1251. <h3 id="py_import">py_import <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1252. <span>raise</span>
  1253. </a> <a href="../introduction/#py_return-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-primary-text bg-badge-primary border border-badge-primary-border hover:text-badge-primary-text-hover hover:bg-badge-primary-hover hover:border-badge-primary-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1254. <span>return</span>
  1255. </a></h3>
  1256. <div id="py_import-code-1" class="codeblock-wrapper"><doc-codeblock>
  1257. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Import a module.
  1258. /// The result will be set to `py_retval()`.
  1259. /// -1: error, 0: not found, 1: success
  1260. PK_API int py_import(const char* path);</code></pre>
  1261. </doc-codeblock></div>
  1262. <h3 id="py_checkexc">py_checkexc</h3>
  1263. <div id="py_checkexc-code-1" class="codeblock-wrapper"><doc-codeblock>
  1264. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Check if there is an unhandled exception.
  1265. PK_API bool py_checkexc();</code></pre>
  1266. </doc-codeblock></div>
  1267. <h3 id="py_matchexc">py_matchexc <a href="../introduction/#py_return-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-primary-text bg-badge-primary border border-badge-primary-border hover:text-badge-primary-text-hover hover:bg-badge-primary-hover hover:border-badge-primary-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1268. <span>return</span>
  1269. </a></h3>
  1270. <div id="py_matchexc-code-1" class="codeblock-wrapper"><doc-codeblock>
  1271. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Check if the unhandled exception is an instance of the given type.
  1272. /// If match, the exception will be stored in `py_retval()`.
  1273. PK_API bool py_matchexc(py_Type type);</code></pre>
  1274. </doc-codeblock></div>
  1275. <h3 id="py_clearexc">py_clearexc</h3>
  1276. <div id="py_clearexc-code-1" class="codeblock-wrapper"><doc-codeblock>
  1277. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Clear the unhandled exception.
  1278. /// @param p0 the unwinding point. Use `NULL` if not needed.
  1279. PK_API void py_clearexc(py_StackRef p0);</code></pre>
  1280. </doc-codeblock></div>
  1281. <h3 id="py_printexc">py_printexc</h3>
  1282. <div id="py_printexc-code-1" class="codeblock-wrapper"><doc-codeblock>
  1283. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Print the unhandled exception.
  1284. PK_API void py_printexc();</code></pre>
  1285. </doc-codeblock></div>
  1286. <h3 id="py_formatexc">py_formatexc</h3>
  1287. <div id="py_formatexc-code-1" class="codeblock-wrapper"><doc-codeblock>
  1288. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Format the unhandled exception and return a null-terminated string.
  1289. /// The returned string should be freed by the caller.
  1290. PK_API char* py_formatexc();</code></pre>
  1291. </doc-codeblock></div>
  1292. <h3 id="py_exception">py_exception <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1293. <span>raise</span>
  1294. </a></h3>
  1295. <div id="py_exception-code-1" class="codeblock-wrapper"><doc-codeblock>
  1296. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Raise an exception by type and message. Always return false.
  1297. PK_API bool py_exception(py_Type type, const char* fmt, ...);</code></pre>
  1298. </doc-codeblock></div>
  1299. <h3 id="py_raise">py_raise <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1300. <span>raise</span>
  1301. </a></h3>
  1302. <div id="py_raise-code-1" class="codeblock-wrapper"><doc-codeblock>
  1303. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Raise an exception object. Always return false.
  1304. PK_API bool py_raise(py_Ref);</code></pre>
  1305. </doc-codeblock></div>
  1306. <h3 id="keyerror">KeyError <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1307. <span>raise</span>
  1308. </a></h3>
  1309. <div id="keyerror-code-1" class="codeblock-wrapper"><doc-codeblock>
  1310. <pre translate="no" class="language-c"><code v-pre class="language-c">
  1311. PK_API bool KeyError(py_Ref key);</code></pre>
  1312. </doc-codeblock></div>
  1313. <h3 id="stopiteration">StopIteration <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1314. <span>raise</span>
  1315. </a></h3>
  1316. <div id="stopiteration-code-1" class="codeblock-wrapper"><doc-codeblock>
  1317. <pre translate="no" class="language-c"><code v-pre class="language-c">
  1318. PK_API bool StopIteration();</code></pre>
  1319. </doc-codeblock></div>
  1320. <h3 id="py_debugger_waitforattach">py_debugger_waitforattach</h3>
  1321. <div id="py_debugger_waitforattach-code-1" class="codeblock-wrapper"><doc-codeblock>
  1322. <pre translate="no" class="language-c"><code v-pre class="language-c">
  1323. PK_API void py_debugger_waitforattach(const char* hostname, unsigned short port);</code></pre>
  1324. </doc-codeblock></div>
  1325. <h3 id="py_debugger_status">py_debugger_status</h3>
  1326. <div id="py_debugger_status-code-1" class="codeblock-wrapper"><doc-codeblock>
  1327. <pre translate="no" class="language-c"><code v-pre class="language-c">
  1328. PK_API int py_debugger_status();</code></pre>
  1329. </doc-codeblock></div>
  1330. <h3 id="py_debugger_exceptionbreakpoint">py_debugger_exceptionbreakpoint</h3>
  1331. <div id="py_debugger_exceptionbreakpoint-code-1" class="codeblock-wrapper"><doc-codeblock>
  1332. <pre translate="no" class="language-c"><code v-pre class="language-c">
  1333. PK_API void py_debugger_exceptionbreakpoint(py_Ref exc);</code></pre>
  1334. </doc-codeblock></div>
  1335. <h3 id="py_debugger_exit">py_debugger_exit</h3>
  1336. <div id="py_debugger_exit-code-1" class="codeblock-wrapper"><doc-codeblock>
  1337. <pre translate="no" class="language-c"><code v-pre class="language-c">
  1338. PK_API void py_debugger_exit(int code);</code></pre>
  1339. </doc-codeblock></div>
  1340. <h3 id="py_newtuple">py_newtuple</h3>
  1341. <div id="py_newtuple-code-1" class="codeblock-wrapper"><doc-codeblock>
  1342. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Create a `tuple` with `n` UNINITIALIZED elements.
  1343. /// You should initialize all elements before using it.
  1344. PK_API py_ObjectRef py_newtuple(py_OutRef, int n);</code></pre>
  1345. </doc-codeblock></div>
  1346. <h3 id="py_tuple_data">py_tuple_data</h3>
  1347. <div id="py_tuple_data-code-1" class="codeblock-wrapper"><doc-codeblock>
  1348. <pre translate="no" class="language-c"><code v-pre class="language-c">
  1349. PK_API py_ObjectRef py_tuple_data(py_Ref self);</code></pre>
  1350. </doc-codeblock></div>
  1351. <h3 id="py_tuple_getitem">py_tuple_getitem</h3>
  1352. <div id="py_tuple_getitem-code-1" class="codeblock-wrapper"><doc-codeblock>
  1353. <pre translate="no" class="language-c"><code v-pre class="language-c">
  1354. PK_API py_ObjectRef py_tuple_getitem(py_Ref self, int i);</code></pre>
  1355. </doc-codeblock></div>
  1356. <h3 id="py_tuple_setitem">py_tuple_setitem</h3>
  1357. <div id="py_tuple_setitem-code-1" class="codeblock-wrapper"><doc-codeblock>
  1358. <pre translate="no" class="language-c"><code v-pre class="language-c">
  1359. PK_API void py_tuple_setitem(py_Ref self, int i, py_Ref val);</code></pre>
  1360. </doc-codeblock></div>
  1361. <h3 id="py_tuple_len">py_tuple_len</h3>
  1362. <div id="py_tuple_len-code-1" class="codeblock-wrapper"><doc-codeblock>
  1363. <pre translate="no" class="language-c"><code v-pre class="language-c">
  1364. PK_API int py_tuple_len(py_Ref self);</code></pre>
  1365. </doc-codeblock></div>
  1366. <h3 id="py_newlist">py_newlist</h3>
  1367. <div id="py_newlist-code-1" class="codeblock-wrapper"><doc-codeblock>
  1368. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Create an empty `list`.
  1369. PK_API void py_newlist(py_OutRef);</code></pre>
  1370. </doc-codeblock></div>
  1371. <h3 id="py_newlistn">py_newlistn</h3>
  1372. <div id="py_newlistn-code-1" class="codeblock-wrapper"><doc-codeblock>
  1373. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Create a `list` with `n` UNINITIALIZED elements.
  1374. /// You should initialize all elements before using it.
  1375. PK_API void py_newlistn(py_OutRef, int n);</code></pre>
  1376. </doc-codeblock></div>
  1377. <h3 id="py_list_data">py_list_data</h3>
  1378. <div id="py_list_data-code-1" class="codeblock-wrapper"><doc-codeblock>
  1379. <pre translate="no" class="language-c"><code v-pre class="language-c">
  1380. PK_API py_ItemRef py_list_data(py_Ref self);</code></pre>
  1381. </doc-codeblock></div>
  1382. <h3 id="py_list_getitem">py_list_getitem</h3>
  1383. <div id="py_list_getitem-code-1" class="codeblock-wrapper"><doc-codeblock>
  1384. <pre translate="no" class="language-c"><code v-pre class="language-c">
  1385. PK_API py_ItemRef py_list_getitem(py_Ref self, int i);</code></pre>
  1386. </doc-codeblock></div>
  1387. <h3 id="py_list_setitem">py_list_setitem</h3>
  1388. <div id="py_list_setitem-code-1" class="codeblock-wrapper"><doc-codeblock>
  1389. <pre translate="no" class="language-c"><code v-pre class="language-c">
  1390. PK_API void py_list_setitem(py_Ref self, int i, py_Ref val);</code></pre>
  1391. </doc-codeblock></div>
  1392. <h3 id="py_list_delitem">py_list_delitem</h3>
  1393. <div id="py_list_delitem-code-1" class="codeblock-wrapper"><doc-codeblock>
  1394. <pre translate="no" class="language-c"><code v-pre class="language-c">
  1395. PK_API void py_list_delitem(py_Ref self, int i);</code></pre>
  1396. </doc-codeblock></div>
  1397. <h3 id="py_list_len">py_list_len</h3>
  1398. <div id="py_list_len-code-1" class="codeblock-wrapper"><doc-codeblock>
  1399. <pre translate="no" class="language-c"><code v-pre class="language-c">
  1400. PK_API int py_list_len(py_Ref self);</code></pre>
  1401. </doc-codeblock></div>
  1402. <h3 id="py_list_swap">py_list_swap</h3>
  1403. <div id="py_list_swap-code-1" class="codeblock-wrapper"><doc-codeblock>
  1404. <pre translate="no" class="language-c"><code v-pre class="language-c">
  1405. PK_API void py_list_swap(py_Ref self, int i, int j);</code></pre>
  1406. </doc-codeblock></div>
  1407. <h3 id="py_list_append">py_list_append</h3>
  1408. <div id="py_list_append-code-1" class="codeblock-wrapper"><doc-codeblock>
  1409. <pre translate="no" class="language-c"><code v-pre class="language-c">
  1410. PK_API void py_list_append(py_Ref self, py_Ref val);</code></pre>
  1411. </doc-codeblock></div>
  1412. <h3 id="py_list_emplace">py_list_emplace</h3>
  1413. <div id="py_list_emplace-code-1" class="codeblock-wrapper"><doc-codeblock>
  1414. <pre translate="no" class="language-c"><code v-pre class="language-c">
  1415. PK_API py_ItemRef py_list_emplace(py_Ref self);</code></pre>
  1416. </doc-codeblock></div>
  1417. <h3 id="py_list_clear">py_list_clear</h3>
  1418. <div id="py_list_clear-code-1" class="codeblock-wrapper"><doc-codeblock>
  1419. <pre translate="no" class="language-c"><code v-pre class="language-c">
  1420. PK_API void py_list_clear(py_Ref self);</code></pre>
  1421. </doc-codeblock></div>
  1422. <h3 id="py_list_insert">py_list_insert</h3>
  1423. <div id="py_list_insert-code-1" class="codeblock-wrapper"><doc-codeblock>
  1424. <pre translate="no" class="language-c"><code v-pre class="language-c">
  1425. PK_API void py_list_insert(py_Ref self, int i, py_Ref val);</code></pre>
  1426. </doc-codeblock></div>
  1427. <h3 id="py_newdict">py_newdict</h3>
  1428. <div id="py_newdict-code-1" class="codeblock-wrapper"><doc-codeblock>
  1429. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Create an empty `dict`.
  1430. PK_API void py_newdict(py_OutRef);</code></pre>
  1431. </doc-codeblock></div>
  1432. <h3 id="py_dict_getitem">py_dict_getitem <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1433. <span>raise</span>
  1434. </a> <a href="../introduction/#py_return-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-primary-text bg-badge-primary border border-badge-primary-border hover:text-badge-primary-text-hover hover:bg-badge-primary-hover hover:border-badge-primary-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1435. <span>return</span>
  1436. </a></h3>
  1437. <div id="py_dict_getitem-code-1" class="codeblock-wrapper"><doc-codeblock>
  1438. <pre translate="no" class="language-c"><code v-pre class="language-c">/// -1: error, 0: not found, 1: found
  1439. PK_API int py_dict_getitem(py_Ref self, py_Ref key);</code></pre>
  1440. </doc-codeblock></div>
  1441. <h3 id="py_dict_setitem">py_dict_setitem <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1442. <span>raise</span>
  1443. </a></h3>
  1444. <div id="py_dict_setitem-code-1" class="codeblock-wrapper"><doc-codeblock>
  1445. <pre translate="no" class="language-c"><code v-pre class="language-c">/// true: success, false: error
  1446. PK_API bool py_dict_setitem(py_Ref self, py_Ref key, py_Ref val);</code></pre>
  1447. </doc-codeblock></div>
  1448. <h3 id="py_dict_delitem">py_dict_delitem <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1449. <span>raise</span>
  1450. </a></h3>
  1451. <div id="py_dict_delitem-code-1" class="codeblock-wrapper"><doc-codeblock>
  1452. <pre translate="no" class="language-c"><code v-pre class="language-c">/// -1: error, 0: not found, 1: found (and deleted)
  1453. PK_API int py_dict_delitem(py_Ref self, py_Ref key);</code></pre>
  1454. </doc-codeblock></div>
  1455. <h3 id="py_dict_getitem_by_str">py_dict_getitem_by_str <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1456. <span>raise</span>
  1457. </a> <a href="../introduction/#py_return-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-primary-text bg-badge-primary border border-badge-primary-border hover:text-badge-primary-text-hover hover:bg-badge-primary-hover hover:border-badge-primary-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1458. <span>return</span>
  1459. </a></h3>
  1460. <div id="py_dict_getitem_by_str-code-1" class="codeblock-wrapper"><doc-codeblock>
  1461. <pre translate="no" class="language-c"><code v-pre class="language-c">/// -1: error, 0: not found, 1: found
  1462. PK_API int py_dict_getitem_by_str(py_Ref self, const char* key);</code></pre>
  1463. </doc-codeblock></div>
  1464. <h3 id="py_dict_getitem_by_int">py_dict_getitem_by_int <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1465. <span>raise</span>
  1466. </a> <a href="../introduction/#py_return-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-primary-text bg-badge-primary border border-badge-primary-border hover:text-badge-primary-text-hover hover:bg-badge-primary-hover hover:border-badge-primary-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1467. <span>return</span>
  1468. </a></h3>
  1469. <div id="py_dict_getitem_by_int-code-1" class="codeblock-wrapper"><doc-codeblock>
  1470. <pre translate="no" class="language-c"><code v-pre class="language-c">/// -1: error, 0: not found, 1: found
  1471. PK_API int py_dict_getitem_by_int(py_Ref self, py_i64 key);</code></pre>
  1472. </doc-codeblock></div>
  1473. <h3 id="py_dict_setitem_by_str">py_dict_setitem_by_str <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1474. <span>raise</span>
  1475. </a></h3>
  1476. <div id="py_dict_setitem_by_str-code-1" class="codeblock-wrapper"><doc-codeblock>
  1477. <pre translate="no" class="language-c"><code v-pre class="language-c">/// true: success, false: error
  1478. PK_API bool py_dict_setitem_by_str(py_Ref self, const char* key, py_Ref val);</code></pre>
  1479. </doc-codeblock></div>
  1480. <h3 id="py_dict_setitem_by_int">py_dict_setitem_by_int <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1481. <span>raise</span>
  1482. </a></h3>
  1483. <div id="py_dict_setitem_by_int-code-1" class="codeblock-wrapper"><doc-codeblock>
  1484. <pre translate="no" class="language-c"><code v-pre class="language-c">/// true: success, false: error
  1485. PK_API bool py_dict_setitem_by_int(py_Ref self, py_i64 key, py_Ref val);</code></pre>
  1486. </doc-codeblock></div>
  1487. <h3 id="py_dict_delitem_by_str">py_dict_delitem_by_str <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1488. <span>raise</span>
  1489. </a></h3>
  1490. <div id="py_dict_delitem_by_str-code-1" class="codeblock-wrapper"><doc-codeblock>
  1491. <pre translate="no" class="language-c"><code v-pre class="language-c">/// -1: error, 0: not found, 1: found (and deleted)
  1492. PK_API int py_dict_delitem_by_str(py_Ref self, const char* key);</code></pre>
  1493. </doc-codeblock></div>
  1494. <h3 id="py_dict_delitem_by_int">py_dict_delitem_by_int <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1495. <span>raise</span>
  1496. </a></h3>
  1497. <div id="py_dict_delitem_by_int-code-1" class="codeblock-wrapper"><doc-codeblock>
  1498. <pre translate="no" class="language-c"><code v-pre class="language-c">/// -1: error, 0: not found, 1: found (and deleted)
  1499. PK_API int py_dict_delitem_by_int(py_Ref self, py_i64 key);</code></pre>
  1500. </doc-codeblock></div>
  1501. <h3 id="py_dict_apply">py_dict_apply <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1502. <span>raise</span>
  1503. </a></h3>
  1504. <div id="py_dict_apply-code-1" class="codeblock-wrapper"><doc-codeblock>
  1505. <pre translate="no" class="language-c"><code v-pre class="language-c">/// true: success, false: error
  1506. PK_API bool py_dict_apply(py_Ref self, bool (*f)(py_Ref key, py_Ref val, void* ctx), void* ctx);</code></pre>
  1507. </doc-codeblock></div>
  1508. <h3 id="py_dict_len">py_dict_len</h3>
  1509. <div id="py_dict_len-code-1" class="codeblock-wrapper"><doc-codeblock>
  1510. <pre translate="no" class="language-c"><code v-pre class="language-c">/// noexcept
  1511. PK_API int py_dict_len(py_Ref self);</code></pre>
  1512. </doc-codeblock></div>
  1513. <h3 id="py_newslice">py_newslice</h3>
  1514. <div id="py_newslice-code-1" class="codeblock-wrapper"><doc-codeblock>
  1515. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Create an UNINITIALIZED `slice` object.
  1516. /// You should use `py_setslot()` to set `start`, `stop`, and `step`.
  1517. PK_API py_ObjectRef py_newslice(py_OutRef);</code></pre>
  1518. </doc-codeblock></div>
  1519. <h3 id="py_newsliceint">py_newsliceint</h3>
  1520. <div id="py_newsliceint-code-1" class="codeblock-wrapper"><doc-codeblock>
  1521. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Create a `slice` object from 3 integers.
  1522. PK_API void py_newsliceint(py_OutRef out, py_i64 start, py_i64 stop, py_i64 step);</code></pre>
  1523. </doc-codeblock></div>
  1524. <h3 id="py_newrandom">py_newRandom</h3>
  1525. <div id="py_newrandom-code-1" class="codeblock-wrapper"><doc-codeblock>
  1526. <pre translate="no" class="language-c"><code v-pre class="language-c">
  1527. PK_API void py_newRandom(py_OutRef out);</code></pre>
  1528. </doc-codeblock></div>
  1529. <h3 id="py_random_seed">py_Random_seed</h3>
  1530. <div id="py_random_seed-code-1" class="codeblock-wrapper"><doc-codeblock>
  1531. <pre translate="no" class="language-c"><code v-pre class="language-c">
  1532. PK_API void py_Random_seed(py_Ref self, py_i64 seed);</code></pre>
  1533. </doc-codeblock></div>
  1534. <h3 id="py_random_random">py_Random_random</h3>
  1535. <div id="py_random_random-code-1" class="codeblock-wrapper"><doc-codeblock>
  1536. <pre translate="no" class="language-c"><code v-pre class="language-c">
  1537. PK_API py_f64 py_Random_random(py_Ref self);</code></pre>
  1538. </doc-codeblock></div>
  1539. <h3 id="py_random_uniform">py_Random_uniform</h3>
  1540. <div id="py_random_uniform-code-1" class="codeblock-wrapper"><doc-codeblock>
  1541. <pre translate="no" class="language-c"><code v-pre class="language-c">
  1542. PK_API py_f64 py_Random_uniform(py_Ref self, py_f64 a, py_f64 b);</code></pre>
  1543. </doc-codeblock></div>
  1544. <h3 id="py_random_randint">py_Random_randint</h3>
  1545. <div id="py_random_randint-code-1" class="codeblock-wrapper"><doc-codeblock>
  1546. <pre translate="no" class="language-c"><code v-pre class="language-c">
  1547. PK_API py_i64 py_Random_randint(py_Ref self, py_i64 a, py_i64 b);</code></pre>
  1548. </doc-codeblock></div>
  1549. <h3 id="py_newarray2d">py_newarray2d</h3>
  1550. <div id="py_newarray2d-code-1" class="codeblock-wrapper"><doc-codeblock>
  1551. <pre translate="no" class="language-c"><code v-pre class="language-c">
  1552. PK_API void py_newarray2d(py_OutRef out, int width, int height);</code></pre>
  1553. </doc-codeblock></div>
  1554. <h3 id="py_array2d_getwidth">py_array2d_getwidth</h3>
  1555. <div id="py_array2d_getwidth-code-1" class="codeblock-wrapper"><doc-codeblock>
  1556. <pre translate="no" class="language-c"><code v-pre class="language-c">
  1557. PK_API int py_array2d_getwidth(py_Ref self);</code></pre>
  1558. </doc-codeblock></div>
  1559. <h3 id="py_array2d_getheight">py_array2d_getheight</h3>
  1560. <div id="py_array2d_getheight-code-1" class="codeblock-wrapper"><doc-codeblock>
  1561. <pre translate="no" class="language-c"><code v-pre class="language-c">
  1562. PK_API int py_array2d_getheight(py_Ref self);</code></pre>
  1563. </doc-codeblock></div>
  1564. <h3 id="py_array2d_getitem">py_array2d_getitem</h3>
  1565. <div id="py_array2d_getitem-code-1" class="codeblock-wrapper"><doc-codeblock>
  1566. <pre translate="no" class="language-c"><code v-pre class="language-c">
  1567. PK_API py_ObjectRef py_array2d_getitem(py_Ref self, int x, int y);</code></pre>
  1568. </doc-codeblock></div>
  1569. <h3 id="py_array2d_setitem">py_array2d_setitem</h3>
  1570. <div id="py_array2d_setitem-code-1" class="codeblock-wrapper"><doc-codeblock>
  1571. <pre translate="no" class="language-c"><code v-pre class="language-c">
  1572. PK_API void py_array2d_setitem(py_Ref self, int x, int y, py_Ref val);</code></pre>
  1573. </doc-codeblock></div>
  1574. <h3 id="py_newvec2">py_newvec2</h3>
  1575. <div id="py_newvec2-code-1" class="codeblock-wrapper"><doc-codeblock>
  1576. <pre translate="no" class="language-c"><code v-pre class="language-c">
  1577. PK_API void py_newvec2(py_OutRef out, c11_vec2);</code></pre>
  1578. </doc-codeblock></div>
  1579. <h3 id="py_newvec3">py_newvec3</h3>
  1580. <div id="py_newvec3-code-1" class="codeblock-wrapper"><doc-codeblock>
  1581. <pre translate="no" class="language-c"><code v-pre class="language-c">
  1582. PK_API void py_newvec3(py_OutRef out, c11_vec3);</code></pre>
  1583. </doc-codeblock></div>
  1584. <h3 id="py_newvec2i">py_newvec2i</h3>
  1585. <div id="py_newvec2i-code-1" class="codeblock-wrapper"><doc-codeblock>
  1586. <pre translate="no" class="language-c"><code v-pre class="language-c">
  1587. PK_API void py_newvec2i(py_OutRef out, c11_vec2i);</code></pre>
  1588. </doc-codeblock></div>
  1589. <h3 id="py_newvec3i">py_newvec3i</h3>
  1590. <div id="py_newvec3i-code-1" class="codeblock-wrapper"><doc-codeblock>
  1591. <pre translate="no" class="language-c"><code v-pre class="language-c">
  1592. PK_API void py_newvec3i(py_OutRef out, c11_vec3i);</code></pre>
  1593. </doc-codeblock></div>
  1594. <h3 id="py_newvec4i">py_newvec4i</h3>
  1595. <div id="py_newvec4i-code-1" class="codeblock-wrapper"><doc-codeblock>
  1596. <pre translate="no" class="language-c"><code v-pre class="language-c">
  1597. PK_API void py_newvec4i(py_OutRef out, c11_vec4i);</code></pre>
  1598. </doc-codeblock></div>
  1599. <h3 id="py_newcolor32">py_newcolor32</h3>
  1600. <div id="py_newcolor32-code-1" class="codeblock-wrapper"><doc-codeblock>
  1601. <pre translate="no" class="language-c"><code v-pre class="language-c">
  1602. PK_API void py_newcolor32(py_OutRef out, c11_color32);</code></pre>
  1603. </doc-codeblock></div>
  1604. <h3 id="py_newmat3x3">py_newmat3x3</h3>
  1605. <div id="py_newmat3x3-code-1" class="codeblock-wrapper"><doc-codeblock>
  1606. <pre translate="no" class="language-c"><code v-pre class="language-c">
  1607. PK_API c11_mat3x3* py_newmat3x3(py_OutRef out);</code></pre>
  1608. </doc-codeblock></div>
  1609. <h3 id="py_tovec2">py_tovec2</h3>
  1610. <div id="py_tovec2-code-1" class="codeblock-wrapper"><doc-codeblock>
  1611. <pre translate="no" class="language-c"><code v-pre class="language-c">
  1612. PK_API c11_vec2 py_tovec2(py_Ref self);</code></pre>
  1613. </doc-codeblock></div>
  1614. <h3 id="py_tovec3">py_tovec3</h3>
  1615. <div id="py_tovec3-code-1" class="codeblock-wrapper"><doc-codeblock>
  1616. <pre translate="no" class="language-c"><code v-pre class="language-c">
  1617. PK_API c11_vec3 py_tovec3(py_Ref self);</code></pre>
  1618. </doc-codeblock></div>
  1619. <h3 id="py_tovec2i">py_tovec2i</h3>
  1620. <div id="py_tovec2i-code-1" class="codeblock-wrapper"><doc-codeblock>
  1621. <pre translate="no" class="language-c"><code v-pre class="language-c">
  1622. PK_API c11_vec2i py_tovec2i(py_Ref self);</code></pre>
  1623. </doc-codeblock></div>
  1624. <h3 id="py_tovec3i">py_tovec3i</h3>
  1625. <div id="py_tovec3i-code-1" class="codeblock-wrapper"><doc-codeblock>
  1626. <pre translate="no" class="language-c"><code v-pre class="language-c">
  1627. PK_API c11_vec3i py_tovec3i(py_Ref self);</code></pre>
  1628. </doc-codeblock></div>
  1629. <h3 id="py_tovec4i">py_tovec4i</h3>
  1630. <div id="py_tovec4i-code-1" class="codeblock-wrapper"><doc-codeblock>
  1631. <pre translate="no" class="language-c"><code v-pre class="language-c">
  1632. PK_API c11_vec4i py_tovec4i(py_Ref self);</code></pre>
  1633. </doc-codeblock></div>
  1634. <h3 id="py_tomat3x3">py_tomat3x3</h3>
  1635. <div id="py_tomat3x3-code-1" class="codeblock-wrapper"><doc-codeblock>
  1636. <pre translate="no" class="language-c"><code v-pre class="language-c">
  1637. PK_API c11_mat3x3* py_tomat3x3(py_Ref self);</code></pre>
  1638. </doc-codeblock></div>
  1639. <h3 id="py_tocolor32">py_tocolor32</h3>
  1640. <div id="py_tocolor32-code-1" class="codeblock-wrapper"><doc-codeblock>
  1641. <pre translate="no" class="language-c"><code v-pre class="language-c">
  1642. PK_API c11_color32 py_tocolor32(py_Ref self);</code></pre>
  1643. </doc-codeblock></div>
  1644. <h3 id="py_json_dumps">py_json_dumps <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1645. <span>raise</span>
  1646. </a> <a href="../introduction/#py_return-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-primary-text bg-badge-primary border border-badge-primary-border hover:text-badge-primary-text-hover hover:bg-badge-primary-hover hover:border-badge-primary-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1647. <span>return</span>
  1648. </a></h3>
  1649. <div id="py_json_dumps-code-1" class="codeblock-wrapper"><doc-codeblock>
  1650. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Python equivalent to `json.dumps(val)`.
  1651. PK_API bool py_json_dumps(py_Ref val, int indent);</code></pre>
  1652. </doc-codeblock></div>
  1653. <h3 id="py_json_loads">py_json_loads <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1654. <span>raise</span>
  1655. </a> <a href="../introduction/#py_return-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-primary-text bg-badge-primary border border-badge-primary-border hover:text-badge-primary-text-hover hover:bg-badge-primary-hover hover:border-badge-primary-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1656. <span>return</span>
  1657. </a></h3>
  1658. <div id="py_json_loads-code-1" class="codeblock-wrapper"><doc-codeblock>
  1659. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Python equivalent to `json.loads(val)`.
  1660. PK_API bool py_json_loads(const char* source);</code></pre>
  1661. </doc-codeblock></div>
  1662. <h3 id="py_pickle_dumps">py_pickle_dumps <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1663. <span>raise</span>
  1664. </a> <a href="../introduction/#py_return-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-primary-text bg-badge-primary border border-badge-primary-border hover:text-badge-primary-text-hover hover:bg-badge-primary-hover hover:border-badge-primary-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1665. <span>return</span>
  1666. </a></h3>
  1667. <div id="py_pickle_dumps-code-1" class="codeblock-wrapper"><doc-codeblock>
  1668. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Python equivalent to `pickle.dumps(val)`.
  1669. PK_API bool py_pickle_dumps(py_Ref val);</code></pre>
  1670. </doc-codeblock></div>
  1671. <h3 id="py_pickle_loads">py_pickle_loads <a href="../introduction/#py_raise-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-danger-text bg-badge-danger border border-badge-danger-border hover:text-badge-danger-text-hover hover:bg-badge-danger-hover hover:border-badge-danger-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1672. <span>raise</span>
  1673. </a> <a href="../introduction/#py_return-macro" class="no-link inline-flex align-middle items-center justify-center font-medium leading-none whitespace-nowrap text-badge-primary-text bg-badge-primary border border-badge-primary-border hover:text-badge-primary-text-hover hover:bg-badge-primary-hover hover:border-badge-primary-border-hover transition-colors duration-200 ease-out h-6 px-2 text-xs rounded-md">
  1674. <span>return</span>
  1675. </a></h3>
  1676. <div id="py_pickle_loads-code-1" class="codeblock-wrapper"><doc-codeblock>
  1677. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Python equivalent to `pickle.loads(val)`.
  1678. PK_API bool py_pickle_loads(const unsigned char* data, int size);</code></pre>
  1679. </doc-codeblock></div>
  1680. <h3 id="py_watchdog_begin">py_watchdog_begin</h3>
  1681. <div id="py_watchdog_begin-code-1" class="codeblock-wrapper"><doc-codeblock>
  1682. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Begin the watchdog with `timeout` in milliseconds.
  1683. /// `PK_ENABLE_WATCHDOG` must be defined to `1` to use this feature.
  1684. /// You need to call `py_watchdog_end()` later.
  1685. /// If `timeout` is reached, `TimeoutError` will be raised.
  1686. PK_API void py_watchdog_begin(py_i64 timeout);</code></pre>
  1687. </doc-codeblock></div>
  1688. <h3 id="py_watchdog_end">py_watchdog_end</h3>
  1689. <div id="py_watchdog_end-code-1" class="codeblock-wrapper"><doc-codeblock>
  1690. <pre translate="no" class="language-c"><code v-pre class="language-c">/// Reset the watchdog.
  1691. PK_API void py_watchdog_end();</code></pre>
  1692. </doc-codeblock></div>
  1693. <h3 id="py_profiler_begin">py_profiler_begin</h3>
  1694. <div id="py_profiler_begin-code-1" class="codeblock-wrapper"><doc-codeblock>
  1695. <pre translate="no" class="language-c"><code v-pre class="language-c">
  1696. PK_API void py_profiler_begin();</code></pre>
  1697. </doc-codeblock></div>
  1698. <h3 id="py_profiler_end">py_profiler_end</h3>
  1699. <div id="py_profiler_end-code-1" class="codeblock-wrapper"><doc-codeblock>
  1700. <pre translate="no" class="language-c"><code v-pre class="language-c">
  1701. PK_API void py_profiler_end();</code></pre>
  1702. </doc-codeblock></div>
  1703. <h3 id="py_profiler_reset">py_profiler_reset</h3>
  1704. <div id="py_profiler_reset-code-1" class="codeblock-wrapper"><doc-codeblock>
  1705. <pre translate="no" class="language-c"><code v-pre class="language-c">
  1706. PK_API void py_profiler_reset();</code></pre>
  1707. </doc-codeblock></div>
  1708. <h3 id="py_profiler_report">py_profiler_report</h3>
  1709. <div id="py_profiler_report-code-1" class="codeblock-wrapper"><doc-codeblock>
  1710. <pre translate="no" class="language-c"><code v-pre class="language-c">
  1711. PK_API char* py_profiler_report();</code></pre>
  1712. </doc-codeblock></div>
  1713. <h3 id="py_replinput">py_replinput</h3>
  1714. <div id="py_replinput-code-1" class="codeblock-wrapper"><doc-codeblock>
  1715. <pre translate="no" class="language-c"><code v-pre class="language-c">/// An utility function to read a line from stdin for REPL.
  1716. PK_API int py_replinput(char* buf, int max_size);</code></pre>
  1717. </doc-codeblock></div>
  1718. <!-- Required only on API pages -->
  1719. <doc-toolbar-member-filter-no-results></doc-toolbar-member-filter-no-results>
  1720. </div>
  1721. <footer id="retype-content-footer" class="clear-both">
  1722. <nav id="retype-nextprev" class="print:hidden flex mt-14">
  1723. <div class="w-1/2">
  1724. <a class="px-5 py-4 h-full flex items-center break-normal font-medium text-body-link border border-base-border hover:border-base-border-hover rounded-l-lg transition-colors duration-150 relative hover:z-5" href="../../c-api/introduction/">
  1725. <svg xmlns="http://www.w3.org/2000/svg" class="mr-3" width="24" height="24" viewBox="0 0 24 24" fill="currentColor" overflow="visible"><path d="M19 11H7.41l5.29-5.29a.996.996 0 10-1.41-1.41l-7 7a1 1 0 000 1.42l7 7a1.024 1.024 0 001.42-.01.996.996 0 000-1.41L7.41 13H19c.55 0 1-.45 1-1s-.45-1-1-1z" /><path fill="none" d="M0 0h24v24H0z" /></svg>
  1726. <span>
  1727. <span class="block text-xs font-normal text-base-text-muted">Previous</span>
  1728. <span class="block mt-1">Introduction</span>
  1729. </span>
  1730. </a>
  1731. </div>
  1732. <div class="w-1/2">
  1733. <a class="px-5 py-4 -mx-px h-full flex items-center justify-end break-normal font-medium text-body-link border border-base-border hover:border-base-border-hover rounded-r-lg transition-colors duration-150 relative hover:z-5" href="../../modules/array2d/">
  1734. <span>
  1735. <span class="block text-xs font-normal text-right text-base-text-muted">Next</span>
  1736. <span class="block mt-1">array​2​d</span>
  1737. </span>
  1738. <svg xmlns="http://www.w3.org/2000/svg" class="ml-3" width="24" height="24" viewBox="0 0 24 24" fill="currentColor" overflow="visible"><path d="M19.92 12.38a1 1 0 00-.22-1.09l-7-7a.996.996 0 10-1.41 1.41l5.3 5.3H5c-.55 0-1 .45-1 1s.45 1 1 1h11.59l-5.29 5.29a.996.996 0 000 1.41c.19.2.44.3.7.3s.51-.1.71-.29l7-7c.09-.09.16-.21.21-.33z" /><path fill="none" d="M0 0h24v24H0z" /></svg>
  1739. </a>
  1740. </div>
  1741. </nav>
  1742. </footer>
  1743. </main>
  1744. <div id="retype-page-footer" class="print:border-none border-t border-base-border pt-6 mb-8">
  1745. <footer class="flex flex-wrap items-center justify-between print:justify-center">
  1746. <div id="retype-footer-links" class="print:hidden">
  1747. <ul class="flex flex-wrap items-center text-sm">
  1748. </ul>
  1749. </div>
  1750. <div id="retype-copyright" class="print:justify-center py-2 text-footer-text font-footer-link text-sm leading-relaxed"><p>© Copyright 2026 - <a href="https://github.com/blueloveTH">blueloveTH</a> - All rights reserved.</p></div>
  1751. </footer>
  1752. </div>
  1753. </div>
  1754. <!-- Rendered if sidebar right is enabled -->
  1755. <!-- Sidebar right skeleton-->
  1756. <div v-cloak class="fixed top-0 bottom-0 right-0 translate-x-full bg-sidebar-right-bg border-sidebar-right-border lg:sticky lg:border-l lg:shrink-0 lg:pt-6 lg:translate-x-0 sm:w-1/2 lg:w-64 lg:z-0 md:w-104 sidebar-right skeleton">
  1757. <div class="pl-5">
  1758. <div class="w-32 h-3 mb-4 bg-skeleton-bg rounded-full loading"></div>
  1759. <div class="w-48 h-3 mb-4 bg-skeleton-bg rounded-full loading"></div>
  1760. <div class="w-40 h-3 mb-4 bg-skeleton-bg rounded-full loading"></div>
  1761. </div>
  1762. </div>
  1763. <!-- User should be able to hide sidebar right -->
  1764. <doc-sidebar-right v-cloak></doc-sidebar-right>
  1765. </div>
  1766. </div>
  1767. </div>
  1768. <doc-search-mobile></doc-search-mobile>
  1769. <doc-back-to-top></doc-back-to-top>
  1770. </div>
  1771. <div id="retype-overlay-target"></div>
  1772. <script data-cfasync="false">window.__DOCS__ = { "title": "Functions", level: 2, icon: "file", hasPrism: true, hasMermaid: false, hasMath: false, tocDepth: 23 }</script>
  1773. </body>
  1774. </html>