arkindex-base-worker 0.3.7__py3-none-any.whl → 0.3.7.post1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: arkindex-base-worker
3
- Version: 0.3.7
3
+ Version: 0.3.7.post1
4
4
  Summary: Base Worker to easily build Arkindex ML workflows
5
5
  Author-email: Teklia <contact@teklia.com>
6
6
  Maintainer-email: Teklia <contact@teklia.com>
@@ -41,19 +41,16 @@ Classifier: Topic :: Text Processing :: Linguistic
41
41
  Requires-Python: >=3.10
42
42
  Description-Content-Type: text/markdown
43
43
  License-File: LICENSE
44
- Requires-Dist: peewee ==3.17.1
44
+ Requires-Dist: peewee ~=3.17
45
45
  Requires-Dist: Pillow ==10.3.0
46
- Requires-Dist: pymdown-extensions ==10.7.1
47
46
  Requires-Dist: python-gnupg ==0.5.2
48
47
  Requires-Dist: shapely ==2.0.3
49
- Requires-Dist: teklia-toolbox ==0.1.4
48
+ Requires-Dist: teklia-toolbox ==0.1.5
50
49
  Requires-Dist: zstandard ==0.22.0
51
50
  Provides-Extra: docs
52
51
  Requires-Dist: black ==24.4.0 ; extra == 'docs'
53
- Requires-Dist: doc8 ==1.1.1 ; extra == 'docs'
54
52
  Requires-Dist: mkdocs-material ==9.5.17 ; extra == 'docs'
55
53
  Requires-Dist: mkdocstrings-python ==1.9.2 ; extra == 'docs'
56
- Requires-Dist: recommonmark ==0.7.1 ; extra == 'docs'
57
54
  Provides-Extra: tests
58
55
  Requires-Dist: pytest ==8.1.1 ; extra == 'tests'
59
56
  Requires-Dist: pytest-mock ==3.14.0 ; extra == 'tests'
