Skip to content

Commit c6db197

Browse files
BoboTiGStuart Reed
andauthored
misc(provider): Change User-Agent header signature (#2964)
* misc(provider): Change User-Agent header signature The User-Agent used to include a stringiffied class name like: "web3.py/6.4.0/<class 'web3.providers.rpc.HTTPProvider'>" "web3.py/6.4.0/<class 'web3.providers.async_rpc.AsyncHTTPProvider'>" This patch sligthly changes it to: "web3.py/6.4.0/web3.providers.rpc.HTTPProvider" "web3.py/6.4.0/web3.providers.async_rpc.AsyncHTTPProvider" * Add news fragment [skip ci] * Address feedback on `test_get_request_headers` --------- Co-authored-by: Stuart Reed <[email protected]>
1 parent 9e4f253 commit c6db197

File tree

6 files changed

+29
-5
lines changed

6 files changed

+29
-5
lines changed

newsfragments/2964.misc.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Change User-Agent header signature

tests/core/providers/test_async_http_provider.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
from web3 import (
88
AsyncWeb3,
9+
__version__ as web3py_version,
910
)
1011
from web3._utils import (
1112
request,
@@ -106,3 +107,14 @@ async def test_async_user_provided_session() -> None:
106107
cached_session = await provider.cache_async_session(session)
107108
assert len(request._async_session_cache) == 1
108109
assert cached_session == session
110+
111+
112+
def test_get_request_headers():
113+
provider = AsyncHTTPProvider()
114+
headers = provider.get_request_headers()
115+
assert len(headers) == 2
116+
assert headers["Content-Type"] == "application/json"
117+
assert (
118+
headers["User-Agent"] == f"web3.py/{web3py_version}/"
119+
f"{AsyncHTTPProvider.__module__}.{AsyncHTTPProvider.__qualname__}"
120+
)

tests/core/providers/test_http_provider.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
from web3 import (
1111
Web3,
12+
__version__ as web3py_version,
1213
)
1314
from web3._utils import (
1415
request,
@@ -103,3 +104,14 @@ def test_user_provided_session():
103104
assert isinstance(adapter, HTTPAdapter)
104105
assert adapter._pool_connections == 20
105106
assert adapter._pool_maxsize == 20
107+
108+
109+
def test_get_request_headers():
110+
provider = HTTPProvider()
111+
headers = provider.get_request_headers()
112+
assert len(headers) == 2
113+
assert headers["Content-Type"] == "application/json"
114+
assert (
115+
headers["User-Agent"] == f"web3.py/{web3py_version}/"
116+
f"{HTTPProvider.__module__}.{HTTPProvider.__qualname__}"
117+
)

web3/_utils/http.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
def construct_user_agent(class_name: str) -> str:
1+
def construct_user_agent(class_type: type) -> str:
22
from web3 import (
33
__version__ as web3_version,
44
)
55

6-
user_agent = f"web3.py/{web3_version}/{class_name}"
7-
return user_agent
6+
return f"web3.py/{web3_version}/{class_type.__module__}.{class_type.__qualname__}"

web3/providers/rpc/async_rpc.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ def get_request_kwargs(self) -> Iterable[Tuple[str, Any]]:
8484
def get_request_headers(self) -> Dict[str, str]:
8585
return {
8686
"Content-Type": "application/json",
87-
"User-Agent": construct_user_agent(str(type(self))),
87+
"User-Agent": construct_user_agent(type(self)),
8888
}
8989

9090
async def _make_request(self, method: RPCEndpoint, request_data: bytes) -> bytes:

web3/providers/rpc/rpc.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ def get_request_kwargs(self) -> Iterable[Tuple[str, Any]]:
9898
def get_request_headers(self) -> Dict[str, str]:
9999
return {
100100
"Content-Type": "application/json",
101-
"User-Agent": construct_user_agent(str(type(self))),
101+
"User-Agent": construct_user_agent(type(self)),
102102
}
103103

104104
def _make_request(self, method: RPCEndpoint, request_data: bytes) -> bytes:

0 commit comments

Comments
 (0)