<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def check_data_port_connection(self, check_data_port):
 """Checks the connection validity of a data port The method is called by a child state to check the validity of a data port in case it is connected with data flows. The data port does not belong to 'self', but to one of self.states. If the data port is connected to a data flow, the method checks, whether these connect consistent data types of ports. :param rafcon.core.data_port.DataPort check_data_port: The port to check :return: valid, message """

        for data_flow in self.data_flows.values():
            # Check whether the data flow connects the given port
            from_port = self.get_data_port(data_flow.from_state, data_flow.from_key)
            to_port = self.get_data_port(data_flow.to_state, data_flow.to_key)
            if check_data_port is from_port or check_data_port is to_port:
                # check if one of the data_types if type 'object'; in this case the data flow is always valid
                if not (from_port.data_type is object or to_port.data_type is object):
                    if not type_inherits_of_type(from_port.data_type, to_port.data_type):
                        return False, "Connection of two non-compatible data types"
        return True, "valid"