{"record":{"id":"52420c0b00dab510","repo":"pathwaycom/pathway","slug":"unsupported-argument-for-data-format-r-format","errorCode":null,"errorMessage":"Unsupported argument for {data_format!r} format: 'value'","messagePattern":"Unsupported argument for (.+?) format: 'value'","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"python/pathway/io/_utils.py","lineNumber":418,"sourceCode":"            format_type=data_format_type,\n            column_paths=json_field_paths,\n            schema_registry_settings=maybe_schema_registry_settings(\n                schema_registry_settings\n            ),\n        )\n    else:\n        raise ValueError(f\"data format `{format}` not supported\")\n\n\ndef check_raw_and_plaintext_only_kwargs_for_message_queues(f):\n    default_format = inspect.signature(f).parameters[\"format\"].default\n\n    @functools.wraps(f)\n    def wrapper(*args, **kwargs):\n        data_format = kwargs.get(\"format\", default_format)\n        if data_format not in (\"raw\", \"plaintext\"):\n            if \"value\" in kwargs and kwargs[\"value\"] is not None:\n                raise ValueError(\n                    f\"Unsupported argument for {data_format!r} format: 'value'\"\n                )\n\n        return f(*args, **kwargs)\n\n    return wrapper\n\n\n@dataclass(frozen=True)\nclass MessageQueueOutputFormat:\n    _: KW_ONLY\n    table: Table\n    key_field_index: int | None\n    header_fields: dict[str, int]\n    data_format: api.DataFormat\n    topic_name_index: int | None\n\n    @classmethod","sourceCodeStart":400,"sourceCodeEnd":436,"githubUrl":"https://github.com/pathwaycom/pathway/blob/fa2f74a4649b7c5908690cf60137263d8d80de5f/python/pathway/io/_utils.py#L400-L436","documentation":"Raised by the @check_raw_and_plaintext_only_kwargs_for_message_queues decorator that wraps message-queue read connectors. When format is anything other than 'raw' or 'plaintext', the connector derives columns from parsed payloads, so passing the 'value' argument (which designates the payload column for raw/plaintext mode) is meaningless and almost certainly a configuration mistake; the decorator fails fast at call time.","triggerScenarios":"Calling pw.io.kafka.read(..., format='json', value=pw.this.payload); switching a connector config from format='raw' to format='json' (or 'dsv') while leaving the old value= argument in place.","commonSituations":"Iterating on a connector config: start with raw payloads plus a value column, then switch to a parsed format and forget to delete value=; copy-pasting arguments between raw and structured examples.","solutions":["Remove the 'value' argument when using a parsed format such as 'json' or 'dsv'.","If you really wanted raw payload access, switch format to 'raw' or 'plaintext' and keep value=.","If you need one column extracted from parsed JSON, use json_field_paths instead of value=."],"exampleFix":"# before\nt = pw.io.kafka.read(..., format='json', value=pw.this.payload)\n\n# after\nt = pw.io.kafka.read(..., format='json')","handlingStrategy":"validation","validationCode":"kwargs = dict(...)\nif kwargs.get('format', 'raw') not in ('raw', 'plaintext'):\n    kwargs.pop('value', None)\nt = pw.io.kafka.read(**kwargs)","typeGuard":null,"tryCatchPattern":"try:\n    t = pw.io.kafka.read(..., format=fmt, value=val)\nexcept ValueError as e:\n    if \"Unsupported argument\" in str(e) and \"'value'\" in str(e):\n        val = None  # retry without value for parsed formats\n        t = pw.io.kafka.read(..., format=fmt)\n    else:\n        raise","preventionTips":["Build connector kwargs per format family; never share one dict between raw and structured configs.","When switching format from 'raw' to 'json', delete value= and key=-payload related args."],"tags":["pathway","kafka","message-queue","format","validation"],"backgroundTag":null,"analyzedSha":"fa2f74a4649b7c5908690cf60137263d8d80de5f","analyzedAt":"2026-08-15T01:48:17.006Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}