Skip to content

Commit 151c373

Browse files
committed
Document "pygame.warn()".
1 parent a286784 commit 151c373

File tree

5 files changed

+36
-3
lines changed

5 files changed

+36
-3
lines changed

docs/reST/ref/pygame.rst

+20
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,26 @@ object instead of the module, which can be used to test for availability.
224224

225225
.. ## pygame.print_debug_info ##
226226
227+
.. function:: warn
228+
229+
| :sl:`throws a warning`
230+
| :sg:`warn(message, urgency, level=2, category=RuntimeWarning)`
231+
232+
Throws a warning with a given urgency. See documentation for :c:func:`pgWarn` for more information on urgency system.
233+
234+
.. note::
235+
This function is mostly used internally, but might be also useful for extensions.
236+
Arg ``level`` denotes how much to trace back in the call stack.
237+
Beware, that the default value is 2, meaning the caller of a function with ``pygame.warn(...)`` will be blamed: ::
238+
239+
>>> def my_func():
240+
... pygame.warn("Warning!", urgency=0)
241+
...
242+
>>> my_func()
243+
<stdin>:1: RuntimeWarning: Warning!
244+
245+
.. # pygame.warn ""
246+
227247
228248
:mod:`pygame.version`
229249
=====================

src_c/doc/pygame_doc.h

+1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
#define DOC_ENCODESTRING "encode_string([obj [, encoding [, errors [, etype]]]]) -> bytes or None\nEncode a Unicode or bytes object"
1414
#define DOC_ENCODEFILEPATH "encode_file_path([obj [, etype]]) -> bytes or None\nEncode a Unicode or bytes object as a file system path"
1515
#define DOC_PRINTDEBUGINFO "print_debug_info(filename=None) -> None\nretrieves useful information for debugging and issue-reporting purposes"
16+
#define DOC_WARN "warn(message, urgency, level=2, category=RuntimeWarning)\nthrows a warning"
1617
#define DOC_VERSION "small module containing version information"
1718
#define DOC_VERSION_VER "ver = '1.2'\nversion number as a string"
1819
#define DOC_VERSION_VERNUM "vernum = (1, 5, 3)\ntupled integers of the version"

src_py/__init__.py

+13-1
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,19 @@ def _attribute_undefined(name):
100100

101101
def warn(message, urgency, level=2, category=RuntimeWarning): # pylint: disable=function-redefined
102102
"""Throws a warning with a given urgency"""
103-
_warn(message, category, level + 1, urgency)
103+
names = {0: "urgent", 1: "mild", 2: "note"}
104+
105+
if urgency in names:
106+
note = f"{urgency}: {names[urgency]}"
107+
else:
108+
note = str(urgency)
109+
110+
_warn(
111+
f"{message} ({note})",
112+
category,
113+
level + 1,
114+
urgency,
115+
)
104116

105117

106118
from pygame.rect import Rect, FRect

test/base_test.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -629,7 +629,7 @@ def test_warn(self):
629629
self._warn("message", 0)
630630
self.assertEqual(len(cx.warnings), 1)
631631
warning = cx.warnings[0]
632-
self.assertEqual(str(warning.message), "message")
632+
self.assertEqual(str(warning.message), "message (0: urgent)")
633633
self.assertIn("base_test.py", warning.filename)
634634

635635
with self.assertWarns(RuntimeWarning) as cx:

test/sysfont_test.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ def test_sysfont_warnings(self):
8686
with self.assertWarns(RuntimeWarning):
8787
pygame.font.SysFont(("non-existent font", "non-existent font2"), 40)
8888

89-
with self.assertWarns(RuntimeError):
89+
with self.assertWarns(RuntimeWarning):
9090
pygame.font.SysFont(
9191
(bytes("non-existent font", "utf-8"), "non-existent font2"), 40
9292
)

0 commit comments

Comments
 (0)