eth-brownie / brownie

A Python-based development and testing framework for smart contracts targeting the Ethereum Virtual Machine.
https://eth-brownie.readthedocs.io
MIT License
2.65k stars 553 forks source link

Error installing #1371

Open JMiddey opened 2 years ago

JMiddey commented 2 years ago

Environment information

(new-env) joe@Joes-MacBook-Pro web3_py_simple_storage % pip install eth-brownie
Collecting eth-brownie Using cached eth_brownie-1.17.2-py3-none-any.whl (221 kB) Collecting inflection==0.5.0 Using cached inflection-0.5.0-py2.py3-none-any.whl (5.8 kB) Requirement already satisfied: six==1.16.0 in ./new-env/lib/python3.10/site-packages (from eth-brownie) (1.16.0) Requirement already satisfied: mypy-extensions==0.4.3 in ./new-env/lib/python3.10/site-packages (from eth-brownie) (0.4.3) Requirement already satisfied: protobuf==3.19.1 in ./new-env/lib/python3.10/site-packages (from eth-brownie) (3.19.1) Collecting pyyaml==5.4.1 Using cached PyYAML-5.4.1-cp310-cp310-macosx_10_9_universal2.whl Requirement already satisfied: urllib3==1.26.7 in ./new-env/lib/python3.10/site-packages (from eth-brownie) (1.26.7) Collecting pytest==6.2.5 Using cached pytest-6.2.5-py3-none-any.whl (280 kB) Requirement already satisfied: ipfshttpclient==0.8.0a2 in ./new-env/lib/python3.10/site-packages (from eth-brownie) (0.8.0a2) Requirement already satisfied: attrs==21.2.0 in ./new-env/lib/python3.10/site-packages (from eth-brownie) (21.2.0) Requirement already satisfied: yarl==1.7.2 in ./new-env/lib/python3.10/site-packages (from eth-brownie) (1.7.2) Requirement already satisfied: py-solc-x==1.1.1 in ./new-env/lib/python3.10/site-packages (from eth-brownie) (1.1.1) Requirement already satisfied: multiaddr==0.0.9 in ./new-env/lib/python3.10/site-packages (from eth-brownie) (0.0.9) Collecting vvm==0.1.0 Using cached vvm-0.1.0-py3-none-any.whl (11 kB) Collecting dataclassy==0.11.1 Using cached dataclassy-0.11.1-py3-none-any.whl (23 kB) Collecting zipp==3.6.0 Using cached zipp-3.6.0-py3-none-any.whl (5.3 kB) Collecting eth-event==1.2.3 Using cached eth_event-1.2.3-py3-none-any.whl (7.3 kB) Collecting py-solc-ast==1.2.9 Using cached py_solc_ast-1.2.9-py3-none-any.whl (10 kB) Requirement already satisfied: click==8.0.3 in ./new-env/lib/python3.10/site-packages (from eth-brownie) (8.0.3) Collecting pytest-xdist==1.34.0 Using cached pytest_xdist-1.34.0-py2.py3-none-any.whl (36 kB) Requirement already satisfied: requests==2.26.0 in ./new-env/lib/python3.10/site-packages (from eth-brownie) (2.26.0) Collecting typed-ast==1.5.1 Using cached typed_ast-1.5.1-cp310-cp310-macosx_11_0_arm64.whl (207 kB) Collecting pyjwt==1.7.1 Using cached PyJWT-1.7.1-py2.py3-none-any.whl (18 kB) Requirement already satisfied: lru-dict==1.1.7 in ./new-env/lib/python3.10/site-packages (from eth-brownie) (1.1.7) Requirement already satisfied: charset-normalizer==2.0.9 in ./new-env/lib/python3.10/site-packages (from eth-brownie) (2.0.9) Requirement already satisfied: pyparsing==3.0.6 in ./new-env/lib/python3.10/site-packages (from eth-brownie) (3.0.6) Requirement already satisfied: pycryptodome==3.12.0 in ./new-env/lib/python3.10/site-packages (from eth-brownie) (3.12.0) Requirement already satisfied: frozenlist==1.2.0 in ./new-env/lib/python3.10/site-packages (from eth-brownie) (1.2.0) Requirement already satisfied: packaging==21.3 in ./new-env/lib/python3.10/site-packages (from eth-brownie) (21.3) Requirement already satisfied: eth-hash[pycryptodome]==0.3.2 in ./new-env/lib/python3.10/site-packages (from eth-brownie) (0.3.2) Collecting toml==0.10.2 Using cached toml-0.10.2-py2.py3-none-any.whl (16 kB) Collecting eip712==0.1.0 Using cached eip712-0.1.0-py3-none-any.whl (13 kB) Requirement already satisfied: eth-keyfile==0.5.1 in ./new-env/lib/python3.10/site-packages (from eth-brownie) (0.5.1) Collecting tqdm==4.62.3 Using cached tqdm-4.62.3-py2.py3-none-any.whl (76 kB) Collecting asynctest==0.13.0 Using cached asynctest-0.13.0-py3-none-any.whl (26 kB) Collecting pytest-forked==1.3.0 Using cached pytest_forked-1.3.0-py2.py3-none-any.whl (4.7 kB) Collecting python-dateutil==2.8.1 Using cached python_dateutil-2.8.1-py2.py3-none-any.whl (227 kB) Collecting python-dotenv==0.16.0 Using cached python_dotenv-0.16.0-py2.py3-none-any.whl (18 kB) Requirement already satisfied: varint==1.0.2 in ./new-env/lib/python3.10/site-packages (from eth-brownie) (1.0.2) Requirement already satisfied: rlp==2.0.1 in ./new-env/lib/python3.10/site-packages (from eth-brownie) (2.0.1) Requirement already satisfied: eth-abi==2.1.1 in ./new-env/lib/python3.10/site-packages (from eth-brownie) (2.1.1) Requirement already satisfied: certifi==2021.10.8 in ./new-env/lib/python3.10/site-packages (from eth-brownie) (2021.10.8) Requirement already satisfied: web3==5.25.0 in ./new-env/lib/python3.10/site-packages (from eth-brownie) (5.25.0) Collecting typing-extensions==3.10.0.2 Using cached typing_extensions-3.10.0.2-py3-none-any.whl (26 kB) Requirement already satisfied: jsonschema==3.2.0 in ./new-env/lib/python3.10/site-packages (from eth-brownie) (3.2.0) Collecting wcwidth==0.2.5 Using cached wcwidth-0.2.5-py2.py3-none-any.whl (30 kB) Requirement already satisfied: base58==2.1.1 in ./new-env/lib/python3.10/site-packages (from eth-brownie) (2.1.1) Requirement already satisfied: semantic-version==2.8.5 in ./new-env/lib/python3.10/site-packages (from eth-brownie) (2.8.5) Collecting cached-property==1.5.2 Using cached cached_property-1.5.2-py2.py3-none-any.whl (7.6 kB) Collecting pythx==1.6.1 Using cached pythx-1.6.1-py2.py3-none-any.whl (39 kB) Requirement already satisfied: eth-account==0.5.6 in ./new-env/lib/python3.10/site-packages (from eth-brownie) (0.5.6) Collecting eth-brownie Using cached eth_brownie-1.17.1-py3-none-any.whl (221 kB) Requirement already satisfied: toolz==0.11.1 in ./new-env/lib/python3.10/site-packages (from eth-brownie) (0.11.1) Collecting yarl==1.7.0 Using cached yarl-1.7.0-cp310-cp310-macosx_11_0_arm64.whl (118 kB) Collecting black==21.9b0 Using cached black-21.9b0-py3-none-any.whl (148 kB) Collecting eth-brownie Using cached eth_brownie-1.17.0-py3-none-any.whl (221 kB) Collecting idna==3.2 Using cached idna-3.2-py3-none-any.whl (59 kB) Collecting eth-brownie Using cached eth_brownie-1.16.4-py3-none-any.whl (219 kB) Collecting urllib3==1.26.6 Using cached urllib3-1.26.6-py2.py3-none-any.whl (138 kB) Collecting yarl==1.6.3 Using cached yarl-1.6.3-cp310-cp310-macosx_10_9_universal2.whl Collecting protobuf==3.18.0 Using cached protobuf-3.18.0-py2.py3-none-any.whl (174 kB) Collecting vyper==0.2.16 Using cached vyper-0.2.16-py3-none-any.whl (236 kB) Collecting packaging==21.0 Using cached packaging-21.0-py3-none-any.whl (40 kB) Collecting py-solc-x==1.1.0 Using cached py_solc_x-1.1.0-py3-none-any.whl (15 kB) Collecting eth-account==0.5.5 Using cached eth_account-0.5.5-py3-none-any.whl (100 kB) Collecting click==8.0.1 Using cached click-8.0.1-py3-none-any.whl (97 kB) Collecting rlp==1.2.0 Using cached rlp-1.2.0-py2.py3-none-any.whl (19 kB) Collecting regex==2021.8.28 Using cached regex-2021.8.28-cp310-cp310-macosx_10_9_universal2.whl Collecting chardet==4.0.0 Using cached chardet-4.0.0-py2.py3-none-any.whl (178 kB) Collecting certifi==2021.5.30 Using cached certifi-2021.5.30-py2.py3-none-any.whl (145 kB) Collecting web3==5.23.1 Using cached web3-5.23.1-py3-none-any.whl (486 kB) Collecting cytoolz==0.11.0 Using cached cytoolz-0.11.0.tar.gz (477 kB) Preparing metadata (setup.py) ... done Collecting aiohttp==3.7.4.post0 Using cached aiohttp-3.7.4.post0-py3-none-any.whl Collecting dataclassy==0.10.4 Using cached dataclassy-0.10.4-py3-none-any.whl (23 kB) Collecting async-timeout==3.0.1 Using cached async_timeout-3.0.1-py3-none-any.whl (8.2 kB) Requirement already satisfied: pyrsistent==0.18.0 in ./new-env/lib/python3.10/site-packages (from eth-brownie) (0.18.0) Collecting psutil==5.8.0 Using cached psutil-5.8.0-cp310-cp310-macosx_10_9_universal2.whl Collecting hypothesis==6.21.6 Using cached hypothesis-6.21.6-py3-none-any.whl (381 kB) Collecting mythx-models==1.9.1 Using cached mythx_models-1.9.1-py2.py3-none-any.whl (82 kB) Requirement already satisfied: eth-typing==2.2.2 in ./new-env/lib/python3.10/site-packages (from eth-brownie) (2.2.2) Requirement already satisfied: eth-utils==1.10.0 in ./new-env/lib/python3.10/site-packages (from eth-brownie) (1.10.0) Requirement already satisfied: pathspec==0.9.0 in ./new-env/lib/python3.10/site-packages (from eth-brownie) (0.9.0) Collecting prompt-toolkit==3.0.20 Using cached prompt_toolkit-3.0.20-py3-none-any.whl (370 kB) Collecting tomli==1.2.1 Using cached tomli-1.2.1-py3-none-any.whl (11 kB) Collecting multidict==5.1.0 Using cached multidict-5.1.0-cp310-cp310-macosx_10_9_universal2.whl Collecting pygments-lexer-solidity==0.7.0 Using cached pygments_lexer_solidity-0.7.0-py3-none-any.whl Collecting iniconfig==1.1.1 Using cached iniconfig-1.1.1-py2.py3-none-any.whl (5.0 kB) Requirement already satisfied: eth-rlp==0.2.1 in ./new-env/lib/python3.10/site-packages (from eth-brownie) (0.2.1) Collecting lazy-object-proxy==1.6.0 Using cached lazy_object_proxy-1.6.0-cp310-cp310-macosx_10_9_universal2.whl Collecting pycryptodome==3.10.1 Using cached pycryptodome-3.10.1-cp35-abi3-macosx_10_9_universal2.whl Collecting charset-normalizer==2.0.6 Using cached charset_normalizer-2.0.6-py3-none-any.whl (37 kB) Collecting pygments==2.10.0 Using cached Pygments-2.10.0-py3-none-any.whl (1.0 MB) Collecting platformdirs==2.3.0 Using cached platformdirs-2.3.0-py3-none-any.whl (13 kB) Collecting pyparsing==2.4.7 Using cached pyparsing-2.4.7-py2.py3-none-any.whl (67 kB) Requirement already satisfied: websockets==9.1 in ./new-env/lib/python3.10/site-packages (from eth-brownie) (9.1) Collecting py==1.10.0 Using cached py-1.10.0-py2.py3-none-any.whl (97 kB) Collecting pluggy==1.0.0 Using cached pluggy-1.0.0-py2.py3-none-any.whl (13 kB) Collecting base58==2.1.0 Using cached base58-2.1.0-py3-none-any.whl (5.6 kB) Requirement already satisfied: hexbytes==0.2.2 in ./new-env/lib/python3.10/site-packages (from eth-brownie) (0.2.2) Requirement already satisfied: parsimonious==0.8.1 in ./new-env/lib/python3.10/site-packages (from eth-brownie) (0.8.1) Collecting asttokens==2.0.4 Using cached asttokens-2.0.4-py2.py3-none-any.whl (20 kB) Requirement already satisfied: netaddr==0.8.0 in ./new-env/lib/python3.10/site-packages (from eth-brownie) (0.8.0) Collecting sortedcontainers==2.4.0 Using cached sortedcontainers-2.4.0-py2.py3-none-any.whl (29 kB) Requirement already satisfied: bitarray==1.2.2 in ./new-env/lib/python3.10/site-packages (from eth-brownie) (1.2.2) Collecting wrapt==1.12.1 Using cached wrapt-1.12.1-cp310-cp310-macosx_10_9_universal2.whl Collecting execnet==1.9.0 Using cached execnet-1.9.0-py2.py3-none-any.whl (39 kB) Requirement already satisfied: eth-keys==0.3.3 in ./new-env/lib/python3.10/site-packages (from eth-brownie) (0.3.3) Requirement already satisfied: setuptools in ./new-env/lib/python3.10/site-packages (from jsonschema==3.2.0->eth-brownie) (58.1.0) WARNING: The candidate selected for download or install is a yanked version: 'protobuf' candidate (version 3.18.0 at https://files.pythonhosted.org/packages/74/4e/9f3cb458266ef5cdeaa1e72a90b9eda100e3d1803cbd7ec02f0846da83c3/protobuf-3.18.0-py2.py3-none-any.whl#sha256=615099e52e9fbc9fde00177267a94ca820ecf4e80093e390753568b7d8cb3c1a (from https://pypi.org/simple/protobuf/)) Reason for being yanked: This version claims to support Python 2 but does not Using legacy 'setup.py install' for cytoolz, since package 'wheel' is not installed. Installing collected packages: cytoolz, pyparsing, urllib3, toml, rlp, pycryptodome, py, pluggy, packaging, multidict, iniconfig, idna, charset-normalizer, certifi, base58, yarl, typing-extensions, python-dateutil, pytest, inflection, chardet, async-timeout, wcwidth, tomli, sortedcontainers, regex, pytest-forked, pyjwt, pygments, protobuf, platformdirs, mythx-models, execnet, eth-account, dataclassy, click, asttokens, aiohttp, wrapt, web3, vyper, vvm, tqdm, pyyaml, pythx, python-dotenv, pytest-xdist, pygments-lexer-solidity, py-solc-x, py-solc-ast, psutil, prompt-toolkit, lazy-object-proxy, hypothesis, eth-event, eip712, black, eth-brownie Attempting uninstall: cytoolz Found existing installation: cytoolz 0.11.2 Uninstalling cytoolz-0.11.2: Successfully uninstalled cytoolz-0.11.2 Running setup.py install for cytoolz ... error ERROR: Command errored out with exit status 1: command: /Users/joe/demos/web3_py_simple_storage/new-env/bin/python -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/kd/tskyhtvj2rv4hbpqcsfkn0q00000gn/T/pip-install-hf0tx6vr/cytoolz_c7187836c2874f4597525048b42b7c8f/setup.py'"'"'; file='"'"'/private/var/folders/kd/tskyhtvj2rv4hbpqcsfkn0q00000gn/T/pip-install-hf0tx6vr/cytoolz_c7187836c2874f4597525048b42b7c8f/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(file) if os.path.exists(file) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' install --record /private/var/folders/kd/tskyhtvj2rv4hbpqcsfkn0q00000gn/T/pip-record-pliixidc/install-record.txt --single-version-externally-managed --compile --install-headers /Users/joe/demos/web3_py_simple_storage/new-env/include/site/python3.10/cytoolz cwd: /private/var/folders/kd/tskyhtvj2rv4hbpqcsfkn0q00000gn/T/pip-install-hf0tx6vr/cytoolz_c7187836c2874f4597525048b42b7c8f/ Complete output (75 lines): ALERT: Cython not installed. Building without Cython. running install running build running build_py creating build creating build/lib.macosx-10.9-universal2-3.10 creating build/lib.macosx-10.9-universal2-3.10/cytoolz copying cytoolz/compatibility.py -> build/lib.macosx-10.9-universal2-3.10/cytoolz copying cytoolz/utils_test.py -> build/lib.macosx-10.9-universal2-3.10/cytoolz copying cytoolz/_version.py -> build/lib.macosx-10.9-universal2-3.10/cytoolz copying cytoolz/init.py -> build/lib.macosx-10.9-universal2-3.10/cytoolz copying cytoolz/_signatures.py -> build/lib.macosx-10.9-universal2-3.10/cytoolz creating build/lib.macosx-10.9-universal2-3.10/cytoolz/curried copying cytoolz/curried/operator.py -> build/lib.macosx-10.9-universal2-3.10/cytoolz/curried copying cytoolz/curried/init.py -> build/lib.macosx-10.9-universal2-3.10/cytoolz/curried copying cytoolz/curried/exceptions.py -> build/lib.macosx-10.9-universal2-3.10/cytoolz/curried copying cytoolz/itertoolz.pyx -> build/lib.macosx-10.9-universal2-3.10/cytoolz copying cytoolz/dicttoolz.pyx -> build/lib.macosx-10.9-universal2-3.10/cytoolz copying cytoolz/functoolz.pyx -> build/lib.macosx-10.9-universal2-3.10/cytoolz copying cytoolz/recipes.pyx -> build/lib.macosx-10.9-universal2-3.10/cytoolz copying cytoolz/utils.pyx -> build/lib.macosx-10.9-universal2-3.10/cytoolz copying cytoolz/utils.pxd -> build/lib.macosx-10.9-universal2-3.10/cytoolz copying cytoolz/init.pxd -> build/lib.macosx-10.9-universal2-3.10/cytoolz copying cytoolz/recipes.pxd -> build/lib.macosx-10.9-universal2-3.10/cytoolz copying cytoolz/functoolz.pxd -> build/lib.macosx-10.9-universal2-3.10/cytoolz copying cytoolz/dicttoolz.pxd -> build/lib.macosx-10.9-universal2-3.10/cytoolz copying cytoolz/cpython.pxd -> build/lib.macosx-10.9-universal2-3.10/cytoolz copying cytoolz/itertoolz.pxd -> build/lib.macosx-10.9-universal2-3.10/cytoolz creating build/lib.macosx-10.9-universal2-3.10/cytoolz/tests copying cytoolz/tests/test_none_safe.py -> build/lib.macosx-10.9-universal2-3.10/cytoolz/tests copying cytoolz/tests/test_utils.py -> build/lib.macosx-10.9-universal2-3.10/cytoolz/tests copying cytoolz/tests/test_curried.py -> build/lib.macosx-10.9-universal2-3.10/cytoolz/tests copying cytoolz/tests/test_compatibility.py -> build/lib.macosx-10.9-universal2-3.10/cytoolz/tests copying cytoolz/tests/test_embedded_sigs.py -> build/lib.macosx-10.9-universal2-3.10/cytoolz/tests copying cytoolz/tests/test_functoolz.py -> build/lib.macosx-10.9-universal2-3.10/cytoolz/tests copying cytoolz/tests/test_inspect_args.py -> build/lib.macosx-10.9-universal2-3.10/cytoolz/tests copying cytoolz/tests/test_doctests.py -> build/lib.macosx-10.9-universal2-3.10/cytoolz/tests copying cytoolz/tests/test_tlz.py -> build/lib.macosx-10.9-universal2-3.10/cytoolz/tests copying cytoolz/tests/test_signatures.py -> build/lib.macosx-10.9-universal2-3.10/cytoolz/tests copying cytoolz/tests/dev_skip_test.py -> build/lib.macosx-10.9-universal2-3.10/cytoolz/tests copying cytoolz/tests/test_recipes.py -> build/lib.macosx-10.9-universal2-3.10/cytoolz/tests copying cytoolz/tests/test_docstrings.py -> build/lib.macosx-10.9-universal2-3.10/cytoolz/tests copying cytoolz/tests/test_dev_skip_test.py -> build/lib.macosx-10.9-universal2-3.10/cytoolz/tests copying cytoolz/tests/test_dicttoolz.py -> build/lib.macosx-10.9-universal2-3.10/cytoolz/tests copying cytoolz/tests/test_serialization.py -> build/lib.macosx-10.9-universal2-3.10/cytoolz/tests copying cytoolz/tests/test_curried_toolzlike.py -> build/lib.macosx-10.9-universal2-3.10/cytoolz/tests copying cytoolz/tests/test_itertoolz.py -> build/lib.macosx-10.9-universal2-3.10/cytoolz/tests running build_ext building 'cytoolz.dicttoolz' extension creating build/temp.macosx-10.9-universal2-3.10 creating build/temp.macosx-10.9-universal2-3.10/cytoolz clang -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -arch arm64 -arch x86_64 -g -I/Users/joe/demos/web3_py_simple_storage/new-env/include -I/Library/Frameworks/Python.framework/Versions/3.10/include/python3.10 -c cytoolz/dicttoolz.c -o build/temp.macosx-10.9-universal2-3.10/cytoolz/dicttoolz.o clang -bundle -undefined dynamic_lookup -arch arm64 -arch x86_64 -g build/temp.macosx-10.9-universal2-3.10/cytoolz/dicttoolz.o -o build/lib.macosx-10.9-universal2-3.10/cytoolz/dicttoolz.cpython-310-darwin.so building 'cytoolz.functoolz' extension clang -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -arch arm64 -arch x86_64 -g -I/Users/joe/demos/web3_py_simple_storage/new-env/include -I/Library/Frameworks/Python.framework/Versions/3.10/include/python3.10 -c cytoolz/functoolz.c -o build/temp.macosx-10.9-universal2-3.10/cytoolz/functoolz.o cytoolz/functoolz.c:23087:19: error: implicit declaration of function '_PyGen_Send' is invalid in C99 [-Werror,-Wimplicit-function-declaration] ret = _PyGen_Send((PyGenObject)yf, value == Py_None ? NULL : value); ^ cytoolz/functoolz.c:23087:17: warning: incompatible integer to pointer conversion assigning to 'PyObject ' (aka 'struct _object ') from 'int' [-Wint-conversion] ret = _PyGen_Send((PyGenObject)yf, value == Py_None ? NULL : value); ^ ~~~~~~~~~~~~~~ cytoolz/functoolz.c:23092:19: error: implicit declaration of function '_PyGen_Send' is invalid in C99 [-Werror,-Wimplicit-function-declaration] ret = _PyGen_Send((PyGenObject)yf, value == Py_None ? NULL : value); ^ cytoolz/functoolz.c:23092:17: warning: incompatible integer to pointer conversion assigning to 'PyObject ' (aka 'struct _object ') from 'int' [-Wint-conversion] ret = _PyGen_Send((PyGenObject)yf, value == Py_None ? NULL : value); ^ ~~~~~~~~~~~~~~ cytoolz/functoolz.c:23176:19: error: implicit declaration of function '_PyGen_Send' is invalid in C99 [-Werror,-Wimplicit-function-declaration] ret = _PyGen_Send((PyGenObject)yf, NULL); ^ cytoolz/functoolz.c:23176:17: warning: incompatible integer to pointer conversion assigning to 'PyObject ' (aka 'struct _object ') from 'int' [-Wint-conversion] ret = _PyGen_Send((PyGenObject)yf, NULL); ^ ~~~~~~~ 3 warnings and 3 errors generated. error: command '/usr/bin/clang' failed with exit code 1

Rolling back uninstall of cytoolz Moving to /Users/joe/demos/web3_py_simple_storage/new-env/lib/python3.10/site-packages/cytoolz-0.11.2.dist-info/ from /Users/joe/demos/web3_py_simple_storage/new-env/lib/python3.10/site-packages/~ytoolz-0.11.2.dist-info Moving to /Users/joe/demos/web3_py_simple_storage/new-env/lib/python3.10/site-packages/cytoolz/ from /Users/joe/demos/web3_py_simple_storage/new-env/lib/python3.10/site-packages/~ytoolz ERROR: Command errored out with exit status 1: /Users/joe/demos/web3_py_simple_storage/new-env/bin/python -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/kd/tskyhtvj2rv4hbpqcsfkn0q00000gn/T/pip-install-hf0tx6vr/cytoolz_c7187836c2874f4597525048b42b7c8f/setup.py'"'"'; file='"'"'/private/var/folders/kd/tskyhtvj2rv4hbpqcsfkn0q00000gn/T/pip-install-hf0tx6vr/cytoolz_c7187836c2874f4597525048b42b7c8f/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(file) if os.path.exists(file) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' install --record /private/var/folders/kd/tskyhtvj2rv4hbpqcsfkn0q00000gn/T/pip-record-pliixidc/install-record.txt --single-version-externally-managed --compile --install-headers /Users/joe/demos/web3_py_simple_storage/new-env/include/site/python3.10/cytoolz Check the logs for full command output.

gnattishness commented 2 years ago

Workaround: use python 3.9.x for now.


Brownie does not currently support python 3.10, because its vyper dependency does not yet (https://github.com/vyperlang/vyper/issues/2548).

There's a slight issue in how vyper was previously more permissive and earlier versions (0.11.0 and before) suggest that they support 3.10 (via python_requires='>=3.6').

This explains your install log:

  1. pip install eth-brownie will start with the latest release (1.17.2),
  2. then realizes it depends on vyper==0.3.1 (doesn't support 3.10 and has correct metadata stating that),
  3. then pip tries other brownie versions to see if they satisfy the requirements.
  4. eth-brownie==1.16.4 depends on vyper==0.2.16 which overly permissively states that it supports python >= 3.6
  5. so all package metadata suggests that brownie 1.16.4 and its dependencies support 3.10, but cytoolz==0.11.0 does not support 3.10 and breaks when trying to build.
gnattishness commented 2 years ago

@iamdefinitelyahuman Might be worth pinning this or some other issue explaining that 3.10 isn't yet expected to work?

I'm not certain of the best "answer" to avoid this in the future. Optimally, it would be nice if cytoolz had more restrictive package metadata - to avoid these situations where it can seem like a python version is supported even though it isn't.

Similarly, a more explicit python_requires=">=3.7,<3.10" in brownie could work - but it would be more annoying to maintain and all previous releases would also need to have their metadata updated in order for it to improve UX (otherwise it would just install an older version). I could well be wrong, but it also seems like you can't update metadata on pypi anymore, so "updating" would probably have to involve an extra patch or post release, then yanking the previous releases from pypi?

cytoolz is really the main offender here so, if it sounds reasonable, I could try raising a package metadata issue with them?

DanielVukelich commented 2 years ago

The linked issue in https://github.com/vyperlang/vyper/issues/2548 has been resolved with an MR. Does that mean it's now possible to support python 3.10 here?