Source code for spython.main.base.sutils

# Singularity Image utils for interacting with the Image/Instance
#           classes from the client

# Copyright (C) 2017-2022 Vanessa Sochat.

# This Source Code Form is subject to the terms of the
# Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed
# with this file, You can obtain one at http://mozilla.org/MPL/2.0/.


from spython.logger import bot
import os
import re


[docs]def load(self, image=None): """load an image, either an actual path on the filesystem or a uri. Parameters ========== image: the image path or uri to load (e.g., docker://ubuntu """ from spython.image import Image from spython.instance import Instance self.simage = Image(image) if image is not None: if image.startswith("instance://"): self.simage = Instance(image) bot.info(self.simage)
[docs]def setenv(self, variable, value): """set an environment variable for Singularity Parameters ========== variable: the variable to set value: the value to set """ os.environ[variable] = value os.putenv(variable, value) bot.debug("%s set to %s" % (variable, value))
[docs]def get_filename(self, image, ext="sif", pwd=True): """return an image filename based on the image uri. Parameters ========== ext: the extension to use pwd: derive a filename for the pwd """ if pwd: image = os.path.basename(image) image = re.sub("^.*://", "", image) if not image.endswith(ext): image = "%s.%s" % (image, ext) return image
[docs]def get_uri(self): """check if the loaded image object (self.simage) has an associated uri return if yes, None if not. """ if hasattr(self, "simage"): if self.simage is not None: if self.simage.image not in ["", None]: # Concatenates the <uri>://<image> return str(self.simage)