コード例 #1
0
def get_experiment_details(experiment):  # pylint:disable=redefined-outer-name
    if experiment.description:
        Printer.print_header("Experiment description:")
        click.echo('{}\n'.format(experiment.description))

    if experiment.resources:
        get_resources(experiment.resources.to_dict(),
                      header="Experiment resources:")

    if experiment.params:
        Printer.print_header("Experiment params:")
        dict_tabulate(experiment.params)

    if experiment.last_metric:
        Printer.print_header("Experiment last metrics:")
        dict_tabulate(experiment.last_metric)

    response = experiment.to_light_dict(humanize_values=True,
                                        exclude_attrs=[
                                            'uuid', 'config', 'project',
                                            'experiments', 'description',
                                            'params', 'last_metric',
                                            'resources', 'jobs', 'run_env'
                                        ])

    Printer.print_header("Experiment info:")
    dict_tabulate(Printer.add_status_color(response))
コード例 #2
0
    def get_experiment_job_statuses():
        try:
            response = PolyaxonClient().experiment_job.get_statuses(
                user, project_name, _experiment, _job, page=page)
        except (PolyaxonHTTPError, PolyaxonShouldExitError,
                PolyaxonClientException) as e:
            Printer.print_error(
                'Could not get status for job `{}`.'.format(job))
            Printer.print_error('Error message `{}`.'.format(e))
            sys.exit(1)

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

        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('job', None)
            dict_tabulate(objects, is_list_dict=True)
コード例 #3
0
def experiments(ctx, page, metrics):
    """List experiments for this experiment group

    Uses [Caching](/polyaxon_cli/introduction#Caching)
    """
    user, project_name, _group = get_group_or_local(ctx.obj['project'], ctx.obj['group'])
    page = page or 1
    try:
        response = PolyaxonClients().experiment_group.list_experiments(
            user, project_name, _group, page=page)
    except (PolyaxonHTTPError, PolyaxonShouldExitError) 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)
    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)
コード例 #4
0
def tensorboards(ctx, query, sort, page):
    """List tensorboard jobs for this project.

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

    page = page or 1
    try:
        response = PolyaxonClient().project.list_tensorboards(username=user,
                                                              project_name=project_name,
                                                              query=query,
                                                              sort=sort,
                                                              page=page)
    except (PolyaxonHTTPError, PolyaxonShouldExitError, PolyaxonClientException) as e:
        Printer.print_error('Could not get tensorboards for project `{}`.'.format(project_name))
        Printer.print_error('Error message `{}`.'.format(e))
        sys.exit(1)

    meta = get_meta_response(response)
    if meta:
        Printer.print_header('Tensorboards for project `{}/{}`.'.format(user, project_name))
        Printer.print_header('Navigation:')
        dict_tabulate(meta)
    else:
        Printer.print_header('No tensorboards found for project `{}/{}`.'.format(user,
                                                                                 project_name))

    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("Tensorboards:")
        objects.pop('project_name', None)
        dict_tabulate(objects, is_list_dict=True)
コード例 #5
0
def get_group_details(group):  # pylint:disable=redefined-outer-name
    if group.description:
        Printer.print_header("Experiment group description:")
        click.echo('{}\n'.format(group.description))

    response = group.to_light_dict(humanize_values=True,
                                   exclude_attrs=[
                                       'uuid', 'content', 'project',
                                       'experiments', 'description'
                                   ])

    Printer.print_header("Experiment group info:")
    dict_tabulate(Printer.add_status_color(response))
コード例 #6
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)
コード例 #7
0
ファイル: bookmark.py プロジェクト: tyomj/polyaxon-cli
def groups(ctx, page):
    """List bookmarked experiment groups for user.

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

    Examples:

    \b
    ```bash
    $ polyaxon bookmark groups
    ```

    \b
    ```bash
    $ polyaxon bookmark -u adam groups
    ```
    """
    user = get_username_or_local(ctx.obj.get('username'))

    page = page or 1
    try:
        response = PolyaxonClient().bookmark.groups(username=user, page=page)
    except (PolyaxonHTTPError, PolyaxonShouldExitError,
            PolyaxonClientException) as e:
        Printer.print_error(
            'Could not get bookmarked experiment groups for user `{}`.'.format(
                user))
        Printer.print_error('Error message `{}`.'.format(e))
        sys.exit(1)

    meta = get_meta_response(response)
    if meta:
        Printer.print_header(
            'Bookmarked experiment groups for user `{}`.'.format(user))
        Printer.print_header('Navigation:')
        dict_tabulate(meta)
    else:
        Printer.print_header(
            'No bookmarked experiment groups found for user `{}`.'.format(
                user))

    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("Experiment groups:")
        dict_tabulate(objects, is_list_dict=True)
コード例 #8
0
ファイル: build.py プロジェクト: tyomj/polyaxon-cli
def get_build_details(_build):
    if _build.description:
        Printer.print_header("Build description:")
        click.echo('{}\n'.format(_build.description))

    if _build.resources:
        get_resources(_build.resources.to_dict(), header="Build resources:")

    response = _build.to_light_dict(
        humanize_values=True,
        exclude_attrs=[
            'uuid', 'content', 'project', 'description', 'resources', 'is_clone', 'build_job'
        ])

    Printer.print_header("Build info:")
    dict_tabulate(Printer.add_status_color(response))
コード例 #9
0
def statuses(ctx, page):
    """Get build job statuses.

    Uses [Caching](/polyaxon_cli/introduction#Caching)

    Examples:

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

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

    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('job', None)
        dict_tabulate(objects, is_list_dict=True)
コード例 #10
0
def jobs(ctx, page):
    """List jobs for experiment.

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

    Examples:

    \b
    ```bash
    $ polyaxon experiment --experiment=1 jobs
    ```
    """
    user, project_name, _experiment = get_project_experiment_or_local(
        ctx.obj.get('project'), ctx.obj.get('experiment'))
    page = page or 1
    try:
        response = PolyaxonClient().experiment.list_jobs(user,
                                                         project_name,
                                                         _experiment,
                                                         page=page)
    except (PolyaxonHTTPError, PolyaxonShouldExitError,
            PolyaxonClientException) as e:
        Printer.print_error(
            'Could not get jobs for experiment `{}`.'.format(_experiment))
        Printer.print_error('Error message `{}`.'.format(e))
        sys.exit(1)

    meta = get_meta_response(response)
    if meta:
        Printer.print_header('Jobs for experiment `{}`.'.format(_experiment))
        Printer.print_header('Navigation:')
        dict_tabulate(meta)
    else:
        Printer.print_header(
            'No jobs found for experiment `{}`.'.format(_experiment))

    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("Jobs:")
        objects.pop('experiment', None)
        dict_tabulate(objects, is_list_dict=True)
コード例 #11
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)
コード例 #12
0
def get_job_details(_job):
    if _job.description:
        Printer.print_header("Job description:")
        click.echo('{}\n'.format(_job.description))

    if _job.resources:
        get_resources(_job.resources.to_dict(), header="Job resources:")

    response = _job.to_light_dict(humanize_values=True,
                                  exclude_attrs=[
                                      'uuid',
                                      'content',
                                      'project',
                                      'description',
                                      'resources',
                                  ])

    Printer.print_header("Job info:")
    dict_tabulate(Printer.add_status_color(response))
