2022.1.1.30569 Patch Release Update

The 2022.1.1.30569 Patch/Minor release has been removed from the Download Portal due to a missing signature in some of the included files. This causes the files to not be recognized as valid files provided by Alteryx and might trigger warning messages by some 3rd party programs. If you installed the 2022.1.1.30569 release, we recommend that you reinstall the patch.

Dev Space

Customize and extend the power of Alteryx with SDKs, APIs, custom tools, and more.

Problem with Python SDK tool which I made:- Tool Installer Error: Unable to find config

8 - Asteroid



I made a simple Python SDK tool using the "Single Input Single Output Python SDK Example Tool" as template. I wish to read 2 string fields from Text Input Tool in my custom tool. I combine both the fields together and encode them using Python base64 encoder. (PS: Yes, we can do this using Alteryx Designer itself, but this just a trial tool which I made to get an idea of Alteryx's Python SDK capabilities).


I have the following file hierarchy:

Root folder name: KeySecretEncoder

Root folder contains: KeySecretEncoder (Folder) and Config.xml (general config file)

Further inside KeySecretEncoder (Folder): KeySecretEncoder_Engine.py (SDK Python code), KeySecretEncoder_Gui.html (Config GUI interface - 2 drop downs to select the fields from Text Input Tool), KeySecretEncoder_Icon.png (Tool icon image file), KeySecretEncoderConfig.xml (config file)


I have attached the .yxi (zip file containing the above mentioned files).


Upon dragging this .yxi file onto the Designer Canvas, I get "Tool Installer Error: Unable to find configuration file." I do have the configuration file and it is correct to the best of my knowledge. Can someone help me in this regard?


My Python task replica in Jupyter:


import pandas as pd
import hashlib
import hmac
import base64

# sample input to be obtained from the Text Input Tool
keysec = pd.DataFrame(data = {
    'Key':['sdfgfcxc', 'czsdxghff', 'zxnvbmoui'], 
    'Secret':['?45$dfd*632sd!', '&%$@#df56?89', '$@!cxxd556%?']})

# function to convert string to bytes - utf-8
def conv2bytes(val):
    return bytes(val, 'utf-8')

keysec = keysec.applymap(conv2bytes)

# function to combine the key and secret and encode them in base64 encoding format
def comb64enc(key, secret):
    return base64.b64encode(hmac.new(key, secret, hashlib.sha256).digest())

keysec['Signature'] = keysec.apply(lambda row: comb64enc(row.Key, row.Secret), axis=1)


11 - Bolide

Get rid of the root folder. The YXI's root should contain the Config.xml file and the folder containing your plugin. See the attached ZIP file for the proper structure, which installs correctly on my machine.

8 - Asteroid

Thank you.