summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNate Prewitt <nate.prewitt@gmail.com>2020-11-01 08:52:01 -0800
committerGitHub <noreply@github.com>2020-11-01 08:52:01 -0800
commit2f70990cd3fabf7b05cb9a69b3dab1a43bbf0096 (patch)
tree967db6fa3e2e5e8c61600aaaf2e4226a6eac2daa
parent143150233162d609330941ec2aacde5ed4caa510 (diff)
parentba543713d35067866d68b09f644042c0c021a8ba (diff)
downloadpython-requests-2f70990cd3fabf7b05cb9a69b3dab1a43bbf0096.tar.gz
Merge pull request #5643 from tarmath/netrc
Respect the NETRC environment variable
-rw-r--r--docs/user/quickstart.rst3
-rw-r--r--requests/utils.py10
2 files changed, 10 insertions, 3 deletions
diff --git a/docs/user/quickstart.rst b/docs/user/quickstart.rst
index c4fb9dd6..7b0450c4 100644
--- a/docs/user/quickstart.rst
+++ b/docs/user/quickstart.rst
@@ -213,7 +213,8 @@ Note: Custom headers are given less precedence than more specific sources of inf
* Authorization headers set with `headers=` will be overridden if credentials
are specified in ``.netrc``, which in turn will be overridden by the ``auth=``
- parameter.
+ parameter. Requests will search for the netrc file at `~/.netrc`, `~/_netrc`,
+ or at the path specified by the `NETRC` environment variable.
* Authorization headers will be removed if you get redirected off-host.
* Proxy-Authorization headers will be overridden by proxy credentials provided in the URL.
* Content-Length headers will be overridden when we can determine the length of the content.
diff --git a/requests/utils.py b/requests/utils.py
index 1aafd9cb..16d57762 100644
--- a/requests/utils.py
+++ b/requests/utils.py
@@ -169,14 +169,20 @@ def super_len(o):
def get_netrc_auth(url, raise_errors=False):
"""Returns the Requests tuple auth for a given url from netrc."""
+ netrc_file = os.environ.get('NETRC')
+ if netrc_file is not None:
+ netrc_locations = (netrc_file,)
+ else:
+ netrc_locations = ('~/{}'.format(f) for f in NETRC_FILES)
+
try:
from netrc import netrc, NetrcParseError
netrc_path = None
- for f in NETRC_FILES:
+ for f in netrc_locations:
try:
- loc = os.path.expanduser('~/{}'.format(f))
+ loc = os.path.expanduser(f)
except KeyError:
# os.path.expanduser can fail when $HOME is undefined and
# getpwuid fails. See https://bugs.python.org/issue20164 &