Repository: ethereum/web3.py

Issue:
Call to AsyncWeb3.solidity_keccak raises  `TypeError: 'cytoolz.functoolz.curry' object is not iterable` 
* Version: 6.5.0
* Python: 3.10.12
* OS: osx/linux/win
* `pip freeze` output

```
aiohttp==3.8.4
aiosignal==1.3.1
async-timeout==4.0.2
attrs==23.1.0
bitarray==2.7.5
certifi==2023.5.7
charset-normalizer==3.1.0
cytoolz==0.12.1
eth-abi==4.1.0
eth-account==0.9.0
eth-hash==0.5.2
eth-keyfile==0.6.1
eth-keys==0.4.0
eth-rlp==0.3.0
eth-typing==3.4.0
eth-utils==2.1.1
frozenlist==1.3.3
hexbytes==0.3.1
idna==3.4
jsonschema==4.17.3
lru-dict==1.2.0
multidict==6.0.4
parsimonious==0.9.0
protobuf==4.23.3
pycryptodome==3.18.0
pyrsistent==0.19.3
regex==2023.6.3
requests==2.31.0
rlp==3.0.0
toolz==0.12.0
urllib3==2.0.3
web3==6.5.0
websockets==11.0.3
yarl==1.9.2

```


### What was wrong?

Upgraded from 6.0.0 to 6.5.0. `Web3.solidity_keccak` works as expected, but `AsyncWeb3.solidity_keccak` raises an exception.

```
>>> from web3 import Web3, AsyncWeb3
>>> Web3.solidity_keccak(("address", "uint256"), ("0xC378c4C85B04c6598B498bf107E5872D3d4A1F2e", 123))
HexBytes('0x8f984d5a8d254b1ac6d2c0dcc8ca187254885a6347125c96dabaaaf3ecca3ec7')
>>> AsyncWeb3.solidity_keccak(("address", "uint256"), ("0xC378c4C85B04c6598B498bf107E5872D3d4A1F2e", 123))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/pedro/tmp/.venv/lib/python3.10/site-packages/eth_utils/decorators.py", line 20, in _wrapper
    return self.method(objtype, *args, **kwargs)
  File "/home/pedro/tmp/.venv/lib/python3.10/site-packages/web3/main.py", line 316, in solidity_keccak
    for abi_type, value in zip(abi_types, normalized_values)
TypeError: 'cytoolz.functoolz.curry' object is not iterable

```

### How can it be fixed?

?


Discussion:

Resolving patch:
diff --git a/web3/main.py b/web3/main.py
--- a/web3/main.py
+++ b/web3/main.py
@@ -286,9 +286,9 @@ def keccak(
 
     @classmethod
     def normalize_values(
-        cls, _w3: "BaseWeb3", abi_types: List[TypeStr], values: List[Any]
+        cls, w3: "BaseWeb3", abi_types: List[TypeStr], values: List[Any]
     ) -> List[Any]:
-        return map_abi_data(zip(abi_types, values))
+        return map_abi_data([abi_ens_resolver(w3)], abi_types, values)
 
     @combomethod
     def solidity_keccak(cls, abi_types: List[TypeStr], values: List[Any]) -> bytes:
@@ -450,12 +450,6 @@ def __init__(
     def is_connected(self, show_traceback: bool = False) -> bool:
         return self.provider.is_connected(show_traceback)
 
-    @classmethod
-    def normalize_values(
-        cls, w3: "BaseWeb3", abi_types: List[TypeStr], values: List[Any]
-    ) -> List[Any]:
-        return map_abi_data([abi_ens_resolver(w3)], abi_types, values)
-
     @property
     def middleware_onion(self) -> MiddlewareOnion:
         return cast(MiddlewareOnion, self.manager.middleware_onion)


Test patch:
diff --git a/web3/_utils/module_testing/web3_module.py b/web3/_utils/module_testing/web3_module.py
--- a/web3/_utils/module_testing/web3_module.py
+++ b/web3/_utils/module_testing/web3_module.py
@@ -3,6 +3,7 @@
     Any,
     NoReturn,
     Sequence,
+    Union,
 )
 
 from eth_typing import (
@@ -16,6 +17,7 @@
 )
 
 from web3 import (
+    AsyncWeb3,
     Web3,
 )
 from web3._utils.ens import (
@@ -221,9 +223,16 @@ def _check_web3_client_version(self, client_version: str) -> NoReturn:
             ),
         ),
     )
+    @pytest.mark.parametrize(
+        "w3",
+        (
+            Web3,
+            AsyncWeb3,
+        ),
+    )
     def test_solidity_keccak(
         self,
-        w3: "Web3",
+        w3: Union["Web3", "AsyncWeb3"],
         types: Sequence[TypeStr],
         values: Sequence[Any],
         expected: HexBytes,
@@ -255,9 +264,16 @@ def test_solidity_keccak(
             ),
         ),
     )
+    @pytest.mark.parametrize(
+        "w3",
+        (
+            Web3(),
+            AsyncWeb3(),
+        ),
+    )
     def test_solidity_keccak_ens(
         self,
-        w3: "Web3",
+        w3: Union["Web3", "AsyncWeb3"],
         types: Sequence[TypeStr],
         values: Sequence[str],
         expected: HexBytes,