snakemake-software-deployment-plugin-container 0.7.2__tar.gz → 0.7.4__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 (11) hide show
  1. {snakemake_software_deployment_plugin_container-0.7.2 → snakemake_software_deployment_plugin_container-0.7.4}/CHANGELOG.md +14 -0
  2. {snakemake_software_deployment_plugin_container-0.7.2 → snakemake_software_deployment_plugin_container-0.7.4}/PKG-INFO +1 -1
  3. {snakemake_software_deployment_plugin_container-0.7.2 → snakemake_software_deployment_plugin_container-0.7.4}/pyproject.toml +1 -1
  4. {snakemake_software_deployment_plugin_container-0.7.2 → snakemake_software_deployment_plugin_container-0.7.4}/src/snakemake_software_deployment_plugin_container/__init__.py +24 -1
  5. {snakemake_software_deployment_plugin_container-0.7.2 → snakemake_software_deployment_plugin_container-0.7.4}/.github/workflows/ci.yml +0 -0
  6. {snakemake_software_deployment_plugin_container-0.7.2 → snakemake_software_deployment_plugin_container-0.7.4}/.github/workflows/conventional-prs.yml +0 -0
  7. {snakemake_software_deployment_plugin_container-0.7.2 → snakemake_software_deployment_plugin_container-0.7.4}/.github/workflows/release-please.yml +0 -0
  8. {snakemake_software_deployment_plugin_container-0.7.2 → snakemake_software_deployment_plugin_container-0.7.4}/.gitignore +0 -0
  9. {snakemake_software_deployment_plugin_container-0.7.2 → snakemake_software_deployment_plugin_container-0.7.4}/LICENSE +0 -0
  10. {snakemake_software_deployment_plugin_container-0.7.2 → snakemake_software_deployment_plugin_container-0.7.4}/README.md +0 -0
  11. {snakemake_software_deployment_plugin_container-0.7.2 → snakemake_software_deployment_plugin_container-0.7.4}/tests/test_plugin.py +0 -0
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.7.4](https://github.com/snakemake/snakemake-software-deployment-plugin-container/compare/v0.7.3...v0.7.4) (2026-09-10)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * handle runtime setup (for now needed by udocker) ([78cc3ac](https://github.com/snakemake/snakemake-software-deployment-plugin-container/commit/78cc3ace79c5a6305ae2676a82d46b83f30a2347))
9
+
10
+ ## [0.7.3](https://github.com/snakemake/snakemake-software-deployment-plugin-container/compare/v0.7.2...v0.7.3) (2026-09-10)
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * add quiet flag to udocker execution ([fcb5780](https://github.com/snakemake/snakemake-software-deployment-plugin-container/commit/fcb57800287a59cee68c1ec87a47d17a304ce207))
16
+
3
17
  ## [0.7.2](https://github.com/snakemake/snakemake-software-deployment-plugin-container/compare/v0.7.1...v0.7.2) (2026-09-08)
4
18
 
5
19
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: snakemake-software-deployment-plugin-container
3
- Version: 0.7.2
3
+ Version: 0.7.4
4
4
  Project-URL: repository, https://github.com/snakemake/snakemake-software-deployment-plugin-container
5
5
  Project-URL: documentation, https://snakemake.github.io/snakemake-plugin-catalog/plugins/software-deployment/container.html
6
6
  Author-email: Ben Carrillo <ben.uzh@pm.me>, Johannes Köster <johannes.koester@uni-due.de>
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "snakemake-software-deployment-plugin-container"
3
- version = "0.7.2"
3
+ version = "0.7.4"
4
4
  authors = [
5
5
  { name = "Ben Carrillo", email = "ben.uzh@pm.me" },
6
6
  { name = "Johannes Köster", email = "johannes.koester@uni-due.de" }
@@ -1,3 +1,4 @@
1
+ from typing import ClassVar
1
2
  from pathlib import Path
2
3
  from abc import abstractmethod
3
4
  from snakemake_interface_software_deployment_plugins import DeployableEnvBase
@@ -114,6 +115,13 @@ class Env(DeployableEnvBase, EnvBase):
114
115
  elif self.settings.runtime == Runtime.UDOCKER:
115
116
  self.runtime_manager = RuntimeManagerUdocker(self)
116
117
 
118
+ # Handle runtime manager setup if needed.
119
+ # This is only done once per runtime manager type, not per environment.
120
+ if not self.runtime_manager.is_setup:
121
+ if self.runtime_manager.setup_cmd() is not None:
122
+ self.run_cmd(self.runtime_manager.setup_cmd(), check=True)
123
+ self.runtime_manager.is_setup = True
124
+
117
125
  # The decorator ensures that the decorated method is only called once
118
126
  # in case multiple environments of the same kind are created.
119
127
  @EnvBase.once
@@ -204,6 +212,10 @@ class Env(DeployableEnvBase, EnvBase):
204
212
  @dataclass
205
213
  class RuntimeManager:
206
214
  env: Env
215
+ is_setup: ClassVar[bool] = False
216
+
217
+ def setup_cmd(self) -> str | None:
218
+ return None
207
219
 
208
220
  def deployed_image_name(self) -> str:
209
221
  return (
@@ -218,6 +230,9 @@ class RuntimeManager:
218
230
  @abstractmethod
219
231
  def deploy_cmd(self) -> str | None: ...
220
232
 
233
+ def pre_subcommand_options(self) -> str:
234
+ return ""
235
+
221
236
  def options(self) -> str:
222
237
  return "--rm"
223
238
 
@@ -256,7 +271,9 @@ class RuntimeManager:
256
271
  def decorate_shellcmd(self, cmd: str) -> str:
257
272
  mountpoints = self.get_mountpoint_args()
258
273
  return (
259
- f"{self.env.settings.runtime} {self.subcommand()}"
274
+ f"{self.env.settings.runtime}"
275
+ f" {self.pre_subcommand_options()}"
276
+ f" {self.subcommand()}"
260
277
  f" {self.options()}"
261
278
  f" {self.workdir_option()} {getcwd()!r}" # Working directory inside container
262
279
  f" {mountpoints}"
@@ -319,6 +336,12 @@ class RuntimeManagerDocker(RuntimeManager):
319
336
 
320
337
 
321
338
  class RuntimeManagerUdocker(RuntimeManager):
339
+ def setup_cmd(self) -> str | None:
340
+ return "udocker install"
341
+
342
+ def pre_subcommand_options(self) -> str:
343
+ return "--quiet"
344
+
322
345
  def options(self) -> str:
323
346
  options = super().options()
324
347
  options += " --nobanner --env TINI_SUBREAPER=1"