Esempio n. 1
0
    def from_dict(obj):
        """Create the descriptor from a dictionary serialization.

        Parameters
        ----------
        obj: dict
            Dictionary serialization for dataset descriptor as returned by the
            server.

        Returns
        -------
        vizier.api.client.resources.dataset.DatasetDescriptor
        """
        return DatasetDescriptor(
            identifier=obj[labels.ID],
            name=obj[labels.NAME],
            columns=[
                DatasetColumn(
                    identifier=col[labels.ID],
                    name=col[labels.NAME],
                    data_type=col[labels.DATATYPE]
                ) for col in obj['columns']
            ],
            links=deserialize.HATEOAS(links=obj[labels.LINKS])
        )
Esempio n. 2
0
 def info(self):
     """Print information about the API (from the API service descriptor)."""
     r = requests.get(self.urls.service_descriptor())
     r.raise_for_status()
     print('Name    : ' + doc['name'])
     print('URL     : ' + deserialize.HATEOAS(doc['links'])['self'])
     print('Engine  : ' + doc['environment']['name'])
     print('Backend : ' + doc['environment']['backend'])
     print('Packages: ' + ', '.join(doc['environment']['packages']))
     print('Version : ' + doc['environment']['version'])
     print('Started : ' + doc['startedAt'])
Esempio n. 3
0
    def from_dict(obj):
        """Get a workflow module resource instance from the dictionary
        representation returned by the vizier web service.

        Parameters
        ----------
        obj: dict
            Dictionary serialization of a workflow module handle

        Returns
        -------
        vizier.api.client.resources.module.ModuleResource
        """
        # Create a list of outputs.
        outputs = list()
        if 'outputs' in obj:
            for out in obj['outputs']['stdout']:
                if out['type'] in [OUTPUT_TEXT, OUTPUT_HTML]:
                    outputs.append(out['value'])
            for out in obj['outputs']['stderr']:
                outputs.append(out['value'])
        # Create the timestamp
        ts = obj['timestamps']
        timestamp = ModuleTimestamp(created_at=to_datetime(ts['createdAt']))
        if 'startedAt' in ts:
            timestamp.started_at = to_datetime(ts['startedAt'])
        if 'finishedAt' in ts:
            timestamp.finished_at = to_datetime(ts['finishedAt'])
        # Create dictionary of available datasets
        datasets = dict()
        if 'datasets' in obj:
            for ds in obj['datasets']:
                datasets[ds['name']] = ds['id']
        dataobjects = dict()
        if 'dataobjects' in obj:
            for dobj in obj['dataobjects']:
                dataobjects[dobj['name']] = dobj['id']
        charts = dict()
        if 'charts' in obj:
            for ch in obj['charts']:
                c_handle = ChartHandle.from_dict(ch)
                charts[c_handle.name] = c_handle
        return ModuleResource(identifier=obj['id'],
                              state=to_external_form(obj['state']),
                              external_form=obj['text'],
                              outputs=outputs,
                              datasets=datasets,
                              dataobjects=dataobjects,
                              charts=charts,
                              timestamp=timestamp,
                              links=deserialize.HATEOAS(links=obj['links']))
Esempio n. 4
0
    def from_dict(obj):
        """Create chart handle instance from dictionary serialization returned
        by the web service API.

        Parameters
        ----------
        obj: dict
            Dictionary serialization for a chart handle in a workflow module

        Returns
        -------
        vizier.api.client.resources.chart.ChartHandle
        """
        return ChartHandle(name=obj[labels.NAME],
                           links=deserialize.HATEOAS(links=obj[labels.LINKS]))
Esempio n. 5
0
    def from_dict(obj):
        """Get a workflow resource instance from the dictionary representation
        returned by the vizier web service.

        Parameters
        ----------
        obj: dict
            Dictionary serialization of a workflow descriptor or handle

        Returns
        -------
        vizier.api.client.resources.workflow.WorkflowResource
        """
        # Get the action name
        action = None
        command = None
        created_at = None
        if 'action' in obj:
            action = to_external_form(obj['action'])
            created_at = to_datetime(obj['createdAt'])
            # Get the command name
            package_id = obj['packageId']
            if not package_id is None:
                package = PACKAGES[package_id]['command']
                for cmd in package:
                    if cmd['id'] == obj['commandId']:
                        command = cmd['name']
            else:
                command = 'Create Branch'
        modules = None
        if 'modules' in obj:
            modules = [ModuleResource.from_dict(m) for m in obj['modules']]
        datasets = None
        if 'datasets' in obj:
            datasets = {
                ds['id']: DatasetDescriptor.from_dict(ds)
                for ds in obj['datasets']
            }
        links = None
        if 'links' in obj:
            links = deserialize.HATEOAS(links=obj['links'])
        return WorkflowResource(identifier=obj['id'],
                                action=action,
                                command=command,
                                created_at=created_at,
                                modules=modules,
                                datasets=datasets,
                                links=links)