Skip to content

Commit 01752fc

Browse files
committed
Stop time bombing with RuntimeError's
Signed-off-by: Pedro Algarvio <palgarvio@vmware.com>
1 parent 8504ad8 commit 01752fc

File tree

1 file changed

+18
-5
lines changed

1 file changed

+18
-5
lines changed

salt/utils/versions.py

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,11 @@
99
Version parsing based on distutils.version which works under python 3
1010
because on python 3 you can no longer compare strings against integers.
1111
"""
12-
13-
1412
import datetime
1513
import inspect
1614
import logging
1715
import numbers
16+
import os
1817
import sys
1918
import warnings
2019

@@ -141,7 +140,7 @@ def warn_until(
141140

142141
if _version_ >= version:
143142
caller = inspect.getframeinfo(sys._getframe(stacklevel - 1))
144-
raise RuntimeError(
143+
deprecated_message = (
145144
"The warning triggered on filename '{filename}', line number "
146145
"{lineno}, is supposed to be shown until version "
147146
"{until_version} is released. Current version is now "
@@ -150,8 +149,15 @@ def warn_until(
150149
lineno=caller.lineno,
151150
until_version=version.formatted_version,
152151
salt_version=_version_.formatted_version,
153-
),
152+
)
154153
)
154+
if os.environ.get("RAISE_DEPRECATIONS_RUNTIME_ERRORS", "0") == "1":
155+
# We don't raise RuntimeError by default since that can break
156+
# users systems. We do however want to raise them in a CI context.
157+
raise RuntimeError(deprecated_message)
158+
# Otherwise, print the deprecated message to STDERR
159+
sys.stderr.write(f"\n{deprecated_message}\n")
160+
sys.stderr.flush()
155161

156162
if _dont_call_warnings is False:
157163
warnings.warn(
@@ -209,7 +215,7 @@ def warn_until_date(
209215
today = _current_date or datetime.datetime.utcnow().date()
210216
if today >= date:
211217
caller = inspect.getframeinfo(sys._getframe(stacklevel - 1))
212-
raise RuntimeError(
218+
deprecated_message = (
213219
"{message} This warning(now exception) triggered on "
214220
"filename '{filename}', line number {lineno}, is "
215221
"supposed to be shown until {date}. Today is {today}. "
@@ -221,6 +227,13 @@ def warn_until_date(
221227
today=today.isoformat(),
222228
),
223229
)
230+
if os.environ.get("RAISE_DEPRECATIONS_RUNTIME_ERRORS", "0") == "1":
231+
# We don't raise RuntimeError by default since that can break
232+
# users systems. We do however want to raise them in a CI context.
233+
raise RuntimeError(deprecated_message)
234+
# Otherwise, print the deprecated message to STDERR
235+
sys.stderr.write(f"\n{deprecated_message}\n")
236+
sys.stderr.flush()
224237

225238
if _dont_call_warnings is False:
226239
warnings.warn(

0 commit comments

Comments
 (0)