diff --git a/src/citrine/__init__.py b/src/citrine/__init__.py index effc6d496..db9278ded 100644 --- a/src/citrine/__init__.py +++ b/src/citrine/__init__.py @@ -5,5 +5,12 @@ https://citrineinformatics.github.io/citrine-python/index.html """ +import warnings + from citrine.citrine import Citrine # noqa: F401 from .__version__ import __version__ # noqa: F401 + +# Python's default warning filter hides DeprecationWarning unless triggered from +# __main__ (PEP 565). Surface DeprecationWarnings raised from citrine.* so users +# see them before the deprecated APIs are removed. +warnings.filterwarnings("default", category=DeprecationWarning, module=r"citrine(\.|$)") diff --git a/src/citrine/__version__.py b/src/citrine/__version__.py index c7a18d13e..4b56dfc53 100644 --- a/src/citrine/__version__.py +++ b/src/citrine/__version__.py @@ -1 +1 @@ -__version__ = "4.0.3" +__version__ = "4.0.4" diff --git a/tests/test_citrine.py b/tests/test_citrine.py index 1b24c9221..42dccb8f1 100644 --- a/tests/test_citrine.py +++ b/tests/test_citrine.py @@ -1,4 +1,5 @@ import platform +import warnings from datetime import datetime, timezone import jwt @@ -6,6 +7,7 @@ import requests_mock from citrine import Citrine +from citrine._utils.functions import migrate_deprecated_argument def refresh_token(expiration: datetime = None) -> dict: @@ -103,3 +105,20 @@ def test_citrine_user_agent(): # enforce them to be ints. It's common to see strings used # as the patch version assert len(product_version.split('.')) == 3 + + +def test_citrine_deprecation_warnings_visible_by_default(): + import importlib + + import citrine + + with warnings.catch_warnings(record=True) as caught: + warnings.resetwarnings() + # Mirror Python's default filter: DeprecationWarning hidden outside __main__. + warnings.simplefilter("ignore", category=DeprecationWarning) + importlib.reload(citrine) + + migrate_deprecated_argument(None, "new", "value", "old") + + deprecations = [w for w in caught if issubclass(w.category, DeprecationWarning)] + assert any("'old' is deprecated" in str(w.message) for w in deprecations)