index.html 151 KB

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