code: def contract_type(
      name: str,
      compiler_output: Dict[str, Any],
      alias: Optional[str] = None,
      abi: Optional[bool] = False,
      compiler: Optional[bool] = False,
      contract_type: Optional[bool] = False,
      deployment_bytecode: Optional[bool] = False,
      natspec: Optional[bool] = False,
      runtime_bytecode: Optional[bool] = False,
  ) -> Manifest:
      
      contract_type_fields = {
          "contract_type": contract_type,
          "deployment_bytecode": deployment_bytecode,
          "runtime_bytecode": runtime_bytecode,
          "abi": abi,
          "natspec": natspec,
          "compiler": compiler,
      }
      selected_fields = [k for k, v in contract_type_fields.items() if v]
      return _contract_type(name, compiler_output, alias, selected_fields)
docs: Returns a copy of manifest with added contract_data field as specified by kwargs.
      If no kwargs are present, all available contract_data found in the compiler output
      will be included.
  
      To include specific contract_data fields, add kwarg set to True (i.e. `abi=True`)
      To alias a contract_type, include a kwarg `alias` (i.e. `alias="OwnedAlias"`)
      If only an alias kwarg is provided, all available contract data will be included.
      Kwargs must match fields as defined in the EthPM Spec (except "alias") if user
      wants to include them in custom contract_type.