Source code for tamr_unify_client.project.collection

from tamr_unify_client.base_collection import BaseCollection
from tamr_unify_client.project.resource import Project


[docs]class ProjectCollection(BaseCollection): """Collection of :class:`~tamr_unify_client.project.resource.Project` s. :param client: Client for API call delegation. :type client: :class:`~tamr_unify_client.Client` :param api_path: API path used to access this collection. Default: ``"projects"``. :type api_path: str """ def __init__(self, client, api_path="projects"): super().__init__(client, api_path)
[docs] def by_resource_id(self, resource_id): """Retrieve a project by resource ID. :param resource_id: The resource ID. E.g. ``"1"`` :type resource_id: str :returns: The specified project. :rtype: :class:`~tamr_unify_client.project.resource.Project` """ return super().by_resource_id("projects", resource_id)
[docs] def by_relative_id(self, relative_id): """Retrieve a project by relative ID. :param relative_id: The resource ID. E.g. ``"projects/1"`` :type relative_id: str :returns: The specified project. :rtype: :class:`~tamr_unify_client.project.resource.Project` """ return super().by_relative_id(Project, relative_id)
[docs] def by_external_id(self, external_id): """Retrieve a project by external ID. :param external_id: The external ID. :type external_id: str :returns: The specified project, if found. :rtype: :class:`~tamr_unify_client.project.resource.Project` :raises KeyError: If no project with the specified external_id is found :raises LookupError: If multiple projects with the specified external_id are found """ return super().by_external_id(Project, external_id)
[docs] def stream(self): """Stream projects in this collection. Implicitly called when iterating over this collection. :returns: Stream of projects. :rtype: Python generator yielding :class:`~tamr_unify_client.project.resource.Project` Usage: >>> for project in collection.stream(): # explicit >>> do_stuff(project) >>> for project in collection: # implicit >>> do_stuff(project) """ return super().stream(Project)
[docs] def by_name(self, project_name: str) -> Project: """Get project by name Fetches a specific project in this collection by exact-match on name. Args: project_name: Name of the desired project. Raises: KeyError: If no project with specified name was found. """ for project in self: if project.name == project_name: return project raise KeyError(f"No project found with name: {project_name}")
[docs] def create(self, creation_spec): """ Create a Project in Tamr :param creation_spec: Project creation specification should be formatted as specified in the `Public Docs for Creating a Project <https://docs.tamr.com/reference#create-a-project>`_. :type creation_spec: dict[str, str] :returns: The created Project :rtype: :class:`~tamr_unify_client.project.resource.Project` """ data = self.client.post(self.api_path, json=creation_spec).successful().json() return Project.from_json(self.client, data)
# super.__repr__ is sufficient