{"record":{"id":"dbaa30a981985849","repo":"arduino/Arduino","slug":"invalid-keyword-arguments-to-print","errorCode":null,"errorMessage":"invalid keyword arguments to print()","messagePattern":"invalid keyword arguments to print\\(\\)","errorType":"exception","errorClass":"TypeError","httpStatus":null,"severity":"error","filePath":"arduino-core/src/processing/app/i18n/python/requests/packages/urllib3/packages/six.py","lineNumber":358,"sourceCode":"        def write(data):\n            if not isinstance(data, basestring):\n                data = str(data)\n            fp.write(data)\n        want_unicode = False\n        sep = kwargs.pop(\"sep\", None)\n        if sep is not None:\n            if isinstance(sep, unicode):\n                want_unicode = True\n            elif not isinstance(sep, str):\n                raise TypeError(\"sep must be None or a string\")\n        end = kwargs.pop(\"end\", None)\n        if end is not None:\n            if isinstance(end, unicode):\n                want_unicode = True\n            elif not isinstance(end, str):\n                raise TypeError(\"end must be None or a string\")\n        if kwargs:\n            raise TypeError(\"invalid keyword arguments to print()\")\n        if not want_unicode:\n            for arg in args:\n                if isinstance(arg, unicode):\n                    want_unicode = True\n                    break\n        if want_unicode:\n            newline = unicode(\"\\n\")\n            space = unicode(\" \")\n        else:\n            newline = \"\\n\"\n            space = \" \"\n        if sep is None:\n            sep = space\n        if end is None:\n            end = newline\n        for i, arg in enumerate(args):\n            if i:\n                write(sep)","sourceCodeStart":340,"sourceCodeEnd":376,"githubUrl":"https://github.com/arduino/Arduino/blob/a0df6e0e83b652c72bc78b0a1376c54d6ebc3bee/arduino-core/src/processing/app/i18n/python/requests/packages/urllib3/packages/six.py#L340-L376","documentation":"six.print_ only accepts the sep and end keyword arguments (matching Python 2's print statement emulation); after popping sep and end, any leftover entries in **kwargs trigger TypeError('invalid keyword arguments to print()'). The built-in print() additionally supports file and flush, which this emulation does not.","triggerScenarios":"six.print_('x', file=sys.stderr); six.print_('x', flush=True); passing **some_kwargs that contain keys other than sep/end.","commonSituations":"Mechanical Python 3 print() to six.print_() conversion without dropping file=/flush=; forwarding unknown kwargs dictionaries; environments (Python 2 era) where file redirection must use sys.stdout.write instead.","solutions":["Remove unsupported kwargs (file, flush) from the call.","For stderr/file output, use sys.stderr.write('...\\n') or print >> sys.stderr on Python 2.","Use six.print_('x') followed by sys.stdout.flush() instead of flush=True.","Filter kwargs: six.print_(*args, **{k: v for k, v in kw.items() if k in ('sep', 'end')})."],"exampleFix":"// before\nsix.print_('error!', file=sys.stderr)\n// after\nsys.stderr.write('error!\\n')","handlingStrategy":"validation","validationCode":"ALLOWED = ('sep', 'end')\nbad = [k for k in kwargs if k not in ALLOWED]\nif bad:\n    raise TypeError('unsupported kwargs for six.print_: %s' % bad)","typeGuard":null,"tryCatchPattern":"try:\n    six.print_(*args, **kwargs)\nexcept TypeError as e:\n    if 'invalid keyword arguments to print()' in str(e):\n        six.print_(*args, **{k: v for k, v in kwargs.items() if k in ('sep', 'end')})\n    else:\n        raise","preventionTips":["Never pass file= or flush= to six.print_; it only supports sep and end.","Redirect output via sys.stdout/sys.stderr instead of the file kwarg.","Whitelist kwargs before forwarding arbitrary dicts to print_."],"tags":["python","six","typeerror","print"],"backgroundTag":"invalid-argument","analyzedSha":"a0df6e0e83b652c72bc78b0a1376c54d6ebc3bee","analyzedAt":"2026-09-06T10:13:38.901Z","contentChangedAt":"2026-09-06T10:13:38.901Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}