22 __all__ = [
'deprecate_pybind11', 
'suppress_deprecations']
 
   24 import deprecated.sphinx
 
   29 from contextlib 
import contextmanager
 
   33     """Deprecate a pybind11-wrapped C++ interface function, method or class. 
   35     This needs to use a pass-through Python wrapper so that 
   36     `~deprecated.sphinx.deprecated` can update its docstring; pybind11 
   37     docstrings are native and cannot be modified. 
   39     Note that this is not a decorator; its output must be assigned to 
   40     replace the method being deprecated. 
   44     obj : function, method, or class 
   45         The function, method, or class to deprecate. 
   47         Reason for deprecation, passed to `~deprecated.sphinx.deprecated` 
   49         Warning category, passed to `~deprecated.sphinx.deprecated` 
   53     obj : function, method, or class 
   54         Wrapped function, method, or class 
   58     .. code-block:: python 
   60        ExposureF.getCalib = deprecate_pybind11(ExposureF.getCalib, 
   61                reason="Replaced by getPhotoCalib. (Will be removed in 18.0)", 
   62                category=FutureWarning)) 
   66     def internal(*args, **kwargs):
 
   67         return obj(*args, **kwargs)
 
   69     return deprecated.sphinx.deprecated(reason=reason, category=category)(internal)
 
   74     """Suppress warnings generated by `deprecated.sphinx.deprecated`. 
   76     Naively, one might attempt to suppress these warnings by using 
   77     `~warnings.catch_warnings`. However, `~deprecated.sphinx.deprecated` 
   78     attempts to install its own filter, overriding that. This convenience 
   79     method works around this and properly suppresses the warnings by providing 
   80     a mock `~warnings.simplefilter` for `~deprecated.sphinx.deprecated` to 
   85     category : `Warning` or subclass 
   86         The category of warning to suppress. 
   88     with warnings.catch_warnings():
 
   89         warnings.simplefilter(
"ignore", category)
 
   90         with unittest.mock.patch.object(warnings, 
"simplefilter"):