def _generateEncoderStringsV2(includedFields, options):
width = <NUM_LIT><EOL>encoderDictsList = []<EOL>if options['<STR_LIT>'] in ["<STR_LIT>",<EOL>"<STR_LIT>",<EOL>"<STR_LIT>",<EOL>"<STR_LIT>"]:<EOL><INDENT>classifierOnlyField = options['<STR_LIT>']['<STR_LIT>']<EOL><DEDENT>else:<EOL><INDENT>classifierOnlyField = None<EOL><DEDENT>for fieldInfo in includedFields:<EOL><INDENT>fieldName = fieldInfo['<STR_LIT>']<EOL>fieldType = fieldInfo['<STR_LIT>']<EOL>if fieldType in ['<STR_LIT:float>', '<STR_LIT:int>']:<EOL><INDENT>runDelta = fieldInfo.get("<STR_LIT>", False)<EOL>if runDelta or "<STR_LIT>" in fieldInfo:<EOL><INDENT>encoderDict = dict(type='<STR_LIT>', name=fieldName,<EOL>fieldname=fieldName, n=<NUM_LIT:100>, w=width, clipInput=True)<EOL>if runDelta:<EOL><INDENT>encoderDict["<STR_LIT>"] = True<EOL><DEDENT><DEDENT>else:<EOL><INDENT>encoderDict = dict(type='<STR_LIT>', name=fieldName,<EOL>fieldname=fieldName, n=<NUM_LIT:100>, w=width, clipInput=True)<EOL><DEDENT>if '<STR_LIT>' in fieldInfo:<EOL><INDENT>encoderDict['<STR_LIT>'] = fieldInfo['<STR_LIT>']<EOL><DEDENT>if '<STR_LIT>' in fieldInfo:<EOL><INDENT>encoderDict['<STR_LIT>'] = fieldInfo['<STR_LIT>']<EOL><DEDENT>if ('<STR_LIT>' in fieldInfo and '<STR_LIT>' in fieldInfo)and (encoderDict['<STR_LIT:type>'] == '<STR_LIT>'):<EOL><INDENT>encoderDict['<STR_LIT:type>'] = '<STR_LIT>'<EOL><DEDENT>if '<STR_LIT>' in fieldInfo:<EOL><INDENT>encoderDict['<STR_LIT:type>'] = fieldInfo['<STR_LIT>']<EOL><DEDENT>if '<STR_LIT>' in fieldInfo:<EOL><INDENT>encoderDict['<STR_LIT>'] = fieldInfo['<STR_LIT>']<EOL><DEDENT>encoderDictsList.append(encoderDict)<EOL><DEDENT>elif fieldType == '<STR_LIT:string>':<EOL><INDENT>encoderDict = dict(type='<STR_LIT>', name=fieldName,<EOL>fieldname=fieldName, n=<NUM_LIT:100>+width, w=width)<EOL>if '<STR_LIT>' in fieldInfo:<EOL><INDENT>encoderDict['<STR_LIT:type>'] = fieldInfo['<STR_LIT>']<EOL><DEDENT>encoderDictsList.append(encoderDict)<EOL><DEDENT>elif fieldType == '<STR_LIT>':<EOL><INDENT>encoderDict = dict(type='<STR_LIT>', name='<STR_LIT>' % (fieldName),<EOL>fieldname=fieldName, timeOfDay=(width, <NUM_LIT:1>))<EOL>if '<STR_LIT>' in fieldInfo:<EOL><INDENT>encoderDict['<STR_LIT:type>'] = fieldInfo['<STR_LIT>']<EOL><DEDENT>encoderDictsList.append(encoderDict)<EOL>encoderDict = dict(type='<STR_LIT>', name='<STR_LIT>' % (fieldName),<EOL>fieldname=fieldName, dayOfWeek=(width, <NUM_LIT:1>))<EOL>if '<STR_LIT>' in fieldInfo:<EOL><INDENT>encoderDict['<STR_LIT:type>'] = fieldInfo['<STR_LIT>']<EOL><DEDENT>encoderDictsList.append(encoderDict)<EOL>encoderDict = dict(type='<STR_LIT>', name='<STR_LIT>' % (fieldName),<EOL>fieldname=fieldName, weekend=(width))<EOL>if '<STR_LIT>' in fieldInfo:<EOL><INDENT>encoderDict['<STR_LIT:type>'] = fieldInfo['<STR_LIT>']<EOL><DEDENT>encoderDictsList.append(encoderDict)<EOL><DEDENT>else:<EOL><INDENT>raise RuntimeError("<STR_LIT>" % (fieldType))<EOL><DEDENT>if fieldName == classifierOnlyField:<EOL><INDENT>clEncoderDict = dict(encoderDict)<EOL>clEncoderDict['<STR_LIT>'] = True<EOL>clEncoderDict['<STR_LIT:name>'] = '<STR_LIT>'<EOL>encoderDictsList.append(clEncoderDict)<EOL>if options["<STR_LIT>"]["<STR_LIT>"] == "<STR_LIT>":<EOL><INDENT>encoderDictsList.remove(encoderDict)<EOL><DEDENT><DEDENT><DEDENT>if options.get('<STR_LIT>') is not None:<EOL><INDENT>tempList=[]<EOL>for encoderDict in encoderDictsList:<EOL><INDENT>if encoderDict['<STR_LIT:name>'] in options['<STR_LIT>']:<EOL><INDENT>tempList.append(encoderDict)<EOL><DEDENT><DEDENT>encoderDictsList = tempList<EOL><DEDENT>encoderSpecsList = []<EOL>permEncoderChoicesList = []<EOL>for encoderDict in encoderDictsList:<EOL><INDENT>if encoderDict['<STR_LIT:name>'].find('<STR_LIT:\\>') >= <NUM_LIT:0>:<EOL><INDENT>raise _ExpGeneratorException("<STR_LIT>")<EOL><DEDENT>for c in _ILLEGAL_FIELDNAME_CHARACTERS:<EOL><INDENT>if encoderDict['<STR_LIT:name>'].find(c) >= <NUM_LIT:0>:<EOL><INDENT>raise _ExpGeneratorException("<STR_LIT>"  %(c, encoderDict['<STR_LIT:name>']))<EOL><DEDENT><DEDENT>constructorStr = _generatePermEncoderStr(options, encoderDict)<EOL>encoderKey = _quoteAndEscape(encoderDict['<STR_LIT:name>'])<EOL>encoderSpecsList.append("<STR_LIT>" % (<EOL>encoderKey,<EOL><NUM_LIT:2>*_ONE_INDENT,<EOL>pprint.pformat(encoderDict, indent=<NUM_LIT:2>*_INDENT_STEP)))<EOL>permEncoderChoicesList.append("<STR_LIT>" % (encoderKey, constructorStr))<EOL><DEDENT>encoderSpecsStr = '<STR_LIT>'.join(encoderSpecsList)<EOL>permEncoderChoicesStr = '<STR_LIT:\n>'.join(permEncoderChoicesList)<EOL>permEncoderChoicesStr = _indentLines(permEncoderChoicesStr, <NUM_LIT:1>,<EOL>indentFirstLine=True)<EOL>return (encoderSpecsStr, permEncoderChoicesStr)<EOL>
Generate and return the following encoder related substitution variables:

    encoderSpecsStr:
      For the base description file, this string defines the default
      encoding dicts for each encoder. For example:

           __gym_encoder = {   'fieldname': 'gym',
            'n': 13,
            'name': 'gym',
            'type': 'SDRCategoryEncoder',
            'w': 7},
          __address_encoder = {   'fieldname': 'address',
            'n': 13,
            'name': 'address',
            'type': 'SDRCategoryEncoder',
            'w': 7}


    permEncoderChoicesStr:
      For the permutations file, this defines the possible
      encoder dicts for each encoder. For example:

          '__gym_encoder' : PermuteEncoder('gym', 'SDRCategoryEncoder', w=7,
              n=100),

          '__address_encoder' : PermuteEncoder('address', 'SDRCategoryEncoder',
                w=7, n=100),

          '__timestamp_dayOfWeek_encoder' : PermuteEncoder('timestamp',
              'DateEncoder.timeOfDay', w=7, radius=PermuteChoices([1, 8])),

          '__consumption_encoder': PermuteEncoder('consumption', 'AdaptiveScalarEncoder',
              w=7, n=PermuteInt(13, 500, 20), minval=0,
              maxval=PermuteInt(100, 300, 25)),



    Parameters:
    --------------------------------------------------
    includedFields:  item from the 'includedFields' section of the
                      description JSON object. This is a list of dicts, each
                      dict defining the field name, type, and optional min
                      and max values.

    retval:  (encoderSpecsStr permEncoderChoicesStr)