_encode_files() — requests Function Reference
Architecture documentation for the _encode_files() function in models.py from the requests codebase.
Entity Profile
Dependency Diagram
graph TD 8078fe73_7320_a15b_369b_220683f56710["_encode_files()"] f47304c1_b2c6_e66a_f59e_e2534a06b3c8["RequestEncodingMixin"] 8078fe73_7320_a15b_369b_220683f56710 -->|defined in| f47304c1_b2c6_e66a_f59e_e2534a06b3c8 fdb744d2_4cc0_a0f9_c288_a0abeac5e58e["prepare_body()"] fdb744d2_4cc0_a0f9_c288_a0abeac5e58e -->|calls| 8078fe73_7320_a15b_369b_220683f56710 1d5603b3_e7c9_dfae_a29a_d8c05ae35261["to_key_val_list()"] 8078fe73_7320_a15b_369b_220683f56710 -->|calls| 1d5603b3_e7c9_dfae_a29a_d8c05ae35261 404297ac_4651_dcc5_7fd4_3b479d69ac50["guess_filename()"] 8078fe73_7320_a15b_369b_220683f56710 -->|calls| 404297ac_4651_dcc5_7fd4_3b479d69ac50 style 8078fe73_7320_a15b_369b_220683f56710 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
src/requests/models.py lines 139–205
def _encode_files(files, data):
"""Build the body for a multipart/form-data request.
Will successfully encode files when passed as a dict or a list of
tuples. Order is retained if data is a list of tuples but arbitrary
if parameters are supplied as a dict.
The tuples may be 2-tuples (filename, fileobj), 3-tuples (filename, fileobj, contentype)
or 4-tuples (filename, fileobj, contentype, custom_headers).
"""
if not files:
raise ValueError("Files must be provided.")
elif isinstance(data, basestring):
raise ValueError("Data must not be a string.")
new_fields = []
fields = to_key_val_list(data or {})
files = to_key_val_list(files or {})
for field, val in fields:
if isinstance(val, basestring) or not hasattr(val, "__iter__"):
val = [val]
for v in val:
if v is not None:
# Don't call str() on bytestrings: in Py3 it all goes wrong.
if not isinstance(v, bytes):
v = str(v)
new_fields.append(
(
field.decode("utf-8")
if isinstance(field, bytes)
else field,
v.encode("utf-8") if isinstance(v, str) else v,
)
)
for k, v in files:
# support for explicit filename
ft = None
fh = None
if isinstance(v, (tuple, list)):
if len(v) == 2:
fn, fp = v
elif len(v) == 3:
fn, fp, ft = v
else:
fn, fp, ft, fh = v
else:
fn = guess_filename(v) or k
fp = v
if isinstance(fp, (str, bytes, bytearray)):
fdata = fp
elif hasattr(fp, "read"):
fdata = fp.read()
elif fp is None:
continue
else:
fdata = fp
rf = RequestField(name=k, data=fdata, filename=fn, headers=fh)
rf.make_multipart(content_type=ft)
new_fields.append(rf)
body, content_type = encode_multipart_formdata(new_fields)
return body, content_type
Domain
Subdomains
Defined In
Called By
Source
Frequently Asked Questions
What does _encode_files() do?
_encode_files() is a function in the requests codebase, defined in src/requests/models.py.
Where is _encode_files() defined?
_encode_files() is defined in src/requests/models.py at line 139.
What does _encode_files() call?
_encode_files() calls 2 function(s): guess_filename, to_key_val_list.
What calls _encode_files()?
_encode_files() is called by 1 function(s): prepare_body.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free