Пример #1
0
def get(ctx):
    """Get experiment group by uuid.

    Uses [Caching](/references/polyaxon-cli/#caching)

    Examples:

    \b
    ```bash
    $ polyaxon group -g 13 get
    ```
    """
    user, project_name, _group = get_project_group_or_local(
        ctx.obj.get('project'), ctx.obj.get('group'))
    try:
        response = PolyaxonClient().experiment_group.get_experiment_group(
            user, project_name, _group)
        cache.cache(config_manager=GroupManager, response=response)
    except (PolyaxonHTTPError, PolyaxonShouldExitError,
            PolyaxonClientException) as e:
        Printer.print_error(
            'Could not get experiment group `{}`.'.format(_group))
        Printer.print_error('Error message `{}`.'.format(e))
        sys.exit(1)

    get_group_details(response)
Пример #2
0
def delete(ctx):
    """Delete experiment group.

    Uses [Caching](/references/polyaxon-cli/#caching)
    """
    user, project_name, _group = get_project_group_or_local(
        ctx.obj.get('project'), ctx.obj.get('group'))

    if not click.confirm("Are sure you want to delete experiment group `{}`".
                         format(_group)):
        click.echo('Existing without deleting experiment group.')
        sys.exit(0)

    try:
        response = PolyaxonClient().experiment_group.delete_experiment_group(
            user, project_name, _group)
        # Purge caching
        GroupManager.purge()
    except (PolyaxonHTTPError, PolyaxonShouldExitError,
            PolyaxonClientException) as e:
        Printer.print_error(
            'Could not delete experiment group `{}`.'.format(_group))
        Printer.print_error('Error message `{}`.'.format(e))
        sys.exit(1)

    if response.status_code == 204:
        Printer.print_success(
            "Experiment group `{}` was delete successfully".format(_group))
Пример #3
0
def unbookmark(ctx):
    """Unbookmark group.

    Uses [Caching](/references/polyaxon-cli/#caching)

    Examples:

    \b
    ```bash
    $ polyaxon group unbookmark
    ```

    \b
    ```bash
    $ polyaxon group -g 2 unbookmark
    ```
    """
    user, project_name, _group = get_project_group_or_local(
        ctx.obj.get('project'), ctx.obj.get('group'))

    try:
        PolyaxonClient().experiment_group.unbookmark(user, project_name,
                                                     _group)
    except (PolyaxonHTTPError, PolyaxonShouldExitError,
            PolyaxonClientException) as e:
        Printer.print_error('Could not unbookmark group `{}`.'.format(_group))
        Printer.print_error('Error message `{}`.'.format(e))
        sys.exit(1)

    Printer.print_success("Experiments group is unbookmarked.")
Пример #4
0
def experiments(ctx, metrics, declarations, query, sort, page):
    """List experiments for this experiment group

    Uses [Caching](/references/polyaxon-cli/#caching)
    """
    user, project_name, _group = get_project_group_or_local(
        ctx.obj.get('project'), ctx.obj.get('group'))
    page = page or 1
    try:
        response = PolyaxonClient().experiment_group.list_experiments(
            username=user,
            project_name=project_name,
            group_id=_group,
            metrics=metrics,
            declarations=declarations,
            query=query,
            sort=sort,
            page=page)
    except (PolyaxonHTTPError, PolyaxonShouldExitError,
            PolyaxonClientException) as e:
        Printer.print_error(
            'Could not get experiments for group `{}`.'.format(_group))
        Printer.print_error('Error message `{}`.'.format(e))
        sys.exit(1)

    meta = get_meta_response(response)
    if meta:
        Printer.print_header(
            'Experiments for experiment group `{}`.'.format(_group))
        Printer.print_header('Navigation:')
        dict_tabulate(meta)
    else:
        Printer.print_header(
            'No experiments found for experiment group `{}`.'.format(_group))

    if metrics:
        objects = get_experiments_with_metrics(response)
    elif declarations:
        objects = get_experiments_with_declarations(response)
    else:
        objects = [
            Printer.add_status_color(o.to_light_dict(humanize_values=True))
            for o in response['results']
        ]
    objects = list_dicts_to_tabulate(objects)
    if objects:
        Printer.print_header("Experiments:")
        objects.pop('experiment_group', None)
        objects.pop('experiment_group_name', None)
        objects.pop('project_name', None)
        dict_tabulate(objects, is_list_dict=True)
