eth-brownie / brownie

A Python-based development and testing framework for smart contracts targeting the Ethereum Virtual Machine.

Home Page:https://eth-brownie.readthedocs.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Pinning exact version numbers for dependencies makes Brownie very difficult to use as a library

zomglings opened this issue · comments

Environment information

  • brownie Version: 1.17.2
  • ganache-cli Version: 6.12.2
  • solc Version: 0.8.9+commit.e5eed63a.Linux.g++
  • Python Version: Python 3.9.6
  • OS: linux (on WSL2)

What was wrong?

An example:

Brownie pins web3==5.27.0.

This causes problems with libraries require higher versions of web3. It is unlikely that brownie needs this exact version of web3. It would be useful if the dependency were specified as web3>=5.27.0. I realize brownie was intended to be a framework and not a library, but a little work on dependency specification would also make it useful as a library that others could build on top of.

We have also experienced similar issues with black versions required by brownie.

Please include information like:

  • what command you ran
  • the code that caused the failure (see this link for help with formatting code)
  • full output of the error you received

How can it be fixed?

Do not use requirements.txt. Specify all dependencies in setup.py and treat brownie as a library/CLI.

I take back everything I said. We should just document BROWNIE_LIB=1 !!! Nice!