Skip to content

Commit a280803

Browse files
Support default host in netrc
Support the fallback to `default` if the user did not set a specific host name in their netrc file. Signed-off-by: Marcel Bochtler <[email protected]>
1 parent 58107e8 commit a280803

File tree

3 files changed

+22
-1
lines changed

3 files changed

+22
-1
lines changed

src/python_inspector/utils.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424

2525
def get_netrc_auth(url, netrc):
2626
"""
27-
Return login and password if the hostname is in netrc
27+
Return login and password if either the hostname is in netrc or a default is set in netrc
2828
else return login and password as None
2929
"""
3030
hostname = urlparse(url).hostname
@@ -33,6 +33,11 @@ def get_netrc_auth(url, netrc):
3333
url_auth = hosts.get(hostname)
3434
# netrc returns a tuple of (login, account, password)
3535
return (url_auth[0], url_auth[2])
36+
37+
if "default" in hosts:
38+
default_auth = hosts.get("default")
39+
return (default_auth[0], default_auth[2])
40+
3641
return (None, None)
3742

3843

tests/data/test-default.netrc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
machine example.com login test password test123
2+
default login defaultuser password defaultpass

tests/test_utils.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,20 @@ def test_get_netrc_auth_with_with_subdomains():
8282
)
8383

8484

85+
def test_get_netrc_auth_with_default():
86+
netrc_file = test_env.get_test_loc("test-default.netrc")
87+
parsed_netrc = netrc(netrc_file)
88+
89+
assert get_netrc_auth(url="https://example.com/simple", netrc=parsed_netrc) == (
90+
"test",
91+
"test123",
92+
)
93+
assert get_netrc_auth(url="https://non-existing.org/simple", netrc=parsed_netrc) == (
94+
"defaultuser",
95+
"defaultpass",
96+
)
97+
98+
8599
@pytest.mark.asyncio
86100
@pytest.mark.skipif(sys.version_info < (3, 8), reason="requires python3.8 or higher")
87101
@mock.patch("python_inspector.utils_pypi.CACHE.get")

0 commit comments

Comments
 (0)