When there are two modules in the standard lib with the same name, what often has happened is that the original module was written in Python. That's because it is a lot easier to prototype and get it working quickly than in lower-level languages.
Later, once a reasonable design has been found and bugs fixed etc, performance may become a focus. It's a good time to write the slow parts in Cython or the C API and speed them up through compilation to machine code. Typically the additions are placed in a _module.so
or DLL and imported from within the original module.py
.
This avoids the work of prototyping/writing the entire thing in the C API, which is quite tedious.