|
14 | 14 | import httpx |
15 | 15 | import magic |
16 | 16 | from PIL import Image, ImageOps |
| 17 | +from importlib.metadata import PackageNotFoundError |
| 18 | +from importlib.metadata import version |
| 19 | + |
17 | 20 |
|
18 | 21 | logger = logging.getLogger("bma_client") |
19 | 22 |
|
|
27 | 30 | # maybe these should come from server settings |
28 | 31 | SKIP_EXIF_TAGS = ["JPEGThumbnail", "TIFFThumbnail", "Filename"] |
29 | 32 |
|
| 33 | +# get version |
| 34 | +try: |
| 35 | + __version__ = version("bma-client-lib") |
| 36 | +except PackageNotFoundError: |
| 37 | + __version__ = "0.0.0" |
| 38 | + |
30 | 39 |
|
31 | 40 | class BmaBearerAuth(httpx.Auth): |
32 | 41 | """An httpx.Auth subclass to add Bearer token to requests.""" |
@@ -62,6 +71,7 @@ def __init__( |
62 | 71 | self.path = path |
63 | 72 | self.skip_exif_tags = SKIP_EXIF_TAGS |
64 | 73 | self.get_server_settings() |
| 74 | + self.__version__ = __version__ |
65 | 75 |
|
66 | 76 | def update_access_token(self) -> None: |
67 | 77 | """Set or update self.access_token using self.refresh_token.""" |
@@ -119,7 +129,10 @@ def get_job_assignment(self, file_uuid: uuid.UUID | None = None) -> list[dict[st |
119 | 129 | url = self.base_url + "/api/v1/json/jobs/assign/" |
120 | 130 | if file_uuid: |
121 | 131 | url += f"?file_uuid={file_uuid}" |
122 | | - data = {"client_uuid": self.uuid} |
| 132 | + data = { |
| 133 | + "client_uuid": self.uuid, |
| 134 | + "client_version": "bma-client-lib {__version__}", |
| 135 | + } |
123 | 136 | try: |
124 | 137 | r = self.client.post(url, json=data).raise_for_status() |
125 | 138 | response = r.json()["bma_response"] |
@@ -277,11 +290,12 @@ def upload_job_result(self, job_uuid: uuid.UUID, buf: "BytesIO", filename: str) |
277 | 290 | # build metadata |
278 | 291 | data = { |
279 | 292 | "client_uuid": self.uuid, |
| 293 | + "client_version": "bma-client-lib {__version__}", |
280 | 294 | } |
281 | 295 | # doit |
282 | 296 | r = self.client.post( |
283 | 297 | self.base_url + f"/api/v1/json/jobs/{job_uuid}/result/", |
284 | | - data={"assign": json.dumps(data)}, |
| 298 | + data={"client": json.dumps(data)}, |
285 | 299 | files=files, |
286 | 300 | ).raise_for_status() |
287 | 301 | t = time.time() - start |
|
0 commit comments