This was added in cpython commit [1] commit 992446dd5bd3fff92ea0f8064fb19eebfe105cef Author: Mark Shannon <mark@hotpy.org> Date: Mon Feb 5 16:20:54 2024 +0000 GH-113462: Limit the number of versions that a single class can use. (GH-114900) , causing an `--enable-werror` build on Debian testing using system python3-dev 3.13.2-2 to fail like this: /home/michi/development/git/libreoffice/pyuno/source/module/pyuno_iterator.cxx:185:1: error: missing field 'tp_versions_used' initializer [-Werror,-Wmissing-field-initializers] 185 | }; | ^ /home/michi/development/git/libreoffice/pyuno/source/module/pyuno_iterator.cxx:334:1: error: missing field 'tp_versions_used' initializer [-Werror,-Wmissing-field-initializers] 334 | }; | ^ 2 errors generated. make[1]: *** [/home/michi/development/git/libreoffice/solenv/gbuild/LinkTarget.mk:336: /home/michi/development/git/libreoffice/workdir/CxxObject/pyuno/source/module/pyuno_iterator.o] Error 1 make[1]: *** Waiting for unfinished jobs.... /home/michi/development/git/libreoffice/pyuno/source/module/pyuno_callable.cxx:252:1: error: missing field 'tp_versions_used' initializer [-Werror,-Wmissing-field-initializers] 252 | }; | ^ 1 error generated. make[1]: *** [/home/michi/development/git/libreoffice/solenv/gbuild/LinkTarget.mk:336: /home/michi/development/git/libreoffice/workdir/CxxObject/pyuno/source/module/pyuno_callable.o] Error 1 /home/michi/development/git/libreoffice/pyuno/source/module/pyuno_struct.cxx:377:1: error: missing field 'tp_versions_used' initializer [-Werror,-Wmissing-field-initializers] 377 | }; | ^ 1 error generated. make[1]: *** [/home/michi/development/git/libreoffice/solenv/gbuild/LinkTarget.mk:336: /home/michi/development/git/libreoffice/workdir/CxxObject/pyuno/source/module/pyuno_struct.o] Error 1 /home/michi/development/git/libreoffice/pyuno/source/module/pyuno.cxx:1693:1: error: missing field 'tp_versions_used' initializer [-Werror,-Wmissing-field-initializers] 1693 | }; | ^ 1 error generated. make[1]: *** [/home/michi/development/git/libreoffice/solenv/gbuild/LinkTarget.mk:336: /home/michi/development/git/libreoffice/workdir/CxxObject/pyuno/source/module/pyuno.o] Error 1 /home/michi/development/git/libreoffice/pyuno/source/module/pyuno_runtime.cxx:147:1: error: missing field 'tp_versions_used' initializer [-Werror,-Wmissing-field-initializers] 147 | }; | ^ 1 error generated. make[1]: *** [/home/michi/development/git/libreoffice/solenv/gbuild/LinkTarget.mk:336: /home/michi/development/git/libreoffice/workdir/CxxObject/pyuno/source/module/pyuno_runtime.o] Error 1 make: *** [Makefile:128: pyuno] Error 2 Initialize the member to 0, as e.g. commit [2] does for swig. For cpython versions this is contained in (from within cpython git repo): $ git tag --contains 992446dd5bd3fff92ea0f8064fb19eebfe105cef v3.13.0 v3.13.0a4 v3.13.0a5 v3.13.0a6 v3.13.0b1 v3.13.0b2 v3.13.0b3 v3.13.0b4 v3.13.0rc1 v3.13.0rc2 v3.13.0rc3 v3.13.1 v3.13.2 v3.13.3 v3.14.0a1 v3.14.0a2 v3.14.0a3 v3.14.0a4 v3.14.0a5 v3.14.0a6 v3.14.0a7 [1]992446dd5b
[2]c3e30c5734
Change-Id: I1ad4c511880cf00e4c45b9e835edcd245fe2853c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/184198 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Python UNO Bindings
UNO bindings for the Python programming language.
To have much joy debugging Python extensions you need to:
- a) edit
pythonloader.py
in your install settingDEBUG=1
at the top - b)
touch pyuno/source/module/pyuno_runtime.cxx
andmake debug=true
inpyuno
Then you'll start to see your exceptions on the console instead of them getting lost at the UNO interface.
Python also comes with a gdb script
libpython$(PYTHON_VERSION_MAJOR).$(PYTHON_VERSION_MINOR)m.so.1.0-gdb.py
that is copied to instdir
and will be auto-loaded by gdb
;
it provides commands like py-bt
to get a Python-level backtrace,
and py-print
to print Python variables.
Another way to debug Python code is to use pdb
: edit some initialization
function to insert import pdb; pdb.set_trace()
(somewhere so that it is
executed early), then run soffice
from a terminal and a command-line Python
debugger will appear where you can set Python-level breakpoints.