Python Client

Last modified: June 16, 2022

Promote uses Python's Built-in Modules or Standard Library.

We recommend that you build Python models using version 3.9 to ensure compatibility with Promote. If you upgrade from a previous installation of Promote (for example, 2020.4.0), you might need to update your models and their dependencies to work with this Python version. If you have questions about Python versions, contact Support.

Visit our GitHub repository for technical information about how to deploy models with the Python client.

There, you can also find specialized instructions for how to deploy models using the H2O Python module.

Structure Your Directory

To correctly transfer all model dependencies to Promote, you have to structure your directory in a particular way. Create a folder that contains these files: (optional) This file executes before Promote builds your model. Include low-level system packages here. (required) This file contains your primary model deployment script.
helpers/ (optional) Include helper functions in this directory.
objects/ (optional) Include data fields needed for model execution (for example, pickle files) here.
requirements.txt (required) This file contains a list of the packages you need to run your model. You must include the promote package here.

Set Authentication Credentials

You must include your Promote username, API key, and instance URL to deploy your model:

# Replace "USERNAME" with your Promote username. 
# Replace "APIKEY" with your API key. 
# Replace "PROMOTE_URL" with the URL of your instance.
p = promote.Promote(USERNAME, APIKEY, PROMOTE_URL)

Functions and Methods


Use the Promote.metadata method to assign related metadata to the model so the Promote platform can view it.

The Python client assigns metadata individually, with a maximum of six metadata values per model and with no more than 50 characters for each value.


promote.metadata["name"] = value


promote.metadata["voting"] =


Use the Promote.deploy method to capture a model you've created as a function and any related files in the model directory, then send that information to the Promote platform.


promote.deploy(name, model, testdata, confirm=False, dry_run=False, verbose=0)


name (required) Data type: string Name the model you want to deploy to Promote.  
model (required) Data type: string Name the promoteModel() function you want to capture.  
testdata (required) Data type: object Provide a data object that the model can use to make predictions.   
confirm (optional) Data type: boolean Specify whether you want a confirmation prompt when you deploy your model. Default: False
dry_run (optional) Data type: boolean Specify whether you want Promote to determine if it can pickle the model. (This option doesn't deploy the model.) Default: False
verbose (optional) Data type: integer Specify how much information you want to log during deployment. Enter a value from 0 to 4, with 4 being the most information logged. Default: 0


promote.deploy("SimpleMarkovChain", MarkovChain, TESTDATA, confirm=True, dry_run=False, verbose=4)


Use the Promote.predict method to send data to a deployed model and request a prediction.


promote.predict(model, data)


model (required) Data type: string Name the model you want to query.
data (required) Data type: dictionary or dataframe Provide the data that the model needs to make a prediction.


# Providing test data
TESTDATA = {'step': 344, 'TransMatrix': [[0.69, 0.24, 0, 0, 0, 0.06],
                                         [0, 0.49, 0.05, 0.46, 0, 0],
                                         [0.5, 0, 0, 0.5, 0, 0],
                                         [0.76, 0.24, 0, 0, 0, 0],
                                         [0, 0, 0, 0, 0, 0],
                                         [1, 0, 0, 0, 0, 0]], 'InitState': [[1, 0, 0, 0, 0, 0]]}
# After the model is online, sending data and receiving predictions
promote.predict("SimpleMarkovChain", TESTDATA)


Use the @promote.validate_json decorator to validate data passed into your model. If the data fails the checks for validation, it doesn't pass to your model.

This function requires the schema package to validate JSON data.


@promote.validate_json(Schema({'name': And(DATATYPE)}))


import promote
from schema import Schema #
@promote.validate_json(Schema({'step': int, 'TransMatrix': [[float, int]], 'InitState': [[float, int]]}))
Was This Page Helpful?

Running into problems or issues with your Alteryx product? Visit the Alteryx Community or contact support. Can't submit this form? Email us.