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.64k stars 550 forks source link

'WARNING: Unable to compile ... due to a NamespaceCollision' #1326

Open semsion opened 2 years ago

semsion commented 2 years ago

--

I've noticed an issue while compiling a brownie project, which is throwing the error: 'WARNING: Unable to compile smartcontractkit/chainlink-brownie-contracts@1.1.1 due to a NamespaceCollision'.

This is while working with the following repository: https://github.com/smartcontractkit/full-blockchain-solidity-course-py

This issue was created off the back of a discussion at the above repository: https://github.com/smartcontractkit/full-blockchain-solidity-course-py/discussions/304

Below is the full output:

$ ➜  brownie_fund_me brownie compile
Brownie v1.17.0 - Python development framework for Ethereum

865kiB [00:00, 3.05MiB/s]
WARNING: Unable to compile smartcontractkit/chainlink-brownie-contracts@1.1.1 due to a NamespaceCollision - you may still be able to import sources from the package, but will be unable to load the package directly.

Compiling contracts...
  Solc version: 0.6.12
  Optimizer: Enabled  Runs: 200
  EVM Version: Istanbul
Generating build data...
 - smartcontractkit/chainlink-brownie-contracts@1.1.1/AggregatorV3Interface
 - smartcontractkit/chainlink-brownie-contracts@1.1.1/SafeMathChainlink
 - FundMe

Project has been compiled. Build artifacts saved at <pathtohome>/freeCodeCamp_solidity_blockchain_smart_contract_course__python_version/brownie_fund_me/build/contracts
deFaup commented 2 years ago

I back up this issue! I ran into the same issue on my own projects and also the one mentioned by @semsion

smartcontractkit/chainlink-brownie-contracts@1.1.1 was working fine over the last 2/3 weeks but on Sunday I started getting the error too. I first got this issue while trying to use the new versioning system of chainlink: smartcontractkit/chainlink-brownie-contracts@0.2.2. **WARNING**: Unable to compile smartcontractkit/chainlink-brownie-contracts@0.2.2 due to a NamespaceCollision - you may still be able to import sources from the package, but will be unable to load the package directly. Switching back to 1.1.1 gave me the same error log.

I then tried compiling the chainlink repo and here is the error log

