>>> py3-actdiag: Checking sanity of /home/patrycja/aports/testing/py3-actdiag/APKBUILD... >>> py3-actdiag: Cleaning up srcdir >>> py3-actdiag: Cleaning up pkgdir >>> py3-actdiag: Cleaning up tmpdir >>> py3-actdiag: Fetching https://files.pythonhosted.org/packages/source/a/actdiag/actdiag-3.0.0.tar.gz >>> py3-actdiag: Fetching https://files.pythonhosted.org/packages/source/a/actdiag/actdiag-3.0.0.tar.gz >>> py3-actdiag: Checking sha512sums... actdiag-3.0.0.tar.gz: OK >>> py3-actdiag: Preparing build chroot... (1/121) Installing musl (1.2.5-r0) (2/121) Installing ca-certificates-bundle (20240226-r0) (3/121) Installing libcrypto3 (3.2.1-r2) (4/121) Installing libssl3 (3.2.1-r2) (5/121) Installing zlib (1.3.1-r0) (6/121) Installing apk-tools (2.14.3-r1) (7/121) Installing libattr (2.5.2-r0) (8/121) Installing attr (2.5.2-r0) (9/121) Installing libcap2 (2.69-r1) (10/121) Installing libcap-getcap (2.69-r1) (11/121) Installing fakeroot (1.33-r0) (12/121) Installing scanelf (1.3.7-r2) (13/121) Installing musl-utils (1.2.5-r0) (14/121) Installing libgcc (13.2.1_git20240309-r0) (15/121) Installing libstdc++ (13.2.1_git20240309-r0) (16/121) Installing lzip (1.24.1-r0) (17/121) Installing openssl (3.2.1-r2) (18/121) Installing patch (2.7.6-r10) (19/121) Installing pkgconf (2.2.0-r0) (20/121) Installing libacl (2.3.2-r0) (21/121) Installing tar (1.35-r2) (22/121) Installing busybox (1.36.1-r25) Executing busybox-1.36.1-r25.post-install (23/121) Installing ssl_client (1.36.1-r25) (24/121) Installing busybox-binsh (1.36.1-r25) (25/121) Installing abuild (3.12.0-r5) Executing abuild-3.12.0-r5.pre-install (26/121) Installing abuild-sudo (3.12.0-r5) (27/121) Installing alpine-baselayout-data (3.6.3-r0) (28/121) Installing alpine-baselayout (3.6.3-r0) Executing alpine-baselayout-3.6.3-r0.pre-install Executing alpine-baselayout-3.6.3-r0.post-install (29/121) Installing ifupdown-ng (0.12.1-r5) (30/121) Installing openrc (0.54-r1) Executing openrc-0.54-r1.post-install (31/121) Installing mdev-conf (4.6-r0) (32/121) Installing busybox-mdev-openrc (1.36.1-r25) (33/121) Installing alpine-conf (3.17.2-r0) (34/121) Installing alpine-keys (2.4-r1) (35/121) Installing alpine-release (3.20.0_alpha20240329-r0) (36/121) Installing busybox-openrc (1.36.1-r25) (37/121) Installing busybox-suid (1.36.1-r25) (38/121) Installing alpine-base (3.20.0_alpha20240329-r0) (39/121) Installing jansson (2.14-r4) (40/121) Installing zstd-libs (1.5.6-r0) (41/121) Installing binutils (2.42-r0) (42/121) Installing libmagic (5.45-r1) (43/121) Installing file (5.45-r1) (44/121) Installing libgomp (13.2.1_git20240309-r0) (45/121) Installing libatomic (13.2.1_git20240309-r0) (46/121) Installing gmp (6.3.0-r0) (47/121) Installing isl26 (0.26-r1) (48/121) Installing mpfr4 (4.2.1-r0) (49/121) Installing mpc1 (1.3.1-r1) (50/121) Installing gcc (13.2.1_git20240309-r0) (51/121) Installing libstdc++-dev (13.2.1_git20240309-r0) (52/121) Installing musl-dev (1.2.5-r0) (53/121) Installing g++ (13.2.1_git20240309-r0) (54/121) Installing make (4.4.1-r2) (55/121) Installing fortify-headers (1.1-r3) (56/121) Installing build-base (0.5-r3) (57/121) Installing hiredis (1.2.0-r0) (58/121) Installing libxxhash (0.8.2-r2) (59/121) Installing ccache (4.9.1-r0) (60/121) Installing ca-certificates (20240226-r0) (61/121) Installing brotli-libs (1.1.0-r2) (62/121) Installing c-ares (1.28.1-r0) (63/121) Installing libunistring (1.2-r0) (64/121) Installing libidn2 (2.3.7-r0) (65/121) Installing nghttp2-libs (1.61.0-r0) (66/121) Installing libpsl (0.21.5-r1) (67/121) Installing libcurl (8.7.1-r0) (68/121) Installing libexpat (2.6.2-r0) (69/121) Installing pcre2 (10.43-r0) (70/121) Installing git (2.44.0-r2) (71/121) Installing git-init-template (2.44.0-r2) (72/121) Installing libbz2 (1.0.8-r6) (73/121) Installing libffi (3.4.6-r0) (74/121) Installing gdbm (1.23-r1) (75/121) Installing xz-libs (5.6.1-r2) (76/121) Installing mpdecimal (4.0.0-r0) (77/121) Installing ncurses-terminfo-base (6.4_p20240330-r0) (78/121) Installing libncursesw (6.4_p20240330-r0) (79/121) Installing libpanelw (6.4_p20240330-r0) (80/121) Installing readline (8.2.10-r0) (81/121) Installing sqlite-libs (3.45.2-r0) (82/121) Installing python3 (3.12.2-r0) (83/121) Installing python3-pycache-pyc0 (3.12.2-r0) (84/121) Installing pyc (3.12.2-r0) (85/121) Installing py3-funcparserlib-pyc (1.0.1-r3) (86/121) Installing libpng (1.6.43-r0) (87/121) Installing freetype (2.13.2-r0) (88/121) Installing libimagequant (4.2.2-r0) (89/121) Installing libjpeg-turbo (3.0.2-r0) (90/121) Installing lcms2 (2.16-r0) (91/121) Installing openjpeg (2.5.2-r0) (92/121) Installing libsharpyuv (1.3.2-r0) (93/121) Installing libwebp (1.3.2-r0) (94/121) Installing tiff (4.6.0t-r0) (95/121) Installing libwebpdemux (1.3.2-r0) (96/121) Installing libwebpmux (1.3.2-r0) (97/121) Installing libxau (1.0.11-r3) (98/121) Installing libmd (1.1.0-r0) (99/121) Installing libbsd (0.12.2-r0) (100/121) Installing libxdmcp (1.1.5-r0) (101/121) Installing libxcb (1.16.1-r0) (102/121) Installing py3-pillow (10.3.0-r2) (103/121) Installing py3-pillow-pyc (10.3.0-r2) (104/121) Installing py3-webcolors (1.13-r2) (105/121) Installing py3-webcolors-pyc (1.13-r2) (106/121) Installing py3-blockdiag-pyc (3.0.0-r4) (107/121) Installing python3-pyc (3.12.2-r0) (108/121) Installing py3-funcparserlib (1.0.1-r3) (109/121) Installing py3-blockdiag (3.0.0-r4) (110/121) Installing py3-blockdiag-tests (3.0.0-r4) (111/121) Installing py3-docutils (0.20.1-r2) (112/121) Installing py3-docutils-pyc (0.20.1-r2) (113/121) Installing py3-nose (1.3.7-r12) (114/121) Installing py3-nose-pyc (1.3.7-r12) (115/121) Installing py3-parsing (3.1.2-r1) (116/121) Installing py3-parsing-pyc (3.1.2-r1) (117/121) Installing py3-packaging (24.0-r1) (118/121) Installing py3-packaging-pyc (24.0-r1) (119/121) Installing py3-setuptools (69.2.0-r1) (120/121) Installing py3-setuptools-pyc (69.2.0-r1) (121/121) Installing tini (0.19.0-r3) Executing busybox-1.36.1-r25.trigger Executing ca-certificates-20240226-r0.trigger OK: 309 MiB in 121 packages >>> py3-actdiag: Fetching https://files.pythonhosted.org/packages/source/a/actdiag/actdiag-3.0.0.tar.gz >>> py3-actdiag: Checking sha512sums... actdiag-3.0.0.tar.gz: OK >>> py3-actdiag: Unpacking /var/cache/distfiles/actdiag-3.0.0.tar.gz... /usr/lib/python3.12/site-packages/setuptools/dist.py:476: SetuptoolsDeprecationWarning: Invalid dash-separated options !! ******************************************************************************** Usage of dash-separated 'build-base' will not be supported in future versions. Please use the underscore name 'build_base' instead. By 2024-Sep-26, you need to update your project and remove deprecated calls or your builds will no longer be supported. See https://setuptools.pypa.io/en/latest/userguide/declarative_config.html for details. ******************************************************************************** !! opt = self.warn_dash_deprecation(opt, section) running build running build_py creating _build creating _build/lib creating _build/lib/actdiag copying src/actdiag/drawer.py -> _build/lib/actdiag copying src/actdiag/metrics.py -> _build/lib/actdiag copying src/actdiag/elements.py -> _build/lib/actdiag copying src/actdiag/builder.py -> _build/lib/actdiag copying src/actdiag/parser.py -> _build/lib/actdiag copying src/actdiag/__init__.py -> _build/lib/actdiag copying src/actdiag/command.py -> _build/lib/actdiag creating _build/lib/actdiag/plugins copying src/actdiag/plugins/autolane.py -> _build/lib/actdiag/plugins copying src/actdiag/plugins/__init__.py -> _build/lib/actdiag/plugins creating _build/lib/actdiag/utils copying src/actdiag/utils/__init__.py -> _build/lib/actdiag/utils creating _build/lib/actdiag/utils/rst copying src/actdiag/utils/rst/directives.py -> _build/lib/actdiag/utils/rst copying src/actdiag/utils/rst/__init__.py -> _build/lib/actdiag/utils/rst copying src/actdiag/utils/rst/nodes.py -> _build/lib/actdiag/utils/rst running egg_info writing src/actdiag.egg-info/PKG-INFO writing dependency_links to src/actdiag.egg-info/dependency_links.txt writing entry points to src/actdiag.egg-info/entry_points.txt writing requirements to src/actdiag.egg-info/requires.txt writing top-level names to src/actdiag.egg-info/top_level.txt reading manifest file 'src/actdiag.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' warning: no files found matching '*.gif' under directory 'src' warning: no previously-included files found matching '.drone.io.sh' warning: no previously-included files found matching 'examples/update.sh' adding license file 'LICENSE' writing manifest file 'src/actdiag.egg-info/SOURCES.txt' /usr/lib/python3.12/site-packages/setuptools/command/build_py.py:207: _Warning: Package 'actdiag.tests' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'actdiag.tests' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'actdiag.tests' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'actdiag.tests' to be distributed and are already explicitly excluding 'actdiag.tests' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) /usr/lib/python3.12/site-packages/setuptools/command/build_py.py:207: _Warning: Package 'actdiag.tests.VLGothic' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'actdiag.tests.VLGothic' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'actdiag.tests.VLGothic' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'actdiag.tests.VLGothic' to be distributed and are already explicitly excluding 'actdiag.tests.VLGothic' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) /usr/lib/python3.12/site-packages/setuptools/command/build_py.py:207: _Warning: Package 'actdiag.tests.diagrams' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'actdiag.tests.diagrams' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'actdiag.tests.diagrams' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'actdiag.tests.diagrams' to be distributed and are already explicitly excluding 'actdiag.tests.diagrams' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) creating _build/lib/actdiag/tests copying src/actdiag/tests/test_generate_diagram.py -> _build/lib/actdiag/tests copying src/actdiag/tests/test_rst_directives.py -> _build/lib/actdiag/tests creating _build/lib/actdiag/tests/VLGothic copying src/actdiag/tests/VLGothic/LICENSE -> _build/lib/actdiag/tests/VLGothic copying src/actdiag/tests/VLGothic/LICENSE.en -> _build/lib/actdiag/tests/VLGothic copying src/actdiag/tests/VLGothic/LICENSE_E.mplus -> _build/lib/actdiag/tests/VLGothic copying src/actdiag/tests/VLGothic/LICENSE_J.mplus -> _build/lib/actdiag/tests/VLGothic copying src/actdiag/tests/VLGothic/VL-Gothic-Regular.ttf -> _build/lib/actdiag/tests/VLGothic creating _build/lib/actdiag/tests/diagrams copying src/actdiag/tests/diagrams/simple.diag -> _build/lib/actdiag/tests/diagrams .SSSEEE.EEEEEEEEEEEEEEEEEEEEE...EEEEEEEEEEEE.E ====================================================================== ERROR: test_align_option1 (test_rst_directives.TestRstDirectives.test_align_option1) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/patrycja/aports/testing/py3-actdiag/src/actdiag-3.0.0/src/actdiag/tests/test_rst_directives.py", line 293, in test_align_option1 doctree = publish_doctree(text) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 524, in publish_doctree _output, publisher = publish_programmatically( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 722, in publish_programmatically output = publisher.publish(enable_exit_status=enable_exit_status) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 234, in publish self.document = self.reader.read(self.source, self.parser, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 70, in read self.parse() File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 76, in parse self.parser.parse(self.input, document) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/__init__.py", line 184, in parse self.statemachine.run(inputlines, document, inliner=self.inliner) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 169, in run results = StateMachineWS.run(self, input_lines, input_offset, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 233, in run context, next_state, result = self.check_line( ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 445, in check_line return method(match, context, next_state) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2355, in explicit_markup nodelist, blank_finish = self.explicit_construct(match) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2367, in explicit_construct return method(self, expmatch) ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2104, in directive return self.run_directive( ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2154, in run_directive result = directive_instance.run() ^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 54, in decorator return fn(*args) ^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 178, in run results[0] = self.node2image(node, diagram) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 254, in node2image drawer.save() File "/usr/lib/python3.12/site-packages/blockdiag/drawer.py", line 188, in save return self.drawer.save(self.filename, size, self.format) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 182, in save self._run() File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 109, in _run method(self.target, *args, **kwargs) File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 136, in textarea lines = self.textfolder(box, string, font, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 66, in get return HorizontalTextFolder(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 208, in __init__ self._result = self._lines() ^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 285, in _lines for folded in splittext(self, line, maxwidth, measure): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 41, in splittext textsize = metrics.textsize(text[0:i]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 212, in textsize textsize = self.drawer.textlinesize(text, self.font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 116, in textlinesize return self._pil_drawer.textlinesize(string, font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/png.py", line 276, in textlinesize size = self.draw.textsize(string, font=None) ^^^^^^^^^^^^^^^^^^ AttributeError: 'ImageDraw' object has no attribute 'textsize' ====================================================================== ERROR: test_align_option2 (test_rst_directives.TestRstDirectives.test_align_option2) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/patrycja/aports/testing/py3-actdiag/src/actdiag-3.0.0/src/actdiag/tests/test_rst_directives.py", line 305, in test_align_option2 doctree = publish_doctree(text) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 524, in publish_doctree _output, publisher = publish_programmatically( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 722, in publish_programmatically output = publisher.publish(enable_exit_status=enable_exit_status) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 234, in publish self.document = self.reader.read(self.source, self.parser, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 70, in read self.parse() File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 76, in parse self.parser.parse(self.input, document) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/__init__.py", line 184, in parse self.statemachine.run(inputlines, document, inliner=self.inliner) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 169, in run results = StateMachineWS.run(self, input_lines, input_offset, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 233, in run context, next_state, result = self.check_line( ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 445, in check_line return method(match, context, next_state) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2355, in explicit_markup nodelist, blank_finish = self.explicit_construct(match) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2367, in explicit_construct return method(self, expmatch) ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2104, in directive return self.run_directive( ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2154, in run_directive result = directive_instance.run() ^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 54, in decorator return fn(*args) ^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 178, in run results[0] = self.node2image(node, diagram) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 254, in node2image drawer.save() File "/usr/lib/python3.12/site-packages/blockdiag/drawer.py", line 188, in save return self.drawer.save(self.filename, size, self.format) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 182, in save self._run() File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 109, in _run method(self.target, *args, **kwargs) File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 136, in textarea lines = self.textfolder(box, string, font, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 66, in get return HorizontalTextFolder(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 208, in __init__ self._result = self._lines() ^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 285, in _lines for folded in splittext(self, line, maxwidth, measure): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 41, in splittext textsize = metrics.textsize(text[0:i]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 212, in textsize textsize = self.drawer.textlinesize(text, self.font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 116, in textlinesize return self._pil_drawer.textlinesize(string, font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/png.py", line 276, in textlinesize size = self.draw.textsize(string, font=None) ^^^^^^^^^^^^^^^^^^ AttributeError: 'ImageDraw' object has no attribute 'textsize' ====================================================================== ERROR: test_align_option3 (test_rst_directives.TestRstDirectives.test_align_option3) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/patrycja/aports/testing/py3-actdiag/src/actdiag-3.0.0/src/actdiag/tests/test_rst_directives.py", line 317, in test_align_option3 doctree = publish_doctree(text) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 524, in publish_doctree _output, publisher = publish_programmatically( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 722, in publish_programmatically output = publisher.publish(enable_exit_status=enable_exit_status) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 234, in publish self.document = self.reader.read(self.source, self.parser, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 70, in read self.parse() File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 76, in parse self.parser.parse(self.input, document) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/__init__.py", line 184, in parse self.statemachine.run(inputlines, document, inliner=self.inliner) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 169, in run results = StateMachineWS.run(self, input_lines, input_offset, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 233, in run context, next_state, result = self.check_line( ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 445, in check_line return method(match, context, next_state) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2355, in explicit_markup nodelist, blank_finish = self.explicit_construct(match) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2367, in explicit_construct return method(self, expmatch) ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2104, in directive return self.run_directive( ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2154, in run_directive result = directive_instance.run() ^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 54, in decorator return fn(*args) ^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 178, in run results[0] = self.node2image(node, diagram) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 254, in node2image drawer.save() File "/usr/lib/python3.12/site-packages/blockdiag/drawer.py", line 188, in save return self.drawer.save(self.filename, size, self.format) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 182, in save self._run() File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 109, in _run method(self.target, *args, **kwargs) File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 136, in textarea lines = self.textfolder(box, string, font, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 66, in get return HorizontalTextFolder(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 208, in __init__ self._result = self._lines() ^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 285, in _lines for folded in splittext(self, line, maxwidth, measure): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 41, in splittext textsize = metrics.textsize(text[0:i]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 212, in textsize textsize = self.drawer.textlinesize(text, self.font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 116, in textlinesize return self._pil_drawer.textlinesize(string, font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/png.py", line 276, in textlinesize size = self.draw.textsize(string, font=None) ^^^^^^^^^^^^^^^^^^ AttributeError: 'ImageDraw' object has no attribute 'textsize' ====================================================================== ERROR: test_alt_option (test_rst_directives.TestRstDirectives.test_alt_option) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/patrycja/aports/testing/py3-actdiag/src/actdiag-3.0.0/src/actdiag/tests/test_rst_directives.py", line 281, in test_alt_option doctree = publish_doctree(text) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 524, in publish_doctree _output, publisher = publish_programmatically( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 722, in publish_programmatically output = publisher.publish(enable_exit_status=enable_exit_status) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 234, in publish self.document = self.reader.read(self.source, self.parser, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 70, in read self.parse() File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 76, in parse self.parser.parse(self.input, document) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/__init__.py", line 184, in parse self.statemachine.run(inputlines, document, inliner=self.inliner) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 169, in run results = StateMachineWS.run(self, input_lines, input_offset, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 233, in run context, next_state, result = self.check_line( ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 445, in check_line return method(match, context, next_state) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2355, in explicit_markup nodelist, blank_finish = self.explicit_construct(match) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2367, in explicit_construct return method(self, expmatch) ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2104, in directive return self.run_directive( ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2154, in run_directive result = directive_instance.run() ^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 54, in decorator return fn(*args) ^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 178, in run results[0] = self.node2image(node, diagram) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 254, in node2image drawer.save() File "/usr/lib/python3.12/site-packages/blockdiag/drawer.py", line 188, in save return self.drawer.save(self.filename, size, self.format) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 182, in save self._run() File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 109, in _run method(self.target, *args, **kwargs) File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 136, in textarea lines = self.textfolder(box, string, font, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 66, in get return HorizontalTextFolder(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 208, in __init__ self._result = self._lines() ^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 285, in _lines for folded in splittext(self, line, maxwidth, measure): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 41, in splittext textsize = metrics.textsize(text[0:i]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 212, in textsize textsize = self.drawer.textlinesize(text, self.font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 116, in textlinesize return self._pil_drawer.textlinesize(string, font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/png.py", line 276, in textlinesize size = self.draw.textsize(string, font=None) ^^^^^^^^^^^^^^^^^^ AttributeError: 'ImageDraw' object has no attribute 'textsize' ====================================================================== ERROR: test_call_with_braces (test_rst_directives.TestRstDirectives.test_call_with_braces) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/patrycja/aports/testing/py3-actdiag/src/actdiag-3.0.0/src/actdiag/tests/test_rst_directives.py", line 260, in test_call_with_braces doctree = publish_doctree(text) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 524, in publish_doctree _output, publisher = publish_programmatically( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 722, in publish_programmatically output = publisher.publish(enable_exit_status=enable_exit_status) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 234, in publish self.document = self.reader.read(self.source, self.parser, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 70, in read self.parse() File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 76, in parse self.parser.parse(self.input, document) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/__init__.py", line 184, in parse self.statemachine.run(inputlines, document, inliner=self.inliner) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 169, in run results = StateMachineWS.run(self, input_lines, input_offset, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 233, in run context, next_state, result = self.check_line( ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 445, in check_line return method(match, context, next_state) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2355, in explicit_markup nodelist, blank_finish = self.explicit_construct(match) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2367, in explicit_construct return method(self, expmatch) ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2104, in directive return self.run_directive( ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2154, in run_directive result = directive_instance.run() ^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 54, in decorator return fn(*args) ^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 178, in run results[0] = self.node2image(node, diagram) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 254, in node2image drawer.save() File "/usr/lib/python3.12/site-packages/blockdiag/drawer.py", line 188, in save return self.drawer.save(self.filename, size, self.format) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 182, in save self._run() File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 109, in _run method(self.target, *args, **kwargs) File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 136, in textarea lines = self.textfolder(box, string, font, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 66, in get return HorizontalTextFolder(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 208, in __init__ self._result = self._lines() ^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 285, in _lines for folded in splittext(self, line, maxwidth, measure): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 41, in splittext textsize = metrics.textsize(text[0:i]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 212, in textsize textsize = self.drawer.textlinesize(text, self.font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 116, in textlinesize return self._pil_drawer.textlinesize(string, font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/png.py", line 276, in textlinesize size = self.draw.textsize(string, font=None) ^^^^^^^^^^^^^^^^^^ AttributeError: 'ImageDraw' object has no attribute 'textsize' ====================================================================== ERROR: test_call_without_braces (test_rst_directives.TestRstDirectives.test_call_without_braces) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/patrycja/aports/testing/py3-actdiag/src/actdiag-3.0.0/src/actdiag/tests/test_rst_directives.py", line 270, in test_call_without_braces doctree = publish_doctree(text) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 524, in publish_doctree _output, publisher = publish_programmatically( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 722, in publish_programmatically output = publisher.publish(enable_exit_status=enable_exit_status) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 234, in publish self.document = self.reader.read(self.source, self.parser, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 70, in read self.parse() File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 76, in parse self.parser.parse(self.input, document) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/__init__.py", line 184, in parse self.statemachine.run(inputlines, document, inliner=self.inliner) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 169, in run results = StateMachineWS.run(self, input_lines, input_offset, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 233, in run context, next_state, result = self.check_line( ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 445, in check_line return method(match, context, next_state) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2355, in explicit_markup nodelist, blank_finish = self.explicit_construct(match) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2367, in explicit_construct return method(self, expmatch) ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2104, in directive return self.run_directive( ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2154, in run_directive result = directive_instance.run() ^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 54, in decorator return fn(*args) ^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 178, in run results[0] = self.node2image(node, diagram) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 254, in node2image drawer.save() File "/usr/lib/python3.12/site-packages/blockdiag/drawer.py", line 188, in save return self.drawer.save(self.filename, size, self.format) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 182, in save self._run() File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 109, in _run method(self.target, *args, **kwargs) File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 136, in textarea lines = self.textfolder(box, string, font, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 66, in get return HorizontalTextFolder(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 208, in __init__ self._result = self._lines() ^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 285, in _lines for folded in splittext(self, line, maxwidth, measure): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 41, in splittext textsize = metrics.textsize(text[0:i]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 212, in textsize textsize = self.drawer.textlinesize(text, self.font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 116, in textlinesize return self._pil_drawer.textlinesize(string, font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/png.py", line 276, in textlinesize size = self.draw.textsize(string, font=None) ^^^^^^^^^^^^^^^^^^ AttributeError: 'ImageDraw' object has no attribute 'textsize' ====================================================================== ERROR: test_caption_option (test_rst_directives.TestRstDirectives.test_caption_option) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/patrycja/aports/testing/py3-actdiag/src/actdiag-3.0.0/src/actdiag/tests/test_rst_directives.py", line 344, in test_caption_option doctree = publish_doctree(text) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 524, in publish_doctree _output, publisher = publish_programmatically( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 722, in publish_programmatically output = publisher.publish(enable_exit_status=enable_exit_status) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 234, in publish self.document = self.reader.read(self.source, self.parser, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 70, in read self.parse() File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 76, in parse self.parser.parse(self.input, document) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/__init__.py", line 184, in parse self.statemachine.run(inputlines, document, inliner=self.inliner) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 169, in run results = StateMachineWS.run(self, input_lines, input_offset, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 233, in run context, next_state, result = self.check_line( ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 445, in check_line return method(match, context, next_state) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2355, in explicit_markup nodelist, blank_finish = self.explicit_construct(match) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2367, in explicit_construct return method(self, expmatch) ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2104, in directive return self.run_directive( ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2154, in run_directive result = directive_instance.run() ^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 54, in decorator return fn(*args) ^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 178, in run results[0] = self.node2image(node, diagram) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 254, in node2image drawer.save() File "/usr/lib/python3.12/site-packages/blockdiag/drawer.py", line 188, in save return self.drawer.save(self.filename, size, self.format) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 182, in save self._run() File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 109, in _run method(self.target, *args, **kwargs) File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 136, in textarea lines = self.textfolder(box, string, font, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 66, in get return HorizontalTextFolder(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 208, in __init__ self._result = self._lines() ^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 285, in _lines for folded in splittext(self, line, maxwidth, measure): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 41, in splittext textsize = metrics.textsize(text[0:i]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 212, in textsize textsize = self.drawer.textlinesize(text, self.font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 116, in textlinesize return self._pil_drawer.textlinesize(string, font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/png.py", line 276, in textlinesize size = self.draw.textsize(string, font=None) ^^^^^^^^^^^^^^^^^^ AttributeError: 'ImageDraw' object has no attribute 'textsize' ====================================================================== ERROR: test_caption_option_and_align_option (test_rst_directives.TestRstDirectives.test_caption_option_and_align_option) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/patrycja/aports/testing/py3-actdiag/src/actdiag-3.0.0/src/actdiag/tests/test_rst_directives.py", line 361, in test_caption_option_and_align_option doctree = publish_doctree(text) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 524, in publish_doctree _output, publisher = publish_programmatically( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 722, in publish_programmatically output = publisher.publish(enable_exit_status=enable_exit_status) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 234, in publish self.document = self.reader.read(self.source, self.parser, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 70, in read self.parse() File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 76, in parse self.parser.parse(self.input, document) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/__init__.py", line 184, in parse self.statemachine.run(inputlines, document, inliner=self.inliner) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 169, in run results = StateMachineWS.run(self, input_lines, input_offset, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 233, in run context, next_state, result = self.check_line( ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 445, in check_line return method(match, context, next_state) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2355, in explicit_markup nodelist, blank_finish = self.explicit_construct(match) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2367, in explicit_construct return method(self, expmatch) ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2104, in directive return self.run_directive( ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2154, in run_directive result = directive_instance.run() ^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 54, in decorator return fn(*args) ^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 178, in run results[0] = self.node2image(node, diagram) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 254, in node2image drawer.save() File "/usr/lib/python3.12/site-packages/blockdiag/drawer.py", line 188, in save return self.drawer.save(self.filename, size, self.format) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 182, in save self._run() File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 109, in _run method(self.target, *args, **kwargs) File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 136, in textarea lines = self.textfolder(box, string, font, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 66, in get return HorizontalTextFolder(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 208, in __init__ self._result = self._lines() ^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 285, in _lines for folded in splittext(self, line, maxwidth, measure): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 41, in splittext textsize = metrics.textsize(text[0:i]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 212, in textsize textsize = self.drawer.textlinesize(text, self.font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 116, in textlinesize return self._pil_drawer.textlinesize(string, font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/png.py", line 276, in textlinesize size = self.draw.textsize(string, font=None) ^^^^^^^^^^^^^^^^^^ AttributeError: 'ImageDraw' object has no attribute 'textsize' ====================================================================== ERROR: test_class_option (test_rst_directives.TestRstDirectives.test_class_option) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/patrycja/aports/testing/py3-actdiag/src/actdiag-3.0.0/src/actdiag/tests/test_rst_directives.py", line 440, in test_class_option doctree = publish_doctree(text) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 524, in publish_doctree _output, publisher = publish_programmatically( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 722, in publish_programmatically output = publisher.publish(enable_exit_status=enable_exit_status) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 234, in publish self.document = self.reader.read(self.source, self.parser, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 70, in read self.parse() File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 76, in parse self.parser.parse(self.input, document) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/__init__.py", line 184, in parse self.statemachine.run(inputlines, document, inliner=self.inliner) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 169, in run results = StateMachineWS.run(self, input_lines, input_offset, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 233, in run context, next_state, result = self.check_line( ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 445, in check_line return method(match, context, next_state) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2355, in explicit_markup nodelist, blank_finish = self.explicit_construct(match) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2367, in explicit_construct return method(self, expmatch) ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2104, in directive return self.run_directive( ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2154, in run_directive result = directive_instance.run() ^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 54, in decorator return fn(*args) ^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 178, in run results[0] = self.node2image(node, diagram) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 254, in node2image drawer.save() File "/usr/lib/python3.12/site-packages/blockdiag/drawer.py", line 188, in save return self.drawer.save(self.filename, size, self.format) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 182, in save self._run() File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 109, in _run method(self.target, *args, **kwargs) File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 136, in textarea lines = self.textfolder(box, string, font, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 66, in get return HorizontalTextFolder(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 208, in __init__ self._result = self._lines() ^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 285, in _lines for folded in splittext(self, line, maxwidth, measure): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 41, in splittext textsize = metrics.textsize(text[0:i]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 212, in textsize textsize = self.drawer.textlinesize(text, self.font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 116, in textlinesize return self._pil_drawer.textlinesize(string, font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/png.py", line 276, in textlinesize size = self.draw.textsize(string, font=None) ^^^^^^^^^^^^^^^^^^ AttributeError: 'ImageDraw' object has no attribute 'textsize' ====================================================================== ERROR: test_cleanup (test_rst_directives.TestRstDirectives.test_cleanup) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/lib/python3.12/site-packages/blockdiag/tests/utils.py", line 75, in wrap func(*args, **kwargs) File "/home/patrycja/aports/testing/py3-actdiag/src/actdiag-3.0.0/src/actdiag/tests/test_rst_directives.py", line 78, in test_cleanup publish_doctree(text) File "/usr/lib/python3.12/site-packages/docutils/core.py", line 524, in publish_doctree _output, publisher = publish_programmatically( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 722, in publish_programmatically output = publisher.publish(enable_exit_status=enable_exit_status) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 234, in publish self.document = self.reader.read(self.source, self.parser, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 70, in read self.parse() File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 76, in parse self.parser.parse(self.input, document) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/__init__.py", line 184, in parse self.statemachine.run(inputlines, document, inliner=self.inliner) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 169, in run results = StateMachineWS.run(self, input_lines, input_offset, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 233, in run context, next_state, result = self.check_line( ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 445, in check_line return method(match, context, next_state) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2355, in explicit_markup nodelist, blank_finish = self.explicit_construct(match) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2367, in explicit_construct return method(self, expmatch) ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2104, in directive return self.run_directive( ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2154, in run_directive result = directive_instance.run() ^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 54, in decorator return fn(*args) ^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 178, in run results[0] = self.node2image(node, diagram) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 254, in node2image drawer.save() File "/usr/lib/python3.12/site-packages/blockdiag/drawer.py", line 188, in save return self.drawer.save(self.filename, size, self.format) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 182, in save self._run() File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 109, in _run method(self.target, *args, **kwargs) File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 136, in textarea lines = self.textfolder(box, string, font, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 66, in get return HorizontalTextFolder(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 208, in __init__ self._result = self._lines() ^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 285, in _lines for folded in splittext(self, line, maxwidth, measure): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 41, in splittext textsize = metrics.textsize(text[0:i]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 212, in textsize textsize = self.drawer.textlinesize(text, self.font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 116, in textlinesize return self._pil_drawer.textlinesize(string, font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/png.py", line 276, in textlinesize size = self.draw.textsize(string, font=None) ^^^^^^^^^^^^^^^^^^ AttributeError: 'ImageDraw' object has no attribute 'textsize' -------------------- >> begin captured stdout << --------------------- ---[ stderr ] --- WARNING: plugin "autoclass" is already loaded. ignored. --------------------- >> end captured stdout << ---------------------- ====================================================================== ERROR: test_desctable (test_rst_directives.TestRstDirectives.test_desctable) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/patrycja/aports/testing/py3-actdiag/src/actdiag-3.0.0/src/actdiag/tests/test_rst_directives.py", line 489, in test_desctable doctree = publish_doctree(text) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 524, in publish_doctree _output, publisher = publish_programmatically( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 722, in publish_programmatically output = publisher.publish(enable_exit_status=enable_exit_status) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 234, in publish self.document = self.reader.read(self.source, self.parser, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 70, in read self.parse() File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 76, in parse self.parser.parse(self.input, document) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/__init__.py", line 184, in parse self.statemachine.run(inputlines, document, inliner=self.inliner) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 169, in run results = StateMachineWS.run(self, input_lines, input_offset, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 233, in run context, next_state, result = self.check_line( ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 445, in check_line return method(match, context, next_state) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2355, in explicit_markup nodelist, blank_finish = self.explicit_construct(match) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2367, in explicit_construct return method(self, expmatch) ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2104, in directive return self.run_directive( ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2154, in run_directive result = directive_instance.run() ^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 54, in decorator return fn(*args) ^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 178, in run results[0] = self.node2image(node, diagram) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 254, in node2image drawer.save() File "/usr/lib/python3.12/site-packages/blockdiag/drawer.py", line 188, in save return self.drawer.save(self.filename, size, self.format) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 182, in save self._run() File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 109, in _run method(self.target, *args, **kwargs) File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 136, in textarea lines = self.textfolder(box, string, font, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 66, in get return HorizontalTextFolder(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 208, in __init__ self._result = self._lines() ^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 285, in _lines for folded in splittext(self, line, maxwidth, measure): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 41, in splittext textsize = metrics.textsize(text[0:i]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 212, in textsize textsize = self.drawer.textlinesize(text, self.font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 116, in textlinesize return self._pil_drawer.textlinesize(string, font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/png.py", line 276, in textlinesize size = self.draw.textsize(string, font=None) ^^^^^^^^^^^^^^^^^^ AttributeError: 'ImageDraw' object has no attribute 'textsize' ====================================================================== ERROR: test_desctable_option_for_edges (test_rst_directives.TestRstDirectives.test_desctable_option_for_edges) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/patrycja/aports/testing/py3-actdiag/src/actdiag-3.0.0/src/actdiag/tests/test_rst_directives.py", line 676, in test_desctable_option_for_edges doctree = publish_doctree(text) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 524, in publish_doctree _output, publisher = publish_programmatically( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 722, in publish_programmatically output = publisher.publish(enable_exit_status=enable_exit_status) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 234, in publish self.document = self.reader.read(self.source, self.parser, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 70, in read self.parse() File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 76, in parse self.parser.parse(self.input, document) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/__init__.py", line 184, in parse self.statemachine.run(inputlines, document, inliner=self.inliner) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 169, in run results = StateMachineWS.run(self, input_lines, input_offset, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 233, in run context, next_state, result = self.check_line( ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 445, in check_line return method(match, context, next_state) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2355, in explicit_markup nodelist, blank_finish = self.explicit_construct(match) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2367, in explicit_construct return method(self, expmatch) ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2104, in directive return self.run_directive( ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2154, in run_directive result = directive_instance.run() ^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 54, in decorator return fn(*args) ^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 178, in run results[0] = self.node2image(node, diagram) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 254, in node2image drawer.save() File "/usr/lib/python3.12/site-packages/blockdiag/drawer.py", line 188, in save return self.drawer.save(self.filename, size, self.format) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 182, in save self._run() File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 109, in _run method(self.target, *args, **kwargs) File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 136, in textarea lines = self.textfolder(box, string, font, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 66, in get return HorizontalTextFolder(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 208, in __init__ self._result = self._lines() ^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 285, in _lines for folded in splittext(self, line, maxwidth, measure): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 41, in splittext textsize = metrics.textsize(text[0:i]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 212, in textsize textsize = self.drawer.textlinesize(text, self.font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 116, in textlinesize return self._pil_drawer.textlinesize(string, font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/png.py", line 276, in textlinesize size = self.draw.textsize(string, font=None) ^^^^^^^^^^^^^^^^^^ AttributeError: 'ImageDraw' object has no attribute 'textsize' ====================================================================== ERROR: test_desctable_option_for_nodes_and_edges (test_rst_directives.TestRstDirectives.test_desctable_option_for_nodes_and_edges) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/patrycja/aports/testing/py3-actdiag/src/actdiag-3.0.0/src/actdiag/tests/test_rst_directives.py", line 719, in test_desctable_option_for_nodes_and_edges doctree = publish_doctree(text) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 524, in publish_doctree _output, publisher = publish_programmatically( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 722, in publish_programmatically output = publisher.publish(enable_exit_status=enable_exit_status) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 234, in publish self.document = self.reader.read(self.source, self.parser, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 70, in read self.parse() File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 76, in parse self.parser.parse(self.input, document) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/__init__.py", line 184, in parse self.statemachine.run(inputlines, document, inliner=self.inliner) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 169, in run results = StateMachineWS.run(self, input_lines, input_offset, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 233, in run context, next_state, result = self.check_line( ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 445, in check_line return method(match, context, next_state) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2355, in explicit_markup nodelist, blank_finish = self.explicit_construct(match) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2367, in explicit_construct return method(self, expmatch) ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2104, in directive return self.run_directive( ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2154, in run_directive result = directive_instance.run() ^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 54, in decorator return fn(*args) ^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 178, in run results[0] = self.node2image(node, diagram) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 254, in node2image drawer.save() File "/usr/lib/python3.12/site-packages/blockdiag/drawer.py", line 188, in save return self.drawer.save(self.filename, size, self.format) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 182, in save self._run() File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 109, in _run method(self.target, *args, **kwargs) File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 136, in textarea lines = self.textfolder(box, string, font, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 66, in get return HorizontalTextFolder(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 208, in __init__ self._result = self._lines() ^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 285, in _lines for folded in splittext(self, line, maxwidth, measure): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 41, in splittext textsize = metrics.textsize(text[0:i]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 212, in textsize textsize = self.drawer.textlinesize(text, self.font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 116, in textlinesize return self._pil_drawer.textlinesize(string, font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/png.py", line 276, in textlinesize size = self.draw.textsize(string, font=None) ^^^^^^^^^^^^^^^^^^ AttributeError: 'ImageDraw' object has no attribute 'textsize' ====================================================================== ERROR: test_desctable_option_with_numbered (test_rst_directives.TestRstDirectives.test_desctable_option_with_numbered) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/patrycja/aports/testing/py3-actdiag/src/actdiag-3.0.0/src/actdiag/tests/test_rst_directives.py", line 594, in test_desctable_option_with_numbered doctree = publish_doctree(text) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 524, in publish_doctree _output, publisher = publish_programmatically( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 722, in publish_programmatically output = publisher.publish(enable_exit_status=enable_exit_status) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 234, in publish self.document = self.reader.read(self.source, self.parser, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 70, in read self.parse() File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 76, in parse self.parser.parse(self.input, document) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/__init__.py", line 184, in parse self.statemachine.run(inputlines, document, inliner=self.inliner) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 169, in run results = StateMachineWS.run(self, input_lines, input_offset, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 233, in run context, next_state, result = self.check_line( ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 445, in check_line return method(match, context, next_state) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2355, in explicit_markup nodelist, blank_finish = self.explicit_construct(match) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2367, in explicit_construct return method(self, expmatch) ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2104, in directive return self.run_directive( ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2154, in run_directive result = directive_instance.run() ^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 54, in decorator return fn(*args) ^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 178, in run results[0] = self.node2image(node, diagram) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 254, in node2image drawer.save() File "/usr/lib/python3.12/site-packages/blockdiag/drawer.py", line 188, in save return self.drawer.save(self.filename, size, self.format) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 182, in save self._run() File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 109, in _run method(self.target, *args, **kwargs) File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 136, in textarea lines = self.textfolder(box, string, font, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 66, in get return HorizontalTextFolder(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 208, in __init__ self._result = self._lines() ^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 285, in _lines for folded in splittext(self, line, maxwidth, measure): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 41, in splittext textsize = metrics.textsize(text[0:i]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 212, in textsize textsize = self.drawer.textlinesize(text, self.font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 116, in textlinesize return self._pil_drawer.textlinesize(string, font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/png.py", line 276, in textlinesize size = self.draw.textsize(string, font=None) ^^^^^^^^^^^^^^^^^^ AttributeError: 'ImageDraw' object has no attribute 'textsize' ====================================================================== ERROR: test_desctable_option_with_numbered_and_description (test_rst_directives.TestRstDirectives.test_desctable_option_with_numbered_and_description) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/patrycja/aports/testing/py3-actdiag/src/actdiag-3.0.0/src/actdiag/tests/test_rst_directives.py", line 631, in test_desctable_option_with_numbered_and_description doctree = publish_doctree(text) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 524, in publish_doctree _output, publisher = publish_programmatically( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 722, in publish_programmatically output = publisher.publish(enable_exit_status=enable_exit_status) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 234, in publish self.document = self.reader.read(self.source, self.parser, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 70, in read self.parse() File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 76, in parse self.parser.parse(self.input, document) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/__init__.py", line 184, in parse self.statemachine.run(inputlines, document, inliner=self.inliner) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 169, in run results = StateMachineWS.run(self, input_lines, input_offset, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 233, in run context, next_state, result = self.check_line( ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 445, in check_line return method(match, context, next_state) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2355, in explicit_markup nodelist, blank_finish = self.explicit_construct(match) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2367, in explicit_construct return method(self, expmatch) ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2104, in directive return self.run_directive( ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2154, in run_directive result = directive_instance.run() ^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 54, in decorator return fn(*args) ^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 178, in run results[0] = self.node2image(node, diagram) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 254, in node2image drawer.save() File "/usr/lib/python3.12/site-packages/blockdiag/drawer.py", line 188, in save return self.drawer.save(self.filename, size, self.format) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 182, in save self._run() File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 109, in _run method(self.target, *args, **kwargs) File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 136, in textarea lines = self.textfolder(box, string, font, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 66, in get return HorizontalTextFolder(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 208, in __init__ self._result = self._lines() ^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 285, in _lines for folded in splittext(self, line, maxwidth, measure): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 41, in splittext textsize = metrics.textsize(text[0:i]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 212, in textsize textsize = self.drawer.textlinesize(text, self.font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 116, in textlinesize return self._pil_drawer.textlinesize(string, font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/png.py", line 276, in textlinesize size = self.draw.textsize(string, font=None) ^^^^^^^^^^^^^^^^^^ AttributeError: 'ImageDraw' object has no attribute 'textsize' ====================================================================== ERROR: test_desctable_option_with_rest_markups (test_rst_directives.TestRstDirectives.test_desctable_option_with_rest_markups) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/patrycja/aports/testing/py3-actdiag/src/actdiag-3.0.0/src/actdiag/tests/test_rst_directives.py", line 536, in test_desctable_option_with_rest_markups doctree = publish_doctree(text) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 524, in publish_doctree _output, publisher = publish_programmatically( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 722, in publish_programmatically output = publisher.publish(enable_exit_status=enable_exit_status) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 234, in publish self.document = self.reader.read(self.source, self.parser, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 70, in read self.parse() File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 76, in parse self.parser.parse(self.input, document) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/__init__.py", line 184, in parse self.statemachine.run(inputlines, document, inliner=self.inliner) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 169, in run results = StateMachineWS.run(self, input_lines, input_offset, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 233, in run context, next_state, result = self.check_line( ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 445, in check_line return method(match, context, next_state) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2355, in explicit_markup nodelist, blank_finish = self.explicit_construct(match) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2367, in explicit_construct return method(self, expmatch) ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2104, in directive return self.run_directive( ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2154, in run_directive result = directive_instance.run() ^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 54, in decorator return fn(*args) ^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 178, in run results[0] = self.node2image(node, diagram) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 254, in node2image drawer.save() File "/usr/lib/python3.12/site-packages/blockdiag/drawer.py", line 188, in save return self.drawer.save(self.filename, size, self.format) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 182, in save self._run() File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 109, in _run method(self.target, *args, **kwargs) File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 136, in textarea lines = self.textfolder(box, string, font, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 66, in get return HorizontalTextFolder(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 208, in __init__ self._result = self._lines() ^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 285, in _lines for folded in splittext(self, line, maxwidth, measure): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 41, in splittext textsize = metrics.textsize(text[0:i]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 212, in textsize textsize = self.drawer.textlinesize(text, self.font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 116, in textlinesize return self._pil_drawer.textlinesize(string, font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/png.py", line 276, in textlinesize size = self.draw.textsize(string, font=None) ^^^^^^^^^^^^^^^^^^ AttributeError: 'ImageDraw' object has no attribute 'textsize' ====================================================================== ERROR: test_desctable_option_without_description (test_rst_directives.TestRstDirectives.test_desctable_option_without_description) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/patrycja/aports/testing/py3-actdiag/src/actdiag-3.0.0/src/actdiag/tests/test_rst_directives.py", line 525, in test_desctable_option_without_description doctree = publish_doctree(text) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 524, in publish_doctree _output, publisher = publish_programmatically( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 722, in publish_programmatically output = publisher.publish(enable_exit_status=enable_exit_status) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 234, in publish self.document = self.reader.read(self.source, self.parser, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 70, in read self.parse() File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 76, in parse self.parser.parse(self.input, document) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/__init__.py", line 184, in parse self.statemachine.run(inputlines, document, inliner=self.inliner) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 169, in run results = StateMachineWS.run(self, input_lines, input_offset, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 233, in run context, next_state, result = self.check_line( ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 445, in check_line return method(match, context, next_state) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2355, in explicit_markup nodelist, blank_finish = self.explicit_construct(match) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2367, in explicit_construct return method(self, expmatch) ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2104, in directive return self.run_directive( ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2154, in run_directive result = directive_instance.run() ^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 54, in decorator return fn(*args) ^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 178, in run results[0] = self.node2image(node, diagram) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 254, in node2image drawer.save() File "/usr/lib/python3.12/site-packages/blockdiag/drawer.py", line 188, in save return self.drawer.save(self.filename, size, self.format) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 182, in save self._run() File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 109, in _run method(self.target, *args, **kwargs) File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 136, in textarea lines = self.textfolder(box, string, font, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 66, in get return HorizontalTextFolder(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 208, in __init__ self._result = self._lines() ^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 285, in _lines for folded in splittext(self, line, maxwidth, measure): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 41, in splittext textsize = metrics.textsize(text[0:i]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 212, in textsize textsize = self.drawer.textlinesize(text, self.font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 116, in textlinesize return self._pil_drawer.textlinesize(string, font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/png.py", line 276, in textlinesize size = self.draw.textsize(string, font=None) ^^^^^^^^^^^^^^^^^^ AttributeError: 'ImageDraw' object has no attribute 'textsize' ====================================================================== ERROR: test_figclass_option (test_rst_directives.TestRstDirectives.test_figclass_option) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/patrycja/aports/testing/py3-actdiag/src/actdiag-3.0.0/src/actdiag/tests/test_rst_directives.py", line 477, in test_figclass_option doctree = publish_doctree(text) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 524, in publish_doctree _output, publisher = publish_programmatically( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 722, in publish_programmatically output = publisher.publish(enable_exit_status=enable_exit_status) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 234, in publish self.document = self.reader.read(self.source, self.parser, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 70, in read self.parse() File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 76, in parse self.parser.parse(self.input, document) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/__init__.py", line 184, in parse self.statemachine.run(inputlines, document, inliner=self.inliner) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 169, in run results = StateMachineWS.run(self, input_lines, input_offset, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 233, in run context, next_state, result = self.check_line( ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 445, in check_line return method(match, context, next_state) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2355, in explicit_markup nodelist, blank_finish = self.explicit_construct(match) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2367, in explicit_construct return method(self, expmatch) ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2104, in directive return self.run_directive( ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2154, in run_directive result = directive_instance.run() ^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 54, in decorator return fn(*args) ^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 178, in run results[0] = self.node2image(node, diagram) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 254, in node2image drawer.save() File "/usr/lib/python3.12/site-packages/blockdiag/drawer.py", line 188, in save return self.drawer.save(self.filename, size, self.format) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 182, in save self._run() File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 109, in _run method(self.target, *args, **kwargs) File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 136, in textarea lines = self.textfolder(box, string, font, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 66, in get return HorizontalTextFolder(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 208, in __init__ self._result = self._lines() ^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 285, in _lines for folded in splittext(self, line, maxwidth, measure): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 41, in splittext textsize = metrics.textsize(text[0:i]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 212, in textsize textsize = self.drawer.textlinesize(text, self.font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 116, in textlinesize return self._pil_drawer.textlinesize(string, font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/png.py", line 276, in textlinesize size = self.draw.textsize(string, font=None) ^^^^^^^^^^^^^^^^^^ AttributeError: 'ImageDraw' object has no attribute 'textsize' ====================================================================== ERROR: test_figwidth_option1 (test_rst_directives.TestRstDirectives.test_figwidth_option1) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/patrycja/aports/testing/py3-actdiag/src/actdiag-3.0.0/src/actdiag/tests/test_rst_directives.py", line 453, in test_figwidth_option1 doctree = publish_doctree(text) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 524, in publish_doctree _output, publisher = publish_programmatically( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 722, in publish_programmatically output = publisher.publish(enable_exit_status=enable_exit_status) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 234, in publish self.document = self.reader.read(self.source, self.parser, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 70, in read self.parse() File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 76, in parse self.parser.parse(self.input, document) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/__init__.py", line 184, in parse self.statemachine.run(inputlines, document, inliner=self.inliner) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 169, in run results = StateMachineWS.run(self, input_lines, input_offset, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 233, in run context, next_state, result = self.check_line( ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 445, in check_line return method(match, context, next_state) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2355, in explicit_markup nodelist, blank_finish = self.explicit_construct(match) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2367, in explicit_construct return method(self, expmatch) ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2104, in directive return self.run_directive( ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2154, in run_directive result = directive_instance.run() ^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 54, in decorator return fn(*args) ^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 178, in run results[0] = self.node2image(node, diagram) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 254, in node2image drawer.save() File "/usr/lib/python3.12/site-packages/blockdiag/drawer.py", line 188, in save return self.drawer.save(self.filename, size, self.format) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 182, in save self._run() File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 109, in _run method(self.target, *args, **kwargs) File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 136, in textarea lines = self.textfolder(box, string, font, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 66, in get return HorizontalTextFolder(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 208, in __init__ self._result = self._lines() ^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 285, in _lines for folded in splittext(self, line, maxwidth, measure): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 41, in splittext textsize = metrics.textsize(text[0:i]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 212, in textsize textsize = self.drawer.textlinesize(text, self.font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 116, in textlinesize return self._pil_drawer.textlinesize(string, font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/png.py", line 276, in textlinesize size = self.draw.textsize(string, font=None) ^^^^^^^^^^^^^^^^^^ AttributeError: 'ImageDraw' object has no attribute 'textsize' ====================================================================== ERROR: test_figwidth_option2 (test_rst_directives.TestRstDirectives.test_figwidth_option2) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/patrycja/aports/testing/py3-actdiag/src/actdiag-3.0.0/src/actdiag/tests/test_rst_directives.py", line 465, in test_figwidth_option2 doctree = publish_doctree(text) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 524, in publish_doctree _output, publisher = publish_programmatically( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 722, in publish_programmatically output = publisher.publish(enable_exit_status=enable_exit_status) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 234, in publish self.document = self.reader.read(self.source, self.parser, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 70, in read self.parse() File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 76, in parse self.parser.parse(self.input, document) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/__init__.py", line 184, in parse self.statemachine.run(inputlines, document, inliner=self.inliner) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 169, in run results = StateMachineWS.run(self, input_lines, input_offset, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 233, in run context, next_state, result = self.check_line( ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 445, in check_line return method(match, context, next_state) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2355, in explicit_markup nodelist, blank_finish = self.explicit_construct(match) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2367, in explicit_construct return method(self, expmatch) ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2104, in directive return self.run_directive( ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2154, in run_directive result = directive_instance.run() ^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 54, in decorator return fn(*args) ^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 178, in run results[0] = self.node2image(node, diagram) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 254, in node2image drawer.save() File "/usr/lib/python3.12/site-packages/blockdiag/drawer.py", line 188, in save return self.drawer.save(self.filename, size, self.format) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 182, in save self._run() File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 109, in _run method(self.target, *args, **kwargs) File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 136, in textarea lines = self.textfolder(box, string, font, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 66, in get return HorizontalTextFolder(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 208, in __init__ self._result = self._lines() ^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 285, in _lines for folded in splittext(self, line, maxwidth, measure): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 41, in splittext textsize = metrics.textsize(text[0:i]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 212, in textsize textsize = self.drawer.textlinesize(text, self.font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 116, in textlinesize return self._pil_drawer.textlinesize(string, font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/png.py", line 276, in textlinesize size = self.draw.textsize(string, font=None) ^^^^^^^^^^^^^^^^^^ AttributeError: 'ImageDraw' object has no attribute 'textsize' ====================================================================== ERROR: test_height_option (test_rst_directives.TestRstDirectives.test_height_option) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/patrycja/aports/testing/py3-actdiag/src/actdiag-3.0.0/src/actdiag/tests/test_rst_directives.py", line 404, in test_height_option doctree = publish_doctree(text) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 524, in publish_doctree _output, publisher = publish_programmatically( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 722, in publish_programmatically output = publisher.publish(enable_exit_status=enable_exit_status) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 234, in publish self.document = self.reader.read(self.source, self.parser, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 70, in read self.parse() File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 76, in parse self.parser.parse(self.input, document) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/__init__.py", line 184, in parse self.statemachine.run(inputlines, document, inliner=self.inliner) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 169, in run results = StateMachineWS.run(self, input_lines, input_offset, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 233, in run context, next_state, result = self.check_line( ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 445, in check_line return method(match, context, next_state) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2355, in explicit_markup nodelist, blank_finish = self.explicit_construct(match) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2367, in explicit_construct return method(self, expmatch) ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2104, in directive return self.run_directive( ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2154, in run_directive result = directive_instance.run() ^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 54, in decorator return fn(*args) ^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 178, in run results[0] = self.node2image(node, diagram) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 254, in node2image drawer.save() File "/usr/lib/python3.12/site-packages/blockdiag/drawer.py", line 188, in save return self.drawer.save(self.filename, size, self.format) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 182, in save self._run() File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 109, in _run method(self.target, *args, **kwargs) File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 136, in textarea lines = self.textfolder(box, string, font, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 66, in get return HorizontalTextFolder(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 208, in __init__ self._result = self._lines() ^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 285, in _lines for folded in splittext(self, line, maxwidth, measure): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 41, in splittext textsize = metrics.textsize(text[0:i]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 212, in textsize textsize = self.drawer.textlinesize(text, self.font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 116, in textlinesize return self._pil_drawer.textlinesize(string, font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/png.py", line 276, in textlinesize size = self.draw.textsize(string, font=None) ^^^^^^^^^^^^^^^^^^ AttributeError: 'ImageDraw' object has no attribute 'textsize' ====================================================================== ERROR: test_maxwidth_option (test_rst_directives.TestRstDirectives.test_maxwidth_option) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/lib/python3.12/site-packages/blockdiag/tests/utils.py", line 75, in wrap func(*args, **kwargs) File "/home/patrycja/aports/testing/py3-actdiag/src/actdiag-3.0.0/src/actdiag/tests/test_rst_directives.py", line 380, in test_maxwidth_option doctree = publish_doctree(text) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 524, in publish_doctree _output, publisher = publish_programmatically( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 722, in publish_programmatically output = publisher.publish(enable_exit_status=enable_exit_status) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 234, in publish self.document = self.reader.read(self.source, self.parser, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 70, in read self.parse() File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 76, in parse self.parser.parse(self.input, document) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/__init__.py", line 184, in parse self.statemachine.run(inputlines, document, inliner=self.inliner) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 169, in run results = StateMachineWS.run(self, input_lines, input_offset, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 233, in run context, next_state, result = self.check_line( ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 445, in check_line return method(match, context, next_state) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2355, in explicit_markup nodelist, blank_finish = self.explicit_construct(match) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2367, in explicit_construct return method(self, expmatch) ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2104, in directive return self.run_directive( ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2154, in run_directive result = directive_instance.run() ^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 54, in decorator return fn(*args) ^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 178, in run results[0] = self.node2image(node, diagram) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 254, in node2image drawer.save() File "/usr/lib/python3.12/site-packages/blockdiag/drawer.py", line 188, in save return self.drawer.save(self.filename, size, self.format) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 182, in save self._run() File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 109, in _run method(self.target, *args, **kwargs) File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 136, in textarea lines = self.textfolder(box, string, font, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 66, in get return HorizontalTextFolder(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 208, in __init__ self._result = self._lines() ^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 285, in _lines for folded in splittext(self, line, maxwidth, measure): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 41, in splittext textsize = metrics.textsize(text[0:i]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 212, in textsize textsize = self.drawer.textlinesize(text, self.font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 116, in textlinesize return self._pil_drawer.textlinesize(string, font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/png.py", line 276, in textlinesize size = self.draw.textsize(string, font=None) ^^^^^^^^^^^^^^^^^^ AttributeError: 'ImageDraw' object has no attribute 'textsize' -------------------- >> begin captured stdout << --------------------- ---[ stderr ] --- :1: (WARNING/2) :maxwidth: option is deprecated. Use :width: option. --------------------- >> end captured stdout << ---------------------- ====================================================================== ERROR: test_name_option (test_rst_directives.TestRstDirectives.test_name_option) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/patrycja/aports/testing/py3-actdiag/src/actdiag-3.0.0/src/actdiag/tests/test_rst_directives.py", line 428, in test_name_option doctree = publish_doctree(text) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 524, in publish_doctree _output, publisher = publish_programmatically( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 722, in publish_programmatically output = publisher.publish(enable_exit_status=enable_exit_status) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 234, in publish self.document = self.reader.read(self.source, self.parser, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 70, in read self.parse() File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 76, in parse self.parser.parse(self.input, document) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/__init__.py", line 184, in parse self.statemachine.run(inputlines, document, inliner=self.inliner) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 169, in run results = StateMachineWS.run(self, input_lines, input_offset, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 233, in run context, next_state, result = self.check_line( ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 445, in check_line return method(match, context, next_state) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2355, in explicit_markup nodelist, blank_finish = self.explicit_construct(match) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2367, in explicit_construct return method(self, expmatch) ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2104, in directive return self.run_directive( ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2154, in run_directive result = directive_instance.run() ^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 54, in decorator return fn(*args) ^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 178, in run results[0] = self.node2image(node, diagram) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 254, in node2image drawer.save() File "/usr/lib/python3.12/site-packages/blockdiag/drawer.py", line 188, in save return self.drawer.save(self.filename, size, self.format) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 182, in save self._run() File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 109, in _run method(self.target, *args, **kwargs) File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 136, in textarea lines = self.textfolder(box, string, font, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 66, in get return HorizontalTextFolder(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 208, in __init__ self._result = self._lines() ^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 285, in _lines for folded in splittext(self, line, maxwidth, measure): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 41, in splittext textsize = metrics.textsize(text[0:i]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 212, in textsize textsize = self.drawer.textlinesize(text, self.font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 116, in textlinesize return self._pil_drawer.textlinesize(string, font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/png.py", line 276, in textlinesize size = self.draw.textsize(string, font=None) ^^^^^^^^^^^^^^^^^^ AttributeError: 'ImageDraw' object has no attribute 'textsize' ====================================================================== ERROR: test_scale_option (test_rst_directives.TestRstDirectives.test_scale_option) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/patrycja/aports/testing/py3-actdiag/src/actdiag-3.0.0/src/actdiag/tests/test_rst_directives.py", line 416, in test_scale_option doctree = publish_doctree(text) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 524, in publish_doctree _output, publisher = publish_programmatically( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 722, in publish_programmatically output = publisher.publish(enable_exit_status=enable_exit_status) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 234, in publish self.document = self.reader.read(self.source, self.parser, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 70, in read self.parse() File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 76, in parse self.parser.parse(self.input, document) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/__init__.py", line 184, in parse self.statemachine.run(inputlines, document, inliner=self.inliner) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 169, in run results = StateMachineWS.run(self, input_lines, input_offset, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 233, in run context, next_state, result = self.check_line( ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 445, in check_line return method(match, context, next_state) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2355, in explicit_markup nodelist, blank_finish = self.explicit_construct(match) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2367, in explicit_construct return method(self, expmatch) ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2104, in directive return self.run_directive( ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2154, in run_directive result = directive_instance.run() ^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 54, in decorator return fn(*args) ^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 178, in run results[0] = self.node2image(node, diagram) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 254, in node2image drawer.save() File "/usr/lib/python3.12/site-packages/blockdiag/drawer.py", line 188, in save return self.drawer.save(self.filename, size, self.format) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 182, in save self._run() File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 109, in _run method(self.target, *args, **kwargs) File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 136, in textarea lines = self.textfolder(box, string, font, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 66, in get return HorizontalTextFolder(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 208, in __init__ self._result = self._lines() ^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 285, in _lines for folded in splittext(self, line, maxwidth, measure): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 41, in splittext textsize = metrics.textsize(text[0:i]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 212, in textsize textsize = self.drawer.textlinesize(text, self.font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 116, in textlinesize return self._pil_drawer.textlinesize(string, font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/png.py", line 276, in textlinesize size = self.draw.textsize(string, font=None) ^^^^^^^^^^^^^^^^^^ AttributeError: 'ImageDraw' object has no attribute 'textsize' ====================================================================== ERROR: test_setup_inline_svg_is_false (test_rst_directives.TestRstDirectives.test_setup_inline_svg_is_false) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/patrycja/aports/testing/py3-actdiag/src/actdiag-3.0.0/src/actdiag/tests/test_rst_directives.py", line 166, in test_setup_inline_svg_is_false doctree = publish_doctree(text) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 524, in publish_doctree _output, publisher = publish_programmatically( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 722, in publish_programmatically output = publisher.publish(enable_exit_status=enable_exit_status) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 234, in publish self.document = self.reader.read(self.source, self.parser, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 70, in read self.parse() File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 76, in parse self.parser.parse(self.input, document) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/__init__.py", line 184, in parse self.statemachine.run(inputlines, document, inliner=self.inliner) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 169, in run results = StateMachineWS.run(self, input_lines, input_offset, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 233, in run context, next_state, result = self.check_line( ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 445, in check_line return method(match, context, next_state) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2355, in explicit_markup nodelist, blank_finish = self.explicit_construct(match) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2367, in explicit_construct return method(self, expmatch) ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2104, in directive return self.run_directive( ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2154, in run_directive result = directive_instance.run() ^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 54, in decorator return fn(*args) ^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 178, in run results[0] = self.node2image(node, diagram) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 254, in node2image drawer.save() File "/usr/lib/python3.12/site-packages/blockdiag/drawer.py", line 188, in save return self.drawer.save(self.filename, size, self.format) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 182, in save self._run() File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 109, in _run method(self.target, *args, **kwargs) File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 136, in textarea lines = self.textfolder(box, string, font, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 66, in get return HorizontalTextFolder(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 208, in __init__ self._result = self._lines() ^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 285, in _lines for folded in splittext(self, line, maxwidth, measure): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 41, in splittext textsize = metrics.textsize(text[0:i]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 212, in textsize textsize = self.drawer.textlinesize(text, self.font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 116, in textlinesize return self._pil_drawer.textlinesize(string, font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/png.py", line 276, in textlinesize size = self.draw.textsize(string, font=None) ^^^^^^^^^^^^^^^^^^ AttributeError: 'ImageDraw' object has no attribute 'textsize' ====================================================================== ERROR: test_setup_inline_svg_is_true (test_rst_directives.TestRstDirectives.test_setup_inline_svg_is_true) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/patrycja/aports/testing/py3-actdiag/src/actdiag-3.0.0/src/actdiag/tests/test_rst_directives.py", line 152, in test_setup_inline_svg_is_true doctree = publish_doctree(text) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 524, in publish_doctree _output, publisher = publish_programmatically( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 722, in publish_programmatically output = publisher.publish(enable_exit_status=enable_exit_status) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 234, in publish self.document = self.reader.read(self.source, self.parser, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 70, in read self.parse() File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 76, in parse self.parser.parse(self.input, document) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/__init__.py", line 184, in parse self.statemachine.run(inputlines, document, inliner=self.inliner) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 169, in run results = StateMachineWS.run(self, input_lines, input_offset, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 233, in run context, next_state, result = self.check_line( ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 445, in check_line return method(match, context, next_state) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2355, in explicit_markup nodelist, blank_finish = self.explicit_construct(match) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2367, in explicit_construct return method(self, expmatch) ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2104, in directive return self.run_directive( ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2154, in run_directive result = directive_instance.run() ^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 54, in decorator return fn(*args) ^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 178, in run results[0] = self.node2image(node, diagram) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 239, in node2image return self.node2image_inline_svg(node, diagram) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 270, in node2image_inline_svg content = drawer.save(size) ^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/drawer.py", line 188, in save return self.drawer.save(self.filename, size, self.format) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 182, in save self._run() File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 109, in _run method(self.target, *args, **kwargs) File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 136, in textarea lines = self.textfolder(box, string, font, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 66, in get return HorizontalTextFolder(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 208, in __init__ self._result = self._lines() ^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 285, in _lines for folded in splittext(self, line, maxwidth, measure): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 41, in splittext textsize = metrics.textsize(text[0:i]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 212, in textsize textsize = self.drawer.textlinesize(text, self.font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 116, in textlinesize return self._pil_drawer.textlinesize(string, font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/png.py", line 276, in textlinesize size = self.draw.textsize(string, font=None) ^^^^^^^^^^^^^^^^^^ AttributeError: 'ImageDraw' object has no attribute 'textsize' ====================================================================== ERROR: test_setup_inline_svg_is_true_and_height_option1 (test_rst_directives.TestRstDirectives.test_setup_inline_svg_is_true_and_height_option1) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/patrycja/aports/testing/py3-actdiag/src/actdiag-3.0.0/src/actdiag/tests/test_rst_directives.py", line 216, in test_setup_inline_svg_is_true_and_height_option1 doctree = publish_doctree(text) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 524, in publish_doctree _output, publisher = publish_programmatically( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 722, in publish_programmatically output = publisher.publish(enable_exit_status=enable_exit_status) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 234, in publish self.document = self.reader.read(self.source, self.parser, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 70, in read self.parse() File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 76, in parse self.parser.parse(self.input, document) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/__init__.py", line 184, in parse self.statemachine.run(inputlines, document, inliner=self.inliner) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 169, in run results = StateMachineWS.run(self, input_lines, input_offset, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 233, in run context, next_state, result = self.check_line( ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 445, in check_line return method(match, context, next_state) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2355, in explicit_markup nodelist, blank_finish = self.explicit_construct(match) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2367, in explicit_construct return method(self, expmatch) ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2104, in directive return self.run_directive( ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2154, in run_directive result = directive_instance.run() ^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 54, in decorator return fn(*args) ^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 178, in run results[0] = self.node2image(node, diagram) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 239, in node2image return self.node2image_inline_svg(node, diagram) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 270, in node2image_inline_svg content = drawer.save(size) ^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/drawer.py", line 188, in save return self.drawer.save(self.filename, size, self.format) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 182, in save self._run() File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 109, in _run method(self.target, *args, **kwargs) File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 136, in textarea lines = self.textfolder(box, string, font, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 66, in get return HorizontalTextFolder(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 208, in __init__ self._result = self._lines() ^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 285, in _lines for folded in splittext(self, line, maxwidth, measure): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 41, in splittext textsize = metrics.textsize(text[0:i]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 212, in textsize textsize = self.drawer.textlinesize(text, self.font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 116, in textlinesize return self._pil_drawer.textlinesize(string, font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/png.py", line 276, in textlinesize size = self.draw.textsize(string, font=None) ^^^^^^^^^^^^^^^^^^ AttributeError: 'ImageDraw' object has no attribute 'textsize' ====================================================================== ERROR: test_setup_inline_svg_is_true_and_height_option2 (test_rst_directives.TestRstDirectives.test_setup_inline_svg_is_true_and_height_option2) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/patrycja/aports/testing/py3-actdiag/src/actdiag-3.0.0/src/actdiag/tests/test_rst_directives.py", line 230, in test_setup_inline_svg_is_true_and_height_option2 doctree = publish_doctree(text) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 524, in publish_doctree _output, publisher = publish_programmatically( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 722, in publish_programmatically output = publisher.publish(enable_exit_status=enable_exit_status) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 234, in publish self.document = self.reader.read(self.source, self.parser, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 70, in read self.parse() File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 76, in parse self.parser.parse(self.input, document) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/__init__.py", line 184, in parse self.statemachine.run(inputlines, document, inliner=self.inliner) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 169, in run results = StateMachineWS.run(self, input_lines, input_offset, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 233, in run context, next_state, result = self.check_line( ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 445, in check_line return method(match, context, next_state) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2355, in explicit_markup nodelist, blank_finish = self.explicit_construct(match) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2367, in explicit_construct return method(self, expmatch) ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2104, in directive return self.run_directive( ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2154, in run_directive result = directive_instance.run() ^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 54, in decorator return fn(*args) ^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 178, in run results[0] = self.node2image(node, diagram) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 239, in node2image return self.node2image_inline_svg(node, diagram) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 270, in node2image_inline_svg content = drawer.save(size) ^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/drawer.py", line 188, in save return self.drawer.save(self.filename, size, self.format) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 182, in save self._run() File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 109, in _run method(self.target, *args, **kwargs) File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 136, in textarea lines = self.textfolder(box, string, font, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 66, in get return HorizontalTextFolder(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 208, in __init__ self._result = self._lines() ^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 285, in _lines for folded in splittext(self, line, maxwidth, measure): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 41, in splittext textsize = metrics.textsize(text[0:i]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 212, in textsize textsize = self.drawer.textlinesize(text, self.font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 116, in textlinesize return self._pil_drawer.textlinesize(string, font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/png.py", line 276, in textlinesize size = self.draw.textsize(string, font=None) ^^^^^^^^^^^^^^^^^^ AttributeError: 'ImageDraw' object has no attribute 'textsize' ====================================================================== ERROR: test_setup_inline_svg_is_true_and_width_and_height_option (test_rst_directives.TestRstDirectives.test_setup_inline_svg_is_true_and_width_and_height_option) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/patrycja/aports/testing/py3-actdiag/src/actdiag-3.0.0/src/actdiag/tests/test_rst_directives.py", line 245, in test_setup_inline_svg_is_true_and_width_and_height_option doctree = publish_doctree(text) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 524, in publish_doctree _output, publisher = publish_programmatically( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 722, in publish_programmatically output = publisher.publish(enable_exit_status=enable_exit_status) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 234, in publish self.document = self.reader.read(self.source, self.parser, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 70, in read self.parse() File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 76, in parse self.parser.parse(self.input, document) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/__init__.py", line 184, in parse self.statemachine.run(inputlines, document, inliner=self.inliner) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 169, in run results = StateMachineWS.run(self, input_lines, input_offset, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 233, in run context, next_state, result = self.check_line( ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 445, in check_line return method(match, context, next_state) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2355, in explicit_markup nodelist, blank_finish = self.explicit_construct(match) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2367, in explicit_construct return method(self, expmatch) ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2104, in directive return self.run_directive( ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2154, in run_directive result = directive_instance.run() ^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 54, in decorator return fn(*args) ^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 178, in run results[0] = self.node2image(node, diagram) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 239, in node2image return self.node2image_inline_svg(node, diagram) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 270, in node2image_inline_svg content = drawer.save(size) ^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/drawer.py", line 188, in save return self.drawer.save(self.filename, size, self.format) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 182, in save self._run() File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 109, in _run method(self.target, *args, **kwargs) File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 136, in textarea lines = self.textfolder(box, string, font, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 66, in get return HorizontalTextFolder(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 208, in __init__ self._result = self._lines() ^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 285, in _lines for folded in splittext(self, line, maxwidth, measure): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 41, in splittext textsize = metrics.textsize(text[0:i]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 212, in textsize textsize = self.drawer.textlinesize(text, self.font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 116, in textlinesize return self._pil_drawer.textlinesize(string, font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/png.py", line 276, in textlinesize size = self.draw.textsize(string, font=None) ^^^^^^^^^^^^^^^^^^ AttributeError: 'ImageDraw' object has no attribute 'textsize' ====================================================================== ERROR: test_setup_inline_svg_is_true_and_width_option1 (test_rst_directives.TestRstDirectives.test_setup_inline_svg_is_true_and_width_option1) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/patrycja/aports/testing/py3-actdiag/src/actdiag-3.0.0/src/actdiag/tests/test_rst_directives.py", line 188, in test_setup_inline_svg_is_true_and_width_option1 doctree = publish_doctree(text) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 524, in publish_doctree _output, publisher = publish_programmatically( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 722, in publish_programmatically output = publisher.publish(enable_exit_status=enable_exit_status) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 234, in publish self.document = self.reader.read(self.source, self.parser, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 70, in read self.parse() File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 76, in parse self.parser.parse(self.input, document) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/__init__.py", line 184, in parse self.statemachine.run(inputlines, document, inliner=self.inliner) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 169, in run results = StateMachineWS.run(self, input_lines, input_offset, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 233, in run context, next_state, result = self.check_line( ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 445, in check_line return method(match, context, next_state) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2355, in explicit_markup nodelist, blank_finish = self.explicit_construct(match) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2367, in explicit_construct return method(self, expmatch) ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2104, in directive return self.run_directive( ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2154, in run_directive result = directive_instance.run() ^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 54, in decorator return fn(*args) ^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 178, in run results[0] = self.node2image(node, diagram) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 239, in node2image return self.node2image_inline_svg(node, diagram) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 270, in node2image_inline_svg content = drawer.save(size) ^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/drawer.py", line 188, in save return self.drawer.save(self.filename, size, self.format) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 182, in save self._run() File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 109, in _run method(self.target, *args, **kwargs) File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 136, in textarea lines = self.textfolder(box, string, font, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 66, in get return HorizontalTextFolder(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 208, in __init__ self._result = self._lines() ^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 285, in _lines for folded in splittext(self, line, maxwidth, measure): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 41, in splittext textsize = metrics.textsize(text[0:i]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 212, in textsize textsize = self.drawer.textlinesize(text, self.font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 116, in textlinesize return self._pil_drawer.textlinesize(string, font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/png.py", line 276, in textlinesize size = self.draw.textsize(string, font=None) ^^^^^^^^^^^^^^^^^^ AttributeError: 'ImageDraw' object has no attribute 'textsize' ====================================================================== ERROR: test_setup_inline_svg_is_true_and_width_option2 (test_rst_directives.TestRstDirectives.test_setup_inline_svg_is_true_and_width_option2) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/patrycja/aports/testing/py3-actdiag/src/actdiag-3.0.0/src/actdiag/tests/test_rst_directives.py", line 202, in test_setup_inline_svg_is_true_and_width_option2 doctree = publish_doctree(text) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 524, in publish_doctree _output, publisher = publish_programmatically( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 722, in publish_programmatically output = publisher.publish(enable_exit_status=enable_exit_status) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 234, in publish self.document = self.reader.read(self.source, self.parser, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 70, in read self.parse() File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 76, in parse self.parser.parse(self.input, document) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/__init__.py", line 184, in parse self.statemachine.run(inputlines, document, inliner=self.inliner) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 169, in run results = StateMachineWS.run(self, input_lines, input_offset, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 233, in run context, next_state, result = self.check_line( ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 445, in check_line return method(match, context, next_state) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2355, in explicit_markup nodelist, blank_finish = self.explicit_construct(match) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2367, in explicit_construct return method(self, expmatch) ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2104, in directive return self.run_directive( ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2154, in run_directive result = directive_instance.run() ^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 54, in decorator return fn(*args) ^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 178, in run results[0] = self.node2image(node, diagram) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 239, in node2image return self.node2image_inline_svg(node, diagram) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 270, in node2image_inline_svg content = drawer.save(size) ^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/drawer.py", line 188, in save return self.drawer.save(self.filename, size, self.format) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 182, in save self._run() File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 109, in _run method(self.target, *args, **kwargs) File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 136, in textarea lines = self.textfolder(box, string, font, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 66, in get return HorizontalTextFolder(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 208, in __init__ self._result = self._lines() ^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 285, in _lines for folded in splittext(self, line, maxwidth, measure): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 41, in splittext textsize = metrics.textsize(text[0:i]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 212, in textsize textsize = self.drawer.textlinesize(text, self.font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 116, in textlinesize return self._pil_drawer.textlinesize(string, font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/png.py", line 276, in textlinesize size = self.draw.textsize(string, font=None) ^^^^^^^^^^^^^^^^^^ AttributeError: 'ImageDraw' object has no attribute 'textsize' ====================================================================== ERROR: test_setup_inline_svg_is_true_but_format_isnt_svg (test_rst_directives.TestRstDirectives.test_setup_inline_svg_is_true_but_format_isnt_svg) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/patrycja/aports/testing/py3-actdiag/src/actdiag-3.0.0/src/actdiag/tests/test_rst_directives.py", line 177, in test_setup_inline_svg_is_true_but_format_isnt_svg doctree = publish_doctree(text) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 524, in publish_doctree _output, publisher = publish_programmatically( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 722, in publish_programmatically output = publisher.publish(enable_exit_status=enable_exit_status) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 234, in publish self.document = self.reader.read(self.source, self.parser, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 70, in read self.parse() File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 76, in parse self.parser.parse(self.input, document) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/__init__.py", line 184, in parse self.statemachine.run(inputlines, document, inliner=self.inliner) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 169, in run results = StateMachineWS.run(self, input_lines, input_offset, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 233, in run context, next_state, result = self.check_line( ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 445, in check_line return method(match, context, next_state) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2355, in explicit_markup nodelist, blank_finish = self.explicit_construct(match) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2367, in explicit_construct return method(self, expmatch) ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2104, in directive return self.run_directive( ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2154, in run_directive result = directive_instance.run() ^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 54, in decorator return fn(*args) ^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 178, in run results[0] = self.node2image(node, diagram) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 254, in node2image drawer.save() File "/usr/lib/python3.12/site-packages/blockdiag/drawer.py", line 188, in save return self.drawer.save(self.filename, size, self.format) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 182, in save self._run() File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 109, in _run method(self.target, *args, **kwargs) File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/png.py", line 347, in textarea lines = self.textfolder(box, string, font, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 66, in get return HorizontalTextFolder(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 208, in __init__ self._result = self._lines() ^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 285, in _lines for folded in splittext(self, line, maxwidth, measure): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 41, in splittext textsize = metrics.textsize(text[0:i]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 212, in textsize textsize = self.drawer.textlinesize(text, self.font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/png.py", line 276, in textlinesize size = self.draw.textsize(string, font=None) ^^^^^^^^^^^^^^^^^^ AttributeError: 'ImageDraw' object has no attribute 'textsize' ====================================================================== ERROR: test_setup_nodoctype_is_false (test_rst_directives.TestRstDirectives.test_setup_nodoctype_is_false) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/patrycja/aports/testing/py3-actdiag/src/actdiag-3.0.0/src/actdiag/tests/test_rst_directives.py", line 118, in test_setup_nodoctype_is_false doctree = publish_doctree(text) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 524, in publish_doctree _output, publisher = publish_programmatically( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 722, in publish_programmatically output = publisher.publish(enable_exit_status=enable_exit_status) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 234, in publish self.document = self.reader.read(self.source, self.parser, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 70, in read self.parse() File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 76, in parse self.parser.parse(self.input, document) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/__init__.py", line 184, in parse self.statemachine.run(inputlines, document, inliner=self.inliner) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 169, in run results = StateMachineWS.run(self, input_lines, input_offset, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 233, in run context, next_state, result = self.check_line( ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 445, in check_line return method(match, context, next_state) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2355, in explicit_markup nodelist, blank_finish = self.explicit_construct(match) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2367, in explicit_construct return method(self, expmatch) ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2104, in directive return self.run_directive( ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2154, in run_directive result = directive_instance.run() ^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 54, in decorator return fn(*args) ^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 178, in run results[0] = self.node2image(node, diagram) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 254, in node2image drawer.save() File "/usr/lib/python3.12/site-packages/blockdiag/drawer.py", line 188, in save return self.drawer.save(self.filename, size, self.format) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 182, in save self._run() File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 109, in _run method(self.target, *args, **kwargs) File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 136, in textarea lines = self.textfolder(box, string, font, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 66, in get return HorizontalTextFolder(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 208, in __init__ self._result = self._lines() ^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 285, in _lines for folded in splittext(self, line, maxwidth, measure): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 41, in splittext textsize = metrics.textsize(text[0:i]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 212, in textsize textsize = self.drawer.textlinesize(text, self.font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 116, in textlinesize return self._pil_drawer.textlinesize(string, font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/png.py", line 276, in textlinesize size = self.draw.textsize(string, font=None) ^^^^^^^^^^^^^^^^^^ AttributeError: 'ImageDraw' object has no attribute 'textsize' ====================================================================== ERROR: test_setup_nodoctype_is_true (test_rst_directives.TestRstDirectives.test_setup_nodoctype_is_true) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/patrycja/aports/testing/py3-actdiag/src/actdiag-3.0.0/src/actdiag/tests/test_rst_directives.py", line 106, in test_setup_nodoctype_is_true doctree = publish_doctree(text) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 524, in publish_doctree _output, publisher = publish_programmatically( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 722, in publish_programmatically output = publisher.publish(enable_exit_status=enable_exit_status) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 234, in publish self.document = self.reader.read(self.source, self.parser, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 70, in read self.parse() File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 76, in parse self.parser.parse(self.input, document) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/__init__.py", line 184, in parse self.statemachine.run(inputlines, document, inliner=self.inliner) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 169, in run results = StateMachineWS.run(self, input_lines, input_offset, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 233, in run context, next_state, result = self.check_line( ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 445, in check_line return method(match, context, next_state) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2355, in explicit_markup nodelist, blank_finish = self.explicit_construct(match) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2367, in explicit_construct return method(self, expmatch) ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2104, in directive return self.run_directive( ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2154, in run_directive result = directive_instance.run() ^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 54, in decorator return fn(*args) ^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 178, in run results[0] = self.node2image(node, diagram) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 254, in node2image drawer.save() File "/usr/lib/python3.12/site-packages/blockdiag/drawer.py", line 188, in save return self.drawer.save(self.filename, size, self.format) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 182, in save self._run() File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 109, in _run method(self.target, *args, **kwargs) File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 136, in textarea lines = self.textfolder(box, string, font, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 66, in get return HorizontalTextFolder(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 208, in __init__ self._result = self._lines() ^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 285, in _lines for folded in splittext(self, line, maxwidth, measure): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 41, in splittext textsize = metrics.textsize(text[0:i]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 212, in textsize textsize = self.drawer.textlinesize(text, self.font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 116, in textlinesize return self._pil_drawer.textlinesize(string, font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/png.py", line 276, in textlinesize size = self.draw.textsize(string, font=None) ^^^^^^^^^^^^^^^^^^ AttributeError: 'ImageDraw' object has no attribute 'textsize' ====================================================================== ERROR: test_setup_noviewbox_is_false (test_rst_directives.TestRstDirectives.test_setup_noviewbox_is_false) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/patrycja/aports/testing/py3-actdiag/src/actdiag-3.0.0/src/actdiag/tests/test_rst_directives.py", line 141, in test_setup_noviewbox_is_false doctree = publish_doctree(text) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 524, in publish_doctree _output, publisher = publish_programmatically( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 722, in publish_programmatically output = publisher.publish(enable_exit_status=enable_exit_status) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 234, in publish self.document = self.reader.read(self.source, self.parser, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 70, in read self.parse() File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 76, in parse self.parser.parse(self.input, document) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/__init__.py", line 184, in parse self.statemachine.run(inputlines, document, inliner=self.inliner) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 169, in run results = StateMachineWS.run(self, input_lines, input_offset, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 233, in run context, next_state, result = self.check_line( ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 445, in check_line return method(match, context, next_state) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2355, in explicit_markup nodelist, blank_finish = self.explicit_construct(match) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2367, in explicit_construct return method(self, expmatch) ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2104, in directive return self.run_directive( ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2154, in run_directive result = directive_instance.run() ^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 54, in decorator return fn(*args) ^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 178, in run results[0] = self.node2image(node, diagram) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 254, in node2image drawer.save() File "/usr/lib/python3.12/site-packages/blockdiag/drawer.py", line 188, in save return self.drawer.save(self.filename, size, self.format) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 182, in save self._run() File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 109, in _run method(self.target, *args, **kwargs) File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 136, in textarea lines = self.textfolder(box, string, font, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 66, in get return HorizontalTextFolder(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 208, in __init__ self._result = self._lines() ^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 285, in _lines for folded in splittext(self, line, maxwidth, measure): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 41, in splittext textsize = metrics.textsize(text[0:i]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 212, in textsize textsize = self.drawer.textlinesize(text, self.font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 116, in textlinesize return self._pil_drawer.textlinesize(string, font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/png.py", line 276, in textlinesize size = self.draw.textsize(string, font=None) ^^^^^^^^^^^^^^^^^^ AttributeError: 'ImageDraw' object has no attribute 'textsize' ====================================================================== ERROR: test_setup_noviewbox_is_true (test_rst_directives.TestRstDirectives.test_setup_noviewbox_is_true) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/patrycja/aports/testing/py3-actdiag/src/actdiag-3.0.0/src/actdiag/tests/test_rst_directives.py", line 130, in test_setup_noviewbox_is_true doctree = publish_doctree(text) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 524, in publish_doctree _output, publisher = publish_programmatically( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 722, in publish_programmatically output = publisher.publish(enable_exit_status=enable_exit_status) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 234, in publish self.document = self.reader.read(self.source, self.parser, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 70, in read self.parse() File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 76, in parse self.parser.parse(self.input, document) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/__init__.py", line 184, in parse self.statemachine.run(inputlines, document, inliner=self.inliner) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 169, in run results = StateMachineWS.run(self, input_lines, input_offset, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 233, in run context, next_state, result = self.check_line( ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 445, in check_line return method(match, context, next_state) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2355, in explicit_markup nodelist, blank_finish = self.explicit_construct(match) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2367, in explicit_construct return method(self, expmatch) ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2104, in directive return self.run_directive( ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2154, in run_directive result = directive_instance.run() ^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 54, in decorator return fn(*args) ^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 178, in run results[0] = self.node2image(node, diagram) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 254, in node2image drawer.save() File "/usr/lib/python3.12/site-packages/blockdiag/drawer.py", line 188, in save return self.drawer.save(self.filename, size, self.format) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 182, in save self._run() File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 109, in _run method(self.target, *args, **kwargs) File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 136, in textarea lines = self.textfolder(box, string, font, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 66, in get return HorizontalTextFolder(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 208, in __init__ self._result = self._lines() ^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 285, in _lines for folded in splittext(self, line, maxwidth, measure): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 41, in splittext textsize = metrics.textsize(text[0:i]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 212, in textsize textsize = self.drawer.textlinesize(text, self.font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 116, in textlinesize return self._pil_drawer.textlinesize(string, font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/png.py", line 276, in textlinesize size = self.draw.textsize(string, font=None) ^^^^^^^^^^^^^^^^^^ AttributeError: 'ImageDraw' object has no attribute 'textsize' ====================================================================== ERROR: test_width_option (test_rst_directives.TestRstDirectives.test_width_option) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/patrycja/aports/testing/py3-actdiag/src/actdiag-3.0.0/src/actdiag/tests/test_rst_directives.py", line 392, in test_width_option doctree = publish_doctree(text) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 524, in publish_doctree _output, publisher = publish_programmatically( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 722, in publish_programmatically output = publisher.publish(enable_exit_status=enable_exit_status) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/core.py", line 234, in publish self.document = self.reader.read(self.source, self.parser, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 70, in read self.parse() File "/usr/lib/python3.12/site-packages/docutils/readers/__init__.py", line 76, in parse self.parser.parse(self.input, document) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/__init__.py", line 184, in parse self.statemachine.run(inputlines, document, inliner=self.inliner) File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 169, in run results = StateMachineWS.run(self, input_lines, input_offset, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 233, in run context, next_state, result = self.check_line( ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/statemachine.py", line 445, in check_line return method(match, context, next_state) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2355, in explicit_markup nodelist, blank_finish = self.explicit_construct(match) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2367, in explicit_construct return method(self, expmatch) ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2104, in directive return self.run_directive( ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/docutils/parsers/rst/states.py", line 2154, in run_directive result = directive_instance.run() ^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 54, in decorator return fn(*args) ^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 178, in run results[0] = self.node2image(node, diagram) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/utils/rst/directives.py", line 254, in node2image drawer.save() File "/usr/lib/python3.12/site-packages/blockdiag/drawer.py", line 188, in save return self.drawer.save(self.filename, size, self.format) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 182, in save self._run() File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/filters/linejump.py", line 109, in _run method(self.target, *args, **kwargs) File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 136, in textarea lines = self.textfolder(box, string, font, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 66, in get return HorizontalTextFolder(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 208, in __init__ self._result = self._lines() ^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 285, in _lines for folded in splittext(self, line, maxwidth, measure): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 41, in splittext textsize = metrics.textsize(text[0:i]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/textfolder.py", line 212, in textsize textsize = self.drawer.textlinesize(text, self.font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/svg.py", line 116, in textlinesize return self._pil_drawer.textlinesize(string, font) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/utils/__init__.py", line 65, in func fn.cache[key] = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/blockdiag/imagedraw/png.py", line 276, in textlinesize size = self.draw.textsize(string, font=None) ^^^^^^^^^^^^^^^^^^ AttributeError: 'ImageDraw' object has no attribute 'textsize' ---------------------------------------------------------------------- Ran 46 tests in 0.541s FAILED (SKIP=3, errors=37) >>> ERROR: py3-actdiag: check failed >>> ERROR: py3-actdiag: rootbld failed >>> py3-actdiag: Cleaning up build chroot