Summary
Every tool parameter has an associated Parameter object with properties and methods that are useful in tool validation.
Discussion
Although many Parameter object properties are read/write, most of these properties can only be set or modified when you initially create or modify the object. Several properties, including name, displayName, datatype, direction, and parameterType, establish the characteristics of a tool and cannot be modified during validation methods (such as updateMessages and updateParameters).
Syntax
Parameter ({name}, {displayName}, {direction}, {datatype}, {parameterType}, {enabled}, {category}, {symbology}, {multiValue})
Parameter | Explanation | Data Type |
name | The parameter name. (The default value is None) | String |
displayName | The parameter label as shown on the tool's dialog box. (The default value is None) | String |
direction | The Input/Output direction of the parameter. (The default value is None) | String |
datatype | The data type of the parameter. For a list of parameter data types, see Geoprocessing data types. (The default value is None) | String |
parameterType | The parameterType property can be Required, Optional, or Derived. (The default value is None) | String |
enabled | False if the parameter is unavailable. (The default value is None) | Boolean |
category | The category of the parameter. (The default value is None) | String |
symbology | The path to a layer file (.lyrx or .lyr) used for drawing the output. (The default value is None) | String |
multiValue | True if the parameter is a multivalue parameter. (The default value is None) | Boolean |
Properties
Property | Explanation | Data Type |
altered (Read Only) | True if the user has modified the value. | Boolean |
category (Read and Write) | The category of the parameter. | String |
columns (Read and Write) | The column data types and names of a value table parameter are set using a list of lists.
| String |
datatype (Read and Write) | The data type of the parameter. For a list of parameter data types, see Geoprocessing data types. | String |
defaultEnvironmentName (Read and Write) | The geoprocessing environment setting used to set the parameter's default value. | String |
direction (Read and Write) | The Input/Output direction of the parameter. | String |
displayName (Read and Write) | The parameter label as shown on the tool's dialog box. | String |
displayOrder (Read and Write) | The order in which a parameter is displayed on the tool's dialog box. This may be different from the order the parameters are accessed from Python. | Integer |
enabled (Read and Write) | False if the parameter is unavailable. | Boolean |
filter (Read Only) | The filter to apply to values in the parameter. | Filter |
filters (Read and Write) | Similar to filter but used to support value table parameters.
| Filter |
hasBeenValidated (Read Only) | True if the internal validation routine has checked the parameter. | Boolean |
message (Read Only) | The message to be displayed to the user. | String |
multiValue (Read and Write) | True if the parameter is a multivalue parameter. | Boolean |
name (Read and Write) | The parameter name. | String |
parameterDependencies (Read and Write) | A list of indexes of each dependent parameter. In a script tool, parameterDependencies is set with a list of parameter indexes; in a Python toolbox tool, parameterDependencies is set with a list of parameter names. | Integer |
parameterType (Read and Write) | The parameterType property can be Required, Optional, or Derived. In validation, the parameterType value cannot be dynamically modified. However, it may be necessary to have a parameter behave as required or optional depending on other parameter settings. If this is the case, set the parameter as optional. Then, in the validation updateMessages method, use the Parameter setIDMessage method with message ID 735. Using message ID 735 causes an optional parameter to behave as a required parameter.
| String |
schema (Read Only) | The schema of the output dataset. | Schema |
symbology (Read and Write) | The path to a layer file (.lyrx or .lyr) used for drawing the output. | String |
value (Read and Write) | The value of the parameter. | Object |
valueAsText (Read Only) | The value of the parameter as a string. | String |
values (Read and Write) | The values of a Value Table parameter, which is set using a list of lists. | Variant |
Method Overview
Method | Explanation |
clearMessage () | Clears out any message text and sets the status to informative (no error or warning). |
hasError () | Returns True if the parameter contains an error. To evaluate whether a parameter has an error, hasError should be called within the tool validation's updateMessages method. |
hasWarning () | Returns True if the parameter contains a warning. |
isInputValueDerived () | Returns True if the tool is being validated inside a Model and the input value is the output of another tool in the model. |
setErrorMessage (message) | Sets a parameter as having an error with the supplied message. Tools do not execute if any of the parameters have an error. |
setIDMessage (message_type, message_ID, {add_argument1}, {add_argument2}) | Sets a parameter as having a system message. |
setWarningMessage (message) | Sets a parameter as having an error with the supplied message. Unlike errors, tools will execute with warning messages. |
Methods
clearMessage ()
hasError ()
Data Type | Explanation |
Boolean | True if the parameter contains an error. |
hasWarning ()
Data Type | Explanation |
Boolean | True if the parameter contains a warning. |
isInputValueDerived ()
Data Type | Explanation |
Boolean | True if the tool is being validated inside a Model and the input value is the output of another tool in the model. |
setErrorMessage (message)
Parameter | Explanation | Data Type |
message | The string to be added as an error message to the geoprocessing tool messages. | String |
setIDMessage (message_type, message_ID, {add_argument1}, {add_argument2})
Parameter | Explanation | Data Type |
message_type | Defines whether the message will be an error or a warning.
| String |
message_ID | The message ID allows you to reference existing system messages. | Integer |
add_argument1 | Depending on which message ID is used, an argument may be necessary to complete the message. Common examples include dataset or field names. The data type is variable depending on the message. | Object |
add_argument2 | Depending on which message ID is used, an argument may be necessary to complete the message. Common examples include dataset or field names. The data type is variable depending on the message. | Object |
setWarningMessage (message)
Parameter | Explanation | Data Type |
message | The string to be added as a warning message to the geoprocessing tool messages. | String |
Code sample
Enabling or disabling a parameter in a ToolValidator class.
def updateParameters(self):
# If the option to use a weights file ("Get Spatial Weights From File")
# is selected, enable the parameter for specifying the file;
# otherwise, disable it
if self.params[3].value == "Get Spatial Weights From File":
self.params[8].enabled = True
else:
self.params[8].enabled = False
return
Setting a default value for a parameter in a ToolValidator class.
def updateParameters(self):
# Set the default distance threshold to 1/100 of the larger of
# the width or height of the extent of the input features. Do
# not set if there is no input dataset yet, or the user has set
# a specific distance (Altered is true).
if self.params[0].value:
if not self.params[6].altered:
extent = arcpy.Describe(self.params[0].value)
width = extent.XMax - extent.XMin
height = extent.YMax - extent.YMin
if width < height:
self.params[6].value = width / 100
else:
self.params[6].value = height / 100
return
Setting a custom error message for a parameter in a ToolValidator class.
def updateMessages(self):
self.params[6].clearMessage()
# Check to see if the threshold distance contains a value of
# zero and the user has specified a fixed distance band.
if self.params[6].value <= 0:
if self.params[3].value == "Fixed Distance Band":
self.params[6].setErrorMessage(
"Zero or a negative distance is invalid when "
"using a fixed distance band. Please use a "
"positive value greater than zero.")
elif self.params[6].value < 0:
self.params[6].setErrorMessage(
"A positive distance value is required when "
"using a fixed distance band. Please specify "
"a distance.")
return