Пример #5
0
def update(ctx, name, description, tags):
    """Update experiment group.

    Uses [Caching](/references/polyaxon-cli/#caching)

    Example:

    \b
    ```bash
    $ polyaxon group -g 2 update --description="new description for this group"
    ```

    \b
    ```bash
    $ polyaxon update --tags="foo, bar"
    ```
    """
    user, project_name, _group = get_project_group_or_local(
        ctx.obj.get('project'), ctx.obj.get('group'))
    update_dict = {}

    if name:
        update_dict['name'] = name

    if description:
        update_dict['description'] = description

    tags = validate_tags(tags)
    if tags:
        update_dict['tags'] = tags

    if not update_dict:
        Printer.print_warning(
            'No argument was provided to update the experiment group.')
        sys.exit(0)

    try:
        response = PolyaxonClient().experiment_group.update_experiment_group(
            user, project_name, _group, update_dict)
    except (PolyaxonHTTPError, PolyaxonShouldExitError,
            PolyaxonClientException) as e:
        Printer.print_error(
            'Could not update experiment group `{}`.'.format(_group))
        Printer.print_error('Error message `{}`.'.format(e))
        sys.exit(1)

    Printer.print_success("Experiment group updated.")
    get_group_details(response)
Пример #6
0
def statuses(ctx, page):
    """Get experiment group statuses.

    Uses [Caching](/references/polyaxon-cli/#caching)

    Examples:

    \b
    ```bash
    $ polyaxon group -g 2 statuses
    ```
    """
    user, project_name, _group = get_project_group_or_local(
        ctx.obj.get('project'), ctx.obj.get('group'))
    page = page or 1
    try:
        response = PolyaxonClient().experiment_group.get_statuses(user,
                                                                  project_name,
                                                                  _group,
                                                                  page=page)
    except (PolyaxonHTTPError, PolyaxonShouldExitError,
            PolyaxonClientException) as e:
        Printer.print_error(
            'Could not get status for group `{}`.'.format(_group))
        Printer.print_error('Error message `{}`.'.format(e))
        sys.exit(1)

    meta = get_meta_response(response)
    if meta:
        Printer.print_header('Statuses for group `{}`.'.format(_group))
        Printer.print_header('Navigation:')
        dict_tabulate(meta)
    else:
        Printer.print_header(
            'No statuses found for group `{}`.'.format(_group))

    objects = list_dicts_to_tabulate([
        Printer.add_status_color(o.to_light_dict(humanize_values=True),
                                 status_key='status')
        for o in response['results']
    ])
    if objects:
        Printer.print_header("Statuses:")
        objects.pop('experiment_group', None)
        dict_tabulate(objects, is_list_dict=True)
Пример #7
0
def stop(ctx, yes, pending):
    """Stop experiments in the group.

    Uses [Caching](/references/polyaxon-cli/#caching)

    Examples: stop only pending experiments

    \b
    ```bash
    $ polyaxon group stop --pending
    ```

    Examples: stop all unfinished

    \b
    ```bash
    $ polyaxon group stop
    ```

    \b
    ```bash
    $ polyaxon group -g 2 stop
    ```
    """
    user, project_name, _group = get_project_group_or_local(
        ctx.obj.get('project'), ctx.obj.get('group'))

    if not yes and not click.confirm("Are sure you want to stop experiments "
                                     "in group `{}`".format(_group)):
        click.echo('Existing without stopping experiments in group.')
        sys.exit(0)

    try:
        PolyaxonClient().experiment_group.stop(user,
                                               project_name,
                                               _group,
                                               pending=pending)
    except (PolyaxonHTTPError, PolyaxonShouldExitError,
            PolyaxonClientException) as e:
        Printer.print_error(
            'Could not stop experiments in group `{}`.'.format(_group))
        Printer.print_error('Error message `{}`.'.format(e))
        sys.exit(1)

    Printer.print_success("Experiments in group are being stopped.")