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.