コード例 #13
0
def get(ctx):
    """Get job.

    Uses [Caching](/polyaxon_cli/introduction#Caching)

    Examples:

    \b
    ```bash
    $ polyaxon job --job=1 --experiment=1 get
    ```

    \b
    ```bash
    $ polyaxon job --job=1 --project=project_name get
    ```
    """
    user, project_name, experiment, _job = get_job_or_local(
        ctx.obj['project'], ctx.obj['experiment'], ctx.obj['job'])
    try:
        response = PolyaxonClients().job.get_job(user, project_name,
                                                 experiment, _job)
        # Set caching only if we have an initialized project
        if ProjectManager.is_initialized():
            JobManager.set_config(response)
    except (PolyaxonHTTPError, PolyaxonShouldExitError) as e:
        Printer.print_error('Could not get job `{}`.'.format(_job))
        Printer.print_error('Error message `{}`.'.format(e))
        sys.exit(1)

    if response.resources:
        get_resources(response.resources.to_dict(), header="Job resources:")

    response = Printer.add_status_color(
        response.to_light_dict(humanize_values=True,
                               exclude_attrs=[
                                   'uuid', 'definition', 'experiment',
                                   'unique_name', 'resources'
                               ]))
    Printer.print_header("Job info:")
    dict_tabulate(response)
コード例 #14
0
    def get_experiment_job():
        try:
            response = PolyaxonClient().experiment_job.get_job(user,
                                                               project_name,
                                                               _experiment,
                                                               _job)
            cache.cache(config_manager=ExperimentJobManager, response=response)
        except (PolyaxonHTTPError, PolyaxonShouldExitError, PolyaxonClientException) as e:
            Printer.print_error('Could not get job `{}`.'.format(_job))
            Printer.print_error('Error message `{}`.'.format(e))
            sys.exit(1)

        if response.resources:
            get_resources(response.resources.to_dict(), header="Job resources:")

        response = Printer.add_status_color(response.to_light_dict(
            humanize_values=True,
            exclude_attrs=['uuid', 'definition', 'experiment', 'unique_name', 'resources']
        ))
        Printer.print_header("Job info:")
        dict_tabulate(response)
