'Obtain RingBuilder instance of the provided builder file
:param builder_file: path to builder file to load
:return: RingBuilder instance'

@classmethod
def load(cls, builder_file, open=open, **kwargs):

    try:
        fp = open(builder_file, 'rb')
    except IOError as e:
        if (e.errno == errno.ENOENT):
            raise exceptions.FileNotFoundError(('Ring    Builder    file    does    not    exist:    %s' % builder_file))
        elif (e.errno in [errno.EPERM, errno.EACCES]):
            raise exceptions.PermissionError(('Ring    Builder    file    cannot    be    accessed:    %s' % builder_file))
        else:
            raise
    else:
        with fp:
            try:
                builder = pickle.load(fp)
            except Exception:
                raise exceptions.UnPicklingError(('Ring    Builder    file    is    invalid:    %s' % builder_file))
    if (not hasattr(builder, 'devs')):
        builder_dict = builder
        builder = cls(1, 1, 1, **kwargs)
        builder.copy_from(builder_dict)
    if (not hasattr(builder, '_id')):
        builder._id = None
    for dev in builder.devs:
        if (dev and ('meta' not in dev)):
            dev['meta'] = ''
        if dev:
            dev.setdefault('replication_ip', dev['ip'])
            dev.setdefault('replication_port', dev['port'])
    return builder
