MilanM's picture
Refactored with Markdown Tutorials
b7fd0fd
{
"version": "1",
"metadata": {
"marimo_version": "0.11.16"
},
"cells": [
{
"id": "Hbol",
"code_hash": "19686367dd925083f4cab7eb8ea23817",
"outputs": [
{
"type": "data",
"data": {
"text/plain": ""
}
}
],
"console": []
},
{
"id": "MJUe",
"code_hash": "d3a1cfa73fe214ee72a0c2219ea7d00f",
"outputs": [
{
"type": "data",
"data": {
"text/plain": ""
}
}
],
"console": []
},
{
"id": "vblA",
"code_hash": "a55aaedb8de554bd750417c3b596a0ce",
"outputs": [
{
"type": "data",
"data": {
"text/plain": ""
}
}
],
"console": []
},
{
"id": "bkHC",
"code_hash": "e34f94a5b3a57d47521a836718f79cf8",
"outputs": [
{
"type": "data",
"data": {
"text/plain": ""
}
}
],
"console": []
},
{
"id": "lEQa",
"code_hash": "857700d40968881430ebbba6edc7f5fc",
"outputs": [
{
"type": "data",
"data": {
"text/plain": ""
}
}
],
"console": []
},
{
"id": "PKri",
"code_hash": "9d55aa3b922e43cf72123612a6c1854a",
"outputs": [
{
"type": "data",
"data": {
"text/plain": ""
}
}
],
"console": []
},
{
"id": "Xref",
"code_hash": "d0928acde6014191b31b202f81951af3",
"outputs": [
{
"type": "data",
"data": {
"text/html": "<span class=\"markdown prose dark:prose-invert\"><hr />\n<span class=\"paragraph\"><br>\n<br>\n<marimo-ui-element object-id='Xref-0' random-id='bc8445aa-5628-05e6-6027-ab59c58ccc91'><marimo-table data-initial-value='[0]' data-label='&quot;&lt;span class=&#92;&quot;markdown prose dark:prose-invert&#92;&quot;&gt;&lt;h4 id=&#92;&quot;select-a-supported-software_spec-runtime-for-your-function-asset-for-python-functions-select-runtime-241-py311&#92;&quot;&gt;&lt;strong&gt;Select a supported software_spec runtime for your function asset&lt;/strong&gt; (For Python Functions select - &lt;em&gt;&#x27;runtime-24.1-py3.11&#x27;&lt;/em&gt; ):&lt;/h4&gt;&lt;/span&gt;&quot;' data-data='&quot;./@file/632-159288-YoYepVpK.csv&quot;' data-total-rows='15' data-total-columns='5' data-banner-text='&quot;&quot;' data-pagination='true' data-page-size='6' data-field-types='[[&quot;NAME&quot;, [&quot;string&quot;, &quot;object&quot;]], [&quot;ID&quot;, [&quot;string&quot;, &quot;object&quot;]], [&quot;TYPE&quot;, [&quot;string&quot;, &quot;object&quot;]], [&quot;STATE&quot;, [&quot;string&quot;, &quot;object&quot;]], [&quot;NOTES&quot;, [&quot;string&quot;, &quot;object&quot;]]]' data-selection='&quot;single&quot;' data-show-filters='true' data-show-download='true' data-show-column-summaries='true' data-row-headers='[]' data-has-stable-row-id='true'></marimo-table></marimo-ui-element>\n<br>\n<br></span>\n<hr />\n<span class=\"paragraph\"><br>\n<br></span></span>"
}
}
],
"console": []
},
{
"id": "SFPL",
"code_hash": "60cf6333f21012c40c98fe714d5e0193",
"outputs": [
{
"type": "data",
"data": {
"text/plain": ""
}
}
],
"console": []
},
{
"id": "BYtC",
"code_hash": "9e592060618d8c1e329c66127162a081",
"outputs": [
{
"type": "data",
"data": {
"text/plain": ""
}
}
],
"console": []
},
{
"id": "RGSE",
"code_hash": "9ed8917a4fc4dfaa13d1a460572b1611",
"outputs": [
{
"type": "data",
"data": {
"text/plain": ""
}
}
],
"console": []
},
{
"id": "Kclp",
"code_hash": "743538e1118b9b008f5ae6776cc82952",
"outputs": [
{
"type": "data",
"data": {
"text/plain": ""
}
}
],
"console": []
},
{
"id": "emfo",
"code_hash": "c22a7cce12e7133f829cc1423657be6c",
"outputs": [
{
"type": "data",
"data": {
"text/plain": ""
}
}
],
"console": []
},
{
"id": "Hstk",
"code_hash": "fa63ec038c75f9f949eaef3baf47e98d",
"outputs": [
{
"type": "data",
"data": {
"text/html": "<span class=\"markdown prose dark:prose-invert\"><span class=\"paragraph\"><br>\n<br></span>\n<div style='display: flex;flex: 1;flex-direction: column;justify-content: space-around;align-items: center;flex-wrap: nowrap;gap: 0.5rem'><div><marimo-ui-element object-id='Kclp-0' random-id='d9ad0570-0550-e6fd-c7f4-160fb139e445'><marimo-button data-initial-value='0' data-label='&quot;&lt;span class=&#92;&quot;markdown prose dark:prose-invert&#92;&quot;&gt;&lt;span class=&#92;&quot;paragraph&#92;&quot;&gt;Upload Function&lt;/span&gt;&lt;/span&gt;&quot;' data-kind='&quot;success&quot;' data-disabled='false' data-tooltip='&quot;Click to upload function to watsonx.ai&quot;' data-full-width='false'></marimo-button></marimo-ui-element></div><div><span class=\"markdown prose dark:prose-invert\"><span class=\"paragraph\"><strong>Status:</strong> No uploads yet</span></span></div></div>\n<span class=\"paragraph\"><br>\n<br></span>\n<hr />\n<span class=\"paragraph\"><marimo-ui-element object-id='Hstk-0' random-id='10203c8d-10c3-d886-6df8-9e6f8c23c2dd'><marimo-table data-initial-value='[0]' data-label='&quot;&lt;span class=&#92;&quot;markdown prose dark:prose-invert&#92;&quot;&gt;&lt;span class=&#92;&quot;paragraph&#92;&quot;&gt;You haven&#x27;t activated the Deployment_Client&lt;/span&gt;&lt;/span&gt;&quot;' data-data='&quot;./@file/57-159288-aeoOP4Dp.csv&quot;' data-total-rows='1' data-total-columns='2' data-banner-text='&quot;&quot;' data-pagination='false' data-page-size='10' data-field-types='[[&quot;ID&quot;, [&quot;string&quot;, &quot;object&quot;]], [&quot;VALUE&quot;, [&quot;string&quot;, &quot;object&quot;]]]' data-selection='&quot;single&quot;' data-show-filters='true' data-show-download='true' data-show-column-summaries='true' data-row-headers='[]' data-has-stable-row-id='true'></marimo-table></marimo-ui-element>\n<br>\n<br></span></span>"
}
}
],
"console": []
},
{
"id": "nWHF",
"code_hash": "89e6849f343ec2450f5074202c54dcf2",
"outputs": [
{
"type": "data",
"data": {
"text/plain": ""
}
}
],
"console": []
},
{
"id": "iLit",
"code_hash": "1791e516381c18af33a4d26bcbb83638",
"outputs": [
{
"type": "data",
"data": {
"text/html": "<span class=\"markdown prose dark:prose-invert\"><div style='display: flex;flex: 1;flex-direction: row;justify-content: space-around;align-items: normal;flex-wrap: nowrap;gap: 0.5rem'><div><span>No Deployment Type Selected</span></div><div><span>No Deployment Name Provided</span></div></div>\n<span class=\"paragraph\"><br>\n<br></span>\n<div style='display: flex;flex: 1;flex-direction: column;justify-content: space-around;align-items: center;flex-wrap: nowrap;gap: 0.5rem'><div><marimo-ui-element object-id='nWHF-0' random-id='18cca348-1c89-2421-856b-54c7d927af1d'><marimo-button data-initial-value='0' data-label='&quot;&lt;span class=&#92;&quot;markdown prose dark:prose-invert&#92;&quot;&gt;&lt;span class=&#92;&quot;paragraph&#92;&quot;&gt;Deploy Function&lt;/span&gt;&lt;/span&gt;&quot;' data-kind='&quot;success&quot;' data-disabled='false' data-tooltip='&quot;Click to deploy function to watsonx.ai&quot;' data-full-width='false'></marimo-button></marimo-ui-element></div><div><span>None</span></div></div>\n\n<hr /></span>"
}
}
],
"console": []
},
{
"id": "ZHCJ",
"code_hash": "4ecdbad711e84b00fc55e350199fcf7d",
"outputs": [
{
"type": "data",
"data": {
"text/plain": ""
}
}
],
"console": []
},
{
"id": "ROlb",
"code_hash": "988df2ac71a6c85321fa43fdfadde880",
"outputs": [
{
"type": "data",
"data": {
"text/plain": ""
}
}
],
"console": []
},
{
"id": "qnkX",
"code_hash": "7013f6bc9949b1db751a9c69369705d0",
"outputs": [
{
"type": "data",
"data": {
"text/plain": ""
}
}
],
"console": []
},
{
"id": "TqIu",
"code_hash": "4a738aab24108a4140b18f2d58e41325",
"outputs": [
{
"type": "data",
"data": {
"text/plain": ""
}
}
],
"console": []
},
{
"id": "Vxnm",
"code_hash": "6470c2d64f16efcb35d1bc013fd07f93",
"outputs": [
{
"type": "data",
"data": {
"text/html": "<marimo-accordion data-labels='[&quot;&lt;span class=&#92;&quot;markdown prose dark:prose-invert&#92;&quot;&gt;&lt;span class=&#92;&quot;paragraph&#92;&quot;&gt;&lt;br&gt;&lt;/span&gt;&#92;n&lt;h4 id=&#92;&quot;supporting-cleanup-functionality-lists-of-different-assets-and-purge-them-if-needed-purges-all-detected&#92;&quot;&gt;&lt;strong&gt;Supporting Cleanup Functionality, lists of different assets and purge them if needed&lt;/strong&gt; &lt;em&gt;(purges all detected)&lt;/em&gt;&lt;/h4&gt;&#92;n&lt;span class=&#92;&quot;paragraph&#92;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&quot;]' data-multiple='false'><div><marimo-ui-element object-id='Vxnm-0' random-id='c58e7de0-f86a-3688-8bff-d371a78222e4'><marimo-tabs data-initial-value='&quot;&quot;' data-label='null' data-tabs='[&quot;&lt;span class=&#92;&quot;markdown prose dark:prose-invert&#92;&quot;&gt;&lt;span class=&#92;&quot;paragraph&#92;&quot;&gt;Purge Deployments&lt;/span&gt;&lt;/span&gt;&quot;, &quot;&lt;span class=&#92;&quot;markdown prose dark:prose-invert&#92;&quot;&gt;&lt;span class=&#92;&quot;paragraph&#92;&quot;&gt;Purge Repository Assets&lt;/span&gt;&lt;/span&gt;&quot;, &quot;&lt;span class=&#92;&quot;markdown prose dark:prose-invert&#92;&quot;&gt;&lt;span class=&#92;&quot;paragraph&#92;&quot;&gt;Purge Data Assets&lt;/span&gt;&lt;/span&gt;&quot;]'><div data-kind='tab'><div style='display: flex;flex: 1;flex-direction: column;justify-content: flex-start;align-items: normal;flex-wrap: nowrap;gap: 0.5rem'><div><div style='display: flex;flex: 1;flex-direction: row;justify-content: space-between;align-items: normal;flex-wrap: nowrap;gap: 0.5rem'><div><marimo-ui-element object-id='DnEU-3' random-id='40d183b6-0345-aba7-5c97-54f643dbd786'><marimo-button data-initial-value='0' data-label='&quot;&lt;span class=&#92;&quot;markdown prose dark:prose-invert&#92;&quot;&gt;&lt;span class=&#92;&quot;paragraph&#92;&quot;&gt;Get Deployments Dataframe&lt;/span&gt;&lt;/span&gt;&quot;' data-kind='&quot;neutral&quot;' data-disabled='false' data-full-width='false'></marimo-button></marimo-ui-element></div><div><marimo-ui-element object-id='DnEU-4' random-id='5f3bad87-42f8-28af-9c4b-34e905a6bf97'><marimo-button data-initial-value='0' data-label='&quot;&lt;span class=&#92;&quot;markdown prose dark:prose-invert&#92;&quot;&gt;&lt;span class=&#92;&quot;paragraph&#92;&quot;&gt;Turn Dataframe into List of IDs&lt;/span&gt;&lt;/span&gt;&quot;' data-kind='&quot;neutral&quot;' data-disabled='false' data-full-width='false'></marimo-button></marimo-ui-element></div><div><marimo-ui-element object-id='DnEU-5' random-id='a73a1ffe-a3d4-cea0-d889-f512725659dc'><marimo-button data-initial-value='0' data-label='&quot;&lt;span class=&#92;&quot;markdown prose dark:prose-invert&#92;&quot;&gt;&lt;span class=&#92;&quot;paragraph&#92;&quot;&gt;Purge Deployments&lt;/span&gt;&lt;/span&gt;&quot;' data-kind='&quot;danger&quot;' data-disabled='false' data-full-width='false'></marimo-button></marimo-ui-element></div></div></div><div><div style='display: flex;flex: 1;flex-direction: column;justify-content: flex-start;align-items: normal;flex-wrap: nowrap;gap: 0.5rem'><div><span>None</span></div><div><span>None</span></div><div><span>None</span></div></div></div></div></div><div data-kind='tab'><div style='display: flex;flex: 1;flex-direction: column;justify-content: flex-start;align-items: normal;flex-wrap: nowrap;gap: 0.5rem'><div><div style='display: flex;flex: 1;flex-direction: row;justify-content: space-between;align-items: normal;flex-wrap: nowrap;gap: 0.5rem'><div><marimo-ui-element object-id='DnEU-6' random-id='9f556b1f-8f85-523b-e8aa-8057d2536272'><marimo-button data-initial-value='0' data-label='&quot;&lt;span class=&#92;&quot;markdown prose dark:prose-invert&#92;&quot;&gt;&lt;span class=&#92;&quot;paragraph&#92;&quot;&gt;Get Repository Dataframe&lt;/span&gt;&lt;/span&gt;&quot;' data-kind='&quot;neutral&quot;' data-disabled='false' data-full-width='false'></marimo-button></marimo-ui-element></div><div><marimo-ui-element object-id='DnEU-7' random-id='cfe5ee14-427c-cd76-5de7-d6db7e571f56'><marimo-button data-initial-value='0' data-label='&quot;&lt;span class=&#92;&quot;markdown prose dark:prose-invert&#92;&quot;&gt;&lt;span class=&#92;&quot;paragraph&#92;&quot;&gt;Turn Dataframe into List of IDs&lt;/span&gt;&lt;/span&gt;&quot;' data-kind='&quot;neutral&quot;' data-disabled='false' data-full-width='false'></marimo-button></marimo-ui-element></div><div><marimo-ui-element object-id='DnEU-8' random-id='6730a93e-43ff-0385-9215-b022462cd257'><marimo-button data-initial-value='0' data-label='&quot;&lt;span class=&#92;&quot;markdown prose dark:prose-invert&#92;&quot;&gt;&lt;span class=&#92;&quot;paragraph&#92;&quot;&gt;Purge Repository Items&lt;/span&gt;&lt;/span&gt;&quot;' data-kind='&quot;danger&quot;' data-disabled='false' data-full-width='false'></marimo-button></marimo-ui-element></div></div></div><div><div style='display: flex;flex: 1;flex-direction: column;justify-content: flex-start;align-items: normal;flex-wrap: nowrap;gap: 0.5rem'><div><span>None</span></div><div><span>None</span></div><div><span>None</span></div></div></div></div></div><div data-kind='tab'><div style='display: flex;flex: 1;flex-direction: column;justify-content: flex-start;align-items: normal;flex-wrap: nowrap;gap: 0.5rem'><div><div style='display: flex;flex: 1;flex-direction: row;justify-content: space-between;align-items: normal;flex-wrap: nowrap;gap: 0.5rem'><div><marimo-ui-element object-id='DnEU-0' random-id='7749e4a3-abfe-79a9-377d-e354218c9406'><marimo-button data-initial-value='0' data-label='&quot;&lt;span class=&#92;&quot;markdown prose dark:prose-invert&#92;&quot;&gt;&lt;span class=&#92;&quot;paragraph&#92;&quot;&gt;Get Data Assets Dataframe&lt;/span&gt;&lt;/span&gt;&quot;' data-kind='&quot;neutral&quot;' data-disabled='false' data-full-width='false'></marimo-button></marimo-ui-element></div><div><marimo-ui-element object-id='DnEU-1' random-id='771162b0-a3eb-74cb-be60-f09b0c923745'><marimo-button data-initial-value='0' data-label='&quot;&lt;span class=&#92;&quot;markdown prose dark:prose-invert&#92;&quot;&gt;&lt;span class=&#92;&quot;paragraph&#92;&quot;&gt;Turn Dataframe into List of IDs&lt;/span&gt;&lt;/span&gt;&quot;' data-kind='&quot;neutral&quot;' data-disabled='false' data-full-width='false'></marimo-button></marimo-ui-element></div><div><marimo-ui-element object-id='DnEU-2' random-id='86a6214e-053f-86c5-e835-362b1951eed6'><marimo-button data-initial-value='0' data-label='&quot;&lt;span class=&#92;&quot;markdown prose dark:prose-invert&#92;&quot;&gt;&lt;span class=&#92;&quot;paragraph&#92;&quot;&gt;Purge Data Assets&lt;/span&gt;&lt;/span&gt;&quot;' data-kind='&quot;danger&quot;' data-disabled='false' data-full-width='false'></marimo-button></marimo-ui-element></div></div></div><div><div style='display: flex;flex: 1;flex-direction: column;justify-content: flex-start;align-items: normal;flex-wrap: nowrap;gap: 0.5rem'><div><span>None</span></div><div><span>None</span></div><div><span>None</span></div></div></div></div></div></marimo-tabs></marimo-ui-element></div></marimo-accordion>"
}
}
],
"console": []
},
{
"id": "DnEU",
"code_hash": "745d62e3d5dc2c760977a3ed3b2a5fd2",
"outputs": [
{
"type": "data",
"data": {
"text/plain": ""
}
}
],
"console": []
},
{
"id": "cfuU",
"code_hash": "0ccad8f1a91f5ac0a602bc4681ce4d94",
"outputs": [
{
"type": "data",
"data": {
"text/html": "<marimo-accordion data-labels='[&quot;&lt;span class=&#92;&quot;markdown prose dark:prose-invert&#92;&quot;&gt;&lt;h2 id=&#92;&quot;notebook-introduction&#92;&quot;&gt;Notebook Introduction&lt;/h2&gt;&lt;/span&gt;&quot;]' data-multiple='false'><div><marimo-carousel ><span class=\"markdown prose dark:prose-invert\"><h3 id=\"watsonxai-deploying-python-functions-marimo-notebook\">watsonx.ai - Deploying Python Functions Marimo Notebook</h3>\n<span class=\"paragraph\"><strong><em>Licensed under apache 2.0, users hold full accountability for any use or modification of the code.</em></strong>\n<strong>Use the scroll bars on the sides of the text to move to other sections. &gt;&gt;&gt;</strong></span>\n<span class=\"paragraph\">This asset is meant to support IBMers, IBM Partners, Clients in developing understanding of how to better utilize various watsonx.ai features. </span>\n<blockquote>\n<span class=\"paragraph\">Created by Milan Mrdenovic [<a href=\"&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#109;&#105;&#108;&#97;&#110;&#46;&#109;&#114;&#100;&#101;&#110;&#111;&#118;&#105;&#99;&#64;&#105;&#98;&#109;&#46;&#99;&#111;&#109;\">&#109;&#105;&#108;&#97;&#110;&#46;&#109;&#114;&#100;&#101;&#110;&#111;&#118;&#105;&#99;&#64;&#105;&#98;&#109;&#46;&#99;&#111;&#109;</a>] for IBM Ecosystem Client Engineering, NCEE\n<code>*version 1.2.2 - 18.03.2025*</code></span>\n</blockquote></span><span class=\"markdown prose dark:prose-invert\"><span class=\"paragraph\"><strong>About Marimo:</strong></span>\n<span class=\"paragraph\">Marimo is an open-source reactive python notebook (<a href=\"https://marimo.io/\" rel=\"noopener\" target=\"_blank\">https://marimo.io/</a>), unlike jupyter notebooks the cells are by default reactive, when the values of one change the other cells will be refreashed and have their values updated as well. This allows them to be much more flexible for deploying applets, dashboards, and other non-sequential types of tasks.</span>\n<span class=\"paragraph\">It also includes a multitude of out-of-the-box UI elements whose values are easily accessible for other cells. This makes it perfect for the creation of reusable assets, training materials, dashboards and applets. </span>\n<span class=\"paragraph\">All of the code that runs within the notebook is in the form of regular python files, so the products of these notebooks can be easily reapplied and reused for other projects without huge formatting discrepencies.</span></span><span class=\"markdown prose dark:prose-invert\"><span class=\"paragraph\"><strong>About the Notebook:</strong></span>\n<span class=\"paragraph\">This notebook allows users to programatically deploy custom python functions to watsonx.ai deployment spaces.\nThese functions can be run either as always-on API endpoints (<strong><em>Online</em></strong> deployments) or runnable jobs (<strong><em>Batch</em></strong> deployments) with various hardware specification options.</span>\n<span class=\"paragraph\">This functionality is only accessible programatically, until a compatible function is uploaded through the watsonx.ai RestAPI or Python SDK the user will never see any asset types, controls or UI views related to python functions. </span>\n<span class=\"paragraph\">This marimo bypasses this by allowing a user friendly UI-based process for accessing these features, while at the same time providing insight into how this can be implemented programatically by providing a <em>\"View Code\"</em> option in the top right for technical users.</span></span><span class=\"markdown prose dark:prose-invert\"><span class=\"paragraph\"><strong><em>\"Why deploy functions on IBM watsonx.ai rather than IBM Code Engine?\"</em></strong>\nwatsonx.ai's deployed functions and IBM Code Engine functions/jobs have slightly different capabilities that should be leveraged accordingly. </span>\n<table>\n<thead>\n<tr>\n<th>Capability</th>\n<th>watsonx.ai Deployed Functions</th>\n<th>IBM Code Engine Functions</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Max Hardware Specs</td>\n<td>max - 16vCPU/64GB Ram</td>\n<td>max - 1vCPU/4GB Ram</td>\n</tr>\n<tr>\n<td>Max Timeout</td>\n<td>No Specifications of Limit</td>\n<td>120 seconds</td>\n</tr>\n<tr>\n<td>Max Scaling (Copies)</td>\n<td>up to 10 (must be assigned)</td>\n<td>Automated Scaling</td>\n</tr>\n<tr>\n<td>Supported Languages</td>\n<td>Python</td>\n<td>Python &amp; Node.js</td>\n</tr>\n<tr>\n<td>Cost</td>\n<td>CUH pricing based on hardware spec</td>\n<td>vCPUsec + GBsec + per 1mil HTTP requests</td>\n</tr>\n</tbody>\n</table></span></marimo-carousel></div></marimo-accordion>"
}
}
],
"console": []
},
{
"id": "Bgdl",
"code_hash": "41d515d2baab2225b278c3df0833fccb",
"outputs": [
{
"type": "data",
"data": {
"text/plain": ""
}
}
],
"console": []
},
{
"id": "OspN",
"code_hash": "62dd0d90be983abeec019631406cc4f3",
"outputs": [
{
"type": "data",
"data": {
"text/html": "<marimo-accordion data-labels='[&quot;&lt;span class=&#92;&quot;markdown prose dark:prose-invert&#92;&quot;&gt;&lt;span class=&#92;&quot;paragraph&#92;&quot;&gt;Section 1: &lt;strong&gt;watsonx.ai Credentials&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&quot;, &quot;&lt;span class=&#92;&quot;markdown prose dark:prose-invert&#92;&quot;&gt;&lt;span class=&#92;&quot;paragraph&#92;&quot;&gt;Section 2: &lt;strong&gt;Function Creation&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&quot;, &quot;&lt;span class=&#92;&quot;markdown prose dark:prose-invert&#92;&quot;&gt;&lt;span class=&#92;&quot;paragraph&#92;&quot;&gt;Section 3: &lt;strong&gt;Function Upload&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&quot;, &quot;&lt;span class=&#92;&quot;markdown prose dark:prose-invert&#92;&quot;&gt;&lt;span class=&#92;&quot;paragraph&#92;&quot;&gt;Section 4: &lt;strong&gt;Function Deployment&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&quot;, &quot;&lt;span class=&#92;&quot;markdown prose dark:prose-invert&#92;&quot;&gt;&lt;span class=&#92;&quot;paragraph&#92;&quot;&gt;Section 5: &lt;strong&gt;Helper Functions&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&quot;]' data-multiple='true'><div><span class=\"markdown prose dark:prose-invert\"><h3 id=\"instantiate-your-watsonxai-client\"><strong>Instantiate your watsonx.ai client:</strong></h3>\n<ol>\n<li>\n<span class=\"paragraph\">Select a region from the dropdown menu</span>\n</li>\n<li>\n<span class=\"paragraph\">Provide an IBM Cloud Apikey and watsonx.ai deployment space id</span>\n</li>\n<li>\n<span class=\"paragraph\">Once you submit, the area with the code template will turn green if successful</span>\n</li>\n<li>\n<span class=\"paragraph\">Select a base (provide baseline format) or example code function template</span>\n</li>\n</ol>\n<hr />\n<span class=\"paragraph\"><marimo-ui-element object-id='vblA-11' random-id='7b9116df-8833-34e3-1ba6-db113dee53f4'><marimo-form data-initial-value='null' data-label='null' data-element-id='&quot;vblA-10&quot;' data-loading='false' data-bordered='false' data-submit-button-label='&quot;Submit&quot;' data-submit-button-disabled='false' data-clear-on-submit='false' data-show-clear-button='true' data-clear-button-label='&quot;Clear&quot;' data-should-validate='false'><marimo-ui-element object-id='vblA-10' random-id='b54f0b3d-adbf-5db9-e210-a0ad82709422'><marimo-dict data-initial-value='{&quot;wx_region&quot;: [&quot;US&quot;], &quot;wx_api_key&quot;: &quot;&quot;, &quot;space_id&quot;: &quot;&quot;}' data-label='null' data-element-ids='{&quot;vblA-7&quot;: &quot;wx_region&quot;, &quot;vblA-8&quot;: &quot;wx_api_key&quot;, &quot;vblA-9&quot;: &quot;space_id&quot;}'><div style='max-height:300px;overflow:auto;border-color:blue'><span class=\"markdown prose dark:prose-invert\"><h3 id=\"watsonxai-credentials\"><strong>watsonx.ai credentials:</strong></h3> <span class=\"paragraph\"><marimo-ui-element object-id='vblA-7' random-id='f2cf003e-3954-6d3d-bd02-3fe578551013'><marimo-dropdown data-initial-value='[&quot;US&quot;]' data-label='&quot;&lt;span class=&#92;&quot;markdown prose dark:prose-invert&#92;&quot;&gt;&lt;span class=&#92;&quot;paragraph&#92;&quot;&gt;Select your watsonx.ai region:&lt;/span&gt;&lt;/span&gt;&quot;' data-options='[&quot;US&quot;, &quot;EU&quot;, &quot;GB&quot;, &quot;JP&quot;, &quot;AU&quot;, &quot;CA&quot;]' data-allow-select-none='false' data-searchable='true' data-full-width='false'></marimo-dropdown></marimo-ui-element></span> <span class=\"paragraph\"><marimo-ui-element object-id='vblA-8' random-id='c3d22af5-8221-7aaa-10e1-bfdfb7238af3'><marimo-text data-initial-value='&quot;&quot;' data-label='&quot;&lt;span class=&#92;&quot;markdown prose dark:prose-invert&#92;&quot;&gt;&lt;span class=&#92;&quot;paragraph&#92;&quot;&gt;IBM Cloud Api-key:&lt;/span&gt;&lt;/span&gt;&quot;' data-placeholder='&quot;Add your IBM Cloud api-key...&quot;' data-kind='&quot;password&quot;' data-full-width='false' data-disabled='false' data-debounce='true'></marimo-text></marimo-ui-element></span> <span class=\"paragraph\"><marimo-ui-element object-id='vblA-9' random-id='e4acaaf9-f616-bea4-3508-791a560f314c'><marimo-text data-initial-value='&quot;&quot;' data-label='&quot;&lt;span class=&#92;&quot;markdown prose dark:prose-invert&#92;&quot;&gt;&lt;span class=&#92;&quot;paragraph&#92;&quot;&gt;Space_ID:&lt;/span&gt;&lt;/span&gt;&quot;' data-placeholder='&quot;Add your watsonx.ai space_id...&quot;' data-kind='&quot;text&quot;' data-full-width='false' data-disabled='false' data-debounce='true'></marimo-text></marimo-ui-element></span></span></div></marimo-dict></marimo-ui-element></marimo-form></marimo-ui-element></span>\n<hr />\n<span class=\"paragraph\"><marimo-callout-output data-html='&quot;&lt;marimo-ui-element object-id=&#x27;bkHC-0&#x27; random-id=&#x27;90b90c25-006d-e10d-9f99-02d50b49a97a&#x27;&gt;&lt;marimo-dropdown data-initial-value=&#x27;[&amp;quot;Base&amp;quot;]&#x27; data-label=&#x27;&amp;quot;&amp;lt;span class=&amp;#92;&amp;quot;markdown prose dark:prose-invert&amp;#92;&amp;quot;&amp;gt;&amp;lt;span class=&amp;#92;&amp;quot;paragraph&amp;#92;&amp;quot;&amp;gt;Code Template:&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;quot;&#x27; data-options=&#x27;[&amp;quot;Base&amp;quot;, &amp;quot;Stream Files to IBM COS [Example]&amp;quot;]&#x27; data-allow-select-none=&#x27;false&#x27; data-searchable=&#x27;false&#x27; data-full-width=&#x27;false&#x27;&gt;&lt;/marimo-dropdown&gt;&lt;/marimo-ui-element&gt;&quot;' data-kind='&quot;success&quot;'></marimo-callout-output></span></span></div><div><span class=\"markdown prose dark:prose-invert\"><span class=\"paragraph\">###<strong>Create your function from the template:</strong></span>\n<span class=\"paragraph\">1. Use the code editor window to create a function to deploy\n <br>\n The function must:\n <br>\n --- Include a payload and score element\n <br>\n --- Have the same function name in both the score = <name>() segment and the Function Name input field below\n <br>\n --- Additional details can be found here -&gt; <a href=\"https://dataplatform.cloud.ibm.com/docs/content/wsj/analyze-data/ml-deploy-py-function-write.html?utm_medium=Exinfluencer&amp;utm_source=ibm_developer&amp;utm_content=in_content_link&amp;utm_term=10006555&amp;utm_id=blogs_awb-tekton-optimizations-for-kubeflow-pipelines-2-0&amp;context=wx&amp;audience=wdp\" rel=\"noopener\" target=\"_blank\">watsonx.ai - Writing deployable Python functions\n</a></span>\n<span class=\"paragraph\">3. Click submit, then proceed to select whether you wish to add:\n <br>\n --- An input schema (describing the format of the variables the function takes) <strong>[Optional]</strong>\n <br>\n --- An output schema (describing the format of the output results the function returns) <strong>[Optional]</strong>\n <br>\n --- An sample input example (showing an example of a mapping of the input and output schema to actual values.) <strong>[Optional]</strong></span>\n<span class=\"paragraph\">4. Fill in the function name field <strong>(must be exactly the same as in the function editor)</strong></span>\n<span class=\"paragraph\">5. Add a description and metadata tags <strong>[Optional]</strong></span>\n<hr />\n<span class=\"paragraph\"><marimo-ui-element object-id='lEQa-5' random-id='28fd479c-eb02-61e3-1b6b-5b227a0d7474'><marimo-form data-initial-value='null' data-label='null' data-element-id='&quot;lEQa-4&quot;' data-loading='false' data-bordered='false' data-submit-button-label='&quot;Submit&quot;' data-submit-button-disabled='false' data-clear-on-submit='false' data-show-clear-button='true' data-clear-button-label='&quot;Clear&quot;' data-should-validate='false'><marimo-ui-element object-id='lEQa-4' random-id='d3e1f1b4-072a-8aa0-6c42-4ee510476124'><marimo-dict data-initial-value='{&quot;editor&quot;: &quot;def your_function_name():&#92;n&#92;n import subprocess&#92;n subprocess.check_output(&#x27;pip install gensim&#x27;, shell=True)&#92;n import gensim&#92;n&#92;n def score(input_data):&#92;n message_from_input_payload = payload.get(&#92;&quot;input_data&#92;&quot;)[0].get(&#92;&quot;values&#92;&quot;)[0][0]&#92;n response_message = &#92;&quot;Received message - {0}&#92;&quot;.format(message_from_input_payload)&#92;n&#92;n # Score using the pre-defined model&#92;n score_response = {&#92;n &#x27;predictions&#x27;: [{&#x27;fields&#x27;: [&#x27;Response_message_field&#x27;, &#x27;installed_lib_version&#x27;],&#92;n &#x27;values&#x27;: [[response_message, gensim.__version__]]&#92;n }]&#92;n }&#92;n return score_response&#92;n&#92;n return score&#92;n&#92;n score = your_function_name()&#92;n &quot;}' data-label='null' data-element-ids='{&quot;lEQa-3&quot;: &quot;editor&quot;}'><span class=\"markdown prose dark:prose-invert\"><h4 id=\"create-your-function-by-editing-the-template\"><strong>Create your function by editing the template:</strong></h4> <span class=\"paragraph\"><marimo-ui-element object-id='lEQa-3' random-id='0dec03fb-e4ed-4f22-8e31-4d11715912f1'><marimo-code-editor data-initial-value='&quot;def your_function_name():&#92;n&#92;n import subprocess&#92;n subprocess.check_output(&#x27;pip install gensim&#x27;, shell=True)&#92;n import gensim&#92;n&#92;n def score(input_data):&#92;n message_from_input_payload = payload.get(&#92;&quot;input_data&#92;&quot;)[0].get(&#92;&quot;values&#92;&quot;)[0][0]&#92;n response_message = &#92;&quot;Received message - {0}&#92;&quot;.format(message_from_input_payload)&#92;n&#92;n # Score using the pre-defined model&#92;n score_response = {&#92;n &#x27;predictions&#x27;: [{&#x27;fields&#x27;: [&#x27;Response_message_field&#x27;, &#x27;installed_lib_version&#x27;],&#92;n &#x27;values&#x27;: [[response_message, gensim.__version__]]&#92;n }]&#92;n }&#92;n return score_response&#92;n&#92;n return score&#92;n&#92;n score = your_function_name()&#92;n &quot;' data-label='null' data-language='&quot;python&quot;' data-placeholder='&quot;&quot;' data-disabled='false' data-min-height='50'></marimo-code-editor></marimo-ui-element></span></span></marimo-dict></marimo-ui-element></marimo-form></marimo-ui-element></span>\n<hr />\n<span class=\"paragraph\"><marimo-ui-element object-id='OspN-0' random-id='ebce10ec-d550-900b-eb7a-f0d4ea3f05e1'><marimo-tabs data-initial-value='&quot;&quot;' data-label='null' data-tabs='[&quot;&lt;span class=&#92;&quot;markdown prose dark:prose-invert&#92;&quot;&gt;&lt;span class=&#92;&quot;paragraph&#92;&quot;&gt;Schema Option Selection&lt;/span&gt;&lt;/span&gt;&quot;, &quot;&lt;span class=&#92;&quot;markdown prose dark:prose-invert&#92;&quot;&gt;&lt;span class=&#92;&quot;paragraph&#92;&quot;&gt;Schema Definition&lt;/span&gt;&lt;/span&gt;&quot;]'><div data-kind='tab'><div style='display: flex;flex: 1;flex-direction: column;justify-content: flex-start;align-items: center;flex-wrap: nowrap;gap: 2rem'><div><div style='display: flex;flex: 1;flex-direction: row;justify-content: center;align-items: center;flex-wrap: wrap;gap: 1rem'><div><marimo-ui-element object-id='SFPL-0' random-id='dcdb319c-2849-70a9-2d4b-b7c4f1507f2e'><marimo-checkbox data-initial-value='false' data-label='&quot;&lt;span class=&#92;&quot;markdown prose dark:prose-invert&#92;&quot;&gt;&lt;span class=&#92;&quot;paragraph&#92;&quot;&gt;Add input schema (optional)&lt;/span&gt;&lt;/span&gt;&quot;'></marimo-checkbox></marimo-ui-element></div><div><marimo-ui-element object-id='SFPL-1' random-id='a39d7aaa-6909-cd5d-4c35-878919d8e623'><marimo-checkbox data-initial-value='false' data-label='&quot;&lt;span class=&#92;&quot;markdown prose dark:prose-invert&#92;&quot;&gt;&lt;span class=&#92;&quot;paragraph&#92;&quot;&gt;Add output schema (optional)&lt;/span&gt;&lt;/span&gt;&quot;'></marimo-checkbox></marimo-ui-element></div><div><marimo-ui-element object-id='SFPL-2' random-id='81079ee9-813c-28af-d0c6-258af83ea0b8'><marimo-checkbox data-initial-value='false' data-label='&quot;&lt;span class=&#92;&quot;markdown prose dark:prose-invert&#92;&quot;&gt;&lt;span class=&#92;&quot;paragraph&#92;&quot;&gt;Add sample input example (optional)&lt;/span&gt;&lt;/span&gt;&quot;'></marimo-checkbox></marimo-ui-element></div></div></div><div><span class=\"markdown prose dark:prose-invert\"><span class=\"paragraph\"><strong>Make sure to select the checkbox options before filling in descriptions and tags or they will reset.</strong></span></span></div></div></div><div data-kind='tab'><span class=\"markdown prose dark:prose-invert\"><h4 id=\"edit-the-schema-definitions-you-selected-in-the-previous-tab\"><strong>Edit the schema definitions you selected in the previous tab.</strong><br></h4> <span class=\"paragraph\"><marimo-accordion data-labels='[&quot;&lt;span class=&#92;&quot;markdown prose dark:prose-invert&#92;&quot;&gt;&lt;span class=&#92;&quot;paragraph&#92;&quot;&gt;&lt;strong&gt;Input Schema Metadata Editor&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&quot;, &quot;&lt;span class=&#92;&quot;markdown prose dark:prose-invert&#92;&quot;&gt;&lt;span class=&#92;&quot;paragraph&#92;&quot;&gt;&lt;strong&gt;Output Schema Metadata Editor&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&quot;, &quot;&lt;span class=&#92;&quot;markdown prose dark:prose-invert&#92;&quot;&gt;&lt;span class=&#92;&quot;paragraph&#92;&quot;&gt;&lt;strong&gt;Sample Input Metadata Editor&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&quot;]' data-multiple='true'><div><marimo-ui-element object-id='RGSE-0' random-id='077ba2ee-484b-b233-da6d-22022c3c234a'><marimo-code-editor data-initial-value='&quot;[&#92;n {&#92;n &#92;&quot;id&#92;&quot;: &#92;&quot;1&#92;&quot;,&#92;n &#92;&quot;type&#92;&quot;: &#92;&quot;struct&#92;&quot;,&#92;n &#92;&quot;fields&#92;&quot;: [&#92;n {&#92;n &#92;&quot;name&#92;&quot;: &#92;&quot;&lt;variable name 1&gt;&#92;&quot;,&#92;n &#92;&quot;type&#92;&quot;: &#92;&quot;string&#92;&quot;,&#92;n &#92;&quot;nullable&#92;&quot;: false,&#92;n &#92;&quot;metadata&#92;&quot;: {}&#92;n },&#92;n {&#92;n &#92;&quot;name&#92;&quot;: &#92;&quot;&lt;variable name 2&gt;&#92;&quot;,&#92;n &#92;&quot;type&#92;&quot;: &#92;&quot;string&#92;&quot;,&#92;n &#92;&quot;nullable&#92;&quot;: false,&#92;n &#92;&quot;metadata&#92;&quot;: {}&#92;n }&#92;n ]&#92;n }&#92;n]&quot;' data-label='null' data-language='&quot;python&quot;' data-placeholder='&quot;&quot;' data-disabled='false' data-min-height='25'></marimo-code-editor></marimo-ui-element></div><div><marimo-ui-element object-id='RGSE-1' random-id='496c3668-4d0b-950a-5160-baa82bf944fe'><marimo-code-editor data-initial-value='&quot;[&#92;n {&#92;n &#92;&quot;id&#92;&quot;: &#92;&quot;1&#92;&quot;,&#92;n &#92;&quot;type&#92;&quot;: &#92;&quot;struct&#92;&quot;,&#92;n &#92;&quot;fields&#92;&quot;: [&#92;n {&#92;n &#92;&quot;name&#92;&quot;: &#92;&quot;&lt;output return name&gt;&#92;&quot;,&#92;n &#92;&quot;type&#92;&quot;: &#92;&quot;string&#92;&quot;,&#92;n &#92;&quot;nullable&#92;&quot;: false,&#92;n &#92;&quot;metadata&#92;&quot;: {}&#92;n }&#92;n ]&#92;n }&#92;n]&quot;' data-label='null' data-language='&quot;python&quot;' data-placeholder='&quot;&quot;' data-disabled='false' data-min-height='25'></marimo-code-editor></marimo-ui-element></div><div><marimo-ui-element object-id='RGSE-2' random-id='00fbb0ed-a1fd-5f0d-7206-cff628da8f53'><marimo-code-editor data-initial-value='&quot;{&#92;n &#92;&quot;input_data&#92;&quot;: [&#92;n {&#92;n &#92;&quot;fields&#92;&quot;: [&#92;n &#92;&quot;&lt;variable name 1&gt;&#92;&quot;,&#92;n &#92;&quot;&lt;variable name 2&gt;&#92;&quot;&#92;n ],&#92;n &#92;&quot;values&#92;&quot;: [&#92;n [&#92;n &#92;&quot;&lt;sample input value for variable 1&gt;&#92;&quot;,&#92;n &#92;&quot;&lt;sample input value for variable 2&gt;&#92;&quot;&#92;n ]&#92;n ]&#92;n }&#92;n ]&#92;n}&quot;' data-label='null' data-language='&quot;python&quot;' data-placeholder='&quot;&quot;' data-disabled='false' data-min-height='25'></marimo-code-editor></marimo-ui-element></div></marimo-accordion></span></span></div></marimo-tabs></marimo-ui-element></span>\n<hr />\n<span class=\"paragraph\"><div style='display: flex;flex: 1;flex-direction: column;justify-content: flex-start;align-items: center;flex-wrap: nowrap;gap: 2rem'><div><div style='display: flex;flex: 1;flex-direction: row;justify-content: space-between;align-items: normal;flex-wrap: nowrap;gap: 2.75rem'><div style='flex: 0.6'><marimo-ui-element object-id='BYtC-8' random-id='15ad91e4-d992-bd83-8a00-a72cb624a549'><marimo-text-area data-initial-value='&quot;&quot;' data-label='&quot;&lt;span class=&#92;&quot;markdown prose dark:prose-invert&#92;&quot;&gt;&lt;span class=&#92;&quot;paragraph&#92;&quot;&gt;Description&lt;/span&gt;&lt;/span&gt;&quot;' data-placeholder='&quot;Write a description for your function...)&quot;' data-max-length='256' data-disabled='false' data-debounce='true' data-full-width='true' data-rows='5'></marimo-text-area></marimo-ui-element></div><div style='flex: 0.4'><div style='display: flex;flex: 1;flex-direction: row;justify-content: flex-start;align-items: flex-start;flex-wrap: wrap;gap: 1rem'><div><marimo-ui-element object-id='BYtC-0' random-id='b74047f4-4a03-0748-3f13-b051261ccd3b'><marimo-text data-initial-value='&quot;your_function_name&quot;' data-label='&quot;&lt;span class=&#92;&quot;markdown prose dark:prose-invert&#92;&quot;&gt;&lt;span class=&#92;&quot;paragraph&#92;&quot;&gt;Function Name:&lt;/span&gt;&lt;/span&gt;&quot;' data-placeholder='&quot;&lt;Must be the same as the name in editor&gt;&quot;' data-kind='&quot;text&quot;' data-full-width='false' data-disabled='false' data-debounce='true'></marimo-text></marimo-ui-element></div><div><marimo-ui-element object-id='BYtC-7' random-id='61908dc2-5ddd-f0fd-43c0-f18715a07d67'><marimo-dict data-initial-value='{&quot;0&quot;: &quot;&quot;, &quot;1&quot;: &quot;&quot;, &quot;2&quot;: &quot;&quot;}' data-label='&quot;&lt;span class=&#92;&quot;markdown prose dark:prose-invert&#92;&quot;&gt;&lt;span class=&#92;&quot;paragraph&#92;&quot;&gt;Optional Metadata Tags&lt;/span&gt;&lt;/span&gt;&quot;' data-element-ids='{&quot;BYtC-4&quot;: &quot;0&quot;, &quot;BYtC-5&quot;: &quot;1&quot;, &quot;BYtC-6&quot;: &quot;2&quot;}'><marimo-json-output data-json-data='[&quot;text/html:&lt;marimo-ui-element object-id=&#x27;BYtC-4&#x27; random-id=&#x27;e808d7e1-6f5f-40ea-0b26-033e7ec7746c&#x27;&gt;&lt;marimo-text data-initial-value=&#x27;&amp;quot;&amp;quot;&#x27; data-label=&#x27;null&#x27; data-placeholder=&#x27;&amp;quot;Metadata Tags...&amp;quot;&#x27; data-kind=&#x27;&amp;quot;text&amp;quot;&#x27; data-full-width=&#x27;false&#x27; data-disabled=&#x27;false&#x27; data-debounce=&#x27;true&#x27;&gt;&lt;/marimo-text&gt;&lt;/marimo-ui-element&gt;&quot;, &quot;text/html:&lt;marimo-ui-element object-id=&#x27;BYtC-5&#x27; random-id=&#x27;d85b1dc2-7d9f-49c8-886b-a7f688ec5681&#x27;&gt;&lt;marimo-text data-initial-value=&#x27;&amp;quot;&amp;quot;&#x27; data-label=&#x27;null&#x27; data-placeholder=&#x27;&amp;quot;&amp;quot;&#x27; data-kind=&#x27;&amp;quot;text&amp;quot;&#x27; data-full-width=&#x27;false&#x27; data-disabled=&#x27;false&#x27; data-debounce=&#x27;true&#x27;&gt;&lt;/marimo-text&gt;&lt;/marimo-ui-element&gt;&quot;, &quot;text/html:&lt;marimo-ui-element object-id=&#x27;BYtC-6&#x27; random-id=&#x27;32dea2f1-96d1-f67b-0437-7c0d3cd8edb5&#x27;&gt;&lt;marimo-text data-initial-value=&#x27;&amp;quot;&amp;quot;&#x27; data-label=&#x27;null&#x27; data-placeholder=&#x27;&amp;quot;&amp;quot;&#x27; data-kind=&#x27;&amp;quot;text&amp;quot;&#x27; data-full-width=&#x27;false&#x27; data-disabled=&#x27;false&#x27; data-debounce=&#x27;true&#x27;&gt;&lt;/marimo-text&gt;&lt;/marimo-ui-element&gt;&quot;]' data-name='&quot;Optional Metadata Tags&quot;'></marimo-json-output></marimo-dict></marimo-ui-element></div></div></div></div></div></div></span></span></div><div><span class=\"markdown prose dark:prose-invert\"><h3 id=\"review-and-upload-your-function\"><strong>Review and Upload your function</strong></h3>\n<ol>\n<li>\n<span class=\"paragraph\">Review the function metadata specs JSON</span>\n</li>\n<li>\n<span class=\"paragraph\">Select a software specification if necessary (default for python functions is pre-selected), this is the runtime environment of python that your function will run in. Environments on watsonx.ai come pre-packaged with many different libraries, if necessary install new ones by adding them into the function as a <code>subprocess.check_output('pip install &lt;package_name&gt;', shell=True)</code> command.</span>\n</li>\n<li>\n<span class=\"paragraph\">Once your are satisfied, click the upload function button and wait for the response.</span>\n</li>\n</ol>\n<blockquote>\n<span class=\"paragraph\">If you see no table of software specs, you haven't activated your watsonx.ai client.</span>\n</blockquote>\n<hr />\n<span class=\"paragraph\"><marimo-ui-element object-id='Xref-0' random-id='bc8445aa-5628-05e6-6027-ab59c58ccc91'><marimo-table data-initial-value='[0]' data-label='&quot;&lt;span class=&#92;&quot;markdown prose dark:prose-invert&#92;&quot;&gt;&lt;h4 id=&#92;&quot;select-a-supported-software_spec-runtime-for-your-function-asset-for-python-functions-select-runtime-241-py311&#92;&quot;&gt;&lt;strong&gt;Select a supported software_spec runtime for your function asset&lt;/strong&gt; (For Python Functions select - &lt;em&gt;&#x27;runtime-24.1-py3.11&#x27;&lt;/em&gt; ):&lt;/h4&gt;&lt;/span&gt;&quot;' data-data='&quot;./@file/632-159288-YoYepVpK.csv&quot;' data-total-rows='15' data-total-columns='5' data-banner-text='&quot;&quot;' data-pagination='true' data-page-size='6' data-field-types='[[&quot;NAME&quot;, [&quot;string&quot;, &quot;object&quot;]], [&quot;ID&quot;, [&quot;string&quot;, &quot;object&quot;]], [&quot;TYPE&quot;, [&quot;string&quot;, &quot;object&quot;]], [&quot;STATE&quot;, [&quot;string&quot;, &quot;object&quot;]], [&quot;NOTES&quot;, [&quot;string&quot;, &quot;object&quot;]]]' data-selection='&quot;single&quot;' data-show-filters='true' data-show-download='true' data-show-column-summaries='true' data-row-headers='[]' data-has-stable-row-id='true'></marimo-table></marimo-ui-element></span>\n<hr />\n<div style='display: flex;flex: 1;flex-direction: column;justify-content: space-around;align-items: center;flex-wrap: nowrap;gap: 0.5rem'><div><marimo-ui-element object-id='Kclp-0' random-id='d9ad0570-0550-e6fd-c7f4-160fb139e445'><marimo-button data-initial-value='0' data-label='&quot;&lt;span class=&#92;&quot;markdown prose dark:prose-invert&#92;&quot;&gt;&lt;span class=&#92;&quot;paragraph&#92;&quot;&gt;Upload Function&lt;/span&gt;&lt;/span&gt;&quot;' data-kind='&quot;success&quot;' data-disabled='false' data-tooltip='&quot;Click to upload function to watsonx.ai&quot;' data-full-width='false'></marimo-button></marimo-ui-element></div><div><span class=\"markdown prose dark:prose-invert\"><span class=\"paragraph\"><strong>Status:</strong> No uploads yet</span></span></div></div></span></div><div><span class=\"markdown prose dark:prose-invert\"><span class=\"paragraph\">Nothing!</span></span></div><div><span class=\"markdown prose dark:prose-invert\"><span class=\"paragraph\">Nothing!</span></span></div></marimo-accordion>"
}
}
],
"console": []
}
]
}