virtool-workflow 6.0.0a7__py3-none-any.whl → 6.0.0a9__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.
Files changed (34) hide show
  1. virtool_workflow/analysis/fastqc.py +15 -18
  2. virtool_workflow/analysis/skewer.py +14 -21
  3. virtool_workflow/analysis/trimming.py +3 -6
  4. virtool_workflow/api/acquire.py +4 -6
  5. virtool_workflow/api/client.py +11 -15
  6. virtool_workflow/api/utils.py +9 -12
  7. virtool_workflow/data/analyses.py +4 -9
  8. virtool_workflow/data/hmms.py +5 -10
  9. virtool_workflow/data/indexes.py +12 -21
  10. virtool_workflow/data/jobs.py +2 -2
  11. virtool_workflow/data/ml.py +16 -8
  12. virtool_workflow/data/samples.py +8 -12
  13. virtool_workflow/data/subtractions.py +11 -17
  14. virtool_workflow/data/uploads.py +2 -3
  15. virtool_workflow/decorators.py +2 -5
  16. virtool_workflow/errors.py +1 -9
  17. virtool_workflow/hooks.py +2 -4
  18. virtool_workflow/pytest_plugin/data.py +8 -4
  19. virtool_workflow/pytest_plugin/subprocess.py +1 -1
  20. virtool_workflow/runtime/discover.py +5 -9
  21. virtool_workflow/runtime/hook.py +4 -7
  22. virtool_workflow/runtime/path.py +1 -1
  23. virtool_workflow/runtime/ping.py +1 -2
  24. virtool_workflow/runtime/run.py +13 -16
  25. virtool_workflow/runtime/run_subprocess.py +7 -10
  26. virtool_workflow/runtime/sentry.py +2 -3
  27. virtool_workflow/utils.py +12 -1
  28. virtool_workflow/workflow.py +6 -10
  29. {virtool_workflow-6.0.0a7.dist-info → virtool_workflow-6.0.0a9.dist-info}/METADATA +2 -2
  30. virtool_workflow-6.0.0a9.dist-info/RECORD +46 -0
  31. virtool_workflow-6.0.0a7.dist-info/RECORD +0 -46
  32. {virtool_workflow-6.0.0a7.dist-info → virtool_workflow-6.0.0a9.dist-info}/LICENSE +0 -0
  33. {virtool_workflow-6.0.0a7.dist-info → virtool_workflow-6.0.0a9.dist-info}/WHEEL +0 -0
  34. {virtool_workflow-6.0.0a7.dist-info → virtool_workflow-6.0.0a9.dist-info}/entry_points.txt +0 -0
virtool_workflow/utils.py CHANGED
@@ -1,8 +1,9 @@
1
1
  import asyncio
2
+ import tarfile
3
+ from collections.abc import Callable
2
4
  from functools import wraps
3
5
  from inspect import iscoroutinefunction
4
6
  from pathlib import Path
5
- from typing import Callable
6
7
 
7
8
 
8
9
  def coerce_to_coroutine_function(func: Callable):
@@ -19,3 +20,13 @@ def coerce_to_coroutine_function(func: Callable):
19
20
 
20
21
  async def make_directory(path: Path):
21
22
  await asyncio.to_thread(path.mkdir, exist_ok=True, parents=True)
23
+
24
+
25
+ def untar(path: Path, target_path: Path):
26
+ with tarfile.open(path, "r:gz") as tar:
27
+ tar.extractall(target_path)
28
+
29
+
30
+ def move_all_model_files(source_path: Path, target_path: Path):
31
+ for file in source_path.iterdir():
32
+ file.rename(target_path / file.name)
@@ -2,21 +2,20 @@
2
2
  from __future__ import annotations
3
3
 
4
4
  from dataclasses import dataclass, field
5
- from typing import Callable, Optional, Awaitable, Any
5
+ from typing import Any, Awaitable, Callable, Optional
6
6
 
7
7
  from virtool_workflow.utils import coerce_to_coroutine_function
8
8
 
9
9
 
10
10
  @dataclass
11
11
  class Workflow:
