RequestEncodingMixin Class — requests Architecture
Architecture documentation for the RequestEncodingMixin class in models.py from the requests codebase.
Entity Profile
Dependency Diagram
graph TD f47304c1_b2c6_e66a_f59e_e2534a06b3c8["RequestEncodingMixin"] 461bc6e0_32e7_8eab_ec87_7226e7be0d13["models.py"] f47304c1_b2c6_e66a_f59e_e2534a06b3c8 -->|defined in| 461bc6e0_32e7_8eab_ec87_7226e7be0d13 7eb4ec2a_ece9_e5fc_2c73_ce993b197d51["path_url()"] f47304c1_b2c6_e66a_f59e_e2534a06b3c8 -->|method| 7eb4ec2a_ece9_e5fc_2c73_ce993b197d51 05aa4b39_ee11_5653_43fd_4e9fe439edad["_encode_params()"] f47304c1_b2c6_e66a_f59e_e2534a06b3c8 -->|method| 05aa4b39_ee11_5653_43fd_4e9fe439edad 8078fe73_7320_a15b_369b_220683f56710["_encode_files()"] f47304c1_b2c6_e66a_f59e_e2534a06b3c8 -->|method| 8078fe73_7320_a15b_369b_220683f56710
Relationship Graph
Source Code
src/requests/models.py lines 86–205
class RequestEncodingMixin:
@property
def path_url(self):
"""Build the path URL to use."""
url = []
p = urlsplit(self.url)
path = p.path
if not path:
path = "/"
url.append(path)
query = p.query
if query:
url.append("?")
url.append(query)
return "".join(url)
@staticmethod
def _encode_params(data):
"""Encode parameters in a piece of data.
Will successfully encode parameters when passed as a dict or a list of
2-tuples. Order is retained if data is a list of 2-tuples but arbitrary
if parameters are supplied as a dict.
"""
if isinstance(data, (str, bytes)):
return data
elif hasattr(data, "read"):
return data
elif hasattr(data, "__iter__"):
result = []
for k, vs in to_key_val_list(data):
if isinstance(vs, basestring) or not hasattr(vs, "__iter__"):
vs = [vs]
for v in vs:
if v is not None:
result.append(
(
k.encode("utf-8") if isinstance(k, str) else k,
v.encode("utf-8") if isinstance(v, str) else v,
)
)
return urlencode(result, doseq=True)
else:
return data
@staticmethod
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(
Domain
Defined In
Source
Frequently Asked Questions
What is the RequestEncodingMixin class?
RequestEncodingMixin is a class in the requests codebase, defined in src/requests/models.py.
Where is RequestEncodingMixin defined?
RequestEncodingMixin is defined in src/requests/models.py at line 86.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free