

def parse_items(items, data=None, headers=None, files=None, params=None):
    'Parse `KeyValue` `items` into `data`, `headers`, `files`,\n    and `params`.\n\n    '
    if (headers is None):
        headers = CaseInsensitiveDict()
    if (data is None):
        data = OrderedDict()
    if (files is None):
        files = OrderedDict()
    if (params is None):
        params = ParamDict()
    for item in items:
        value = item.value
        key = item.key
        if (item.sep == SEP_HEADERS):
            target = headers
        elif (item.sep == SEP_QUERY):
            target = params
        elif (item.sep == SEP_FILES):
            try:
                with open(os.path.expanduser(value), 'rb') as f:
                    value = (os.path.basename(value), BytesIO(f.read()))
            except IOError as e:
                raise ParseError(('Invalid argument "%s": %s' % (item.orig, e)))
            target = files
        elif (item.sep in [SEP_DATA, SEP_DATA_RAW_JSON]):
            if (item.sep == SEP_DATA_RAW_JSON):
                try:
                    value = json.loads(item.value)
                except ValueError:
                    raise ParseError(('"%s" is not valid JSON' % item.orig))
            target = data
        else:
            raise TypeError(item)
        target[key] = value
    return (headers, data, files, params)

dataset/ETHPy150Open RoseOu/flasky/venv/lib/python2.7/site-packages/httpie/input.py parse_items/original