snakemake-software-deployment-plugin-container 0.3.0__tar.gz → 0.4.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 (13) hide show
  1. {snakemake_software_deployment_plugin_container-0.3.0 → snakemake_software_deployment_plugin_container-0.4.0}/CHANGELOG.md +12 -0
  2. {snakemake_software_deployment_plugin_container-0.3.0 → snakemake_software_deployment_plugin_container-0.4.0}/PKG-INFO +2 -2
  3. {snakemake_software_deployment_plugin_container-0.3.0 → snakemake_software_deployment_plugin_container-0.4.0}/pixi.lock +55 -52
  4. {snakemake_software_deployment_plugin_container-0.3.0 → snakemake_software_deployment_plugin_container-0.4.0}/pyproject.toml +3 -3
  5. {snakemake_software_deployment_plugin_container-0.3.0 → snakemake_software_deployment_plugin_container-0.4.0}/src/snakemake_software_deployment_plugin_container/__init__.py +16 -8
  6. {snakemake_software_deployment_plugin_container-0.3.0 → snakemake_software_deployment_plugin_container-0.4.0}/.github/workflows/ci.yml +0 -0
  7. {snakemake_software_deployment_plugin_container-0.3.0 → snakemake_software_deployment_plugin_container-0.4.0}/.github/workflows/conventional-prs.yml +0 -0
  8. {snakemake_software_deployment_plugin_container-0.3.0 → snakemake_software_deployment_plugin_container-0.4.0}/.github/workflows/release-please.yml +0 -0
  9. {snakemake_software_deployment_plugin_container-0.3.0 → snakemake_software_deployment_plugin_container-0.4.0}/.gitignore +0 -0
  10. {snakemake_software_deployment_plugin_container-0.3.0 → snakemake_software_deployment_plugin_container-0.4.0}/LICENSE +0 -0
  11. {snakemake_software_deployment_plugin_container-0.3.0 → snakemake_software_deployment_plugin_container-0.4.0}/README.md +0 -0
  12. {snakemake_software_deployment_plugin_container-0.3.0 → snakemake_software_deployment_plugin_container-0.4.0}/setup.cfg +0 -0
  13. {snakemake_software_deployment_plugin_container-0.3.0 → snakemake_software_deployment_plugin_container-0.4.0}/tests/test_plugin.py +0 -0
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.4.0](https://github.com/snakemake/snakemake-software-deployment-plugin-container/compare/v0.3.0...v0.4.0) (2026-02-27)
4
+
5
+
6
+ ### Features
7
+
8
+ * implement check whether given executable is contained in container image ([9edf4a6](https://github.com/snakemake/snakemake-software-deployment-plugin-container/commit/9edf4a6d4a80cea414bdbc844a58d052e2e8db0a))
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * adapt to latest changes in interface ([3c5fd0b](https://github.com/snakemake/snakemake-software-deployment-plugin-container/commit/3c5fd0bda99ec3e64dbe0b2b9012e14287759509))
14
+
3
15
  ## [0.3.0](https://github.com/snakemake/snakemake-software-deployment-plugin-container/compare/v0.2.1...v0.3.0) (2026-02-18)
4
16
 
5
17
 
@@ -1,13 +1,13 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: snakemake-software-deployment-plugin-container
3
- Version: 0.3.0
3
+ Version: 0.4.0
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>
7
7
  License-File: LICENSE
8
8
  Requires-Python: <4.0,>=3.11
9
9
  Requires-Dist: snakemake-interface-common<2.0.0,>=1.17.4
10
- Requires-Dist: snakemake-interface-software-deployment-plugins<1.0,>=0.9.1
10
+ Requires-Dist: snakemake-interface-software-deployment-plugins<1.0,>=0.12.0
11
11
  Requires-Dist: udocker<2.0.0,>=1.3.17
12
12
  Description-Content-Type: text/markdown
13
13
 
@@ -11,7 +11,7 @@ environments:
11
11
  linux-64:
12
12
  - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda
13
13
  - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda
14
- - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-hbd8a1cb_0.conda
14
+ - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.2.25-hbd8a1cb_0.conda
15
15
  - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.2-h33c6efd_0.conda
16
16
  - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_101.conda
17
17
  - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.4-hecca717_0.conda
@@ -36,12 +36,12 @@ environments:
36
36
  - pypi: https://files.pythonhosted.org/packages/31/28/d28211d29bcc3620b1fece85a65ce5bb22f18670a03cd28ea4b75ede270c/configargparse-1.7.1-py3-none-any.whl
37
37
  - pypi: https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl
38
38
  - pypi: https://files.pythonhosted.org/packages/0f/c4/2da11760cebae7cfc66304ce5dccbabf9f1323e3e0ab8091960b84ad2bd6/snakemake_interface_common-1.22.0-py3-none-any.whl
39
- - pypi: https://files.pythonhosted.org/packages/3e/40/78867f0bacd71b973d6c76ea94a8324d017ee4c1d8c6b96cc8efdb86c466/snakemake_interface_software_deployment_plugins-0.10.1-py3-none-any.whl
39
+ - pypi: https://files.pythonhosted.org/packages/c0/09/946f1fad9abd7b1fc18386bd77d98ba6f78ce049e1265966a78754d9bbcd/snakemake_interface_software_deployment_plugins-0.13.0-py3-none-any.whl
40
40
  - pypi: https://files.pythonhosted.org/packages/55/d6/caafad263b0e2375c2a8c586ac8b91fb7d3e363e6d1ab1e35a365d684254/udocker-1.3.17-py2.py3-none-any.whl
41
41
  - pypi: ./
42
42
  osx-arm64:
43
43
  - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_9.conda
44
- - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-hbd8a1cb_0.conda
44
+ - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.2.25-hbd8a1cb_0.conda
45
45
  - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-78.2-h38cb7af_0.conda
46
46
  - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.4-hf6b4638_0.conda
47
47
  - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.5.2-hcf2aa1b_0.conda
@@ -61,7 +61,7 @@ environments:
61
61
  - pypi: https://files.pythonhosted.org/packages/31/28/d28211d29bcc3620b1fece85a65ce5bb22f18670a03cd28ea4b75ede270c/configargparse-1.7.1-py3-none-any.whl
62
62
  - pypi: https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl
63
63
  - pypi: https://files.pythonhosted.org/packages/0f/c4/2da11760cebae7cfc66304ce5dccbabf9f1323e3e0ab8091960b84ad2bd6/snakemake_interface_common-1.22.0-py3-none-any.whl
64
- - pypi: https://files.pythonhosted.org/packages/3e/40/78867f0bacd71b973d6c76ea94a8324d017ee4c1d8c6b96cc8efdb86c466/snakemake_interface_software_deployment_plugins-0.10.1-py3-none-any.whl
64
+ - pypi: https://files.pythonhosted.org/packages/c0/09/946f1fad9abd7b1fc18386bd77d98ba6f78ce049e1265966a78754d9bbcd/snakemake_interface_software_deployment_plugins-0.13.0-py3-none-any.whl
65
65
  - pypi: https://files.pythonhosted.org/packages/55/d6/caafad263b0e2375c2a8c586ac8b91fb7d3e363e6d1ab1e35a365d684254/udocker-1.3.17-py2.py3-none-any.whl
66
66
  - pypi: ./
67
67
  dev:
@@ -75,7 +75,7 @@ environments:
75
75
  linux-64:
76
76
  - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda
77
77
  - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda
78
- - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-hbd8a1cb_0.conda
78
+ - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.2.25-hbd8a1cb_0.conda
79
79
  - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
80
80
  - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.13.4-py314h67df5f8_0.conda
81
81
  - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda
@@ -114,12 +114,12 @@ environments:
114
114
  - pypi: https://files.pythonhosted.org/packages/31/28/d28211d29bcc3620b1fece85a65ce5bb22f18670a03cd28ea4b75ede270c/configargparse-1.7.1-py3-none-any.whl
115
115
  - pypi: https://files.pythonhosted.org/packages/a6/24/4d91e05817e92e3a61c8a21e08fd0f390f5301f1c448b137c57c4bc6e543/semver-3.0.4-py3-none-any.whl
116
116
  - pypi: https://files.pythonhosted.org/packages/1a/c7/e6e9ff155558b473f9eec20f7e35faa15dd6f3d03c4100f7609e44a8428f/snakemake_interface_common-1.19.2-py3-none-any.whl
117
- - pypi: https://files.pythonhosted.org/packages/3e/40/78867f0bacd71b973d6c76ea94a8324d017ee4c1d8c6b96cc8efdb86c466/snakemake_interface_software_deployment_plugins-0.10.1-py3-none-any.whl
117
+ - pypi: https://files.pythonhosted.org/packages/c0/09/946f1fad9abd7b1fc18386bd77d98ba6f78ce049e1265966a78754d9bbcd/snakemake_interface_software_deployment_plugins-0.13.0-py3-none-any.whl
118
118
  - pypi: https://files.pythonhosted.org/packages/55/d6/caafad263b0e2375c2a8c586ac8b91fb7d3e363e6d1ab1e35a365d684254/udocker-1.3.17-py2.py3-none-any.whl
119
119
  - pypi: ./
120
120
  osx-arm64:
121
121
  - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_9.conda
122
- - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-hbd8a1cb_0.conda
122
+ - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.2.25-hbd8a1cb_0.conda
123
123
  - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda
124
124
  - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.13.4-py314h6e9b3f0_0.conda
125
125
  - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda
@@ -153,7 +153,7 @@ environments:
153
153
  - pypi: https://files.pythonhosted.org/packages/31/28/d28211d29bcc3620b1fece85a65ce5bb22f18670a03cd28ea4b75ede270c/configargparse-1.7.1-py3-none-any.whl
154
154
  - pypi: https://files.pythonhosted.org/packages/a6/24/4d91e05817e92e3a61c8a21e08fd0f390f5301f1c448b137c57c4bc6e543/semver-3.0.4-py3-none-any.whl
155
155
  - pypi: https://files.pythonhosted.org/packages/1a/c7/e6e9ff155558b473f9eec20f7e35faa15dd6f3d03c4100f7609e44a8428f/snakemake_interface_common-1.19.2-py3-none-any.whl
156
- - pypi: https://files.pythonhosted.org/packages/3e/40/78867f0bacd71b973d6c76ea94a8324d017ee4c1d8c6b96cc8efdb86c466/snakemake_interface_software_deployment_plugins-0.10.1-py3-none-any.whl
156
+ - pypi: https://files.pythonhosted.org/packages/c0/09/946f1fad9abd7b1fc18386bd77d98ba6f78ce049e1265966a78754d9bbcd/snakemake_interface_software_deployment_plugins-0.13.0-py3-none-any.whl
157
157
  - pypi: https://files.pythonhosted.org/packages/55/d6/caafad263b0e2375c2a8c586ac8b91fb7d3e363e6d1ab1e35a365d684254/udocker-1.3.17-py2.py3-none-any.whl
158
158
  - pypi: ./
159
159
  publish:
@@ -172,8 +172,8 @@ environments:
172
172
  - conda: https://conda.anaconda.org/conda-forge/noarch/backports.zstd-1.3.0-py314h680f03e_0.conda
173
173
  - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py314h3de4e8d_1.conda
174
174
  - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda
175
- - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-hbd8a1cb_0.conda
176
- - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.1.4-pyhd8ed1ab_0.conda
175
+ - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.2.25-hbd8a1cb_0.conda
176
+ - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.2.25-pyhd8ed1ab_0.conda
177
177
  - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.0.0-py314h4a8dc5f_1.conda
178
178
  - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.4-pyhd8ed1ab_0.conda
179
179
  - conda: https://conda.anaconda.org/conda-forge/linux-64/cmarkgfm-2024.11.20-py314h5bd0f2a_1.conda
@@ -199,7 +199,7 @@ environments:
199
199
  - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.4-hecca717_0.conda
200
200
  - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda
201
201
  - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_18.conda
202
- - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.86.4-h6548e54_0.conda
202
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.86.4-h6548e54_1.conda
203
203
  - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_18.conda
204
204
  - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda
205
205
  - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.2-hb03c661_0.conda
@@ -229,7 +229,7 @@ environments:
229
229
  - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.5-pyhcf101f3_1.conda
230
230
  - conda: https://conda.anaconda.org/conda-forge/noarch/requests-toolbelt-1.0.0-pyhd8ed1ab_1.conda
231
231
  - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-2.0.0-pyhd8ed1ab_1.conda
232
- - conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.2-pyhcf101f3_0.conda
232
+ - conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.3-pyhcf101f3_0.conda
233
233
  - conda: https://conda.anaconda.org/conda-forge/linux-64/secretstorage-3.4.1-py314hdafbbf9_0.conda
234
234
  - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h366c992_103.conda
235
235
  - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.0-pyhcf101f3_0.conda
@@ -243,7 +243,7 @@ environments:
243
243
  - pypi: https://files.pythonhosted.org/packages/31/28/d28211d29bcc3620b1fece85a65ce5bb22f18670a03cd28ea4b75ede270c/configargparse-1.7.1-py3-none-any.whl
244
244
  - pypi: https://files.pythonhosted.org/packages/a6/24/4d91e05817e92e3a61c8a21e08fd0f390f5301f1c448b137c57c4bc6e543/semver-3.0.4-py3-none-any.whl
245
245
  - pypi: https://files.pythonhosted.org/packages/1a/c7/e6e9ff155558b473f9eec20f7e35faa15dd6f3d03c4100f7609e44a8428f/snakemake_interface_common-1.19.2-py3-none-any.whl
246
- - pypi: https://files.pythonhosted.org/packages/3e/40/78867f0bacd71b973d6c76ea94a8324d017ee4c1d8c6b96cc8efdb86c466/snakemake_interface_software_deployment_plugins-0.10.1-py3-none-any.whl
246
+ - pypi: https://files.pythonhosted.org/packages/c0/09/946f1fad9abd7b1fc18386bd77d98ba6f78ce049e1265966a78754d9bbcd/snakemake_interface_software_deployment_plugins-0.13.0-py3-none-any.whl
247
247
  - pypi: https://files.pythonhosted.org/packages/55/d6/caafad263b0e2375c2a8c586ac8b91fb7d3e363e6d1ab1e35a365d684254/udocker-1.3.17-py2.py3-none-any.whl
248
248
  - pypi: ./
249
249
  osx-arm64:
@@ -253,8 +253,8 @@ environments:
253
253
  - conda: https://conda.anaconda.org/conda-forge/noarch/backports.zstd-1.3.0-py314h680f03e_0.conda
254
254
  - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.2.0-py314h3daef5d_1.conda
255
255
  - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_9.conda
256
- - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-hbd8a1cb_0.conda
257
- - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.1.4-pyhd8ed1ab_0.conda
256
+ - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.2.25-hbd8a1cb_0.conda
257
+ - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.2.25-pyhd8ed1ab_0.conda
258
258
  - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-2.0.0-py314h44086f9_1.conda
259
259
  - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.4-pyhd8ed1ab_0.conda
260
260
  - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cmarkgfm-2024.11.20-py314hb84d1df_1.conda
@@ -273,7 +273,7 @@ environments:
273
273
  - conda: https://conda.anaconda.org/conda-forge/noarch/jaraco.context-6.1.0-pyhcf101f3_0.conda
274
274
  - conda: https://conda.anaconda.org/conda-forge/noarch/jaraco.functools-4.4.0-pyhcf101f3_1.conda
275
275
  - conda: https://conda.anaconda.org/conda-forge/noarch/keyring-25.7.0-pyh534df25_0.conda
276
- - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-21.1.8-h55c6f16_2.conda
276
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-22.1.0-h55c6f16_1.conda
277
277
  - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.4-hf6b4638_0.conda
278
278
  - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.5.2-hcf2aa1b_0.conda
279
279
  - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.2-h8088a28_0.conda
@@ -300,7 +300,7 @@ environments:
300
300
  - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.5-pyhcf101f3_1.conda
301
301
  - conda: https://conda.anaconda.org/conda-forge/noarch/requests-toolbelt-1.0.0-pyhd8ed1ab_1.conda
302
302
  - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-2.0.0-pyhd8ed1ab_1.conda
303
- - conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.2-pyhcf101f3_0.conda
303
+ - conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.3-pyhcf101f3_0.conda
304
304
  - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h010d191_3.conda
305
305
  - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.0-pyhcf101f3_0.conda
306
306
  - conda: https://conda.anaconda.org/conda-forge/noarch/twine-6.2.0-pyhcf101f3_0.conda
@@ -313,7 +313,7 @@ environments:
313
313
  - pypi: https://files.pythonhosted.org/packages/31/28/d28211d29bcc3620b1fece85a65ce5bb22f18670a03cd28ea4b75ede270c/configargparse-1.7.1-py3-none-any.whl
314
314
  - pypi: https://files.pythonhosted.org/packages/a6/24/4d91e05817e92e3a61c8a21e08fd0f390f5301f1c448b137c57c4bc6e543/semver-3.0.4-py3-none-any.whl
315
315
  - pypi: https://files.pythonhosted.org/packages/1a/c7/e6e9ff155558b473f9eec20f7e35faa15dd6f3d03c4100f7609e44a8428f/snakemake_interface_common-1.19.2-py3-none-any.whl
316
- - pypi: https://files.pythonhosted.org/packages/3e/40/78867f0bacd71b973d6c76ea94a8324d017ee4c1d8c6b96cc8efdb86c466/snakemake_interface_software_deployment_plugins-0.10.1-py3-none-any.whl
316
+ - pypi: https://files.pythonhosted.org/packages/c0/09/946f1fad9abd7b1fc18386bd77d98ba6f78ce049e1265966a78754d9bbcd/snakemake_interface_software_deployment_plugins-0.13.0-py3-none-any.whl
317
317
  - pypi: https://files.pythonhosted.org/packages/55/d6/caafad263b0e2375c2a8c586ac8b91fb7d3e363e6d1ab1e35a365d684254/udocker-1.3.17-py2.py3-none-any.whl
318
318
  - pypi: ./
319
319
  packages:
@@ -435,25 +435,25 @@ packages:
435
435
  purls: []
436
436
  size: 124834
437
437
  timestamp: 1771350416561
438
- - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-hbd8a1cb_0.conda
439
- sha256: b5974ec9b50e3c514a382335efa81ed02b05906849827a34061c496f4defa0b2
440
- md5: bddacf101bb4dd0e51811cb69c7790e2
438
+ - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.2.25-hbd8a1cb_0.conda
439
+ sha256: 67cc7101b36421c5913a1687ef1b99f85b5d6868da3abbf6ec1a4181e79782fc
440
+ md5: 4492fd26db29495f0ba23f146cd5638d
441
441
  depends:
442
442
  - __unix
443
443
  license: ISC
444
444
  purls: []
445
- size: 146519
446
- timestamp: 1767500828366
447
- - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.1.4-pyhd8ed1ab_0.conda
448
- sha256: 110338066d194a715947808611b763857c15458f8b3b97197387356844af9450
449
- md5: eacc711330cd46939f66cd401ff9c44b
445
+ size: 147413
446
+ timestamp: 1772006283803
447
+ - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.2.25-pyhd8ed1ab_0.conda
448
+ sha256: a6b118fd1ed6099dc4fc03f9c492b88882a780fadaef4ed4f93dc70757713656
449
+ md5: 765c4d97e877cdbbb88ff33152b86125
450
450
  depends:
451
451
  - python >=3.10
452
452
  license: ISC
453
453
  purls:
454
454
  - pkg:pypi/certifi?source=compressed-mapping
455
- size: 150969
456
- timestamp: 1767500900768
455
+ size: 151445
456
+ timestamp: 1772001170301
457
457
  - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.0.0-py314h4a8dc5f_1.conda
458
458
  sha256: c6339858a0aaf5d939e00d345c98b99e4558f285942b27232ac098ad17ac7f8e
459
459
  md5: cf45f4278afd6f4e6d03eda0f435d527
@@ -604,7 +604,7 @@ packages:
604
604
  license: Apache-2.0 AND BSD-3-Clause AND PSF-2.0 AND MIT
605
605
  license_family: BSD
606
606
  purls:
607
- - pkg:pypi/cryptography?source=compressed-mapping
607
+ - pkg:pypi/cryptography?source=hash-mapping
608
608
  size: 1721078
609
609
  timestamp: 1770772685661
610
610
  - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h24cb091_1.conda
@@ -861,16 +861,16 @@ packages:
861
861
  purls: []
862
862
  size: 725507
863
863
  timestamp: 1770267139900
864
- - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-21.1.8-h55c6f16_2.conda
865
- sha256: 5fbeb2fc2673f0455af6079abf93faaf27f11a92574ad51565fa1ecac9a4e2aa
866
- md5: 4cb5878bdb9ebfa65b7cdff5445087c5
864
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-22.1.0-h55c6f16_1.conda
865
+ sha256: ce1049fa6fda9cf08ff1c50fb39573b5b0ea6958375d8ea7ccd8456ab81a0bcb
866
+ md5: e9c56daea841013e7774b5cd46f41564
867
867
  depends:
868
868
  - __osx >=11.0
869
869
  license: Apache-2.0 WITH LLVM-exception
870
870
  license_family: Apache
871
871
  purls: []
872
- size: 570068
873
- timestamp: 1770238262922
872
+ size: 568910
873
+ timestamp: 1772001095642
874
874
  - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.4-hecca717_0.conda
875
875
  sha256: d78f1d3bea8c031d2f032b760f36676d87929b18146351c4464c66b0869df3f5
876
876
  md5: e7f7ce06ec24cfcfb9e36d28cf82ba57
@@ -927,12 +927,13 @@ packages:
927
927
  - libgcc-ng ==15.2.0=*_18
928
928
  - libgomp 15.2.0 he0feb66_18
929
929
  license: GPL-3.0-only WITH GCC-exception-3.1
930
+ license_family: GPL
930
931
  purls: []
931
932
  size: 1041788
932
933
  timestamp: 1771378212382
933
- - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.86.4-h6548e54_0.conda
934
- sha256: 0d8cf491cb00aeb35fcfb68dfcb5b0ad188a98fb35c21c2421d2b2acc128cbf5
935
- md5: b7113551db5a3e2403cdd052c66e9999
934
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.86.4-h6548e54_1.conda
935
+ sha256: a27e44168a1240b15659888ce0d9b938ed4bdb49e9ea68a7c1ff27bcea8b55ce
936
+ md5: bb26456332b07f68bf3b7622ed71c0da
936
937
  depends:
937
938
  - __glibc >=2.17,<3.0.a0
938
939
  - libffi >=3.5.2,<3.6.0a0
@@ -941,17 +942,18 @@ packages:
941
942
  - libzlib >=1.3.1,<2.0a0
942
943
  - pcre2 >=10.47,<10.48.0a0
943
944
  constrains:
944
- - glib 2.86.4 *_0
945
+ - glib 2.86.4 *_1
945
946
  license: LGPL-2.1-or-later
946
947
  purls: []
947
- size: 4432190
948
- timestamp: 1771291719860
948
+ size: 4398701
949
+ timestamp: 1771863239578
949
950
  - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_18.conda
950
951
  sha256: 21337ab58e5e0649d869ab168d4e609b033509de22521de1bfed0c031bfc5110
951
952
  md5: 239c5e9546c38a1e884d69effcf4c882
952
953
  depends:
953
954
  - __glibc >=2.17,<3.0.a0
954
955
  license: GPL-3.0-only WITH GCC-exception-3.1
956
+ license_family: GPL
955
957
  purls: []
956
958
  size: 603262
957
959
  timestamp: 1771378117851
@@ -1041,6 +1043,7 @@ packages:
1041
1043
  constrains:
1042
1044
  - libstdcxx-ng ==15.2.0=*_18
1043
1045
  license: GPL-3.0-only WITH GCC-exception-3.1
1046
+ license_family: GPL
1044
1047
  purls: []
1045
1048
  size: 5852330
1046
1049
  timestamp: 1771378262446
@@ -1513,9 +1516,9 @@ packages:
1513
1516
  - pkg:pypi/rfc3986?source=hash-mapping
1514
1517
  size: 38028
1515
1518
  timestamp: 1733921806657
1516
- - conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.2-pyhcf101f3_0.conda
1517
- sha256: ed17985cec5a0540002c6cabe67848f7cc17e5f4019c0e2a40534e9b7c0b38de
1518
- md5: 33950a076fd589a7655c6888cc3d2b34
1519
+ - conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.3-pyhcf101f3_0.conda
1520
+ sha256: b06ce84d6a10c266811a7d3adbfa1c11f13393b91cc6f8a5b468277d90be9590
1521
+ md5: 7a6289c50631d620652f5045a63eb573
1519
1522
  depends:
1520
1523
  - markdown-it-py >=2.2.0
1521
1524
  - pygments >=2.13.0,<3.0.0
@@ -1526,8 +1529,8 @@ packages:
1526
1529
  license_family: MIT
1527
1530
  purls:
1528
1531
  - pkg:pypi/rich?source=compressed-mapping
1529
- size: 208269
1530
- timestamp: 1769971520792
1532
+ size: 208472
1533
+ timestamp: 1771572730357
1531
1534
  - conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.14.14-h40fa522_1.conda
1532
1535
  noarch: python
1533
1536
  sha256: 0c6c9825ff88195fd13936d63872213d6c88c1fe795d136881c0753c3037c5ff
@@ -1597,21 +1600,21 @@ packages:
1597
1600
  - configargparse>=1.7
1598
1601
  - packaging>=24.0,<26.0
1599
1602
  requires_python: '>=3.8'
1600
- - pypi: https://files.pythonhosted.org/packages/3e/40/78867f0bacd71b973d6c76ea94a8324d017ee4c1d8c6b96cc8efdb86c466/snakemake_interface_software_deployment_plugins-0.10.1-py3-none-any.whl
1603
+ - pypi: https://files.pythonhosted.org/packages/c0/09/946f1fad9abd7b1fc18386bd77d98ba6f78ce049e1265966a78754d9bbcd/snakemake_interface_software_deployment_plugins-0.13.0-py3-none-any.whl
1601
1604
  name: snakemake-interface-software-deployment-plugins
1602
- version: 0.10.1
1603
- sha256: da2a221c2a56caad99c9998863aeb41e6d930530507009b29a0ea05bdab476a8
1605
+ version: 0.13.0
1606
+ sha256: ad2711e3bc6b10445931fc491cde10a2d9488331facc3b6abb7d710cb114383b
1604
1607
  requires_dist:
1605
1608
  - argparse-dataclass>=2.0.0,<3.0
1606
1609
  - snakemake-interface-common>=1.17.4,<2.0.0
1607
1610
  requires_python: '>=3.11,<4.0'
1608
1611
  - pypi: ./
1609
1612
  name: snakemake-software-deployment-plugin-container
1610
- version: 0.3.0
1611
- sha256: fbd9c1a2618e53ae973413383190a06842d47bfc6b52ccf93a654a06aeba2478
1613
+ version: 0.4.0
1614
+ sha256: f2c88bae3529fc99faa876666fc571614891836ca94b6715fee70c2bf7b07922
1612
1615
  requires_dist:
1613
1616
  - snakemake-interface-common>=1.17.4,<2.0.0
1614
- - snakemake-interface-software-deployment-plugins>=0.9.1,<1.0
1617
+ - snakemake-interface-software-deployment-plugins>=0.12.0,<1.0
1615
1618
  - udocker>=1.3.17,<2.0.0
1616
1619
  requires_python: '>=3.11,<4.0'
1617
1620
  - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h366c992_103.conda
@@ -1732,7 +1735,7 @@ packages:
1732
1735
  license: MIT
1733
1736
  license_family: MIT
1734
1737
  purls:
1735
- - pkg:pypi/zipp?source=compressed-mapping
1738
+ - pkg:pypi/zipp?source=hash-mapping
1736
1739
  size: 24194
1737
1740
  timestamp: 1764460141901
1738
1741
  - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "snakemake-software-deployment-plugin-container"
3
- version = "0.3.0"
3
+ version = "0.4.0"
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" }
@@ -10,7 +10,7 @@ readme = "README.md"
10
10
  requires-python = ">=3.11,<4.0"
11
11
  dependencies = [
12
12
  "snakemake-interface-common (>=1.17.4,<2.0.0)",
13
- "snakemake-interface-software-deployment-plugins (>=0.9.1,<1.0)",
13
+ "snakemake-interface-software-deployment-plugins (>=0.12.0,<1.0)",
14
14
  "udocker (>=1.3.17,<2.0.0)",
15
15
  ]
16
16
 
@@ -57,7 +57,7 @@ cmd = [
57
57
 
58
58
  [tool.coverage.report]
59
59
  exclude_lines = ["pass", "\\.\\.\\."]
60
- fail_under = 91.0
60
+ fail_under = 90.0
61
61
 
62
62
  [tool.pixi.feature.publish.dependencies]
63
63
  twine = ">=6.1.0,<7"
@@ -4,7 +4,6 @@ __email__ = "ben.uzh@pm.me"
4
4
  __license__ = "MIT"
5
5
 
6
6
  import shlex
7
- import tempfile
8
7
  from dataclasses import dataclass, field
9
8
  from os import getcwd
10
9
  from shutil import which
@@ -76,8 +75,8 @@ class EnvSpec(EnvSpecBase):
76
75
  class Env(EnvBase):
77
76
  # image_repo is the de-referenced repository from where the image was obtained
78
77
  image_repo: str
79
- settings: Settings # type: ignore
80
- spec: EnvSpec # type: ignore
78
+ settings: Settings
79
+ spec: EnvSpec
81
80
 
82
81
  # image_hash is a hash of the image that can be used to identify it
83
82
  # TODO: populate it *after* fetching/execution
@@ -111,14 +110,13 @@ class Env(EnvBase):
111
110
  raise WorkflowError(f"{cmd} is not available in PATH")
112
111
 
113
112
  def decorate_shellcmd(self, cmd: str) -> str:
114
- # TODO pass more options here (user etc)
115
- tmpdir = tempfile.gettempdir()
113
+ # TODO pass more options here (user etc)?
116
114
 
117
115
  mountpoints = (
118
- f" -v {getcwd()!r}:{getcwd()!r}" # Mount host directory to container
119
- f" -v {str(self.source_cache)!r}:{str(self.source_cache)!r}" # Mount host cache to container
120
- f" -v {tmpdir!r}:{tmpdir!r}" # always mount the temporary directory
116
+ f" -v {str(self.tempdir)!r}:/tmp" # always mount the temporary directory
121
117
  )
118
+ for mountpoint in self.mountpoints:
119
+ mountpoints += f" -v {str(mountpoint)!r}:{str(mountpoint)!r}"
122
120
  for mountpoint in self.settings.mountpoints:
123
121
  mountpoints += f" -v {mountpoint!r}"
124
122
 
@@ -134,6 +132,16 @@ class Env(EnvBase):
134
132
 
135
133
  return decorated_cmd
136
134
 
135
+ def contains_executable(self, executable: str) -> bool:
136
+ return (
137
+ self.run_cmd(
138
+ self.decorate_shellcmd(f"which {executable}"),
139
+ check=True,
140
+ capture_output=True,
141
+ ).returncode
142
+ == 0
143
+ )
144
+
137
145
  def record_hash(self, hash_object) -> None:
138
146
  # Update given hash such that it changes whenever the environment
139
147
  # could potentially contain a different set of software (in terms of versions or