def _get_human_time(seconds):
    """
    Takes number of seconds as input and returns a string of form '1h3m5s'.

    :param seconds: Number of seconds.
    :type seconds: ``int`` or ``long`` or ``float``

    :rtype: ``str``
    """

    if seconds is None:
        return None

    if seconds == 0:
        return "0s"

    if seconds < 1:
        return "%s\u03BCs" % seconds  # Microseconds

    if isinstance(seconds, float):
        seconds = long_int(round(seconds))  # Let's lose microseconds.

    timedelta = datetime.timedelta(seconds=seconds)
    offset_date = datetime.datetime(1, 1, 1) + timedelta

    years = offset_date.year - 1
    days = offset_date.day - 1
    hours = offset_date.hour
    mins = offset_date.minute
    secs = offset_date.second

    time_parts = [years, days, hours, mins, secs]

    first_non_zero_pos = next((i for i, x in enumerate(time_parts) if x), None)

    if first_non_zero_pos is None:
        return "0s"
    else:
        time_parts = time_parts[first_non_zero_pos:]

    if len(time_parts) == 1:
        return "%ss" % tuple(time_parts)
    elif len(time_parts) == 2:
        return "%sm%ss" % tuple(time_parts)
    elif len(time_parts) == 3:
        return "%sh%sm%ss" % tuple(time_parts)
    elif len(time_parts) == 4:
        return "%sd%sh%sm%ss" % tuple(time_parts)
    elif len(time_parts) == 5:
        return "%sy%sd%sh%sm%ss" % tuple(time_parts)

    Takes number of seconds as input and returns a string of form '1h3m5s'.

    :param seconds: Number of seconds.
    :type seconds: ``int`` or ``long`` or ``float``

    :rtype: ``str``
    
st2common/st2common/expressions/functions/time.py