code: def combined(cls, code, path=None, extra_args=None):
          
  
          if code and path:
              raise ValueError('sourcecode and path are mutually exclusive.')
  
          if path:
              contracts = compile_file(path, extra_args=extra_args)
  
              with open(path) as handler:
                  code = handler.read()
  
          elif code:
              contracts = compile_code(code, extra_args=extra_args)
  
          else:
              raise ValueError('either code or path needs to be supplied.')
  
          sorted_contracts = []
          for name in solidity_names(code):
              sorted_contracts.append(
                  (
                      name[1],
                      solidity_get_contract_data(contracts, path, name[1])
                  )
              )
          return sorted_contracts
docs: Compile combined-json with abi,bin,devdoc,userdoc.
  
          @param code: literal solidity code as a string.
          @param path: absolute path to solidity-file. Note: code & path are
                       mutually exclusive!
          @param extra_args: Either a space separated string or a list of extra
                             arguments to be passed to the solidity compiler.