girder-worker 5.0.19.dev26__tar.gz → 5.0.19.dev55__tar.gz

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.
Files changed (78) hide show
  1. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/PKG-INFO +2 -1
  2. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/app.py +14 -3
  3. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/docker/tasks/__init__.py +19 -14
  4. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker.egg-info/PKG-INFO +2 -1
  5. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker.egg-info/requires.txt +1 -0
  6. girder_worker-5.0.19.dev55/girder_worker.egg-info/scm_version.json +8 -0
  7. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/requirements.in +1 -0
  8. girder_worker-5.0.19.dev26/girder_worker.egg-info/scm_version.json +0 -8
  9. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/MANIFEST.in +0 -0
  10. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/.gitignore +0 -0
  11. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/__init__.py +0 -0
  12. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/_test_plugins/__init__.py +0 -0
  13. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/_test_plugins/plugins.py +0 -0
  14. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/_test_plugins/tasks.py +0 -0
  15. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/celeryconfig.py +0 -0
  16. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/context/__init__.py +0 -0
  17. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/context/girder_context.py +0 -0
  18. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/context/nongirder_context.py +0 -0
  19. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/docker/__init__.py +0 -0
  20. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/docker/io/__init__.py +0 -0
  21. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/docker/io/girder.py +0 -0
  22. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/docker/nvidia.py +0 -0
  23. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/docker/stream_adapter.py +0 -0
  24. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/docker/transforms/__init__.py +0 -0
  25. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/docker/transforms/girder.py +0 -0
  26. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/docker/utils.py +0 -0
  27. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/entrypoint.py +0 -0
  28. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/log_utils.py +0 -0
  29. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/task.py +0 -0
  30. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/utils/__init__.py +0 -0
  31. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/utils/decorators.py +0 -0
  32. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/utils/tee.py +0 -0
  33. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/utils/tests/__init__.py +0 -0
  34. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/utils/tests/contrib/__init__.py +0 -0
  35. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/utils/tests/contrib/girder_io_test.py +0 -0
  36. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/utils/tests/decorators_test.py +0 -0
  37. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/utils/tests/fake_dir/file1.txt +0 -0
  38. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/utils/tests/fake_dir/file2.txt +0 -0
  39. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/utils/tests/fake_dir/subdir/file3.txt +0 -0
  40. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/utils/tests/girder_io_test.py +0 -0
  41. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/utils/tests/tee_test.py +0 -0
  42. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/utils/tests/transform_test.py +0 -0
  43. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/utils/tests/types_test.py +0 -0
  44. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/utils/transform.py +0 -0
  45. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/utils/transforms/__init__.py +0 -0
  46. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/utils/transforms/common.py +0 -0
  47. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/utils/transforms/contrib/__init__.py +0 -0
  48. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/utils/transforms/contrib/girder_io.py +0 -0
  49. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/utils/transforms/girder_io.py +0 -0
  50. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/utils/types/__init__.py +0 -0
  51. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/utils/types/base.py +0 -0
  52. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/utils/types/boolean.py +0 -0
  53. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/utils/types/choice.py +0 -0
  54. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/utils/types/color.py +0 -0
  55. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/utils/types/girder.py +0 -0
  56. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/utils/types/girder_folder.py +0 -0
  57. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/utils/types/girder_item.py +0 -0
  58. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/utils/types/integer.py +0 -0
  59. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/utils/types/number.py +0 -0
  60. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/utils/types/number_choice.py +0 -0
  61. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/utils/types/number_multichoice.py +0 -0
  62. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/utils/types/number_vector.py +0 -0
  63. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/utils/types/range.py +0 -0
  64. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/utils/types/string.py +0 -0
  65. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/utils/types/string_choice.py +0 -0
  66. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/utils/types/string_multichoice.py +0 -0
  67. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/utils/types/string_vector.py +0 -0
  68. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/utils/types/vector.py +0 -0
  69. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker/worker.dist.cfg +0 -0
  70. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker.egg-info/SOURCES.txt +0 -0
  71. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker.egg-info/dependency_links.txt +0 -0
  72. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker.egg-info/entry_points.txt +0 -0
  73. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker.egg-info/not-zip-safe +0 -0
  74. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker.egg-info/scm_file_list.json +0 -0
  75. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/girder_worker.egg-info/top_level.txt +0 -0
  76. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/pyproject.toml +0 -0
  77. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/setup.cfg +0 -0
  78. {girder_worker-5.0.19.dev26 → girder_worker-5.0.19.dev55}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: girder-worker
3
- Version: 5.0.19.dev26
3
+ Version: 5.0.19.dev55
4
4
  Summary: Batch execution engine built on celery.
5
5
  Home-page: https://github.com/girder/girder_worker
6
6
  Author: Kitware, Inc.
@@ -21,6 +21,7 @@ Requires-Dist: requests[security]>=2.20.0
21
21
  Requires-Dist: setuptools_scm
22
22
  Requires-Dist: stevedore
23
23
  Requires-Dist: jsonpickle
24
+ Requires-Dist: packaging
24
25
  Requires-Dist: docker>=2.6.0
25
26
  Dynamic: author
26
27
  Dynamic: author-email
@@ -1,7 +1,6 @@
1
1
  import os
2
2
  import sys
3
3
  import traceback as tb
4
- from distutils.version import LooseVersion
5
4
 
6
5
  import jsonpickle
7
6
  from celery import Celery, __version__
