virtool-workflow 7.1.5__tar.gz → 7.2.0__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 (44) hide show
  1. {virtool_workflow-7.1.5 → virtool_workflow-7.2.0}/PKG-INFO +1 -1
  2. {virtool_workflow-7.1.5 → virtool_workflow-7.2.0}/pyproject.toml +8 -2
  3. {virtool_workflow-7.1.5 → virtool_workflow-7.2.0}/virtool_workflow/runtime/run.py +4 -1
  4. {virtool_workflow-7.1.5 → virtool_workflow-7.2.0}/virtool_workflow/runtime/sentry.py +23 -1
  5. {virtool_workflow-7.1.5 → virtool_workflow-7.2.0}/virtool_workflow/utils.py +1 -1
  6. {virtool_workflow-7.1.5 → virtool_workflow-7.2.0}/LICENSE +0 -0
  7. {virtool_workflow-7.1.5 → virtool_workflow-7.2.0}/README.md +0 -0
  8. {virtool_workflow-7.1.5 → virtool_workflow-7.2.0}/virtool_workflow/__init__.py +0 -0
  9. {virtool_workflow-7.1.5 → virtool_workflow-7.2.0}/virtool_workflow/analysis/__init__.py +0 -0
  10. {virtool_workflow-7.1.5 → virtool_workflow-7.2.0}/virtool_workflow/analysis/fastqc.py +0 -0
  11. {virtool_workflow-7.1.5 → virtool_workflow-7.2.0}/virtool_workflow/analysis/skewer.py +0 -0
  12. {virtool_workflow-7.1.5 → virtool_workflow-7.2.0}/virtool_workflow/analysis/trimming.py +0 -0
  13. {virtool_workflow-7.1.5 → virtool_workflow-7.2.0}/virtool_workflow/analysis/utils.py +0 -0
  14. {virtool_workflow-7.1.5 → virtool_workflow-7.2.0}/virtool_workflow/api/__init__.py +0 -0
  15. {virtool_workflow-7.1.5 → virtool_workflow-7.2.0}/virtool_workflow/api/acquire.py +0 -0
  16. {virtool_workflow-7.1.5 → virtool_workflow-7.2.0}/virtool_workflow/api/client.py +0 -0
  17. {virtool_workflow-7.1.5 → virtool_workflow-7.2.0}/virtool_workflow/api/utils.py +0 -0
  18. {virtool_workflow-7.1.5 → virtool_workflow-7.2.0}/virtool_workflow/cli.py +0 -0
  19. {virtool_workflow-7.1.5 → virtool_workflow-7.2.0}/virtool_workflow/data/__init__.py +0 -0
  20. {virtool_workflow-7.1.5 → virtool_workflow-7.2.0}/virtool_workflow/data/analyses.py +0 -0
  21. {virtool_workflow-7.1.5 → virtool_workflow-7.2.0}/virtool_workflow/data/hmms.py +0 -0
  22. {virtool_workflow-7.1.5 → virtool_workflow-7.2.0}/virtool_workflow/data/indexes.py +0 -0
  23. {virtool_workflow-7.1.5 → virtool_workflow-7.2.0}/virtool_workflow/data/jobs.py +0 -0
  24. {virtool_workflow-7.1.5 → virtool_workflow-7.2.0}/virtool_workflow/data/ml.py +0 -0
  25. {virtool_workflow-7.1.5 → virtool_workflow-7.2.0}/virtool_workflow/data/samples.py +0 -0
  26. {virtool_workflow-7.1.5 → virtool_workflow-7.2.0}/virtool_workflow/data/subtractions.py +0 -0
  27. {virtool_workflow-7.1.5 → virtool_workflow-7.2.0}/virtool_workflow/data/uploads.py +0 -0
  28. {virtool_workflow-7.1.5 → virtool_workflow-7.2.0}/virtool_workflow/decorators.py +0 -0
  29. {virtool_workflow-7.1.5 → virtool_workflow-7.2.0}/virtool_workflow/errors.py +0 -0
  30. {virtool_workflow-7.1.5 → virtool_workflow-7.2.0}/virtool_workflow/files.py +0 -0
  31. {virtool_workflow-7.1.5 → virtool_workflow-7.2.0}/virtool_workflow/hooks.py +0 -0
  32. {virtool_workflow-7.1.5 → virtool_workflow-7.2.0}/virtool_workflow/pytest_plugin/__init__.py +0 -0
  33. {virtool_workflow-7.1.5 → virtool_workflow-7.2.0}/virtool_workflow/pytest_plugin/data.py +0 -0
  34. {virtool_workflow-7.1.5 → virtool_workflow-7.2.0}/virtool_workflow/pytest_plugin/utils.py +0 -0
  35. {virtool_workflow-7.1.5 → virtool_workflow-7.2.0}/virtool_workflow/runtime/__init__.py +0 -0
  36. {virtool_workflow-7.1.5 → virtool_workflow-7.2.0}/virtool_workflow/runtime/config.py +0 -0
  37. {virtool_workflow-7.1.5 → virtool_workflow-7.2.0}/virtool_workflow/runtime/discover.py +0 -0
  38. {virtool_workflow-7.1.5 → virtool_workflow-7.2.0}/virtool_workflow/runtime/events.py +0 -0
  39. {virtool_workflow-7.1.5 → virtool_workflow-7.2.0}/virtool_workflow/runtime/hook.py +0 -0
  40. {virtool_workflow-7.1.5 → virtool_workflow-7.2.0}/virtool_workflow/runtime/path.py +0 -0
  41. {virtool_workflow-7.1.5 → virtool_workflow-7.2.0}/virtool_workflow/runtime/ping.py +0 -0
  42. {virtool_workflow-7.1.5 → virtool_workflow-7.2.0}/virtool_workflow/runtime/redis.py +0 -0
  43. {virtool_workflow-7.1.5 → virtool_workflow-7.2.0}/virtool_workflow/runtime/run_subprocess.py +0 -0
  44. {virtool_workflow-7.1.5 → virtool_workflow-7.2.0}/virtool_workflow/workflow.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: virtool-workflow
