# C stable api PY\_SSIZE\_T\_CLEAN error

**URL:** <https://discuss.python.org/t/c-stable-api-py-ssize-t-clean-error/80159>\
**Category:** Python Help\
**Created:** [February 10, 2025, 10:07am UTC](https://discuss.python.org/t/c-stable-api-py-ssize-t-clean-error/80159 "2025-02-10T10:07:47Z")\
**Posts on this page:** 1\
**Showing post:** 4

<div class="post-metadata">

**Author:** ![da-woods](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/da-woods/32/7507_2.png) [@da-woods](https://discuss.python.org/u/da-woods)\
**Post date:** [February 10, 2025, 10:53pm UTC](https://discuss.python.org/t/c-stable-api-py-ssize-t-clean-error/80159/4 "2025-02-10T22:53:59Z")

</div>

In the older versions, it looks like `PY_SSIZE_T_CLEAN` defined `PyArg_ParseTuple` as `_PyArg_ParseTuple_SizeT`.

`_PyArg_ParseTuple_SizeT` no longer appears in the headers, but is part of the stable ABI so continues to be part of the Python library.

Therefore what you want to do is use `_PyArg_ParseTuple_SizeT` instead (on all Python versions). Just copy the declaration of it:

```python
PyAPI_FUNC(int)
_PyArg_ParseTuple_SizeT(PyObject *args, const char *format, ...);

```

to assure the C compiler that _it really does exist, somewhere_, and use that instead of `PyArg_ParseTuple`.

---

_[View the full topic](https://discuss.python.org/t/c-stable-api-py-ssize-t-clean-error/80159)._
