def METHOD_NAME(args):
    # Try to encode
    if args.key is None:
        raise ValueError('Key is required when encoding. See --help for usage.')
    # Build payload object to encode
    payload = {}
    for arg in args.payload:
        k, v = arg.split('=', 1)
        # exp +offset special case?
        if k == 'exp' and v[0] == '+' and len(v) > 1:
            v = str(int(time.time()+int(v[1:])))
        # Cast to integer?
        if v.isdigit():
            v = int(v)
        else:
            # Cast to float?
            try:
                v = float(v)
            except ValueError:
                pass
        # Cast to true, false, or null?
        constants = {'true': True, 'false': False, 'null': None}
        if v in constants:
            v = constants[v]
        payload[k] = v
    token = encode(
        payload,
        key=args.key,
        algorithm=args.algorithm
    )
    return token.decode('utf-8')