cpython: bd4771d3e88d (original) (raw)
--- a/Doc/whatsnew/3.6.rst
+++ b/Doc/whatsnew/3.6.rst
@@ -692,6 +692,14 @@ Added the 64-bit integer type :data:REG[](#l1.3) (Contributed by Clement Rouault in :issue:
23026.)[](#l1.4) [](#l1.5) [](#l1.6) +winsound[](#l1.7) +--------[](#l1.8) +[](#l1.9) +Allowed keyword arguments to be passed to :func:
Beep <winsound.Beep>,[](#l1.10) +:func:
MessageBeep <winsound.MessageBeep>, and :func:
PlaySound
+<winsound.PlaySound> (:issue:
27982`).
+
+
zipfile
-------
--- a/Lib/test/test_winsound.py +++ b/Lib/test/test_winsound.py @@ -51,6 +51,10 @@ class BeepTest(unittest.TestCase): for i in range(100, 2000, 100): safe_Beep(i, 75)
+ + class MessageBeepTest(unittest.TestCase): def tearDown(self): @@ -76,6 +80,9 @@ class MessageBeepTest(unittest.TestCase) def test_question(self): safe_MessageBeep(winsound.MB_ICONQUESTION)
+ class PlaySoundTest(unittest.TestCase): @@ -92,6 +99,9 @@ class PlaySoundTest(unittest.TestCase): winsound.SND_MEMORY) self.assertRaises(TypeError, winsound.PlaySound, 1, 0)
+ def test_snd_memory(self): with open(support.findfile('pluck-pcm8.wav', subdir='audiodata'), 'rb') as f:
--- a/Misc/NEWS +++ b/Misc/NEWS @@ -215,6 +215,9 @@ Build Windows ------- +- Issue #27982: The functions of the winsound module now accept keyword
- Issue #20366: Build full text search support into SQLite on Windows.
- Issue #27756: Adds new icons for Python files and processes on Windows.
--- a/PC/clinic/winsound.c.h +++ b/PC/clinic/winsound.c.h @@ -3,7 +3,7 @@ preserve [clinic start generated code]*/ PyDoc_STRVAR(winsound_PlaySound__doc__, -"PlaySound($module, sound, flags, /)\n" +"PlaySound($module, /, sound, flags)\n" "--\n" "\n" "A wrapper around the Windows PlaySound API.\n" @@ -14,19 +14,21 @@ PyDoc_STRVAR(winsound_PlaySound__doc__, " Flag values, ored together. See module documentation."); #define WINSOUND_PLAYSOUND_METHODDEF [](#l4.15)
- {"PlaySound", (PyCFunction)winsound_PlaySound, METH_VARARGS|METH_KEYWORDS, winsound_PlaySound__doc__},
static PyObject * winsound_PlaySound_impl(PyObject *module, PyObject *sound, int flags); static PyObject * -winsound_PlaySound(PyObject *module, PyObject *args) +winsound_PlaySound(PyObject *module, PyObject *args, PyObject *kwargs) { PyObject *return_value = NULL;
- static const char * const _keywords[] = {"sound", "flags", NULL};
- static _PyArg_Parser _parser = {"Oi:PlaySound", _keywords, 0}; PyObject *sound; int flags;
- if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser, &sound, &flags)) { goto exit; } @@ -37,7 +39,7 @@ exit: }
PyDoc_STRVAR(winsound_Beep__doc__, -"Beep($module, frequency, duration, /)\n" +"Beep($module, /, frequency, duration)\n" "--\n" "\n" "A wrapper around the Windows Beep API.\n" @@ -49,19 +51,21 @@ PyDoc_STRVAR(winsound_Beep__doc__, " How long the sound should play, in milliseconds."); #define WINSOUND_BEEP_METHODDEF [](#l4.49)
static PyObject * winsound_Beep_impl(PyObject *module, int frequency, int duration); static PyObject * -winsound_Beep(PyObject *module, PyObject *args) +winsound_Beep(PyObject *module, PyObject *args, PyObject *kwargs) { PyObject *return_value = NULL;
- static const char * const _keywords[] = {"frequency", "duration", NULL};
- static _PyArg_Parser _parser = {"ii:Beep", _keywords, 0}; int frequency; int duration;
- if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser, &frequency, &duration)) { goto exit; } @@ -72,7 +76,7 @@ exit: }
PyDoc_STRVAR(winsound_MessageBeep__doc__, -"MessageBeep($module, x=MB_OK, /)\n" +"MessageBeep($module, /, type=MB_OK)\n" "--\n" "\n" "Call Windows MessageBeep(x).\n" @@ -80,24 +84,26 @@ PyDoc_STRVAR(winsound_MessageBeep__doc__ "x defaults to MB_OK."); #define WINSOUND_MESSAGEBEEP_METHODDEF [](#l4.83)
- {"MessageBeep", (PyCFunction)winsound_MessageBeep, METH_VARARGS|METH_KEYWORDS, winsound_MessageBeep__doc__},
static PyObject * -winsound_MessageBeep_impl(PyObject *module, int x); +winsound_MessageBeep_impl(PyObject *module, int type); static PyObject * -winsound_MessageBeep(PyObject *module, PyObject *args) +winsound_MessageBeep(PyObject *module, PyObject *args, PyObject *kwargs) { PyObject *return_value = NULL;
- static const char * const _keywords[] = {"type", NULL};
- static _PyArg_Parser _parser = {"|i:MessageBeep", _keywords, 0};
- int type = MB_OK;
- if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
}&type)) {[](#l4.104) goto exit;[](#l4.105)
exit: return return_value; } -/[clinic end generated code: output=b999334e2e444ad2 input=a9049054013a1b77]/ +/[clinic end generated code: output=40b3d3ef2faefb15 input=a9049054013a1b77]/
--- a/PC/winsound.c +++ b/PC/winsound.c @@ -52,7 +52,7 @@ PyDoc_STRVAR(sound_module_doc, "SND_NOWAIT - Return immediately if the sound driver is busy\n" // Without any errors "\n" "Beep(frequency, duration) - Make a beep through the PC speaker.\n" -"MessageBeep(x) - Call Windows MessageBeep."); +"MessageBeep(type) - Call Windows MessageBeep."); /*[clinic input] module winsound @@ -68,14 +68,13 @@ winsound.PlaySound The sound to play; a filename, data, or None. flags: int Flag values, ored together. See module documentation.
A wrapper around the Windows PlaySound API. [clinic start generated code]/ static PyObject winsound_PlaySound_impl(PyObject module, PyObject sound, int flags) -/[clinic end generated code: output=49a0fd16a372ebeb input=7bdf637f10201d37]/ +/[clinic end generated code: output=49a0fd16a372ebeb input=c63e1f2d848da2f2]/ { int ok; wchar_t *wsound; @@ -132,14 +131,13 @@ winsound.Beep Must be in the range 37 through 32,767. duration: int How long the sound should play, in milliseconds.
A wrapper around the Windows Beep API. [clinic start generated code]/ static PyObject winsound_Beep_impl(PyObject module, int frequency, int duration) -/[clinic end generated code: output=f32382e52ee9b2fb input=628a99d2ddf73798]/ +/[clinic end generated code: output=f32382e52ee9b2fb input=40e360cfa00a5cf0]*/ { BOOL ok; @@ -163,8 +161,7 @@ winsound_Beep_impl(PyObject module, int /[clinic input] winsound.MessageBeep
Call Windows MessageBeep(x). @@ -172,13 +169,13 @@ x defaults to MB_OK. [clinic start generated code]/ static PyObject -winsound_MessageBeep_impl(PyObject module, int x) -/[clinic end generated code: output=1ad89e4d8d30a957 input=a776c8a85c9853f6]/ +winsound_MessageBeep_impl(PyObject module, int type) +/[clinic end generated code: output=120875455121121f input=db185f741ae21401]/ { BOOL ok; Py_BEGIN_ALLOW_THREADS