3
- Version: 7.1.5
3
+ Version: 7.2.0
4
4
  Summary: A framework for developing bioinformatics workflows for Virtool.
5
5
  License: MIT
6
6
  Author: Ian Boyes
@@ -1,7 +1,7 @@
1
1
  [project]
2
2
  name = "virtool-workflow"
3
3
  description = "A framework for developing bioinformatics workflows for Virtool."
4
- version = "7.1.5"
4
+ version = "7.2.0"
5
5
  authors = [
6
6
  {name = "Ian Boyes"},
7
7
  {name = "Reece Hoffman"},
@@ -46,8 +46,10 @@ structlog-sentry = "^2.2.1"
46
46
  virtool = "^31.1.3"
47
47
 
48
48
  [tool.poetry.group.dev.dependencies]
49
+ mypy = "^1.16.0"
49
50
  piccolo-theme = "^0.24.0"
50
51
  pytest = "^7.4.2"
52
+ pytest-aiohttp = "^1.1.0"
51
53
  pytest-asyncio = "^0.21.0"
52
54
  pytest-mock = "^3.10.0"
53
55
  pytest-structlog = "^1.0"
@@ -57,7 +59,6 @@ sphinx-autobuild = "^2021.3.14"
57
59
  sphinx-nameko-theme = "^0.0.3"
58
60
  sphinx-toolbox = "^3.5.0"
59
61
  syrupy = "^3.0.5"
60
- pytest-aiohttp = "^1.1.0"
61
62
 
62
63
  [tool.pytest.ini_options]
63
64
  asyncio_mode = "auto"
@@ -82,6 +83,11 @@ ignore = [
82
83
  ]
83
84
  select = ["ALL"]
84
85
 
86
+ [tool.ruff.per-file-ignores]
87
+ "tests/**/test_*.py" = [
88
+ "S101",
89
+ ]
90
+
85
91
  [build-system]
86
92
  requires = ["poetry-core>=1.0.0"]
87
93
  build-backend = "poetry.core.masonry.api"
@@ -38,7 +38,7 @@ from virtool_workflow.runtime.redis import (
38
38
  get_next_job_with_timeout,
39
39
  wait_for_cancellation,
40
40
  )
41
- from virtool_workflow.runtime.sentry import configure_sentry
41
+ from virtool_workflow.runtime.sentry import configure_sentry, set_workflow_context
42
42
  from virtool_workflow.utils import configure_logs, get_virtool_workflow_version
43
43
  from virtool_workflow.workflow import Workflow
44
44
 
@@ -182,6 +182,9 @@ async def run_workflow(
182
182
  scope["proc"] = config.proc
183
183
  scope["results"] = {}
184
184
 
185
+ # Set Sentry context with workflow metadata
186
+ set_workflow_context(job.workflow, job.id)
187
+
185
188
  async with create_work_path(config) as work_path:
186
189
  scope["work_path"] = work_path
187
190
 
@@ -9,7 +9,7 @@ from virtool_workflow.utils import get_virtool_workflow_version
9
9
  logger = get_logger("runtime")
10
10
 
11
11
 
12
- def configure_sentry(dsn: str):
12
+ def configure_sentry(dsn: str | None) -> None:
13
13
  """Initialize Sentry for log aggregation."""
14
14
  if dsn:
15
15
  logger.info("initializing sentry", dsn=f"{dsn[:15]}...")
@@ -26,3 +26,25 @@ def configure_sentry(dsn: str):
26
26
  )
27
27
  else:
28
28
  logger.info("sentry disabled because no dsn was provided")
29
+
30
+
31
+ def set_workflow_context(
32
+ workflow_name: str,
33
+ job_id: str,
34
+ ):
35
+ """Set workflow context for Sentry reporting."""
36
+ try:
37
+ with open("VERSION") as f:
38
+ workflow_version = f.read().strip()
39
+ except FileNotFoundError:
40
+ workflow_version = "UNKNOWN"
41
+
42
+ sentry_sdk.set_context(
43
+ "workflow",
44
+ {
45
+ "workflow_name": workflow_name,
46
+ "workflow_version": workflow_version,
47
+ "virtool_workflow_version": get_virtool_workflow_version(),
48
+ "job_id": job_id,
49
+ },
50
+ )
@@ -82,7 +82,7 @@ async def make_directory(path: Path):
82
82
 
83
83
  def untar(path: Path, target_path: Path):
84
84
  with tarfile.open(path, "r:gz") as tar:
85
- tar.extractall(target_path)
85
+ tar.extractall(target_path, filter="data")
86
86
 
87
87
 
88
88
  def move_all_model_files(source_path: Path, target_path: Path):