def group(*blueprints, url_prefix=""):
        """
        Create a list of blueprints, optionally grouping them under a
        general URL prefix.

        :param blueprints: blueprints to be registered as a group
        :param url_prefix: URL route to be prepended to all sub-prefixes
        """

        def chain(nested):
            """itertools.chain() but leaves strings untouched"""
            for i in nested:
                if isinstance(i, (list, tuple)):
                    yield from chain(i)
                elif isinstance(i, BlueprintGroup):
                    yield from i.blueprints
                else:
                    yield i

        bps = BlueprintGroup(url_prefix=url_prefix)
        for bp in chain(blueprints):
            if bp.url_prefix is None:
                bp.url_prefix = ""
            bp.url_prefix = url_prefix + bp.url_prefix
            bps.append(bp)
        return bps
def group ( * blueprints , url_prefix = "" ) : def chain ( nested ) : for i in nested : if isinstance ( i , ( list , tuple ) ) : yield from chain ( i ) elif isinstance ( i , BlueprintGroup ) : yield from i . blueprints else : yield i bps = BlueprintGroup ( url_prefix = url_prefix ) for bp in chain ( blueprints ) : if bp . url_prefix is None : bp . url_prefix = "" bp . url_prefix = url_prefix + bp . url_prefix bps . append ( bp ) return bps
Create a list of blueprints, optionally grouping them under a
        general URL prefix.

        :param blueprints: blueprints to be registered as a group
        :param url_prefix: URL route to be prepended to all sub-prefixes