Convert dict generated by `convert_2_dict` into Docpie instance

        You can do this:
        pie = Docpie(__doc__)
        clone_pie = json.loads(pie.convert_2_docpie(
            json.dumps(pie.convert_2_dict())
        ))

        Note if you changed `extra`, it will be lost.
        You can use `set_config(extra={...})` to set it back.

def from_dict(cls, dic):
        """Convert dict generated by `convert_2_dict` into Docpie instance

        You can do this:
        pie = Docpie(__doc__)
        clone_pie = json.loads(pie.convert_2_docpie(
            json.dumps(pie.convert_2_dict())
        ))

        Note if you changed `extra`, it will be lost.
        You can use `set_config(extra={...})` to set it back.
        """
        if '__version__' not in dic:
            raise ValueError('Not support old docpie data')

        data_version = int(dic['__version__'].replace('.', ''))
        this_version = int(cls._version.replace('.', ''))
        logger.debug('this: %s, old: %s', this_version, data_version)
        if data_version < this_version:
            raise ValueError('Not support old docpie data')

        assert dic['__class__'] == 'Docpie'

        config = dic['__config__']
        help = config.pop('help')
        version = config.pop('version')
        option_name = config.pop('option_name')
        usage_name = config.pop('usage_name')
        self = cls(None, **config)
        self.option_name = option_name
        self.usage_name = usage_name

        text = dic['__text__']
        self.doc = text['doc']
        self.usage_text = text['usage_text']
        self.option_sections = text['option_sections']

        self.opt_names = [set(x) for x in dic['option_names']]
        self.opt_names_required_max_args = dic['opt_names_required_max_args']
        self.set_config(help=help, version=version)
        self.options = o = {}
        for title, options in dic['option'].items():
            opt_ins = [convert_2_object(x, {}, self.namedoptions)
                       for x in options]
            o[title] = opt_ins

        self.usages = [convert_2_object(x, self.options, self.namedoptions)
                       for x in dic['usage']]

        return self