code: def get_solc_input(self):
          
  
          def legal(r, file_name):
              hidden = file_name[0] == '.'
              dotsol = len(file_name) > 3 and file_name[-4:] == '.sol'
              path = os.path.normpath(os.path.join(r, file_name))
              notfile = not os.path.isfile(path)
              symlink = Path(path).is_symlink()
              return dotsol and (not (symlink or hidden or notfile))
  
          solc_input = {
              'language': 'Solidity',
              'sources': {
                  file_name: {
                      'urls': [os.path.realpath(os.path.join(r, file_name))]
                  } for r, d, f in os.walk(self.contracts_dir) for file_name in f if legal(r, file_name)
              },
              'settings': {
                  'optimizer': {
                      'enabled': 1,
                      'runs': 10000
                  },
                  'outputSelection': {
                      "*": {
                          "": [
                              "legacyAST",
                              "ast"
                          ],
                          "*": [
                              "abi",
                              "evm.bytecode.object",
                              "evm.bytecode.sourceMap",
                              "evm.deployedBytecode.object",
                              "evm.deployedBytecode.sourceMap"
                          ]
                      }
                  }
              }
          }
  
          return solc_input
docs: Walks the contract directory and returns a Solidity input dict
  
          Learn more about Solidity input JSON here: https://goo.gl/7zKBvj
  
          Returns:
              dict: A Solidity input JSON object as a dict