create a file-like object that wraps the socket

        :param mode:
            like the ``mode`` argument for other files, indicates read ``'r'``,
            write ``'w'``, or both ``'r+'`` (default ``'r'``)
        :type mode: str
        :param bufsize:
            the length of the read buffer to use. 0 means unbuffered, < 0 means
            use the system default (default -1)
        :type bufsize: int

        :returns:
            a file-like object for which reading and writing sends and receives
            data over the socket connection

def makefile(self, mode='r', bufsize=-1):
        """create a file-like object that wraps the socket

        :param mode:
            like the ``mode`` argument for other files, indicates read ``'r'``,
            write ``'w'``, or both ``'r+'`` (default ``'r'``)
        :type mode: str
        :param bufsize:
            the length of the read buffer to use. 0 means unbuffered, < 0 means
            use the system default (default -1)
        :type bufsize: int

        :returns:
            a file-like object for which reading and writing sends and receives
            data over the socket connection
        """
        f = SocketFile(self._sock, mode)
        f._sock.settimeout(self.gettimeout())
        return f