You can opt-in to an asynchronous interface via the asynchronous keyword argument for methods that kick-off Tamr operations.
op = project.unified_dataset().refresh(asynchronous=True) # do asynchronous stuff here while operation is running op = op.wait() # hangs until operation finishes assert op.succeeded()
Raw HTTP requests and Unversioned API Access¶
We encourage you to use the high-level, object-oriented interface offered by the Python Client. If you aren’t sure whether you need to send low-level HTTP requests, you probably don’t.
But sometimes it’s useful to directly send HTTP requests to Tamr; for example, Tamr has many APIs that are not covered by the higher-level interface (most of which are neither versioned nor supported). You can still call these endpoints using the Python Client, but you’ll need to work with raw
The client exposes a
request method with the same interface as
# import Python Client library and configure your client tamr = Client(auth) # do stuff with the `tamr` client # now I NEED to send a request to a specific endpoint response = tamr.request('GET', 'relative/path/to/resource')
This will send a request relative to the base_path registered with the client. If you provide an absolute path to the resource, the base_path will be ignored when composing the request:
# import Python Client library and configure your client tamr = Client(auth) # request a resource outside the configured base_path response = tamr.request('GET', '/absolute/path/to/resource')
You can also use the
# e.g. `get` convenience method response = tamr.get('relative/path/to/resource')
Custom Host / Port / Base API path¶
If you need to repeatedly send requests to another port or base API path (i.e. not
/api/versioned/v1/), you can simply instantiate a different client.
Then just call
request as described above:
# import Python Client library and configure your client tamr = api.Client(auth) # do stuff with the `tamr` client # now I NEED to send requests to a different host/port/base API path etc.. # NOTE: in this example, we reuse `auth` from the first client, but we could # have made a new Authentication provider if this client needs it. custom_client = api.Client( auth, host="10.10.0.1", port=9090, base_path="/api/some_service/", ) response = custom_client.get('relative/path/to/resource')
One-off authenticated request¶
All of the Python Client Authentication providers adhere to the
This means that you can pass in an Authentication provider directly to the
from tamr_unify_client.auth import UsernamePasswordAuth import os import requests username = os.environ['TAMR_USERNAME'] password = os.environ['TAMR_PASSWORD'] auth = UsernamePasswordAuth(username, password) response = requests.request('GET', 'some/specific/endpoint', auth=auth)