def tracker(obj):
import types as typ<EOL>global oids, uuids<EOL>import six<EOL>from inspect import isclass<EOL>untracked = (six.string_types, six.integer_types, float,<EOL>complex, six.text_type)<EOL>semitrack = (list, dict, set, tuple)<EOL>if six.PY3: <EOL><INDENT>semitrack = semitrack + (range, filter, map)<EOL><DEDENT>if (isinstance(obj, semitrack) and<EOL>all([isinstance(t, untracked) for t in obj])):<EOL><INDENT>if len(obj) > <NUM_LIT:0>:<EOL><INDENT>semiform = "<STR_LIT>"<EOL>return semiform.format(type(obj), len(obj), min(obj), max(obj))<EOL><DEDENT>else:<EOL><INDENT>semiform = "<STR_LIT>"<EOL>return semiform.format(type(obj), len(obj))<EOL><DEDENT><DEDENT>elif isinstance(obj, semitrack):<EOL><INDENT>result = []<EOL>for o in obj[<NUM_LIT:0>:min((len(obj), <NUM_LIT:5>))]:<EOL><INDENT>track = tracker(o)<EOL>if isinstance(track, Instance):<EOL><INDENT>result.append(track.uuid)<EOL><DEDENT>else:<EOL><INDENT>result.append(track)<EOL><DEDENT><DEDENT>if len(obj) > <NUM_LIT:5>:<EOL><INDENT>result.append("<STR_LIT>".format(len(obj)))<EOL><DEDENT>return tuple(result)<EOL><DEDENT>elif isinstance(obj, slice):<EOL><INDENT>return "<STR_LIT>".format(obj.start, obj.stop, obj.step)<EOL><DEDENT>elif type(obj) is type:<EOL><INDENT>return obj.__name__<EOL><DEDENT>elif type(obj) is typ.LambdaType:<EOL><INDENT>if hasattr(obj, "<STR_LIT>"):<EOL><INDENT>return obj.__fqdn__<EOL><DEDENT>else:<EOL><INDENT>if six.PY2:<EOL><INDENT>_code = obj.func_code<EOL><DEDENT>else: <EOL><INDENT>_code = obj.__code__<EOL><DEDENT>return "<STR_LIT>".format('<STR_LIT:U+002CU+0020>'.join(_code.co_varnames))<EOL><DEDENT><DEDENT>elif type(obj) in [typ.FunctionType, typ.MethodType]: <EOL><INDENT>return obj.__name__<EOL><DEDENT>elif not isinstance(obj, untracked):<EOL><INDENT>oid = id(obj)<EOL>if oid in oids:<EOL><INDENT>result = oids[oid]<EOL><DEDENT>else:<EOL><INDENT>result = Instance(oid, obj)<EOL>oids[oid] = result<EOL>uuids[result.uuid] = result<EOL><DEDENT>return result<EOL><DEDENT>else:<EOL><INDENT>return None<EOL><DEDENT>
Returns the :class:`Instance` of the specified object if it is one that
    we track by default.

    Args:
        obj (object): any python object passed as an argument to a method.

    Returns:
        Instance: if the object is trackable, the Instance instance of
          that object; else None.