<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: How to return value from ArcGIS Pro custom tool (.py)? in ArcGIS Pro Questions</title>
    <link>https://community.esri.com/t5/arcgis-pro-questions/how-to-return-value-from-arcgis-pro-custom-tool-py/m-p/1389582#M79626</link>
    <description>&lt;P&gt;That's great!&amp;nbsp;&lt;a href="https://community.esri.com/t5/user/viewprofilepage/user-id/714367"&gt;@uasdev&lt;/a&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Fri, 01 Mar 2024 17:44:33 GMT</pubDate>
    <dc:creator>GeeteshSingh07</dc:creator>
    <dc:date>2024-03-01T17:44:33Z</dc:date>
    <item>
      <title>How to return value from ArcGIS Pro custom tool (.py)?</title>
      <link>https://community.esri.com/t5/arcgis-pro-questions/how-to-return-value-from-arcgis-pro-custom-tool-py/m-p/1389169#M79569</link>
      <description>&lt;P&gt;How do we return a value from a custom .py tool, so that when I run the tool in another script, it will return a value (such as a number, string, or tuple)?&lt;/P&gt;&lt;P&gt;Notice in the execute class function, I attempt to return a tuple of values. However, when I run the tool in a separate script, the return value is empty.&lt;/P&gt;&lt;P&gt;I use the following code to import the toolbox and run the code:&lt;/P&gt;&lt;P&gt;```&lt;/P&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;arcpy&lt;/SPAN&gt;&lt;SPAN&gt;.ImportToolbox(&lt;/SPAN&gt;&lt;SPAN&gt;pyt_path&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"myToolbox"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;arcpy.myToolbox.HelloWorld()&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;```&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;Below is an example .py script for the tool above&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;```&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;import&lt;/SPAN&gt; &lt;SPAN&gt;arcpy&lt;/SPAN&gt;&lt;/P&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;from&lt;/SPAN&gt; &lt;SPAN&gt;multiprocessing&lt;/SPAN&gt; &lt;SPAN&gt;import&lt;/SPAN&gt; &lt;SPAN&gt;Pool&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;class&lt;/SPAN&gt; &lt;SPAN&gt;HelloWorld&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;object):&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;def&lt;/SPAN&gt; &lt;SPAN&gt;__init__&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;self):&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;"""Define the tool (tool name is the name of the class)."""&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;self&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;label&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;"Hello World"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;self&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;description&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;""&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;self&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;canRunInBackground&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;False&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;def&lt;/SPAN&gt; &lt;SPAN&gt;getParameterInfo&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;self):&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;"""Define parameter definitions"""&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;params&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;None&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;return&lt;/SPAN&gt; &lt;SPAN&gt;params&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;def&lt;/SPAN&gt; &lt;SPAN&gt;isLicensed&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;self):&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;"""Set whether tool is licensed to execute."""&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;return&lt;/SPAN&gt; &lt;SPAN&gt;True&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;def&lt;/SPAN&gt; &lt;SPAN&gt;updateParameters&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;self&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;parameters):&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;"""Modify the values and properties of parameters before internal&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; validation is performed. &amp;nbsp;This method is called whenever a parameter&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; has been changed."""&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;return&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;def&lt;/SPAN&gt; &lt;SPAN&gt;updateMessages&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;self&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;parameters):&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;"""Modify the messages created by internal validation for each tool&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; parameter. &amp;nbsp;This method is called after internal validation."""&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;return&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;def&lt;/SPAN&gt; &lt;SPAN&gt;execute&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;self&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;parameters&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;messages):&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;"""The source code of the tool."""&lt;/SPAN&gt;&lt;SPAN&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;arcpy&lt;/SPAN&gt;&lt;SPAN&gt;.AddMessage(&lt;/SPAN&gt;&lt;SPAN&gt;"Hello World!"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;# arcpy.AddMessage("Hello Jupiter!")&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;return&lt;/SPAN&gt;&lt;SPAN&gt; (&lt;/SPAN&gt;&lt;SPAN&gt;"Hello world"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;True&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;def&lt;/SPAN&gt; &lt;SPAN&gt;postExecute&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;self&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;parameters):&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;"""This method takes place after outputs are processed and&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; added to the display."""&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;return&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;```&lt;/P&gt;</description>
      <pubDate>Thu, 29 Feb 2024 22:55:06 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-pro-questions/how-to-return-value-from-arcgis-pro-custom-tool-py/m-p/1389169#M79569</guid>
      <dc:creator>uasdev</dc:creator>
      <dc:date>2024-02-29T22:55:06Z</dc:date>
    </item>
    <item>
      <title>Re: How to return value from ArcGIS Pro custom tool (.py)?</title>
      <link>https://community.esri.com/t5/arcgis-pro-questions/how-to-return-value-from-arcgis-pro-custom-tool-py/m-p/1389273#M79577</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.esri.com/t5/user/viewprofilepage/user-id/714367"&gt;@uasdev&lt;/a&gt;,&amp;nbsp; this is how I execute my codes:&lt;/P&gt;&lt;P&gt;The following is my .py file:&lt;/P&gt;&lt;LI-CODE lang="python"&gt;import arcpy


class Toolbox:
    def __init__(self):
        """Define the toolbox (the name of the toolbox is the name of the
        .pyt file)."""
        self.label = "Toolbox"
        self.alias = "toolbox"

        # List of tool classes associated with this toolbox
        self.tools = [HelloWorld]


