code: def import_solidity_file(
          self, file_path: str, solc_binary: str = "solc", solc_args: str = None
      ):
          
          cmd = [solc_binary, "--hashes", file_path]
          if solc_args:
              cmd.extend(solc_args.split())
  
          try:
              p = Popen(cmd, stdout=PIPE, stderr=PIPE)
              stdout, stderr = p.communicate()
              ret = p.returncode
  
              if ret != 0:
                  raise CompilerError(
                      "Solc has experienced a fatal error (code {}).\n\n{}".format(
                          ret, stderr.decode("utf-8")
                      )
                  )
          except FileNotFoundError:
              raise CompilerError(
                  (
                      "Compiler not found. Make sure that solc is installed and in PATH, "
                      "or the SOLC environment variable is set."
                  )
              )
  
          stdout = stdout.decode("unicode_escape").split("\n")
          for line in stdout:
              # the ':' need not be checked but just to be sure
              if all(map(lambda x: x in line, ["(", ")", ":"])):
                  solc_bytes = "0x" + line.split(":")[0]
                  solc_text = line.split(":")[1].strip()
                  self.solidity_sigs[solc_bytes].append(solc_text)
          log.debug(
              "Signatures: found %d signatures after parsing" % len(self.solidity_sigs)
          )
  
          # update DB with what we've found
          for byte_sig, text_sigs in self.solidity_sigs.items():
              for text_sig in text_sigs:
                  self.add(byte_sig, text_sig)
docs: Import Function Signatures from solidity source files.
  
          :param solc_binary:
          :param solc_args:
          :param file_path: solidity source code file path
          :return: