<?xml version="1.0" encoding="UTF-8" ?> 

	<!--
	 ***************************************************************
	 * Licensed to the Apache Software Foundation (ASF) under one
	 * or more contributor license agreements.  See the NOTICE file
	 * distributed with this work for additional information
	 * regarding copyright ownership.  The ASF licenses this file
	 * to you under the Apache License, Version 2.0 (the
	 * "License"); you may not use this file except in compliance
	 * with the License.  You may obtain a copy of the License at
         *
	 *   http://www.apache.org/licenses/LICENSE-2.0
	 * 
	 * Unless required by applicable law or agreed to in writing,
	 * software distributed under the License is distributed on an
	 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
	 * KIND, either express or implied.  See the License for the
	 * specific language governing permissions and limitations
	 * under the License.
	 ***************************************************************
   -->

<taeDescription xmlns="http://uima.apache.org/resourceSpecifier">
  <frameworkImplementation>org.apache.uima.cpp</frameworkImplementation>
  <primitive>true</primitive>
<annotatorImplementationName>libpythonnator</annotatorImplementationName>


<analysisEngineMetaData>
  <name>Python Annotator</name>
  <description>Run a python script</description>
  <version>1.0</version>
  <vendor>Apache</vendor>


<!--
  Configuration Parameter Definitions
-->
        <configurationParameters>
            <configurationParameter>
                <name>DebugLevel</name>
                <description>Sets the python annotator debug level</description>
                <type>Integer</type>
                <multiValued>false</multiValued>
                <mandatory>false</mandatory>
            </configurationParameter>
            <configurationParameter>
                <name>SourceFile</name>
                <description>Python module to be loaded from the PYTHONPATH</description>
                <type>String</type>
                <multiValued>false</multiValued>
                <mandatory>true</mandatory>
            </configurationParameter>
        </configurationParameters>

<!--
        Values for the configuration parameters
-->
        <configurationParameterSettings>
          <nameValuePair>
            <name>SourceFile</name>
            <value>
              <string>ae</string>
            </value>
          </nameValuePair>
          <nameValuePair>
            <name>DebugLevel</name>
            <value>
              <integer>101</integer>
            </value>
          </nameValuePair>
        </configurationParameterSettings>
 

<!--
        TypeSystem Definition
-->

<typeSystemDescription>
  <types>
    <typeDescription>
      <name>org.apache.uima.Span</name>
      <description></description>
      <supertypeName>uima.tcas.Annotation</supertypeName>
      <features>
      </features>
    </typeDescription>
  </types>
</typeSystemDescription>


<!--
Capabilities: Inputs, Outputs, and Preconditions
-->
<capabilities>
  <capability>
    <inputs/>
    <outputs>
      <type allAnnotatorFeatures="true">org.apache.uima.Span</type>
    </outputs> 
    <languagesSupported>
      <language>x-unspecified</language>
    </languagesSupported>
  </capability>
</capabilities>

</analysisEngineMetaData>
</taeDescription>
