<?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: Python Script Tool Validation errors in Python Questions</title>
    <link>https://community.esri.com/t5/python-questions/python-script-tool-validation-errors/m-p/294838#M22813</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I noticed on another link in the ArcGIS help sections that it states parameterType is read-only.&amp;nbsp; On the one I provided, it states that it is both read and write.&amp;nbsp; However, I managed to figure out my own solution to my problem. The reason I didn't go with setting both of them to optional, was that when someone picks a "Polygon" type, the field I need to be enabled and required, still says "optional" by the parameter where it is entered. This is a tool that might eventually be given to clients, so this could lead to alot of confusion.&amp;nbsp; I found the solution in using the .clearmessages() method and placing the logic to them under the updateMessages(self) function . My code looks like this: &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;import arcpy&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;class ToolValidator(object):&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; def __init__(self):&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.params = arcpy.GetParameterInfo()&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; def initializeParameters(self):&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; def updateParameters(self):&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if self.params[0].value:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; desc = arcpy.Describe(self.params[0].value)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; feature_type = desc.shapeType&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; if feature_type == "Polygon":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; self.params[7].enabled = True&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; if self.params[7].value == "All":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; self.params[8].enabled = True&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.params[8].enabled = False&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; else: &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; self.params[7].enabled = False&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; self.params[8].enabled = True&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; def updateMessages(self):&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if self.params[0].value:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; desc = arcpy.Describe(self.params[0].value)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; feature_type = desc.shapeType&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; if feature_type == "Polygon":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; if self.params[7].value == "All":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; pass&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; self.params[8].clearMessage()&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; else: &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; self.params[7].clearMessage()&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;This got the tool working the way I wanted it based on what the geometry type of the first inputs.&amp;nbsp; Also if parameterType is read-only, it would be nice if someone at ESRI would correct that for the link I provided in the first post.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 06 Jan 2014 14:50:42 GMT</pubDate>
    <dc:creator>MattGray</dc:creator>
    <dc:date>2014-01-06T14:50:42Z</dc:date>
    <item>
      <title>Python Script Tool Validation errors</title>
      <link>https://community.esri.com/t5/python-questions/python-script-tool-validation-errors/m-p/294836#M22811</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I am currently creating a python script tool at work that works fine, and could be even more polished if I can get certain functionality working using the tool validation.&amp;nbsp; I am trying to get the tool to recognize what the the geometry type of the first input is, and based on that, set a parameter further down as a required parameter if its a "Polygon", or not required if it is a "Point".&amp;nbsp; Here is my code so far:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;import arcpy&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;class ToolValidator(object):&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; def __init__(self):&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.params = arcpy.GetParameterInfo()&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; def initializeParameters(self):&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [INDENT]return[/INDENT]&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; def updateParameters(self):&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if self.params[0].value:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; desc = arcpy.Describe(self.params[0].value)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; feature_type = desc.shapeType&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; if feature_type == "Polygon":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; self.params[7].enabled = True&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; self.params[7].parameterType = "Required"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.params[8].enabled = False&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; self.params[8].parameterType = "Optional"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; elif feature_type == "Point" or "Multipoint":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; self.params[7].enabled = False&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; self.params[7].parameterType = "Optional"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; self.params[8].enabled = True&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; self.params[8].parameterType = "Required"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [INDENT]return[/INDENT]&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; def updateMessages(self):&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [INDENT]return[/INDENT]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I have gotten it to recognize the geometry type of the first input once someone sets it. When its "Polygon", it will disable parameter[8], and when its "Point", it will disable parameter[7].&amp;nbsp; My problem is with with trying to toggle the parameterType property of a Parameter object, as suggested &lt;/SPAN&gt;&lt;A href="http://resources.arcgis.com/en/help/main/10.1/index.html#//018z00000063000000"&gt;http://resources.arcgis.com/en/help/main/10.1/index.html#//018z00000063000000&lt;/A&gt;&lt;SPAN&gt; here.&amp;nbsp; It says that the parameterType property is both read and write using tool validation.&amp;nbsp; For whatever reason, I cannot get it to work.&amp;nbsp; Ultimately, if the input geometry type is "Polygon", I would like parameter[7] set to parameterType "Required" and parameter[8] set to disabled.&amp;nbsp; If the input type is "Point", I would like parameter[8] set to parameterType "Required" and parameter[7] set to disabled. Any help is appreciated.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 04 Jan 2014 17:24:02 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/python-script-tool-validation-errors/m-p/294836#M22811</guid>
      <dc:creator>MattGray</dc:creator>
      <dc:date>2014-01-04T17:24:02Z</dc:date>
    </item>
    <item>
      <title>Re: Python Script Tool Validation errors</title>
      <link>https://community.esri.com/t5/python-questions/python-script-tool-validation-errors/m-p/294837#M22812</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi Matt,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The parameterType parameter is actually 'Read-only'.&amp;nbsp; Take a look at the following link:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;A href="http://resources.arcgis.com/en/help/main/10.1/index.html#//00150000000v000000"&gt;http://resources.arcgis.com/en/help/main/10.1/index.html#//00150000000v000000&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;What you can do is set both parameter 7 &amp;amp; 8 to 'Optional' under the 'Parameters' tab.&amp;nbsp; That way when one of the parameters is disabled, the tool will not error upon execution.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 06 Jan 2014 09:52:03 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/python-script-tool-validation-errors/m-p/294837#M22812</guid>
      <dc:creator>JakeSkinner</dc:creator>
      <dc:date>2014-01-06T09:52:03Z</dc:date>
    </item>
    <item>
      <title>Re: Python Script Tool Validation errors</title>
      <link>https://community.esri.com/t5/python-questions/python-script-tool-validation-errors/m-p/294838#M22813</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I noticed on another link in the ArcGIS help sections that it states parameterType is read-only.&amp;nbsp; On the one I provided, it states that it is both read and write.&amp;nbsp; However, I managed to figure out my own solution to my problem. The reason I didn't go with setting both of them to optional, was that when someone picks a "Polygon" type, the field I need to be enabled and required, still says "optional" by the parameter where it is entered. This is a tool that might eventually be given to clients, so this could lead to alot of confusion.&amp;nbsp; I found the solution in using the .clearmessages() method and placing the logic to them under the updateMessages(self) function . My code looks like this: &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;import arcpy&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;class ToolValidator(object):&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; def __init__(self):&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.params = arcpy.GetParameterInfo()&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; def initializeParameters(self):&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; def updateParameters(self):&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if self.params[0].value:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; desc = arcpy.Describe(self.params[0].value)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; feature_type = desc.shapeType&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; if feature_type == "Polygon":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; self.params[7].enabled = True&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; if self.params[7].value == "All":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; self.params[8].enabled = True&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.params[8].enabled = False&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; else: &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; self.params[7].enabled = False&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; self.params[8].enabled = True&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; def updateMessages(self):&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if self.params[0].value:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; desc = arcpy.Describe(self.params[0].value)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; feature_type = desc.shapeType&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; if feature_type == "Polygon":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; if self.params[7].value == "All":&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; pass&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; self.params[8].clearMessage()&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; else: &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; self.params[7].clearMessage()&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;This got the tool working the way I wanted it based on what the geometry type of the first inputs.&amp;nbsp; Also if parameterType is read-only, it would be nice if someone at ESRI would correct that for the link I provided in the first post.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 06 Jan 2014 14:50:42 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/python-script-tool-validation-errors/m-p/294838#M22813</guid>
      <dc:creator>MattGray</dc:creator>
      <dc:date>2014-01-06T14:50:42Z</dc:date>
    </item>
  </channel>
</rss>

