Rest API sync with the EXACT Server https://github.com/ChristianMarzahl/Exact
In the folder examples
pip install EXACT-Sync
with a lot of implementation examples /exact_sync/v1/test
configuration = Configuration()
configuration.username = 'exact'
configuration.password = 'exact'
configuration.host = "http://127.0.0.1:8000"
client = ApiClient(configuration)
image_sets_api = ImageSetsApi(client)
annotations_api = AnnotationsApi(client)
annotation_types_api = AnnotationTypesApi(client)
images_api = ImagesApi(client)
product_api = ProductsApi(client)
team_api = TeamsApi(client)Authentication by token:
configuration = Configuration()
configuration.token = 'pat_....<your token here>'
configuration.host = "http://127.0.0.1:8000"
client = ApiClient(configuration)
image_sets_api = ImageSetsApi(client)image_sets = image_sets_api.list_image_sets(name="cluster_asthma_imageset")
image_setsimage_type = int(Image.ImageSourceTypes.DEFAULT)
image = images_api.create_image(file_path=target_file, image_type=image_type, image_set=image_set.id).results[0]images_api.download_image(id=image_id, target_path=image_path, original_image=True)annotations_api.list_annotations(pagination=False, async_req=True, image=image.id)snapshot = images_api.get_snapshot(image_source=image.id, x=1000, y=1000, size_x=512, size_y=512)
snapshot.save('snapshot.png')All API objects retry requests that fail with a transient gateway error (HTTP 502, 503 or 504)
using exponential backoff (0.5s, 1s, 2s, ... up to 5 attempts). Retrying is enabled by default
and works for synchronous and async_req=True calls.
images_api = ImagesApi(client) # retries enabled (default)
images_api = ImagesApi(client, retry=False) # retries disabled
images_api.retry = False # or toggle later
# optional tuning, per instance or per class
images_api.retry_max_attempts = 3
images_api.retry_backoff = 1.0
images_api.retry_statuses = (502,)Note: non-idempotent requests (e.g. create_*) are retried as well, so in rare cases a
request that the server already processed could be executed twice.