index.html 151 KB

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