diff --git a/src/cryptography/utils.py b/src/cryptography/utils.py index 5bef160d9..df3abc8c1 100644 --- a/src/cryptography/utils.py +++ b/src/cryptography/utils.py @@ -143,11 +143,16 @@ def deprecated( module_name: str, message: str, warning_class: typing.Type[Warning], + name: typing.Optional[str] = None, ) -> _DeprecatedValue: module = sys.modules[module_name] if not isinstance(module, _ModuleWithDeprecations): - sys.modules[module_name] = _ModuleWithDeprecations(module) - return _DeprecatedValue(value, message, warning_class) + sys.modules[module_name] = module = _ModuleWithDeprecations(module) + dv = _DeprecatedValue(value, message, warning_class) + # Maintain backwards compatibility with `name is None` for pyOpenSSL. + if name is not None: + setattr(module, name, dv) + return dv def cached_property(func: typing.Callable) -> property: diff --git a/tests/deprecated_module.py b/tests/deprecated_module.py index 946440620..421af3d50 100644 --- a/tests/deprecated_module.py +++ b/tests/deprecated_module.py @@ -6,8 +6,13 @@ from cryptography import utils # This module exists to test `cryptography.utils.deprecated` -DEPRECATED = utils.deprecated( - 3, __name__, "Test Deprecated Object", DeprecationWarning +DEPRECATED = 3 +utils.deprecated( + DEPRECATED, + __name__, + "Test Deprecated Object", + DeprecationWarning, + name="DEPRECATED", ) NOT_DEPRECATED = 12 diff --git a/tests/test_warnings.py b/tests/test_warnings.py index 2400f21b8..412ff6323 100644 --- a/tests/test_warnings.py +++ b/tests/test_warnings.py @@ -18,7 +18,8 @@ class TestDeprecated: def test_deprecated(self, monkeypatch): mod = types.ModuleType("TestDeprecated/test_deprecated") monkeypatch.setitem(sys.modules, mod.__name__, mod) - mod.X = deprecated( + deprecated( + name="X", value=1, module_name=mod.__name__, message="deprecated message text", @@ -53,7 +54,8 @@ class TestDeprecated: def test_deleting_deprecated_members(self, monkeypatch): mod = types.ModuleType("TestDeprecated/test_deprecated") monkeypatch.setitem(sys.modules, mod.__name__, mod) - mod.X = deprecated( + deprecated( + name="X", value=1, module_name=mod.__name__, message="deprecated message text",