class HelloWorld:
    def __init__(self):
        self.label = "HelloWorld"
        self.description = ""

    def getParameterInfo(self):
        """Define the tool parameters."""
        params = None
        return params

    def isLicensed(self):
        """Set whether the tool is licensed to execute."""
        return True

    def updateParameters(self, parameters):
        """Modify the values and properties of parameters before internal
        validation is performed.  This method is called whenever a parameter
        has been changed."""
        return

    def updateMessages(self, parameters):
        """Modify the messages created by internal validation for each tool
        parameter. This method is called after internal validation."""
        return

    def execute(self, parameters, messages):
        """The source code of the tool."""
        out_str = "This is String"
        out_tuple = [1,2,3,4,5]
        arcpy.AddMessage("Hello")
        print(out_str, out_tuple)

    def postExecute(self, parameters):
        """This method takes place after outputs are processed and
        added to the display."""
        return&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;If you want to print, string/tuple or any other data type:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="GeeteshSingh07_0-1709266772009.png" style="width: 400px;"&gt;&lt;img src="https://community.esri.com/t5/image/serverpage/image-id/96415i3672C1DDFAF1A81B/image-size/medium?v=v2&amp;amp;px=400" role="button" title="GeeteshSingh07_0-1709266772009.png" alt="GeeteshSingh07_0-1709266772009.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;If you want to return arcpy.message, then, instead of 'print', use 'return':&lt;/STRONG&gt;&lt;/P&gt;&lt;LI-CODE lang="python"&gt;    def execute(self, parameters, messages):
        """The source code of the tool."""
        out_str = "This is String"
        out_tuple = [1,2,3,4,5]
        arcpy.AddMessage("Hello")
        return&lt;/LI-CODE&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="GeeteshSingh07_1-1709266852927.png" style="width: 400px;"&gt;&lt;img src="https://community.esri.com/t5/image/serverpage/image-id/96416iB5D2A1DCFFC835A2/image-size/medium?v=v2&amp;amp;px=400" role="button" title="GeeteshSingh07_1-1709266852927.png" alt="GeeteshSingh07_1-1709266852927.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;How did I debug?&lt;/P&gt;&lt;P&gt;Using return statement, python understands there is an output, but it returns empty.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="GeeteshSingh07_2-1709267196441.png" style="width: 400px;"&gt;&lt;img src="https://community.esri.com/t5/image/serverpage/image-id/96418iBCFF4CFFA8994C0A/image-size/medium?v=v2&amp;amp;px=400" role="button" title="GeeteshSingh07_2-1709267196441.png" alt="GeeteshSingh07_2-1709267196441.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="GeeteshSingh07_3-1709267235027.png" style="width: 400px;"&gt;&lt;img src="https://community.esri.com/t5/image/serverpage/image-id/96419iFEDC21AD880FDD94/image-size/medium?v=v2&amp;amp;px=400" role="button" title="GeeteshSingh07_3-1709267235027.png" alt="GeeteshSingh07_3-1709267235027.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am not sure, if this is expected behavior or not, but this is how I run my code.&lt;/P&gt;&lt;P&gt;Best, Geetesh&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 01 Mar 2024 04:28:05 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-pro-questions/how-to-return-value-from-arcgis-pro-custom-tool-py/m-p/1389273#M79577</guid>
      <dc:creator>GeeteshSingh07</dc:creator>
      <dc:date>2024-03-01T04:28:05Z</dc:date>
    </item>
    <item>
      <title>Re: How to return value from ArcGIS Pro custom tool (.py)?</title>
      <link>https://community.esri.com/t5/arcgis-pro-questions/how-to-return-value-from-arcgis-pro-custom-tool-py/m-p/1389553#M79623</link>
      <description>&lt;P&gt;Thanks Geetesh! This should work for my application.&amp;nbsp;&lt;/P&gt;&lt;P&gt;Appreciate the help.&lt;/P&gt;&lt;P&gt;Best,&lt;/P&gt;&lt;P&gt;Alex&lt;/P&gt;</description>
      <pubDate>Fri, 01 Mar 2024 16:52:16 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-pro-questions/how-to-return-value-from-arcgis-pro-custom-tool-py/m-p/1389553#M79623</guid>
      <dc:creator>uasdev</dc:creator>
      <dc:date>2024-03-01T16:52:16Z</dc:date>
    </item>
    <item>
      <title>Re: How to return value from ArcGIS Pro custom tool (.py)?</title>
      <link>https://community.esri.com/t5/arcgis-pro-questions/how-to-return-value-from-arcgis-pro-custom-tool-py/m-p/1389582#M79626</link>
      <description>&lt;P&gt;That's great!&amp;nbsp;&lt;a href="https://community.esri.com/t5/user/viewprofilepage/user-id/714367"&gt;@uasdev&lt;/a&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 01 Mar 2024 17:44:33 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-pro-questions/how-to-return-value-from-arcgis-pro-custom-tool-py/m-p/1389582#M79626</guid>
      <dc:creator>GeeteshSingh07</dc:creator>
      <dc:date>2024-03-01T17:44:33Z</dc:date>
    </item>
    <item>
      <title>Re: How to return value from ArcGIS Pro custom tool (.py)?</title>
      <link>https://community.esri.com/t5/arcgis-pro-questions/how-to-return-value-from-arcgis-pro-custom-tool-py/m-p/1396779#M80455</link>
      <description>&lt;P&gt;HI&amp;nbsp;&lt;a href="https://community.esri.com/t5/user/viewprofilepage/user-id/721900"&gt;@GeeteshSingh07&lt;/a&gt;&amp;nbsp;, this option does not work for me. The return value is None when I try to return variables within the execute function in arcgis tool.&lt;/P&gt;</description>
      <pubDate>Fri, 15 Mar 2024 19:36:27 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-pro-questions/how-to-return-value-from-arcgis-pro-custom-tool-py/m-p/1396779#M80455</guid>
      <dc:creator>uasdev</dc:creator>
      <dc:date>2024-03-15T19:36:27Z</dc:date>
    </item>
  </channel>
</rss>

