{"record":{"id":"d3bb626c6b90fac5","repo":"invoke-ai/InvokeAI","slug":"unsupported-integer-generator-type-generator-typ","errorCode":null,"errorMessage":"Unsupported integer generator type '{generator_type}'","messagePattern":"Unsupported integer generator type '(.+?)'","errorType":"exception","errorClass":"UnsupportedWorkflowNodeError","httpStatus":null,"severity":"error","filePath":"invokeai/app/services/session_processor/workflow_call_batch.py","lineNumber":292,"sourceCode":"            return [start]\n        return [start + i * step for i in range(count)]\n    if generator_type == \"integer_generator_linear_distribution\":\n        start = int(value.get(\"start\", 0))\n        end = int(value.get(\"end\", 10))\n        count = int(value.get(\"count\", 10))\n        if count == 1:\n            return [start]\n        return [start + round((end - start) * (i / (count - 1))) for i in range(count)]\n    if generator_type == \"integer_generator_random_distribution_uniform\":\n        minimum = int(value.get(\"min\", 0))\n        maximum = int(value.get(\"max\", 10))\n        count = int(value.get(\"count\", 10))\n        rng = random.Random(value.get(\"seed\"))\n        return [int(rng.random() * (maximum - minimum + 1)) + minimum for _ in range(count)]\n    if generator_type == \"integer_generator_parse_string\":\n        split_values = _parse_split_values(str(value.get(\"input\", \"\")), str(value.get(\"splitOn\", \",\")))\n        return [int(v.strip()) for v in split_values if v.strip()]\n    raise UnsupportedWorkflowNodeError(f\"Unsupported integer generator type '{generator_type}'\")\n\n\ndef _resolve_string_generator(value: Mapping[str, Any]) -> list[str]:\n    generator_type = value.get(\"type\")\n    if generator_type == \"string_generator_parse_string\":\n        return [v for v in _parse_split_values(str(value.get(\"input\", \"\")), str(value.get(\"splitOn\", \",\"))) if v]\n    if generator_type == \"string_generator_dynamic_prompts_combinatorial\":\n        generator = CombinatorialPromptGenerator()\n        return list(generator.generate(str(value.get(\"input\", \"\")), max_prompts=int(value.get(\"maxPrompts\", 10))))\n    if generator_type == \"string_generator_dynamic_prompts_random\":\n        seed = value.get(\"seed\")\n        if seed is None:\n            seed = random.randint(0, 2**31 - 1)\n        generator = RandomPromptGenerator(seed=int(seed))\n        return list(generator.generate(str(value.get(\"input\", \"\")), num_images=int(value.get(\"count\", 10))))\n    raise UnsupportedWorkflowNodeError(f\"Unsupported string generator type '{generator_type}'\")\n\n","sourceCodeStart":274,"sourceCodeEnd":310,"githubUrl":"https://github.com/invoke-ai/InvokeAI/blob/0b6a024f2ff6a86bfb953dcdb9cc504ef7397a06/invokeai/app/services/session_processor/workflow_call_batch.py#L274-L310","documentation":"An integer_generator node in a called batch child workflow declares a generator 'type' not implemented by _resolve_integer_generator. Only arithmetic_sequence, linear_distribution, random_distribution_uniform, and parse_string are supported during call_saved_workflow batch expansion.","triggerScenarios":"Calling a saved workflow with an integer_generator whose inputs.generator.value.type is missing, misspelled (e.g. 'integer_generator_random'), or from a newer UI version with additional generator kinds.","commonSituations":"Version skew between exported workflow JSON and the running server; hand-edited type strings; using generator types from the queue batch editor that the child-workflow expansion path does not support.","solutions":["Use one of the supported types: integer_generator_arithmetic_sequence, integer_generator_linear_distribution, integer_generator_random_distribution_uniform, or integer_generator_parse_string","Correct the 'type' value spelling in the workflow JSON","Replace the generator with a direct list of integers on the integer_batch node","Upgrade InvokeAI to a version that supports the generator type"],"exampleFix":"// before\n{ \"type\": \"integer_generator_random\", \"count\": 3 }\n// after\n{ \"type\": \"integer_generator_random_distribution_uniform\", \"min\": 0, \"max\": 10, \"count\": 3 }","handlingStrategy":"validation","validationCode":"SUPPORTED_INT_TYPES = {\"integer_generator_arithmetic_sequence\", \"integer_generator_linear_distribution\", \"integer_generator_random_distribution_uniform\", \"integer_generator_parse_string\"}\nfor node in workflow.get(\"nodes\", []):\n    d = node.get(\"data\", {}) if isinstance(node, dict) else {}\n    if d.get(\"type\") == \"integer_generator\":\n        t = d.get(\"inputs\", {}).get(\"generator\", {}).get(\"value\", {}).get(\"type\")\n        if t not in SUPPORTED_INT_TYPES:\n            raise ValueError(f\"unsupported integer generator type: {t!r}\")","typeGuard":"def is_supported_integer_generator(value: object) -> bool:\n    return (isinstance(value, dict) and value.get(\"type\") in {\n        \"integer_generator_arithmetic_sequence\", \"integer_generator_linear_distribution\",\n        \"integer_generator_random_distribution_uniform\", \"integer_generator_parse_string\"})","tryCatchPattern":"try:\n    sessions = build_batch_child_workflow_sessions(...)\nexcept UnsupportedWorkflowNodeError as e:\n    m = re.search(r\"Unsupported integer generator type '(.+?)'\", str(e))\n    if m:\n        workflow = swap_to_supported_int_generator(workflow, m.group(1))\n        sessions = build_batch_child_workflow_sessions(...)\n    else:\n        raise","preventionTips":["Use only the four supported integer generator types in called workflows","Fix typo'd type strings at export/lint time","Pre-compute values and use integer_batch lists for unsupported generator kinds","Keep server and workflow-export versions aligned"],"tags":["workflow","generator","unsupported-type","invokeai"],"backgroundTag":"unsupported-enum-value","analyzedSha":"0b6a024f2ff6a86bfb953dcdb9cc504ef7397a06","analyzedAt":"2026-08-29T04:46:49.967Z","schemaVersion":2},"datasetVersion":"2026-08-29T07:17:48.351Z"}