@@ -71,7 +68,7 @@ The [documentation](https://workers.arkindex.org/) is made with [Material for Mk
71
68
 
72
69
  ## Create a new worker using our template
73
70
 
74
- ```
71
+ ```shell
75
72
  pip install --user cookiecutter
76
73
  cookiecutter git@gitlab.teklia.com:workers/base-worker.git
77
74
  ```
@@ -4,22 +4,22 @@ arkindex_worker/image.py,sha256=5ymIGaTm2D7Sp2YYQkbuheuGnx5VJo0_AzYAEIvNGhs,1426
4
4
  arkindex_worker/models.py,sha256=xSvOadkNg3rgccic1xLgonzP28ugzmcGw0IUqXn51Cc,9844
5
5
  arkindex_worker/utils.py,sha256=0Mu7Fa8DVcHn19pg-FIXqMDpfgzQkb7QR9IAlAi-x_k,7243
6
6
  arkindex_worker/worker/__init__.py,sha256=U-_zOrQ09xmpBF9SmrTVj_UwnsCjFueV5G2hJAFEwv0,18806
7
- arkindex_worker/worker/base.py,sha256=qtkCGfpGn7SWsQZRJ5cpW0gQ4tV_cyR_AHbuHZr53z4,19585
7
+ arkindex_worker/worker/base.py,sha256=c9u37W1BNHt5RoQV2ZrYUYv6tBs-CjiSgUAAg7p7GA0,18876
8
8
  arkindex_worker/worker/classification.py,sha256=JVz-6YEeuavOy7zGfQi4nE_wpj9hwMUZDXTem-hXQY8,10328
9
9
  arkindex_worker/worker/dataset.py,sha256=roX2IMMNA-icteTtRADiFSZiZSRPClqS62ZPJm9s2JI,2923
10
10
  arkindex_worker/worker/element.py,sha256=AWK3YJSHWy3j4ajntJloi_2X4zxsgXZ6c6dzphgq3OI,33848
11
11
  arkindex_worker/worker/entity.py,sha256=suhycfikC9oTPEWmX48_cnvFEw-Wu5zBA8n_00K4KUk,14714
12
12
  arkindex_worker/worker/metadata.py,sha256=Bouuc_JaXogKykVXOTKDVP3tX--OUQeHoazxIGrGrJI,6702
13
13
  arkindex_worker/worker/task.py,sha256=cz3wJNPgogZv1lm_3lm7WScitQtYQtL6H6I7Xokq208,1475
14
- arkindex_worker/worker/training.py,sha256=YYnLNi4lsB0fEDj8Xh73z2Amt1LIfPdpuGzagOEtgDE,10648
14
+ arkindex_worker/worker/training.py,sha256=hkwCBjVE4bByXzHUmCZF73Bl5JxARdXWjYgFE6ydAT0,10749
15
15
  arkindex_worker/worker/transcription.py,sha256=6R7ofcGnNqX4rjT0kRKIE-G9FHq2TJ1tfztNM5sTqYE,20464
16
16
  arkindex_worker/worker/version.py,sha256=cs2pdlDxpKRO2Oldvcu54w-D_DQhf1cdeEt4tKX_QYs,1927
17
17
  hooks/pre_gen_project.py,sha256=xQJERv3vv9VzIqcBHI281eeWLWREXUF4mMw7PvJHHXM,269
18
18
  tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
- tests/conftest.py,sha256=Oi5SJic4TNwDj8Pm0WHgg657yB7_JKxbLC0HYPI3RUc,22134
19
+ tests/conftest.py,sha256=6tb9iMSIO6xfuoVbrIzyauBTovzHpEe8Vb3uWONadxA,22126
20
20
  tests/test_base_worker.py,sha256=Uq6_MpLW23gmKFXkU-SyDUaA_4dlViLBGG4e3gpBBz0,24512
21
21
  tests/test_cache.py,sha256=ii0gyr0DrG7ChEs7pmT8hMdSguAOAcCze4bRMiFQxuk,10640
22
- tests/test_dataset_worker.py,sha256=1joFRFmkL6XfPL9y1NYB_5QO-5FF56rwigAHrqtJMMA,23848
22
+ tests/test_dataset_worker.py,sha256=96dQ4GcmTQDV2q6WjjJI_9o3jpWTIWsOvNXrUtzFNZQ,23840
23
23
  tests/test_element.py,sha256=2G9M15TLxQRmvrWM9Kw2ucnElh4kSv_oF_5FYwwAxTY,13181
24
24
  tests/test_image.py,sha256=FZv8njLxh45sVgmY71UFHt0lv1cHr0cK4rrtPhQleX8,16262
25
25
  tests/test_merge.py,sha256=Q4zCbtZbe0wBfqE56gvAD06c6pDuhqnjKaioFqIgAQw,8331
@@ -32,7 +32,7 @@ tests/test_elements_worker/test_elements.py,sha256=6XKtgXSVQJnTSgTHWwEVsAtIwLBap
32
32
  tests/test_elements_worker/test_entities.py,sha256=yi1mXzvKvNwUNMzo0UZ56YOIJstYHcLyeepPJ8f10MQ,34557
33
33
  tests/test_elements_worker/test_metadata.py,sha256=YMYmkUSEp4WKNBm3QLcrg4yn6qVTWQ_aZzSu9Xygr80,18756
34
34
  tests/test_elements_worker/test_task.py,sha256=FCpxE9UpouKXgjGvWgNHEai_Hiy2d1YmqRG-_v2s27s,6312
35
- tests/test_elements_worker/test_training.py,sha256=3PGH6dAc2eSBD7w6ivrt1yAh6sCoici4nuIS9zdw6S8,9476
35
+ tests/test_elements_worker/test_training.py,sha256=wVYWdMdeSA6T2XyhH5AJJNGemYq3LOViiZvj0dblACA,9468
36
36
  tests/test_elements_worker/test_transcriptions.py,sha256=WVJG26sZyY66fu-Eka9A1_WWIeNI2scogjypzURnp8A,73468
37
37
  tests/test_elements_worker/test_worker.py,sha256=7-jGJVT3yMGpIyN96Uafz5eIUrO4ieNLgw0k1D8BhGc,17163
38
38
  worker-demo/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -40,8 +40,8 @@ worker-demo/tests/conftest.py,sha256=XzNMNeg6pmABUAH8jN6eZTlZSFGLYjS3-DTXjiRN6Yc
40
40
  worker-demo/tests/test_worker.py,sha256=3DLd4NRK4bfyatG5P_PK4k9P9tJHx9XQq5_ryFEEFVg,304
41
41
  worker-demo/worker_demo/__init__.py,sha256=2BPomV8ZMNf3YXJgloatKeHQCE6QOkwmsHGkO6MkQuM,125
42
42
  worker-demo/worker_demo/worker.py,sha256=Rt-DjWa5iBP08k58NDZMfeyPuFbtNcbX6nc5jFX7GNo,440
43
- arkindex_base_worker-0.3.7.dist-info/LICENSE,sha256=NVshRi1efwVezMfW7xXYLrdDr2Li1AfwfGOd5WuH1kQ,1063
44
- arkindex_base_worker-0.3.7.dist-info/METADATA,sha256=AH2_i5Ne_vAPAYdQhlFhJQogSzDuLFtxueFsDMpkbMw,3458
45
- arkindex_base_worker-0.3.7.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
46
- arkindex_base_worker-0.3.7.dist-info/top_level.txt,sha256=58NuslgxQC2vT4DiqZEgO4JqJRrYa2yeNI9QvkbfGQU,40
47
- arkindex_base_worker-0.3.7.dist-info/RECORD,,
43
+ arkindex_base_worker-0.3.7.post1.dist-info/LICENSE,sha256=NVshRi1efwVezMfW7xXYLrdDr2Li1AfwfGOd5WuH1kQ,1063
44
+ arkindex_base_worker-0.3.7.post1.dist-info/METADATA,sha256=B1YXk05w7-l5GKbQE7q0CX3bufYAHAAnj0wSFB2Rxks,3324
45
+ arkindex_base_worker-0.3.7.post1.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
46
+ arkindex_base_worker-0.3.7.post1.dist-info/top_level.txt,sha256=58NuslgxQC2vT4DiqZEgO4JqJRrYa2yeNI9QvkbfGQU,40
47
+ arkindex_base_worker-0.3.7.post1.dist-info/RECORD,,
@@ -13,14 +13,8 @@ from tempfile import mkdtemp
13
13
  import gnupg
14
14
  import yaml
15
15
  from apistar.exceptions import ErrorResponse
16
- from tenacity import (
17
- before_sleep_log,
18
- retry,
19
- retry_if_exception,
20
- stop_after_attempt,
21
- wait_exponential,
22
- )
23
16
 
17
+ from arkindex import options_from_env
24
18
  from arkindex_worker import logger
25
19
  from arkindex_worker.cache import (
26
20
  check_version,
@@ -30,7 +24,7 @@ from arkindex_worker.cache import (
30
24
  merge_parents_cache,
31
25
  )
32
26
  from arkindex_worker.utils import close_delete_file, extract_tar_zst_archive
33
- from teklia_toolbox.requests import _get_arkindex_client, _is_500_error
27
+ from teklia_toolbox.requests import get_arkindex_client
34
28
 
35
29
 
36
30
  class ExtrasDirNotFoundError(Exception):
@@ -185,7 +179,7 @@ class BaseWorker:
185
179
  Create an ArkindexClient to make API requests towards Arkindex instances.
186
180
  """
187
181
  # Build Arkindex API client from environment variables
188
- self.api_client = _get_arkindex_client()
182
+ self.api_client = get_arkindex_client(**options_from_env())
189
183
  logger.debug(f"Setup Arkindex API client on {self.api_client.document.url}")
190
184
 
191
185
  def configure_for_developers(self):
@@ -477,23 +471,9 @@ class BaseWorker:
477
471
  # Clean up
478
472
  shutil.rmtree(base_extracted_path)
479
473
 
480
- @retry(
481
- retry=retry_if_exception(_is_500_error),
482
- wait=wait_exponential(multiplier=2, min=3),
483
- reraise=True,
484
- stop=stop_after_attempt(5),
485
- before_sleep=before_sleep_log(logger, logging.INFO),
486
- )
487
474
  def request(self, *args, **kwargs):
488
475
  """
489
476
  Wrapper around the ``ArkindexClient.request`` method.
490
-
491
- The API call will be retried up to 5 times in case of HTTP 5xx errors,
492
- with an exponential sleep time of 3, 4, 8 and 16 seconds between calls.
493
- If the 5th call still causes an HTTP 5xx error, the exception is re-raised
494
- and the caller should catch it.
495
-
496
- Log messages are displayed when an HTTP 5xx error occurs, before waiting for the next call.
497
477
  """
498
478
  return self.api_client.request(*args, **kwargs)
499
479
 
@@ -83,6 +83,9 @@ class TrainingMixin:
83
83
 
84
84
  @property
85
85
  def is_finetuning(self) -> bool:
86
+ """
87
+ Whether or not this worker is fine-tuning an existing model version.
88
+ """
86
89
  return bool(self.model_version_id)
87
90
 
88
91
  @skip_if_read_only
tests/conftest.py CHANGED
@@ -93,7 +93,7 @@ def _setup_api(responses, monkeypatch, _cache_yaml):
93
93
 
94
94
  # Fallback to prod environment
95
95
  if schema_url is None:
96
- schema_url = "https://arkindex.teklia.com/api/v1/openapi/?format=openapi-json"
96
+ schema_url = "https://arkindex.teklia.com/api/v1/openapi/?format=json"
97
97
  monkeypatch.setenv("ARKINDEX_API_SCHEMA_URL", schema_url)
98
98
 
99
99
  # Allow accessing remote API schemas
@@ -522,7 +522,7 @@ def test_run_download_dataset_artifact_api_error(
522
522
  *[
523
523
  (
524
524
  logging.INFO,
525
- f"Retrying arkindex_worker.worker.base.BaseWorker.request in {retry} seconds as it raised ErrorResponse: .",
525
+ f"Retrying arkindex.client.ArkindexClient.request in {retry} seconds as it raised ErrorResponse: .",
526
526
  )
527
527
  for retry in [3.0, 4.0, 8.0, 16.0]
528
528
  ],
@@ -184,7 +184,7 @@ def test_validate_model_version_catch_errors(
184
184
  mocker, mock_training_worker, caplog, status_code
185
185
  ):
186
186
  mocker.patch(
187
- "arkindex_worker.worker.base.BaseWorker.request.retry.retry", return_value=False
187
+ "arkindex.client.ArkindexClient.request.retry.retry", return_value=False
188
188
  )
189
189
 
190
190
  mock_training_worker.model_version = {"id": "model_version_id"}