@@ -17,6 +16,7 @@ from girder_worker.utils import (JobSpecNotFound, JobStatus, StateTransitionExce
17
16
  is_builtin_celery_task, is_revoked)
18
17
  from girder_worker.utils.transform import ResultTransform
19
18
  from kombu.serialization import register
19
+ from packaging.version import Version
20
20
 
21
21
  CeleryAppInfo = {'threads_pool': False}
22
22
 
@@ -101,7 +101,7 @@ def _capture_celery_pool(sender, **kwargs):
101
101
 
102
102
  @worker_ready.connect
103
103
  def check_celery_version(*args, **kwargs):
104
- if LooseVersion(__version__) < LooseVersion('4.0.0'):
104
+ if Version(__version__) < Version('4.0.0'):
105
105
  sys.exit("""You are running Celery {}.
106
106
 
107
107
  girder-worker requires celery>=4.0.0""".format(__version__))
@@ -221,7 +221,18 @@ def gw_task_revoked(sender=None, request=None, **rest):
221
221
  "No jobInfoSpec. Unable to move \'%s\' into CANCELED state.")
222
222
 
223
223
 
224
- register('girder_io', jsonpickle.encode, jsonpickle.decode,
224
+ def _girder_io_encode(data):
225
+ # jsonpickle defaults `keys` to False but plans to default it to True in
226
+ # jsonpickle 5.0.0. Pass it explicitly so behavior is stable and no
227
+ # deprecation warning is emitted.
228
+ return jsonpickle.encode(data, keys=True)
229
+
230
+
231
+ def _girder_io_decode(data):
232
+ return jsonpickle.decode(data, keys=True)
233
+
234
+
235
+ register('girder_io', _girder_io_encode, _girder_io_decode,
225
236
  content_type='application/json',
226
237
  content_encoding='utf-8')
227
238
 
@@ -369,20 +369,25 @@ class DockerTask(Task):
369
369
  daemon=True).start()
370
370
 
371
371
  def _cleanup_temp_volumes(self, temp_volumes, default_temp_volume):
372
- # Set the permission to allow cleanup of temp directories
373
- temp_volumes = [v for v in temp_volumes if os.path.exists(v.host_path)]
374
- to_chmod = temp_volumes[:]
375
- # If our default_temp_volume instance has been transformed then we
376
- # know it has been used and we have to clean it up.
377
- if default_temp_volume._transformed:
378
- to_chmod.append(default_temp_volume)
379
- temp_volumes.append(default_temp_volume)
380
-
381
- if len(to_chmod) > 0:
382
- utils.chmod_writable([v.host_path for v in to_chmod])
383
-
384
- for v in temp_volumes:
385
- shutil.rmtree(v.host_path)
372
+ # This runs in a daemon thread, so it must never raise; an unhandled
373
+ # exception here would be reported as an unhandled thread exception.
374
+ try:
375
+ # Set the permission to allow cleanup of temp directories
376
+ temp_volumes = [v for v in temp_volumes if os.path.exists(v.host_path)]
377
+ to_chmod = temp_volumes[:]
378
+ # If our default_temp_volume instance has been transformed then we
379
+ # know it has been used and we have to clean it up.
380
+ if default_temp_volume._transformed:
381
+ to_chmod.append(default_temp_volume)
382
+ temp_volumes.append(default_temp_volume)
383
+
384
+ if len(to_chmod) > 0:
385
+ utils.chmod_writable([v.host_path for v in to_chmod])
386
+
387
+ for v in temp_volumes:
388
+ shutil.rmtree(v.host_path)
389
+ except Exception:
390
+ logger.exception('Failed to clean up temporary docker volumes')
386
391
 
387
392
 
388
393
  def _add_environment_kargs(run_kwargs):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: girder-worker
3
- Version: 5.0.19.dev26
3
+ Version: 5.0.19.dev55
4
4
  Summary: Batch execution engine built on celery.
5
5
  Home-page: https://github.com/girder/girder_worker
6
6
  Author: Kitware, Inc.
@@ -21,6 +21,7 @@ Requires-Dist: requests[security]>=2.20.0
21
21
  Requires-Dist: setuptools_scm
22
22
  Requires-Dist: stevedore
23
23
  Requires-Dist: jsonpickle
24
+ Requires-Dist: packaging
24
25
  Requires-Dist: docker>=2.6.0
25
26
  Dynamic: author
26
27
  Dynamic: author-email
@@ -8,4 +8,5 @@ requests[security]>=2.20.0
8
8
  setuptools_scm
9
9
  stevedore
10
10
  jsonpickle
11
+ packaging
11
12
  docker>=2.6.0
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "5.0.18",
3
+ "distance": 55,
4
+ "node": "gd8dc249db5e9f7a334928dbab54598d3613063c1",
5
+ "dirty": false,
6
+ "branch": "master",
7
+ "node_date": "2026-10-07"
8
+ }
@@ -8,4 +8,5 @@ requests[security]>=2.20.0
8
8
  setuptools_scm
9
9
  stevedore
10
10
  jsonpickle
11
+ packaging
11
12
  docker>=2.6.0
@@ -1,8 +0,0 @@
1
- {
2
- "tag": "5.0.18",
3
- "distance": 26,
4
- "node": "g0394c0b3df2aec1e0fc0c2b9d3ba34964715a9ef",
5
- "dirty": false,
6
- "branch": "master",
7
- "node_date": "2026-10-02"
8
- }