Source code for tamr_unify_client.project.attribute_mapping.collection

from tamr_unify_client.project.attribute_mapping.resource import AttributeMapping


[docs]class AttributeMappingCollection: """Collection of :class:`~tamr_unify_client.project.attribute_mapping.resource.AttributeMapping` :param client: Client for API call delegation. :type client: :class:`~tamr_unify_client.Client` :param api_path: API path used to access this collection. :type api_path: str """ def __init__(self, client, api_path): self.client = client self.api_path = api_path
[docs] def stream(self): """Stream attribute mappings in this collection. Implicitly called when iterating over this collection. :returns: Stream of attribute mappings. :rtype: Python generator yielding :class:`~tamr_unify_client.project.attribute_mapping.resource.AttributeMapping` """ all_maps = self.client.get(self.api_path).successful().json() for mapping in all_maps: yield AttributeMapping(self.client, mapping)
[docs] def by_resource_id(self, resource_id): """Retrieve an item in this collection by resource ID. :param resource_id: The resource ID. :type resource_id: str :returns: The specified attribute mapping. :rtype: :class:`~tamr_unify_client.project.attribute_mapping.resource.AttributeMapping` """ maps = self.stream() for mapping in maps: split_id = mapping.resource_id if resource_id == split_id: return mapping raise LookupError("cannot locate mapping from resource ID")
[docs] def by_relative_id(self, relative_id): """Retrieve an item in this collection by relative ID. :param relative_id: The relative ID. :type relative_id: str :returns: The specified attribute mapping. :rtype: :class:`~tamr_unify_client.project.attribute_mapping.resource.AttributeMapping` """ resource_id = relative_id.split("attributeMappings/")[1] return self.by_resource_id(resource_id)
[docs] def create(self, creation_spec): """Create an Attribute mapping in this collection :param creation_spec: Attribute mapping creation specification should be formatted as specified in the `Public Docs for adding an AttributeMapping <https://docs.tamr.com/reference#create-an-attribute-mapping>`_. :type creation_spec: dict[str, str] :returns: The created Attribute mapping :rtype: :class:`~tamr_unify_client.project.attribute_mapping.resource.AttributeMapping` """ data = self.client.post(self.api_path, json=creation_spec).successful().json() return AttributeMapping(self.client, data)
[docs] def delete_by_resource_id(self, resource_id): """Delete an attribute mapping using its Resource ID. :param resource_id: the resource ID of the mapping to be deleted. :type resource_id: str :returns: HTTP response from the server :rtype: :class:`requests.Response` """ path = self.api_path + "/" + resource_id response = self.client.delete(path).successful() return response