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-
1412import datetime
1513import inspect
1614import logging
1715import numbers
16+ import os
1817import sys
1918import 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