def read(self, pin):
        """ Read the pin state of an input pin.
        Make sure you put the pin in input modus with the IODIR* register or direction_* attribute first.

        :Example:

        >>> expander = MCP23017I2C(gw)
        >>> # Read the logic level on pin B3
        >>> expander.read('B3')
        False
        >>> # Read the logic level on pin A1
        >>> expander.read('A1')
        True

        :param pin: The label for the pin to read. (Ex. A0)
        :return: Boolean representing the input level
        """
        port, pin = self.pin_to_port(pin)
        self.i2c_write([0x12 + port])
        raw = self.i2c_read(1)
        value = struct.unpack('>B', raw)[0]
        return (value & (1 << pin)) > 0
Read the pin state of an input pin.
        Make sure you put the pin in input modus with the IODIR* register or direction_* attribute first.

        :Example:

        >>> expander = MCP23017I2C(gw)
        >>> # Read the logic level on pin B3
        >>> expander.read('B3')
        False
        >>> # Read the logic level on pin A1
        >>> expander.read('A1')
        True

        :param pin: The label for the pin to read. (Ex. A0)
        :return: Boolean representing the input level