<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def suggest(q='', results=15, buckets=None, limit=False, max_familiarity=None, min_familiarity=None, max_hotttnesss=None, min_hotttnesss=None):
 """Suggest artists based upon partial names. Args: Kwargs: q (str):
 The text to suggest artists from results (int):
 An integer number of results to return buckets (list):
 A list of strings specifying which buckets to retrieve limit (bool):
 A boolean indicating whether or not to limit the results to one of the id spaces specified in buckets max_familiarity (float):
 A float specifying the max familiarity of artists to search for min_familiarity (float):
 A float specifying the min familiarity of artists to search for max_hotttnesss (float):
 A float specifying the max hotttnesss of artists to search for min_hotttnesss (float):
 A float specifying the max hotttnesss of artists to search for Returns: A list of Artist objects Example: """


    buckets = buckets or []
    kwargs = {}

    kwargs['q'] = q

    if max_familiarity is not None:
        kwargs['max_familiarity'] = max_familiarity
    if min_familiarity is not None:
        kwargs['min_familiarity'] = min_familiarity
    if max_hotttnesss is not None:
        kwargs['max_hotttnesss'] = max_hotttnesss
    if min_hotttnesss is not None:
        kwargs['min_hotttnesss'] = min_hotttnesss
    if results:
        kwargs['results'] = results
    if buckets:
        kwargs['bucket'] = buckets
    if limit:
        kwargs['limit'] = 'true'

    result = util.callm("%s/%s" % ('artist', 'suggest'), kwargs)

    return [Artist(**util.fix(a_dict)) for a_dict in result['response']['artists']]