/
niceSOFT
/
swig
Обзор
Документация
Войти
/
niceSOFT
/
swig
Код
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
Examples/test-suite/python/python_nokwargs_keyword_runme.py
50 строк
2 KB
William S Fulton
[Python] Fix %nokwargs being ignored under -keyword
25 май 2026, 18:16
25 май 2026, 18:16
349adde
Код
Авторство
О чём код?
# Regression test for the %nokwargs / -keyword interaction. # # Built with -keyword so every function defaults to METH_VARARGS|METH_KEYWORDS. # %nokwargs on a specific symbol must opt it back out to METH_VARARGS. Before # the check_kwargs() fix, %nokwargs was silently ignored when use_kw was set. import python_nokwargs_keyword as m from swig_test_utils import swig_check, swig_assert_raises # Positional calls always work. swig_check(m.KwargsClass(3, 4).value, 3004) swig_check(m.NoKwargsClass(3, 4).value, 3004) swig_check(m.KwargsClass().instance_method(3, 4), 34) swig_check(m.NoKwargsClass().instance_method(3, 4), 34) swig_check(m.KwargsClass.static_method(3, 4), 304) swig_check(m.NoKwargsClass.static_method(3, 4), 304) swig_check(m.kw_global(3, 4), 30004) swig_check(m.no_kw_global(3, 4), 30004) # Functions covered by -keyword accept named args. swig_check(m.KwargsClass(a=3, b=4).value, 3004) swig_check(m.KwargsClass(b=4).value, 10004) swig_check(m.KwargsClass().instance_method(a=3, b=4), 34) swig_check(m.KwargsClass().instance_method(b=4), 14) swig_check(m.KwargsClass.static_method(a=3, b=4), 304) swig_check(m.KwargsClass.static_method(b=4), 104) swig_check(m.kw_global(a=3, b=4), 30004) swig_check(m.kw_global(b=4), 10004) # %nokwargs must override -keyword: kwargs raise TypeError under -builtin. # Without -builtin, the generated Python proxy accepts named arguments and # forwards them positionally, masking the C wrapper level rejection. if m.is_python_builtin(): with swig_assert_raises(TypeError): m.NoKwargsClass(a=3, b=4) with swig_assert_raises(TypeError): m.NoKwargsClass(b=4) with swig_assert_raises(TypeError): m.NoKwargsClass().instance_method(a=3, b=4) with swig_assert_raises(TypeError): m.NoKwargsClass().instance_method(b=4) with swig_assert_raises(TypeError): m.NoKwargsClass.static_method(a=3, b=4) with swig_assert_raises(TypeError): m.NoKwargsClass.static_method(b=4) with swig_assert_raises(TypeError): m.no_kw_global(a=3, b=4) with swig_assert_raises(TypeError): m.no_kw_global(b=4)