Get_input_names_from_role 'NoneType' object has no attribute '__getitem__'

Options
gblack686
gblack686 Partner, Registered Posts: 62 Partner

In my plugin I'm trying to use a select parameter. I have a resource folder and select-columns.py file with a do() function as follows.

import dataiku
import logging
from dataiku.customrecipe import *

def do(payload, config, plugin_config, inputs):
  input_A_names = get_input_names_for_role('input_A_role')

  # Retrieve input dataset names and create list of dataset objects
  column_list = []

  for dataset in input_A_datasets:
    for x in dataset.cols:
      index = 0
      column_name = str(x['name'])
      column_list.append({'value':column_name,'label':column_name})
      # { "value": "scrambled", "label": "Scrambled"}
      choices = column_list

  return {"choices":choices}

However, in the settings (UI) of the plugin, I'm getting an error: 'NoneType' object has no attribute '__getitem__' . The input roll is as follows:

"inputRoles": [
{
"name": "input_A_role",
"label": "input_A_role",
"description": "input_A_role",
"arity": "UNARY",
"required": true,
"acceptsDataset": true
}

I'm not sure what I could be missing.

Answers

  • Clément_Stenac
    Clément_Stenac Dataiker, Dataiku DSS Core Designer, Registered Posts: 753 Dataiker
    Options

    Hi,

    It looks like you are missing the line:

    input_A_datasets = [dataiku.Dataset(name) for name in input_A_names]

    before your for loop

  • gblack686
    gblack686 Partner, Registered Posts: 62 Partner
    Options

    Hi Clement,

    I did accidentally remove that, however, the error is occurring on the line above.

    File "/mnt1/dataiku/dataiku-dss-6.0.3/python/dataiku/customrecipe/__init__.py",
    line 14, in get_input_names_for_role

    return [x[full and "fullName" or "smartName"] for x in flow_spec["in"] if x["role"] == role]
    TypeError: 'NoneType' object has no attribute '__getitem__'

    Is my folder tree arranged correctly? See attached.

Setup Info
    Tags
      Help me…