# Pre-PEP: use a header file that can undefine the macros defined by \<Python.h\>

**URL:** <https://discuss.python.org/t/pre-pep-use-a-header-file-that-can-undefine-the-macros-defined-by-python-h/104784>\
**Category:** Ideas\
**Created:** [November 9, 2025, 8:17am UTC](https://discuss.python.org/t/pre-pep-use-a-header-file-that-can-undefine-the-macros-defined-by-python-h/104784 "2025-11-09T08:17:16Z")\
**Posts on this page:** 1\
**Showing post:** 14

<div class="post-metadata">

**Author:** ![tstefan](https://avatars.discourse-cdn.com/v4/letter/t/f475e1/32.png) [@tstefan](https://discuss.python.org/u/tstefan)\
**Post date:** [November 10, 2025, 7:01pm UTC](https://discuss.python.org/t/pre-pep-use-a-header-file-that-can-undefine-the-macros-defined-by-python-h/104784/14 "2025-11-10T19:01:54Z")

</div>

Just for fun, I have applied `readelf` to my python3.15.a that I have built a few weeks ago.

I found many symbols from `mimalloc` that are prefixed with `_mi` or `mi`.

Additionally, I found the following symbols (mostly for global objects) that are not prefixed with `Py` or `_Py`:

```bufferediobase_spec
bufferedrandom_spec
bufferedreader_spec
bufferedrwpair_spec
bufferedwriter_spec
bytesiobuf_spec
bytesio_spec
constevaluator_spec
fileio_spec
generic_spec
iobase_spec
nldecoder_spec
paramspecargs_spec
paramspeckwargs_spec
paramspec_spec
pkgcontext
PY_TIMEOUT_MAX # I did not filter for PY with capital Y
rawiobase_spec
stringio_spec
textiobase_spec
textiowrapper_slots
textiowrapper_spec
typevar_spec
typevartuple_slots
typevartuple_spec

```

---

_[View the full topic](https://discuss.python.org/t/pre-pep-use-a-header-file-that-can-undefine-the-macros-defined-by-python-h/104784)._
