@property<EOL><INDENT>def read_timeout(self):<DEDENT>
if (self.total is not None and<EOL>self.total is not self.DEFAULT_TIMEOUT and<EOL>self._read is not None and<EOL>self._read is not self.DEFAULT_TIMEOUT):<EOL><INDENT>if self._start_connect is None:<EOL><INDENT>return self._read<EOL><DEDENT>return max(<NUM_LIT:0>, min(self.total - self.get_connect_duration(),<EOL>self._read))<EOL><DEDENT>elif self.total is not None and self.total is not self.DEFAULT_TIMEOUT:<EOL><INDENT>return max(<NUM_LIT:0>, self.total - self.get_connect_duration())<EOL><DEDENT>else:<EOL><INDENT>return self._read<EOL><DEDENT>
Get the value for the read timeout.

        This assumes some time has elapsed in the connection timeout and
        computes the read timeout appropriately.

        If self.total is set, the read timeout is dependent on the amount of
        time taken by the connect timeout. If the connection time has not been
        established, a :exc:`~urllib3.exceptions.TimeoutStateError` will be
        raised.

        :return: Value to use for the read timeout.
        :rtype: int, float, :attr:`Timeout.DEFAULT_TIMEOUT` or None
        :raises urllib3.exceptions.TimeoutStateError: If :meth:`start_connect`
            has not yet been called on this object.