schrodinger.utils.deprecation module

Deprecation handling

Copyright Schrodinger LLC, All Rights Reserved.

exception schrodinger.utils.deprecation.DeprecationError

Bases: RuntimeError

Exception indicating API deprecation

schrodinger.utils.deprecation.raise_deprecation_error(msg: str, to_remove_in: str)

Raise a DeprecationError unless USE_DEPRECATED feature flag is set, which will issue a DeprecationWarning only.

Parameters
  • msg – deprecation message to issue

  • to_remove_in – Schrodinger core suite release version (XXXX-X)

schrodinger.utils.deprecation.deprecate_module(module_name: str, to_remove_in: str, replacement: str = None)

Raises a deprecation error (or only prints a warning when USE_DEPRECATED is enabled), indicating to the caller that the import should be removed, and updated to a new module if applicable.

Parameters
  • module_name – name of module which is deprecated

  • to_remove_in – Schrodinger core suite release version (XXXX-X)

  • replacement – replacement module name

schrodinger.utils.deprecation.deprecated(func: Callable, to_remove_in: Optional[str] = None, replacement: Optional[Callable] = None, msg: Optional[str] = None, *args, **kwargs)

Raises a deprecation error (or only prints a warning when USE_DEPRECATED is enabled), indicating to the caller that the decorated call should be removed, and updated to a new function/method call if applicable.

Note: To deprecate a method in a class for another, use the local name of the new method, e.g.

class MyClass:
    def newMethod(self):
        pass

    @deprecated(to_remove_in="XXXX-X", replacement=newMethod)
    def oldMethod(self):
        pass

Note: To deprecate a staticmethod or a classmethod, this decorator should be innermost, e.g.

@staticmethod
@deprecated(...)
def foo():
    pass

See the tests for this module for examples of deprecating functions, methods, classmethods and staticmethods.

(to deprecate a method in a class for another, use the “short name” of the updated method, e.g. “thing2” instead of “X.thing2”)

Parameters
  • func – deprecated function/method

  • to_remove_in – Schrodinger core suite release version (XXXX-X)

  • replacement – current function/method to use

  • msg – specific message if default message is not desired

schrodinger.utils.deprecation.enable_deprecated()

Enables deprecated imports/functions within managed context. DeprecationErrors that are rased by the @deprecation.deprecated() decorator when USE_DEPRECATED feature flag is enabled will be suppressed, to prevent tests in mmshare from failing.