In python macros, is there a difference between uno and unohelper modules?

Is there a difference between uno and unohelper modules? They seem to have the same functions.

When to use one and when to use the other?
Where can I find the source code for these modules?

example:

from __future__ import unicode_literals

def test_uno(event=None):
    import uno
    doc = XSCRIPTCONTEXT.getDocument()
    url = doc.URL
    p = uno.fileUrlToSystemPath(url)
    print(p)

def test_unohelper(event=None):
    import unohelper
    doc = XSCRIPTCONTEXT.getDocument()
    url = doc.URL
    p = unohelper.fileUrlToSystemPath(url)
    print(p)

@mrkalvin

please retag your question to include macro to improve findability.

Thanks

print(uno.__file__)
print(unohelper.__file__)

uno has a lot of thin wrapper-functions to their binaries in pyuno.so resp. pyuno.exe