ethereum / eth-portal

A collection of utilities related to Ethereum's Portal Network
MIT License
6 stars 6 forks source link

Unexpected error running eth_portal.bridge on python 3.10 #26

Open ogenev opened 2 years ago

ogenev commented 2 years ago

What was wrong?

python -m eth_portal.bridge crashes with unexpected TypeError.

Code that produced the error

python -m eth_portal.bridge

Full error output

(eth-portal-venv) ogi:dev/ $ python -m eth_portal.bridge                      [12:12:25]
Launching trin with node ID c0a6c424ac using...
./trin --discovery-port 9000 --unsafe-private-key 0000000000000000000000000000000000000000000000000000000000000001 --web3-ipc-path /tmp/trin-jsonrpc-c0a6c424ac7157ae4083.ipc --kb 20000 --networks history --bootnodes default
Launching trin
Exiting trin with node ID c0a6c424ac...
Traceback (most recent call last):
  File "/usr/lib/python3.10/runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/lib/python3.10/runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "/home/ogi/dev/eth-portal-venv/lib/python3.10/site-packages/eth_portal/bridge/__main__.py", line 4, in <module>
    launch_bridge()
  File "/home/ogi/dev/eth-portal-venv/lib/python3.10/site-packages/eth_portal/bridge/run.py", line 34, in launch_bridge
    block_filter = w3.eth.filter("latest")
  File "/home/ogi/dev/eth-portal-venv/lib/python3.10/site-packages/web3/module.py", line 57, in caller
    result = w3.manager.request_blocking(method_str,
  File "/home/ogi/dev/eth-portal-venv/lib/python3.10/site-packages/web3/manager.py", line 197, in request_blocking
    response = self._make_request(method, params)
  File "/home/ogi/dev/eth-portal-venv/lib/python3.10/site-packages/web3/manager.py", line 150, in _make_request
    return request_func(method, params)
  File "/home/ogi/dev/eth-portal-venv/lib/python3.10/site-packages/web3/middleware/formatting.py", line 94, in middleware
    response = make_request(method, params)
  File "/home/ogi/dev/eth-portal-venv/lib/python3.10/site-packages/web3/middleware/gas_price_strategy.py", line 90, in middleware
    return make_request(method, params)
  File "/home/ogi/dev/eth-portal-venv/lib/python3.10/site-packages/web3/middleware/formatting.py", line 94, in middleware
    response = make_request(method, params)
  File "/home/ogi/dev/eth-portal-venv/lib/python3.10/site-packages/web3/middleware/attrdict.py", line 33, in middleware
    response = make_request(method, params)
  File "/home/ogi/dev/eth-portal-venv/lib/python3.10/site-packages/web3/middleware/formatting.py", line 94, in middleware
    response = make_request(method, params)
  File "/home/ogi/dev/eth-portal-venv/lib/python3.10/site-packages/web3/middleware/formatting.py", line 94, in middleware
    response = make_request(method, params)
  File "/home/ogi/dev/eth-portal-venv/lib/python3.10/site-packages/web3/middleware/formatting.py", line 94, in middleware
    response = make_request(method, params)
  File "/home/ogi/dev/eth-portal-venv/lib/python3.10/site-packages/web3/middleware/buffered_gas_estimate.py", line 40, in middleware
    return make_request(method, params)
  File "/home/ogi/dev/eth-portal-venv/lib/python3.10/site-packages/web3/providers/websocket.py", line 144, in make_request
    return future.result()
  File "/usr/lib/python3.10/concurrent/futures/_base.py", line 446, in result
    return self.__get_result()
  File "/usr/lib/python3.10/concurrent/futures/_base.py", line 391, in __get_result
    raise self._exception
  File "/home/ogi/dev/eth-portal-venv/lib/python3.10/site-packages/web3/providers/websocket.py", line 124, in coro_make_request
    async with self.conn as conn:
  File "/home/ogi/dev/eth-portal-venv/lib/python3.10/site-packages/web3/providers/websocket.py", line 72, in __aenter__
    self.ws = await connect(
  File "/home/ogi/dev/eth-portal-venv/lib/python3.10/site-packages/websockets/legacy/client.py", line 622, in __await_impl__
    transport, protocol = await self._create_connection()
  File "/usr/lib/python3.10/asyncio/base_events.py", line 1089, in create_connection
    transport, protocol = await self._create_connection_transport(
  File "/usr/lib/python3.10/asyncio/base_events.py", line 1107, in _create_connection_transport
    protocol = protocol_factory()
  File "/home/ogi/dev/eth-portal-venv/lib/python3.10/site-packages/websockets/legacy/client.py", line 160, in __init__
    super().__init__(**kwargs)
  File "/home/ogi/dev/eth-portal-venv/lib/python3.10/site-packages/websockets/legacy/protocol.py", line 154, in __init__
    self._drain_lock = asyncio.Lock(
  File "/usr/lib/python3.10/asyncio/locks.py", line 78, in __init__
    super().__init__(loop=loop)
  File "/usr/lib/python3.10/asyncio/mixins.py", line 17, in __init__
    raise TypeError(
TypeError: As of 3.10, the *loop* parameter was removed from Lock() since it is no longer necessary

Environment

Python version:
3.10.4 (main, Apr  2 2022, 09:04:19) [GCC 11.2.0]

Operating System: Linux-5.15.0-10033-tuxedo-x86_64-with-glibc2.35 (Kubuntu 22.04 LTS)

pip freeze result:
aiohttp==3.8.1
aiosignal==1.2.0
async-timeout==4.0.2
attrs==21.4.0
base58==2.1.1
bitarray==2.5.1
cached-property==1.5.2
certifi==2022.6.15
charset-normalizer==2.0.12
cytoolz==0.11.2
eth-abi==2.1.1
eth-account==0.5.8
eth-bloom==1.0.4
eth-hash==0.3.2
eth-keyfile==0.5.1
eth-keys==0.3.4
eth-portal==0.1.0b0
eth-rlp==0.2.1
eth-typing==2.3.0
eth-utils==1.10.0
frozenlist==1.3.0
hexbytes==0.2.2
idna==3.3
ipfshttpclient==0.8.0a2
jsonschema==4.6.0
lru-dict==1.1.7
multiaddr==0.0.9
multidict==6.0.2
mypy-extensions==0.4.3
netaddr==0.8.0
parsimonious==0.8.1
protobuf==3.20.1
py-ecc==5.2.0
py-evm==0.5.0a3
pycryptodome==3.14.1
pyethash==0.1.27
pyrsistent==0.16.1
requests==2.28.0
rlp==2.0.1
six==1.16.0
sortedcontainers==2.4.0
ssz==0.2.4
toolz==0.11.2
trie==2.0.0a5
typing-extensions==3.10.0.2
urllib3==1.26.9
varint==1.0.2
web3==5.29.2
websockets==9.1
yarl==1.7.2
carver commented 2 years ago

How big a blocker is this? Can you use a different python version?

The stable v5 of web3.py only support up to python 3.9, and I'd rather avoid introducing the possible errors of switching to the v6 beta until it is marked stable.

ogenev commented 2 years ago

How big a blocker is this? Can you use a different python version?

Not a big blocker for me, I just wanted to report the issue.