chainlink-brownie-contracts@1.1.1 % brownie compile
Brownie v1.17.1 - Python development framework for Ethereum

  File "brownie/_cli/__main__.py", line 64, in main
    importlib.import_module(f"brownie._cli.{cmd}").main()
  File "brownie/_cli/compile.py", line 50, in main
    proj = project.load()
  File "brownie/project/main.py", line 751, in load
    return Project(name, project_path)
  File "brownie/project/main.py", line 183, in __init__
    self.load()
  File "brownie/project/main.py", line 193, in load
    self._sources = Sources(contract_sources, interface_sources)
  File "brownie/project/sources.py", line 58, in __init__
    raise NamespaceCollision(
NamespaceCollision: Multiple contracts or interfaces with the same name
  ChainlinkClient: contracts/src/v0.4/ChainlinkClient.sol, contracts/src/v0.5/ChainlinkClient.sol, contracts/src/v0.6/ChainlinkClient.sol, contracts/src/v0.7/ChainlinkClient.sol
  Migrations: contracts/src/v0.4/Migrations.sol, contracts/src/v0.5/Migrations.sol
  Oracle: contracts/src/v0.4/Oracle.sol, contracts/src/v0.5/Oracle.sol, contracts/src/v0.6/Oracle.sol
  Chainlink: contracts/src/v0.4/Chainlink.sol, contracts/src/v0.5/Chainlink.sol, contracts/src/v0.6/Chainlink.sol, contracts/src/v0.7/Chainlink.sol
  Consumer: contracts/src/v0.4/tests/Consumer.sol, contracts/src/v0.5/tests/Consumer.sol, contracts/src/v0.6/tests/Consumer.sol, contracts/src/v0.7/tests/Consumer.sol
  MaliciousRequester: contracts/src/v0.4/tests/MaliciousRequester.sol, contracts/src/v0.5/tests/MaliciousRequester.sol
  MaliciousConsumer: contracts/src/v0.4/tests/MaliciousConsumer.sol, contracts/src/v0.5/tests/MaliciousConsumer.sol
  BasicConsumer: contracts/src/v0.4/tests/BasicConsumer.sol, contracts/src/v0.5/tests/BasicConsumer.sol, contracts/src/v0.6/tests/BasicConsumer.sol
  MaliciousChainlink: contracts/src/v0.4/tests/MaliciousChainlink.sol, contracts/src/v0.5/tests/MaliciousChainlink.sol
  GetterSetter: contracts/src/v0.4/tests/GetterSetter.sol, contracts/src/v0.5/tests/GetterSetter.sol
  Ownable: contracts/src/v0.4/vendor/Ownable.sol, contracts/src/v0.5/vendor/Ownable.sol, contracts/src/v0.6/vendor/Ownable.sol
  Buffer: contracts/src/v0.4/vendor/Buffer.sol, contracts/src/v0.5/vendor/Buffer.sol
  SignedSafeMath: contracts/src/v0.4/vendor/SignedSafeMath.sol, contracts/src/v0.5/vendor/SignedSafeMath.sol, contracts/src/v0.6/SignedSafeMath.sol
  SafeMathChainlink: contracts/src/v0.4/vendor/SafeMathChainlink.sol, contracts/src/v0.5/vendor/SafeMathChainlink.sol, contracts/src/v0.6/vendor/SafeMathChainlink.sol, contracts/src/v0.7/vendor/SafeMathChainlink.sol
  CBOR: contracts/src/v0.4/vendor/CBOR.sol, contracts/src/v0.5/vendor/CBOR.sol
  ENSResolver: contracts/src/v0.4/vendor/ENSResolver.sol, contracts/src/v0.5/vendor/ENSResolver.sol, contracts/src/v0.6/vendor/ENSResolver.sol, contracts/src/v0.7/vendor/ENSResolver.sol
  LinkTokenReceiver: contracts/src/v0.5/LinkTokenReceiver.sol, contracts/src/v0.6/LinkTokenReceiver.sol, contracts/src/v0.7/dev/LinkTokenReceiver.sol
  AggregatorProxy: contracts/src/v0.6/AggregatorProxy.sol, contracts/src/v0.7/dev/AggregatorProxy.sol
  VRFRequestIDBase: contracts/src/v0.6/VRFRequestIDBase.sol, contracts/src/v0.7/dev/VRFRequestIDBase.sol
  Median: contracts/src/v0.5/Median.sol, contracts/src/v0.6/Median.sol
  VRFConsumerBase: contracts/src/v0.6/VRFConsumerBase.sol, contracts/src/v0.7/dev/VRFConsumerBase.sol
  MultiWordConsumer: contracts/src/v0.6/tests/MultiWordConsumer.sol, contracts/src/v0.7/tests/MultiWordConsumer.sol
  MockV3Aggregator: contracts/src/v0.6/tests/MockV3Aggregator.sol, contracts/src/v0.7/tests/MockV3Aggregator.sol
  MedianTestHelper: contracts/src/v0.5/tests/MedianTestHelper.sol, contracts/src/v0.6/tests/MedianTestHelper.sol
  MockV2Aggregator: contracts/src/v0.6/tests/MockV2Aggregator.sol, contracts/src/v0.7/tests/MockV2Aggregator.sol
  BufferChainlink: contracts/src/v0.6/vendor/BufferChainlink.sol, contracts/src/v0.7/vendor/BufferChainlink.sol
  CBORChainlink: contracts/src/v0.6/vendor/CBORChainlink.sol, contracts/src/v0.7/vendor/CBORChainlink.sol
matsen01 commented 2 years ago

Hello, I have the same issue, did you find a solution ?