コード例 #15
0
ファイル: project.py プロジェクト: tpimentelms/polyaxon-cli
def builds(ctx, query, sort, page):
    """List build jobs for this project.

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

    Examples:

    Get all builds:

    \b
    ```bash
    $ polyaxon project builds
    ```

    Get all builds with with status not in {created or running}

    \b
    ```bash
    $ polyaxon project builds -q "status:~created"
    ```

    Get all builds with with status failed

    \b
    ```bash
    $ polyaxon project builds -q "status:failed"
    ```

    Get all builds sorted by update date

    \b
    ```bash
    $ polyaxon project builds -s "-updated_at"
    ```
    """
    user, project_name = get_project_or_local(ctx.obj.get('project'))

    page = page or 1
    try:
        response = PolyaxonClient().project.list_builds(
            username=user,
            project_name=project_name,
            query=query,
            sort=sort,
            page=page)
    except (PolyaxonHTTPError, PolyaxonShouldExitError,
            PolyaxonClientException) as e:
        Printer.print_error(
            'Could not get builds for project `{}`.'.format(project_name))
        Printer.print_error('Error message `{}`.'.format(e))
        sys.exit(1)

    meta = get_meta_response(response)
    if meta:
        Printer.print_header('Builds for project `{}/{}`.'.format(
            user, project_name))
        Printer.print_header('Navigation:')
        dict_tabulate(meta)
    else:
        Printer.print_header('No builds found for project `{}/{}`.'.format(
            user, project_name))

    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("Builds:")
        objects.pop('project_name', None)
        dict_tabulate(objects, is_list_dict=True)
コード例 #16
0
ファイル: project.py プロジェクト: tpimentelms/polyaxon-cli
def experiments(ctx, metrics, declarations, independent, group, query, sort,
                page):
    """List experiments for this project.

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

    Examples:

    Get all experiments:

    \b
    ```bash
    $ polyaxon project experiments
    ```

    Get all experiments with with status {created or running}, and
    creation date between 2018-01-01 and 2018-01-02, and declarations activation equal to sigmoid
    and metric loss less or equal to 0.2

    \b
    ```bash
    $ polyaxon project experiments \
      -q "status:created|running, started_at:2018-01-01..2018-01-02, \
          declarations.activation:sigmoid, metric.loss:<=0.2"
    ```

    Get all experiments sorted by update date

    \b
    ```bash
    $ polyaxon project experiments -s "-updated_at"
    ```
    """
    user, project_name = get_project_or_local(ctx.obj.get('project'))

    page = page or 1
    try:
        response = PolyaxonClient().project.list_experiments(
            username=user,
            project_name=project_name,
            independent=independent,
            group=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 project `{}`.'.format(project_name))
        Printer.print_error('Error message `{}`.'.format(e))
        sys.exit(1)

    meta = get_meta_response(response)
    if meta:
        Printer.print_header('Experiments for project `{}/{}`.'.format(
            user, project_name))
        Printer.print_header('Navigation:')
        dict_tabulate(meta)
    else:
        Printer.print_header(
            'No experiments found for project `{}/{}`.'.format(
                user, project_name))

    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('project_name', None)
        dict_tabulate(objects, is_list_dict=True)
コード例 #17
0
ファイル: project.py プロジェクト: tpimentelms/polyaxon-cli
def groups(ctx, query, sort, page):
    """List experiment groups for this project.

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

    Examples:

    Get all groups:

    \b
    ```bash
    $ polyaxon project groups
    ```

    Get all groups with with status {created or running}, and
    creation date between 2018-01-01 and 2018-01-02,
    and search algorithm not in {grid or random search}

    \b
    ```bash
    $ polyaxon project groups \
      -q "status:created|running, started_at:2018-01-01..2018-01-02, search_algorithm:~grid|random"
    ```

    Get all groups sorted by update date

    \b
    ```bash
    $ polyaxon project groups -s "-updated_at"
    ```
    """
    user, project_name = get_project_or_local(ctx.obj.get('project'))

    page = page or 1
    try:
        response = PolyaxonClient().project.list_experiment_groups(
            username=user,
            project_name=project_name,
            query=query,
            sort=sort,
            page=page)
    except (PolyaxonHTTPError, PolyaxonShouldExitError,
            PolyaxonClientException) as e:
        Printer.print_error(
            'Could not get experiment groups for project `{}`.'.format(
                project_name))
        Printer.print_error('Error message `{}`.'.format(e))
        sys.exit(1)

    meta = get_meta_response(response)
    if meta:
        Printer.print_header('Experiment groups for project `{}/{}`.'.format(
            user, project_name))
        Printer.print_header('Navigation:')
        dict_tabulate(meta)
    else:
        Printer.print_header(
            'No experiment groups found for project `{}/{}`.'.format(
                user, project_name))

    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("Experiment groups:")
        objects.pop('project', None)
        objects.pop('user', None)
        dict_tabulate(objects, is_list_dict=True)