Source code for schrodinger.application.steps.licensing

from schrodinger.utils import license


[docs]class LicenseMixin: """ A mixin to ensure that a step uses a `LICENSE_KEY` license. To be mixed in with a `stepper.ReduceStep`. Subclasses need to define `LICENSE_KEY`. If no licenses are available when the step is executed an `EXCEPTION` will be raised. """ LICENSE_KEY = None NO_MORE_LICENSES = 'No license tokens available.' EXCEPTION = RuntimeError
[docs] def reduceFunction(self, inputs): """ Perform the step with checking out (and back in) of the license. See also `stepper.ReduceStep.reduceFunction`. """ lic = license.License(self.LICENSE_KEY) try: if not lic.isValid(): raise self.EXCEPTION(self.NO_MORE_LICENSES) outputs = super().reduceFunction(inputs) finally: lic.checkin() return outputs
[docs] def getLicenseRequirements(self): required_licenses = super().getLicenseRequirements() required_licenses[self.LICENSE_KEY] = 1 return required_licenses