def freeze(h, output_yaml, resolve, groups):
    """Output installed packages."""
    if not groups:
        groups = filter(lambda group: not group.lower().startswith("bower"),
                        h.requirements.keys())
    else:
        groups = [text_type.strip(group) for group in groups.split(",")]

    if output_yaml:
        for requirements in h.requirements.values():
            for requirement in requirements:
                if resolve and not requirement.version:
                    requirement.load_installed_version()
        click.echo(h.requirements.yaml)
    else:
        for group in groups:
            if not h.requirements[group]:
                continue
            click.echo("# {}".format(group))
            for requirement in h.requirements[group]:
                if resolve and not requirement.version:
                    requirement.load_installed_version()
                click.echo(str(requirement))
def theme_generic_recurse(data):
            col.label(data.rna_type.name)
            row = col.row()
            subsplit = row.split(percentage=0.95)

            padding1 = subsplit.split(percentage=0.15)
            padding1.column()

            subsplit = row.split(percentage=0.85)

            padding2 = subsplit.split(percentage=0.15)
            padding2.column()

            colsub_pair = padding1.column(), padding2.column()

            props_type = {}

            for i, prop in enumerate(data.rna_type.properties):
                if prop.identifier == "rna_type":
                    continue

                props_type.setdefault((prop.type, prop.subtype), []).append(prop)

            th_delimiters = USERPREF_PT_theme.ui_delimiters.get(theme_area)
            for props_type, props_ls in sorted(props_type.items()):
                if props_type[0] == 'POINTER':
                    for i, prop in enumerate(props_ls):
                        theme_generic_recurse(getattr(data, prop.identifier))
                else:
                    if th_delimiters is None:
                        # simple, no delimiters
                        for i, prop in enumerate(props_ls):
                            colsub_pair[i % 2].row().prop(data, prop.identifier)
                    else:
                        # add hard coded delimiters
                        i = 0
                        for prop in props_ls:
                            colsub = colsub_pair[i]
                            colsub.row().prop(data, prop.identifier)
                            i = (i + 1) % 2
                            if prop.identifier in th_delimiters:
                                if i:
                                    colsub = colsub_pair[1]
                                    colsub.row().label("")
                                colsub_pair[0].row().label("")
                                colsub_pair[1].row().label("")
                                i = 0