Skip to content

ctypes: Improve error messages when converting to an incompatible type #107455

Description

@tomasr8

This code produces an error with a somewhat unhelpful message:

from ctypes import *

printf = CDLL('libc.so.6').printf
printf.argtypes = [c_char_p, c_char_p]
printf(b"Value %s\n", 10)  # call with an incompatible argument
Traceback (most recent call last):
  File "/home/tomas/dev/cpython/error.py", line 5, in <module>
    printf(b"Value: %s\n", 10)
ctypes.ArgumentError: argument 2: TypeError: wrong type

The source code itself suggests providing a better message:

/* XXX better message */
PyErr_SetString(PyExc_TypeError,
"wrong type");

I suggest making the message more helpful by including the expected argument type and the type that was actually provided e.g.

- TypeError: wrong type
+ TypeError: 'int' object cannot be interpreted as ctypes.c_char_p

The same improvement can be applied to c_wchar_p and c_void_p.

Linked PRs

Activity

  1. added a commit that references this issue on Aug 3, 2023
  2. kumaraditya303 commented on Aug 3, 2023

    @kumaraditya303
    Contributor

    Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions