girder-worker 5.0.14.dev12__tar.gz → 5.0.15.dev2__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.
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/PKG-INFO +1 -1
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/app.py +21 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/docker/tasks/__init__.py +37 -9
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/task.py +16 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/__init__.py +7 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker.egg-info/PKG-INFO +1 -1
- girder_worker-5.0.15.dev2/girder_worker.egg-info/scm_version.json +8 -0
- girder_worker-5.0.14.dev12/girder_worker.egg-info/scm_version.json +0 -8
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/MANIFEST.in +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/.gitignore +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/__init__.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/_test_plugins/__init__.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/_test_plugins/plugins.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/_test_plugins/tasks.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/celeryconfig.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/context/__init__.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/context/girder_context.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/context/nongirder_context.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/docker/__init__.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/docker/io/__init__.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/docker/io/girder.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/docker/nvidia.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/docker/stream_adapter.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/docker/transforms/__init__.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/docker/transforms/girder.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/docker/utils.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/entrypoint.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/log_utils.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/decorators.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/tee.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/tests/__init__.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/tests/contrib/__init__.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/tests/contrib/girder_io_test.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/tests/decorators_test.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/tests/fake_dir/file1.txt +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/tests/fake_dir/file2.txt +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/tests/fake_dir/subdir/file3.txt +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/tests/girder_io_test.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/tests/tee_test.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/tests/transform_test.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/tests/types_test.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/transform.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/transforms/__init__.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/transforms/common.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/transforms/contrib/__init__.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/transforms/contrib/girder_io.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/transforms/girder_io.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/types/__init__.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/types/base.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/types/boolean.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/types/choice.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/types/color.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/types/girder.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/types/girder_folder.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/types/girder_item.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/types/integer.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/types/number.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/types/number_choice.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/types/number_multichoice.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/types/number_vector.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/types/range.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/types/string.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/types/string_choice.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/types/string_multichoice.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/types/string_vector.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/types/vector.py +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/worker.dist.cfg +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker.egg-info/SOURCES.txt +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker.egg-info/dependency_links.txt +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker.egg-info/entry_points.txt +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker.egg-info/not-zip-safe +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker.egg-info/requires.txt +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker.egg-info/scm_file_list.json +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker.egg-info/top_level.txt +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/pyproject.toml +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/requirements.in +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/setup.cfg +0 -0
- {girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/setup.py +0 -0
|
@@ -18,6 +18,8 @@ from girder_worker.utils import (JobSpecNotFound, JobStatus, StateTransitionExce
|
|
|
18
18
|
from girder_worker.utils.transform import ResultTransform
|
|
19
19
|
from kombu.serialization import register
|
|
20
20
|
|
|
21
|
+
CeleryAppInfo = {'threads_pool': False}
|
|
22
|
+
|
|
21
23
|
|
|
22
24
|
@before_task_publish.connect # noqa: C901
|
|
23
25
|
def girder_before_task_publish(sender=None, body=None, exchange=None,
|
|
@@ -78,6 +80,25 @@ def girder_before_task_publish(sender=None, body=None, exchange=None,
|
|
|
78
80
|
raise
|
|
79
81
|
|
|
80
82
|
|
|
83
|
+
@worker_ready.connect
|
|
84
|
+
def _capture_celery_pool(sender, **kwargs):
|
|
85
|
+
"""
|
|
86
|
+
Determine if the celery task pool is thread based; we use this to govern
|
|
87
|
+
some logging choices.
|
|
88
|
+
|
|
89
|
+
:param sender: a celery.worker.worker.Worker instance
|
|
90
|
+
"""
|
|
91
|
+
pool = getattr(sender, 'pool', None)
|
|
92
|
+
try:
|
|
93
|
+
if pool and 'thread' in type(pool).__module__.lower():
|
|
94
|
+
CeleryAppInfo['threads_pool'] = True
|
|
95
|
+
logger.info('Using a threads pool')
|
|
96
|
+
else:
|
|
97
|
+
logger.info('Not using a threads pool')
|
|
98
|
+
except Exception:
|
|
99
|
+
logger.exception('Failed to determine pool type')
|
|
100
|
+
|
|
101
|
+
|
|
81
102
|
@worker_ready.connect
|
|
82
103
|
def check_celery_version(*args, **kwargs):
|
|
83
104
|
if LooseVersion(__version__) < LooseVersion('4.0.0'):
|
{girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/docker/tasks/__init__.py
RENAMED
|
@@ -40,6 +40,10 @@ def _pull_image(image):
|
|
|
40
40
|
raise
|
|
41
41
|
|
|
42
42
|
|
|
43
|
+
def _is_no_such_container(exc):
|
|
44
|
+
return 'No such container' in str(exc) or type(exc).__name__ == 'NotFound'
|
|
45
|
+
|
|
46
|
+
|
|
43
47
|
def _get_docker_network():
|
|
44
48
|
try:
|
|
45
49
|
ip = socket.gethostbyname(socket.gethostname())
|
|
@@ -48,10 +52,23 @@ def _get_docker_network():
|
|
|
48
52
|
client = docker.from_env(version='auto', timeout=timeout)
|
|
49
53
|
else:
|
|
50
54
|
client = docker.from_env(version='auto')
|
|
51
|
-
|
|
52
|
-
|
|
55
|
+
# we use client.api.containers rather than client.containers.list
|
|
56
|
+
# because containers.lists casts to a list which can throw an
|
|
57
|
+
# exception rather than allowing graceful handling.
|
|
58
|
+
for container in client.api.containers(all=True, filters={'status': ['running']}):
|
|
59
|
+
cid = container.get('Id') or container.get('ID')
|
|
60
|
+
if not cid:
|
|
61
|
+
continue
|
|
62
|
+
try:
|
|
63
|
+
data = client.api.inspect_container(cid)
|
|
64
|
+
except Exception as exc:
|
|
65
|
+
if _is_no_such_container(exc):
|
|
66
|
+
continue
|
|
67
|
+
raise
|
|
68
|
+
networks = (data.get('NetworkSettings', {}) or {}).get('Networks', {}) or {}
|
|
69
|
+
for nw in networks.values():
|
|
53
70
|
if nw['IPAddress'] == ip:
|
|
54
|
-
return 'container:%s' %
|
|
71
|
+
return 'container:%s' % cid
|
|
55
72
|
except Exception:
|
|
56
73
|
logger.exception('Failed to get docker network')
|
|
57
74
|
|
|
@@ -59,12 +76,23 @@ def _get_docker_network():
|
|
|
59
76
|
def _remove_stopped_container(client, name):
|
|
60
77
|
if name is None:
|
|
61
78
|
return
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
79
|
+
# we use client.api.containers rather than client.containers.list
|
|
80
|
+
# because containers.lists casts to a list which can throw an
|
|
81
|
+
# exception rather than allowing graceful handling.
|
|
82
|
+
try:
|
|
83
|
+
for container in client.api.containers(all=True, filters={'name': [name]}):
|
|
84
|
+
cid = container.get('Id') or container.get('ID')
|
|
85
|
+
if not cid:
|
|
86
|
+
continue
|
|
87
|
+
try:
|
|
88
|
+
logger.info('Removing container %s ' % (name))
|
|
89
|
+
client.api.remove_container(cid)
|
|
90
|
+
except Exception:
|
|
91
|
+
pass
|
|
92
|
+
except Exception as exc:
|
|
93
|
+
if _is_no_such_container(exc):
|
|
94
|
+
return
|
|
95
|
+
raise
|
|
68
96
|
|
|
69
97
|
|
|
70
98
|
def _run_container(image, container_args, **kwargs):
|
|
@@ -172,3 +172,19 @@ class Task(celery.Task):
|
|
|
172
172
|
if hasattr(self.request, 'girder_result_hooks'):
|
|
173
173
|
for hook in self.request.girder_result_hooks:
|
|
174
174
|
self._maybe_cleanup(hook)
|
|
175
|
+
|
|
176
|
+
@property
|
|
177
|
+
def job_manager(self):
|
|
178
|
+
return getattr(self.request, 'girder_job_manager', None)
|
|
179
|
+
|
|
180
|
+
@job_manager.setter
|
|
181
|
+
def job_manager(self, value):
|
|
182
|
+
self.request.girder_job_manager = value
|
|
183
|
+
|
|
184
|
+
@property
|
|
185
|
+
def girder_client(self):
|
|
186
|
+
return getattr(self.request, 'girder_client_instance', None)
|
|
187
|
+
|
|
188
|
+
@girder_client.setter
|
|
189
|
+
def girder_client(self, value):
|
|
190
|
+
self.request.girder_client_instance = value
|
|
@@ -358,6 +358,13 @@ class JobManager:
|
|
|
358
358
|
:type interval: int or float
|
|
359
359
|
:param reference: optional reference to store with the job.
|
|
360
360
|
"""
|
|
361
|
+
from ..app import CeleryAppInfo
|
|
362
|
+
|
|
363
|
+
# When we are using a threads pool, tee-ing stdout and stderr to
|
|
364
|
+
# logPrint can lead to the logs being written to multiple threads and
|
|
365
|
+
# therefore multiple workers.
|
|
366
|
+
if CeleryAppInfo['threads_pool']:
|
|
367
|
+
logPrint = None
|
|
361
368
|
self.logPrint = logPrint
|
|
362
369
|
self.method = method or 'PUT'
|
|
363
370
|
self.url = url
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/_test_plugins/__init__.py
RENAMED
|
File without changes
|
{girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/_test_plugins/plugins.py
RENAMED
|
File without changes
|
{girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/_test_plugins/tasks.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/context/girder_context.py
RENAMED
|
File without changes
|
{girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/context/nongirder_context.py
RENAMED
|
File without changes
|
|
File without changes
|
{girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/docker/io/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/docker/stream_adapter.py
RENAMED
|
File without changes
|
{girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/docker/transforms/__init__.py
RENAMED
|
File without changes
|
{girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/docker/transforms/girder.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/tests/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/tests/girder_io_test.py
RENAMED
|
File without changes
|
{girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/tests/tee_test.py
RENAMED
|
File without changes
|
{girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/tests/transform_test.py
RENAMED
|
File without changes
|
{girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/tests/types_test.py
RENAMED
|
File without changes
|
|
File without changes
|
{girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/transforms/__init__.py
RENAMED
|
File without changes
|
{girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/transforms/common.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/transforms/girder_io.py
RENAMED
|
File without changes
|
{girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/types/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/types/boolean.py
RENAMED
|
File without changes
|
{girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/types/choice.py
RENAMED
|
File without changes
|
|
File without changes
|
{girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/types/girder.py
RENAMED
|
File without changes
|
{girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/types/girder_folder.py
RENAMED
|
File without changes
|
{girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/types/girder_item.py
RENAMED
|
File without changes
|
{girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/types/integer.py
RENAMED
|
File without changes
|
{girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/types/number.py
RENAMED
|
File without changes
|
{girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/types/number_choice.py
RENAMED
|
File without changes
|
|
File without changes
|
{girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/types/number_vector.py
RENAMED
|
File without changes
|
|
File without changes
|
{girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/types/string.py
RENAMED
|
File without changes
|
{girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/types/string_choice.py
RENAMED
|
File without changes
|
|
File without changes
|
{girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/types/string_vector.py
RENAMED
|
File without changes
|
{girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker/utils/types/vector.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker.egg-info/entry_points.txt
RENAMED
|
File without changes
|
{girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker.egg-info/not-zip-safe
RENAMED
|
File without changes
|
{girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker.egg-info/requires.txt
RENAMED
|
File without changes
|
{girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker.egg-info/scm_file_list.json
RENAMED
|
File without changes
|
{girder_worker-5.0.14.dev12 → girder_worker-5.0.15.dev2}/girder_worker.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|