12
- """
13
- A step-wise, long-running operation.
12
+ """A step-wise, long-running operation.
14
13
  """
15
14
 
16
15
  steps: list[WorkflowStep] = field(default_factory=list)
17
16
 
18
17
  def step(
19
- self, step: Optional[Callable] = None, *, name: str | None = None
18
+ self, step: Optional[Callable] = None, *, name: str | None = None,
20
19
  ) -> Callable:
21
20
  """Decorator for adding a step to the workflow."""
22
21
  if step is None:
@@ -33,8 +32,7 @@ class Workflow:
33
32
 
34
33
  @dataclass(frozen=True)
35
34
  class WorkflowStep:
36
- """
37
- Metadata for a workflow step.
35
+ """Metadata for a workflow step.
38
36
 
39
37
  :param name: The presentation name for the step.
40
38
  :param description: The description of the step.
@@ -53,8 +51,7 @@ class WorkflowStep:
53
51
  display_name: str = None,
54
52
  description: str = None,
55
53
  ) -> WorkflowStep:
56
- """
57
- Create a WorkflowStep from a callable.
54
+ """Create a WorkflowStep from a callable.
58
55
 
59
56
  :param func: The callable to be used.
60
57
  :param display_name: The display name to be used, if None then a display name
@@ -82,8 +79,7 @@ class WorkflowStep:
82
79
 
83
80
 
84
81
  def _get_description_from_docstring(func: Callable[..., Any]) -> str:
85
- """
86
- Extract the first line of the docstring as a description for a step function.
82
+ """Extract the first line of the docstring as a description for a step function.
87
83
 
88
84
  :param func: The step function to get the description for
89
85
  :raise ValueError: When `call` does not have a docstring
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: virtool-workflow
3
- Version: 6.0.0a7
3
+ Version: 6.0.0a9
4
4
  Summary: A framework for developing bioinformatics workflows for Virtool.
5
5
  Home-page: https://github.com/virtool/virtool-workflow
6
6
  License: MIT
@@ -19,7 +19,7 @@ Requires-Dist: orjson (>=3.9.9,<4.0.0)
19
19
  Requires-Dist: pydantic-factories (>=1.17.3,<2.0.0)
20
20
  Requires-Dist: pyfixtures (>=1.0.0,<2.0.0)
21
21
  Requires-Dist: sentry-sdk (>=1.5.7,<2.0.0)
22
- Requires-Dist: virtool-core (>=10.0.1,<11.0.0)
22
+ Requires-Dist: virtool-core (>=11.0.0,<12.0.0)
23
23
  Project-URL: Repository, https://github.com/virtool/virtool-workflow
24
24
  Description-Content-Type: text/markdown
25
25
 
@@ -0,0 +1,46 @@
1
+ virtool_workflow/__init__.py,sha256=Tw0lAFudpsFyCaiR2Oz_RKYU6N-mSCmhXDftm1WT37M,308
2
+ virtool_workflow/analysis/__init__.py,sha256=eRMQhKOxijlFlYI78FzmHZoF1qYevBXycpIcmlrgFqI,57
3
+ virtool_workflow/analysis/fastqc.py,sha256=pNorkhNVazV30fBY3KEJ6vfEskqsBzp80a_Iai8BOn8,13149
4
+ virtool_workflow/analysis/skewer.py,sha256=_kTCLd6XUUscgMgPVc50Xcwy1QZzxCwxbEmYgm6PQwc,7130
5
+ virtool_workflow/analysis/trimming.py,sha256=rJG9f1mDMkivN-YcxU-_IubTUkn-oyG3NUUrhGuHWzs,1447
6
+ virtool_workflow/analysis/utils.py,sha256=YU1_yInZzTNl9nKQTebUz47kUEqZ__d0k-RMLX8DWOA,1108
7
+ virtool_workflow/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
+ virtool_workflow/api/acquire.py,sha256=lEKXglgIeiJ_yl6hPzuBklIOrSWvyr8MpIl2LA4JL7w,2134
9
+ virtool_workflow/api/client.py,sha256=wOAAX0Na1IrULWUTGq0wzbjquZqmZqCnc0gb2A2JvLE,4604
10
+ virtool_workflow/api/utils.py,sha256=IfVqw7LIgwJqdvINjClPUxj4HqQPvi_8KC7HJrjy8T4,3083
11
+ virtool_workflow/cli.py,sha256=yEl1LziABKbjc5MCOoUGLy-iuqehOou37x9ox4LA92M,1441
12
+ virtool_workflow/data/__init__.py,sha256=L2bQ5rMpnCMuLWDMwel4-wPchfQCTHH3EEwxDqwGOsY,610
13
+ virtool_workflow/data/analyses.py,sha256=EzXfidKizEV_KjvaWrMLZpUMo0H2KCE_EI3IQPAFjT4,3117
14
+ virtool_workflow/data/hmms.py,sha256=h9ahtprzhEsHNscsr_--2vkkKFNWgZu49ojkHRw9Ars,3234
15
+ virtool_workflow/data/indexes.py,sha256=tKCuNoxHlXNPb5YVPS8Qfa1bXkH-BAcHnrIu-DlkjlU,8997
16
+ virtool_workflow/data/jobs.py,sha256=LXIsEjgJx_bRa19_3gx5kxfdCmNez-xlAT7e-4bOcLo,1667
17
+ virtool_workflow/data/ml.py,sha256=E19USVcXWjCU2NH1QVR74PLBnVY66NKJG00DSxnn1yY,2190
18
+ virtool_workflow/data/samples.py,sha256=nI5pkK4hAAjKVzt1dLy7Ur6veLL3Wb435URjfSxgGt8,4899
19
+ virtool_workflow/data/subtractions.py,sha256=nimId8QTXP-NFV3yD_5HtueEkh_Ui3ykmyR9QdPZkQQ,7242
20
+ virtool_workflow/data/uploads.py,sha256=jjQ8hczvkSV-B8dioSDB_E5kA2S_4kDYDmr86TxOqbA,905
21
+ virtool_workflow/decorators.py,sha256=5V_9f7ZaXCSY52zGw23vaTzG6m2k5BuDAttfzMr8jn4,1274
22
+ virtool_workflow/errors.py,sha256=_MR9gpU5VYpG88URKZTq6Od4Ix-MAwjNjHm5URNp_9o,1152
23
+ virtool_workflow/files.py,sha256=hYztls3n30WTaI6rtZjrBobN1SaEGCHr4vWK8bhMJr0,384
24
+ virtool_workflow/hooks.py,sha256=M4q38tscp_ndpJ4wDOWslKLAu5K-fYwJLHnVG7E0tEU,2683
25
+ virtool_workflow/pytest_plugin/__init__.py,sha256=A69bQFoqZ_NiZnV2N8ubUFQLBkxiMdnqADJaiQUBM9g,174
26
+ virtool_workflow/pytest_plugin/data.py,sha256=2VFbKS0J-weX_hsXKFF_fV42sVCU_mQprzcGTik2sLo,5602
27
+ virtool_workflow/pytest_plugin/subprocess.py,sha256=dxbanWy1kMjN5pdowhZqipB1uMt3Dor-DgQSu9xzAFE,229
28
+ virtool_workflow/pytest_plugin/utils.py,sha256=lxyWqHKWXGxQXBIbcYUCC6PvjSeruhSDnD-dPX1mL5Y,211
29
+ virtool_workflow/runtime/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
+ virtool_workflow/runtime/config.py,sha256=fHkprWxxqWeEWKOobxpVvSOS5Njk5Mq32sH-p5o_d8g,546
31
+ virtool_workflow/runtime/discover.py,sha256=DsXII4f1cO0JT-csardzN-PfcuJ09SAFBgfDydZikFo,2933
32
+ virtool_workflow/runtime/events.py,sha256=ZIX3veBfC_2yNTdClHJaYMPn4KAF9JZqpQ3qDq4ox_E,138
33
+ virtool_workflow/runtime/hook.py,sha256=ZfmvDHoSE7Qwk4Rpcjyd-pYuwP55mzEddec2ngRZpsg,4328
34
+ virtool_workflow/runtime/path.py,sha256=J8CsNMTg4XgDtib0gVSsLNvv17q793M-ydsxN6pkHrI,562
35
+ virtool_workflow/runtime/ping.py,sha256=Xm4udRCcldHfSV1Rjpiqr-6vE7G6kaVaZgDlzNSxdao,1434
36
+ virtool_workflow/runtime/redis.py,sha256=guLNxe0VbW5QSuSWRXO0bl9GLwHOQWWOvs5QIacLjqA,1601
37
+ virtool_workflow/runtime/run.py,sha256=e0MnCUafJdsj3oI1r1YC2skEDp4ck2v7YFqIdBkDaIk,8192
38
+ virtool_workflow/runtime/run_subprocess.py,sha256=wF0zPxkd8ft8o9wEzdLlouWXgDTO8aGkaqmQWqClHGI,4270
39
+ virtool_workflow/runtime/sentry.py,sha256=tqhkvbGpUhfcRZOyupIrg4t-FeTWf3wfBv0GYdYNTds,744
40
+ virtool_workflow/utils.py,sha256=3DMGezuMi-8jIfpUpYUTgqqsvnPFsaQhZCH31o6OiQA,818
41
+ virtool_workflow/workflow.py,sha256=W8IEFzd28wjdNNlqRrPDKyX9LeQpR6Vxy7zKeYEMQEc,2655
42
+ virtool_workflow-6.0.0a9.dist-info/LICENSE,sha256=nkoVQw9W4aoQM9zgtNzHDmztap5TuXZ1L2-87vNr3w8,1097
43
+ virtool_workflow-6.0.0a9.dist-info/METADATA,sha256=0eZCbeBEDncqX9ekyw408vjXQ2Hmsr5oG1CzneT_hYM,4414
44
+ virtool_workflow-6.0.0a9.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
45
+ virtool_workflow-6.0.0a9.dist-info/entry_points.txt,sha256=d4MA8ZDTJOU0jKZ3ymtHZbfLVoRPgItEIN5U4uIqay8,62
46
+ virtool_workflow-6.0.0a9.dist-info/RECORD,,
@@ -1,46 +0,0 @@
1
- virtool_workflow/__init__.py,sha256=Tw0lAFudpsFyCaiR2Oz_RKYU6N-mSCmhXDftm1WT37M,308
2
- virtool_workflow/analysis/__init__.py,sha256=eRMQhKOxijlFlYI78FzmHZoF1qYevBXycpIcmlrgFqI,57
3
- virtool_workflow/analysis/fastqc.py,sha256=SNXcq7thdJYHFr1kwTUG0CJLRDG1N0hTVSTrs5xuOA4,13151
4
- virtool_workflow/analysis/skewer.py,sha256=CemHLab4b_HIU1yHTB2CtHYRVM488pHnrggOxF90jAk,7159
5
- virtool_workflow/analysis/trimming.py,sha256=fTti5ND57Qcv5pIEKEZ9wYKe4K72-iYr6ixfnfJV60U,1457
6
- virtool_workflow/analysis/utils.py,sha256=YU1_yInZzTNl9nKQTebUz47kUEqZ__d0k-RMLX8DWOA,1108
7
- virtool_workflow/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
- virtool_workflow/api/acquire.py,sha256=lViVFwQLf6IAmoK9kkzx3RAbXWgZ33KdYALDqK9eqGU,2139
9
- virtool_workflow/api/client.py,sha256=OoAW6RdLBdnSJ0TMEtQq7SsbaLuGXTyJ0L2lzvfhV_E,4623
10
- virtool_workflow/api/utils.py,sha256=FNGD99UJKbQeNIxnoVwvsW1bXI25hRi87kpdiqsXkHE,3096
11
- virtool_workflow/cli.py,sha256=yEl1LziABKbjc5MCOoUGLy-iuqehOou37x9ox4LA92M,1441
12
- virtool_workflow/data/__init__.py,sha256=L2bQ5rMpnCMuLWDMwel4-wPchfQCTHH3EEwxDqwGOsY,610
13
- virtool_workflow/data/analyses.py,sha256=UdNrQWAvWHZwPLJinx_2_OK5eBeRlObVEx2QHcbFuRk,3150
14
- virtool_workflow/data/hmms.py,sha256=-ANZkM3C7p25zCEeS4WJFskBvHZWcpKjFDBZC2Z9HEA,3271
15
- virtool_workflow/data/indexes.py,sha256=woF5iKb011nj5Sq37wasKb-xf8gH-xugJSusqcV6Avk,9072
16
- virtool_workflow/data/jobs.py,sha256=VALeDaaT0WWqDyGsiNxbeKIcdklYZljWhu0zBhUPZs0,1667
17
- virtool_workflow/data/ml.py,sha256=Yoc4ePH-J_4BKi-wjCKFD6vuI58g3Jw7SKk4ri9ymQ4,1891
18
- virtool_workflow/data/samples.py,sha256=p58-qwHsaPoa3oGiDM5yibVibuvH5JPhfx8zNuTq9KE,4915
19
- virtool_workflow/data/subtractions.py,sha256=X-R8t5gIboHVE7kHyziWntuoyb1SbTjSV9UETB0Tt38,7282
20
- virtool_workflow/data/uploads.py,sha256=sIpuS2AtJ5yvZWitkzqb6hG1iLVe7K4q6UIsEDizFCE,899
21
- virtool_workflow/decorators.py,sha256=mh4_wBVLcAQYkn_aPonYEb2TP7NxORVdjBVgfehjHwQ,1285
22
- virtool_workflow/errors.py,sha256=CaFd4JNBAALU7ZK8_k9YJwluX_wUYZMbdf0uN7BsFXw,1215
23
- virtool_workflow/files.py,sha256=hYztls3n30WTaI6rtZjrBobN1SaEGCHr4vWK8bhMJr0,384
24
- virtool_workflow/hooks.py,sha256=-KRoFfqR_nDLt3R0hC4Phmu7C-HCnfzd_obU_CyydBE,2689
25
- virtool_workflow/pytest_plugin/__init__.py,sha256=A69bQFoqZ_NiZnV2N8ubUFQLBkxiMdnqADJaiQUBM9g,174
26
- virtool_workflow/pytest_plugin/data.py,sha256=T5nQBgYmsa8FntOf9HngohQP7XUIylWuzD1PLZIvpuU,5533
27
- virtool_workflow/pytest_plugin/subprocess.py,sha256=GZawpdhIR9DIBYiJjjn4QoK7YoM3qAumpuwSl_0Bl2k,227
28
- virtool_workflow/pytest_plugin/utils.py,sha256=lxyWqHKWXGxQXBIbcYUCC6PvjSeruhSDnD-dPX1mL5Y,211
29
- virtool_workflow/runtime/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
- virtool_workflow/runtime/config.py,sha256=fHkprWxxqWeEWKOobxpVvSOS5Njk5Mq32sH-p5o_d8g,546
31
- virtool_workflow/runtime/discover.py,sha256=IbCZ5FanxpGvdkdJJCgg22Ry9EhCIJbcVJQAToObLXk,2953
32
- virtool_workflow/runtime/events.py,sha256=ZIX3veBfC_2yNTdClHJaYMPn4KAF9JZqpQ3qDq4ox_E,138
33
- virtool_workflow/runtime/hook.py,sha256=b4IpkWQaGx2IjzDcxXzuv7ZnR7I_r4Dt2kOU_brNRm4,4354
34
- virtool_workflow/runtime/path.py,sha256=4-GpdpGeVKvyu_myLkW9mUT3AGsqYlBkGYB1RDZr2tI,562
35
- virtool_workflow/runtime/ping.py,sha256=8ImcFLnofSqVJsyHmXm-EoVBp8HlKeonC6RT6IF0sik,1439
36
- virtool_workflow/runtime/redis.py,sha256=guLNxe0VbW5QSuSWRXO0bl9GLwHOQWWOvs5QIacLjqA,1601
37
- virtool_workflow/runtime/run.py,sha256=PdmIydoeUNwKeGF4MFmQus27MocQ7vZEQQLQA6AhofY,8203
38
- virtool_workflow/runtime/run_subprocess.py,sha256=AviofEsOvp0buXRST-IxAW2txLwoTVCbKEt16pQhsVE,4295
39
- virtool_workflow/runtime/sentry.py,sha256=6WNUYeQCoofP49cCmEy5bn_JRc3CSQmy7pnDW3XnAbc,748
40
- virtool_workflow/utils.py,sha256=wJHdTcuwC3wzYfJVM32MJo1Xdn-6r7V1bJRoLr9mhU0,520
41
- virtool_workflow/workflow.py,sha256=RxboCKLyCpfikPLIw7QFss77ERNlw8tJZhIXFB88DBs,2678
42
- virtool_workflow-6.0.0a7.dist-info/LICENSE,sha256=nkoVQw9W4aoQM9zgtNzHDmztap5TuXZ1L2-87vNr3w8,1097
43
- virtool_workflow-6.0.0a7.dist-info/METADATA,sha256=owGWvfsIn5fydYK24WnOA4tqRwUDeIRsoOzpH7I2hN8,4414
44
- virtool_workflow-6.0.0a7.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
45
- virtool_workflow-6.0.0a7.dist-info/entry_points.txt,sha256=d4MA8ZDTJOU0jKZ3ymtHZbfLVoRPgItEIN5U4uIqay8,62
46
- virtool_workflow-6.0.0a7.dist-info/RECORD,,