Skip to content

Installing web3-6.0.0b9 in clean environment is missing base58 dependency #2774

@rokm

Description

@rokm
  • Version: 6.0.0b9
  • Python: 3.x
  • OS: linux (but applicable to all)
  • pip freeze output
aiohttp==3.8.3
aiosignal==1.3.1
async-timeout==4.0.2
attrs==22.2.0
bitarray==2.6.2
certifi==2022.12.7
charset-normalizer==2.1.1
cytoolz==0.12.1
eth-abi==4.0.0b2
eth-account==0.8.0
eth-hash==0.5.1
eth-keyfile==0.6.0
eth-keys==0.4.0
eth-rlp==0.3.0
eth-typing==3.2.0
eth-utils==2.1.0
frozenlist==1.3.3
hexbytes==0.3.0
idna==3.4
jsonschema==4.17.3
lru-dict==1.1.8
multidict==6.0.4
parsimonious==0.9.0
protobuf==4.21.12
pycryptodome==3.16.0
pyrsistent==0.19.3
regex==2022.10.31
requests==2.28.1
rlp==3.0.0
toolz==0.12.0
urllib3==1.26.13
web3==6.0.0b9
websockets==10.4
yarl==1.8.2

What was wrong?

With the latest beta of web3 (6.0.0b9), the ethpm package cannot be imported anymore due to missing base58.

Steps to reproduce (e.g., linux):

python3.9 -m venv venv
. venv/bin/activate
pip install web3==6.0.0b9
python -c "import ethpm"

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/home/rok/tmp/web3-test/venv/lib64/python3.9/site-packages/ethpm/__init__.py", line 19, in <module>
    from .package import Package  # noqa: E402, F401
  File "/home/rok/tmp/web3-test/venv/lib64/python3.9/site-packages/ethpm/package.py", line 47, in <module>
    from ethpm.dependencies import (
  File "/home/rok/tmp/web3-test/venv/lib64/python3.9/site-packages/ethpm/dependencies.py", line 7, in <module>
    from ethpm.validation.package import (
  File "/home/rok/tmp/web3-test/venv/lib64/python3.9/site-packages/ethpm/validation/package.py", line 11, in <module>
    from ethpm._utils.ipfs import (
  File "/home/rok/tmp/web3-test/venv/lib64/python3.9/site-packages/ethpm/_utils/ipfs.py", line 12, in <module>
    from base58 import (
ModuleNotFoundError: No module named 'base58'

And because the pytest11 entry-point web3.tools.pytest_ethereum.plugins imports ethpm, any attempt to run pytest in an environment with web3==6.0.0b9 installed ends up with an error unless base58 is explicitly installed.

In the previous release, the base58 package was implicitly installed due to the following dependency chain:

web3==6.0.0b8 -> ipfshttpclient==0.8.0a2 -> multiaddr>=0.0.7 -> base58

But with web3==6.0.0b9, ipfshttpclient became an optional dependency that is installed as part of ipfs extra, so it is not installed by default.

How can it be fixed?

base58 should be added to direct web3 dependencies.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions