Example Tools
-------------

There are a suite of example tools that ship with the ``ayx_plugin_sdk`` package. These can be used
as templates for new tools.

Example Tool Descriptions
~~~~~~~~~~~~~~~~~~~~~~~~~~~

These are the example tools and their descriptions:

1. **AyxSdkInput**: This is an example *input* tool that generates some simple data via the pandas library
   and outputs it on the output anchor. The tool has no input anchors, and 1 output anchor.

2. **AyxSdkOutput**: This is an example *output* tool. It has 1 input anchor and no output anchors.
   The tool does not do any data processing with the input data.

3. **AyxSdkPassthrough**: This is an example *passthrough* tool. It has 1 input anchor and 1 output anchor.
   This tool doesn't do any processing, it just pushes the same data that was received on the input anchor to the output anchor.

4. **AyxSdkOptionalInputAnchor**: This is a tool that has 1 optional input anchor, and 1 output anchor. The
   input anchor is optional because even when no connections are attached to it, the tool still runs.

5. **AyxSdkMultipleInputAnchors**: This is a tool that has 2 input anchors and 1 output anchor. It enforces
   that the metadata on each anchor must be the same, and it merges the data from each input anchor on the
   output anchor, similar to a Union tool.

6. **AyxSdkMultipleInputMultiOutputAnchor**: This tool has 2 input anchors and 2 output anchors. It enforces
   that the metadata on each input anchor must be the same, and it pushes the data that it receives on its input
   anchors to both of its output anchors.

7. **AyxSdkMultiConnectionsMultiOutputAnchor**: This tool has a single input anchor that can receive multiple
   connections. It maps each of these input connections to an output anchor according to the order in which
   the input connections were connected.

8. **AyxSdkDoubler**: This tool multiplies numeric data in the input "Value" field by 2.

9. **AyxSdkComplexConfig**: This tool is an example tool that demonstrates good practices for
   use of the `HTML GUI SDK <https://help.alteryx.com/current/developer-help/html-gui-sdk>`_, as well as how to handle complicated configurations in the Python code.
