From b7ff72df43951ff93a9bdc088e534d60c9dfded7 Mon Sep 17 00:00:00 2001 From: Julian Smith Date: Wed, 5 Jun 2024 14:39:35 +0100 Subject: [PATCH 1/8] tests/test_pixmap.py:test_3493(): added note about exclusion with sysinstall tests. --- tests/test_pixmap.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/test_pixmap.py b/tests/test_pixmap.py index a17cf1b03..c456f05fc 100644 --- a/tests/test_pixmap.py +++ b/tests/test_pixmap.py @@ -270,6 +270,9 @@ def test_3493(): If python3-gi is installed, we check fix for #3493, where importing gi would load an older version of libjpeg than is used in MuPDF, and break MuPDF. + + This test is excluded by default in sysinstall tests, because running + commands in a new venv does not seem to pick up pymupdf as expected. ''' if platform.system() != 'Linux': print(f'Not running because not Linux: {platform.system()=}') @@ -315,7 +318,7 @@ def run_code(code, code_path, *, check=True, venv=None, venv_args='', pythonpath return gi = r.stdout.strip() gi_pythonpath = os.path.abspath(f'{gi}/../..') - + def do(gi): # Run code that will import gi and pymupdf in different orders, and # return contents of generated .png file as a bytes. From 07dd5456416418f9204ed35453b3fcbbcb4e4211 Mon Sep 17 00:00:00 2001 From: Julian Smith Date: Wed, 5 Jun 2024 14:40:04 +0100 Subject: [PATCH 2/8] scripts/sysinstall.py: add some options passed through to scripts/test.py --- scripts/sysinstall.py | 82 +++++++++++++++++++++++++++++++------------ 1 file changed, 59 insertions(+), 23 deletions(-) diff --git a/scripts/sysinstall.py b/scripts/sysinstall.py index 84c28f341..a50a5503b 100755 --- a/scripts/sysinstall.py +++ b/scripts/sysinstall.py @@ -3,8 +3,9 @@ ''' Test for Linux system install of MuPDF and PyMuPDF. -We build and install MuPDF and PyMuPDF into a root directory, then run -PyMuPDF's pytest tests with LD_PRELOAD_PATH and PYTHONPATH set. +We build and install MuPDF and PyMuPDF into a root directory, then use +scripts/test.py to run PyMuPDF's pytest tests with LD_PRELOAD_PATH and +PYTHONPATH set. PyMuPDF itself is installed using `python -m install` with a wheel created with `pip wheel`. @@ -21,6 +22,8 @@ --mupdf-dir Path of MuPDF checkout; default is 'mupdf'. + --mupdf-do 0|1 + Whether to build and install mupdf. --mupdf-git Get or update `mupdf_dir` using git. If `mupdf_dir` already exists we run `git pull` in it; otherwise we run `git @@ -43,6 +46,8 @@ Directory within `root`; default is `/usr/local`. Must start with `/`. --pymupdf-dir Path of PyMuPDF checkout; default is 'PyMuPDF'. + --pymupdf-do 0|1 + Whether to build and install pymupdf. --root Root of install directory; default is `/`. --tesseract5 0|1 @@ -57,15 +62,14 @@ If 1 (the default), we use `python -m installer` to install PyMuPDF from a generated wheel. [Otherwise we use `pip install`, which refuses to do a system install with `--root /`, referencing PEP-668.] - -m 0|1 - If 1 (the default) we build and install MuPDF, otherwise we just show - what command we would have run. - -p 0|1 - If 1 (the default) we build and install PyMuPDF, otherwise we just show - what command we would have run. - -t 0|1 - If 1 (the default) we run PyMuPDF's pytest tests, otherwise we just - show what command we would have run. + -i + Passed through to scripts/test.py. + -f + Passed through to scripts/test.py. + -p + Passed through to scripts/test.py. + -t + Passed through to scripts/test.py. To only show what commands would be run, but not actually run them, specify `-m 0 -p 0 -t 0`. @@ -75,6 +79,7 @@ import multiprocessing import os import platform +import shlex import subprocess import sys import sysconfig @@ -117,19 +122,23 @@ def main(): # Set default behaviour. # use_installer = True - mupdf = True + mupdf_do = True mupdf_dir = 'mupdf' mupdf_git = None mupdf_so_mode = None packages = True prefix = '/usr/local' - pymupdf = True + pymupdf_do = True pymupdf_dir = os.path.abspath( f'{__file__}/../..') root = 'sysinstall_test' tesseract5 = True - test = True + pytest_args = None + pytest_do = True + pytest_name = None test_venv = 'venv-pymupdf-sysinstall-test' pip = 'venv' + test_fitz = None + test_implementations = None # Parse command-line. # @@ -142,20 +151,24 @@ def main(): if arg in ('-h', '--help'): print(__doc__) return + elif arg == '--mupdf-do': mupdf_do = int(next(args)) elif arg == '--mupdf-dir': mupdf_dir = next(args) elif arg == '--mupdf-git': mupdf_git = next(args) elif arg == '--mupdf-so-mode': mupdf_so_mode = next(args) elif arg == '--packages': packages = int(next(args)) elif arg == '--prefix': prefix = next(args) + elif arg == '--pymupdf-do': pymupdf_do = int(next(args)) elif arg == '--pymupdf-dir': pymupdf_dir = next(args) elif arg == '--root': root = next(args) elif arg == '--tesseract5': tesseract5 = int(next(args)) + elif arg == '--pytest-do': pytest_do = int(next(args)) elif arg == '--test-venv': test_venv = next(args) elif arg == '--use-installer': use_installer = int(next(args)) elif arg == '--pip': pip = next(args) - elif arg == '-m': mupdf = int(next(args)) - elif arg == '-p': pymupdf = int(next(args)) - elif arg == '-t': test = int(next(args)) + elif arg == '-f': test_fitz = next(args) + elif arg == '-i': test_implementations = next(args) + elif arg == '-p': pytest_args = next(args) + elif arg == '-t': pytest_name = next(args) else: assert 0, f'Unrecognised arg: {arg!r}' @@ -169,7 +182,7 @@ def main(): if root == '/': sudo = f'sudo PATH={os.environ["PATH"]} ' def run(command): - return run_command(command, doit=mupdf) + return run_command(command, doit=mupdf_do) # Get MuPDF from git if specified. # if mupdf_git: @@ -232,7 +245,7 @@ def run(command): # print('## Build and install PyMuPDF.') def run(command): - return run_command(command, doit=pymupdf) + return run_command(command, doit=pymupdf_do) flags_freetype2 = run_command('pkg-config --cflags freetype2', capture_output=1).stdout.strip() compile_flags = f'-I {root_prefix}/include {flags_freetype2}' link_flags = f'-L {root_prefix}/lib' @@ -316,7 +329,7 @@ def run(command): # print('## Run PyMuPDF pytest tests.') def run(command): - return run_command(command, doit=test) + return run_command(command, doit=pytest_do) import gh_release if pip == 'venv': # Create venv. @@ -342,9 +355,32 @@ def run(command): run(f'ls -l {root_prefix}/bin/') # 2024-03-20: Not sure whether/where `pymupdf` binary is installed, so we # disable the test_cli* tests. - excluded_tests = 'test_color_count test_3050 test_cli test_cli_out test_pylint test_textbox3'.split() - excluded_tests = ' and not '.join(excluded_tests) - command += f' {pymupdf_dir}/scripts/test.py -p "-k \'not {excluded_tests}\'" -v 0 test' + command += f' {pymupdf_dir}/scripts/test.py' + command += f' -v 0' + if pytest_name is None: + excluded_tests = ( + 'test_color_count', + 'test_3050', + 'test_cli', + 'test_cli_out', + 'test_pylint', + 'test_textbox3', + 'test_3493', + ) + excluded_tests = ' and not '.join(excluded_tests) + if not pytest_args: + pytest_args = '' + pytest_args += f' -k \'not {excluded_tests}\'' + else: + command += f' -t {pytest_name}' + if test_fitz: + command += f' -f {test_fitz}' + if test_implementations: + command += f' -i {test_implementations}' + if pytest_args: + command += f' -p {shlex.quote(pytest_args)}' + if pytest_do: + command += ' test' run(command) From 7251c3f2c89b319fff25bfa075bba0c05d318150 Mon Sep 17 00:00:00 2001 From: Julian Smith Date: Wed, 5 Jun 2024 20:55:11 +0100 Subject: [PATCH 3/8] scripts/gh_release.py: don't attempt to build musllinux on aarch64. Known to fail because libclang broken. --- scripts/gh_release.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/gh_release.py b/scripts/gh_release.py index 7d97b7501..9bddd5bb8 100755 --- a/scripts/gh_release.py +++ b/scripts/gh_release.py @@ -248,7 +248,9 @@ def set_if_unset(name, value): set_if_unset( 'CIBW_BUILD_VERBOSITY', '3') # We exclude pp* because of `fitz_wrap.obj : error LNK2001: unresolved # external symbol PyUnicode_DecodeRawUnicodeEscape`. - set_if_unset( 'CIBW_SKIP', '"pp* *i686 cp36* cp37*"') + # 2024-06-05: musllinux on aarch64 fails because libclang cannot find + # libclang.so. + set_if_unset( 'CIBW_SKIP', '"pp* *i686 cp36* cp37* *musllinux*aarch64*"') def make_string(*items): ret = list() From 9a2f80b78389025b136454157aee036ebd297243 Mon Sep 17 00:00:00 2001 From: Julian Smith Date: Thu, 6 Jun 2024 09:03:32 +0100 Subject: [PATCH 4/8] pipcl.py: updated doctest's to match new output. --- pipcl.py | 42 ++++++++++++++++++++++++++++-------------- 1 file changed, 28 insertions(+), 14 deletions(-) diff --git a/pipcl.py b/pipcl.py index 3680ca53b..cb55b9d08 100644 --- a/pipcl.py +++ b/pipcl.py @@ -2075,49 +2075,63 @@ def run_if( command, out, *prerequisites): >>> out = 'run_if_test_out' >>> if os.path.exists( out): ... os.remove( out) + >>> if os.path.exists( f'{out}.cmd'): + ... os.remove( f'{out}.cmd') >>> run_if( f'touch {out}', out) + pipcl.py: run_if(): Running command because: File does not exist: 'run_if_test_out' + pipcl.py: run(): Running: touch run_if_test_out True If we repeat, the output file will be up to date so the command is not run: >>> run_if( f'touch {out}', out) + pipcl.py: run_if(): Not running command because up to date: 'run_if_test_out' If we change the command, the command is run: >>> run_if( f'touch {out}', out) + pipcl.py: run_if(): Running command because: Command has changed + pipcl.py: run(): Running: touch run_if_test_out True If we add a prerequisite that is newer than the output, the command is run: + >>> time.sleep(1) >>> prerequisite = 'run_if_test_prerequisite' >>> run( f'touch {prerequisite}') - >>> run_if( f'touch {out}', out, prerequisite) + pipcl.py: run(): Running: touch run_if_test_prerequisite + >>> run_if( f'touch {out}', out, prerequisite) + pipcl.py: run_if(): Running command because: Prerequisite is new: 'run_if_test_prerequisite' + pipcl.py: run(): Running: touch run_if_test_out True If we repeat, the output will be newer than the prerequisite, so the command is not run: - >>> run_if( f'touch {out}', out, prerequisite) + >>> run_if( f'touch {out}', out, prerequisite) + pipcl.py: run_if(): Not running command because up to date: 'run_if_test_out' ''' doit = False + cmd_path = f'{out}.cmd' + if not doit: out_mtime = _fs_mtime( out) if out_mtime == 0: doit = f'File does not exist: {out!r}' - cmd_path = f'{out}.cmd' - if os.path.isfile( cmd_path): - with open( cmd_path) as f: - cmd = f.read() - else: - cmd = None - if command != cmd: - if cmd is None: - doit = 'No previous command stored' + if not doit: + if os.path.isfile( cmd_path): + with open( cmd_path) as f: + cmd = f.read() else: - doit = f'Command has changed' - if 0: - doit += f': {cmd!r} => {command!r}' + cmd = None + if command != cmd: + if cmd is None: + doit = 'No previous command stored' + else: + doit = f'Command has changed' + if 0: + doit += f': {cmd!r} => {command!r}' if not doit: # See whether any prerequisites are newer than target. From c1cc96060f7aa1c6868b25b4dc5f55bfcfba3cb3 Mon Sep 17 00:00:00 2001 From: Julian Smith Date: Mon, 10 Jun 2024 14:07:04 +0100 Subject: [PATCH 5/8] tests/test_textbox.py: added test for #3559. --- tests/test_textbox.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tests/test_textbox.py b/tests/test_textbox.py index 924b9207e..e0bda416e 100644 --- a/tests/test_textbox.py +++ b/tests/test_textbox.py @@ -260,3 +260,14 @@ def test_htmlbox3(): # lowlevel-extract inserted text to access opacity span = page.get_texttrace()[0] assert span["opacity"] == 0.5 + + +def test_3559(): + if pymupdf.mupdf_version_tuple < (1, 24, 4): + print(f'test_3559(): Not running because mupdf known to SEGV.') + return + doc = pymupdf.Document() + page = doc.new_page() + text_insert="""

""" + rect = pymupdf.Rect(100, 100, 200, 200) + page.insert_htmlbox(rect, text_insert) From 7c77f7b0551e07864a39b2f384fca41b7c277367 Mon Sep 17 00:00:00 2001 From: Jamie Lemon Date: Wed, 12 Jun 2024 17:11:45 +0100 Subject: [PATCH 6/8] Updates the PyMuPDF logo. --- docs/_static/PyMuPDF.ico | Bin 15086 -> 15406 bytes docs/_static/pymupdf-sidebar-logo-dark.png | Bin 9820 -> 20030 bytes docs/_static/pymupdf-sidebar-logo-light.png | Bin 9750 -> 20030 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/_static/PyMuPDF.ico b/docs/_static/PyMuPDF.ico index 38e08e010ea6e5d2b1368a790d4ca1cd3fa85a63..de307f0f9b2980f4bf641957279db266fa12b9f8 100644 GIT binary patch literal 15406 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 delta 8275 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 delta 8205 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 DJyAgm From d4e216ceea46f1b39e591c41adc7e506db07e29c Mon Sep 17 00:00:00 2001 From: Julian Smith Date: Sat, 15 Jun 2024 09:03:41 +0100 Subject: [PATCH 7/8] src/__init__.py: fix to work with latest mupdf. Use newly modified mupdf fns to call fz_document_handler fnptrs. --- src/__init__.py | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/__init__.py b/src/__init__.py index 354fee9bb..4ba33b3ee 100644 --- a/src/__init__.py +++ b/src/__init__.py @@ -2803,12 +2803,20 @@ def __init__(self, filename=None, stream=None, filetype=None, rect=None, width=0 stream = mupdf.FzStream(filename) accel = mupdf.FzStream() archive = mupdf.FzArchive(None) - doc = mupdf.ll_fz_document_open_fn_call( - handler.open, - stream.m_internal, - accel.m_internal, - archive.m_internal, - ) + if mupdf_version_tuple >= (1, 25): + doc = mupdf.ll_fz_document_handler_open( + handler, + stream.m_internal, + accel.m_internal, + archive.m_internal, + ) + else: + doc = mupdf.ll_fz_document_open_fn_call( + handler.open, + stream.m_internal, + accel.m_internal, + archive.m_internal, + ) else: doc = mupdf.ll_fz_document_open_fn_call( handler.open, filename) except Exception as e: From a86fa11acb2478a05e1df7cff4b074f1b95432a6 Mon Sep 17 00:00:00 2001 From: Julian Smith Date: Sat, 15 Jun 2024 09:10:16 +0100 Subject: [PATCH 8/8] tests/resources/test_1645_expected_1.25.pdf: updated to match latest MuPDF master. --- tests/resources/test_1645_expected_1.25.pdf | Bin 2601 -> 2613 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/resources/test_1645_expected_1.25.pdf b/tests/resources/test_1645_expected_1.25.pdf index 2f6a85827ca98df9ccf1ee84be02bc3636d321c9..cae1ef8a53fb6a674a6a669000d71bbb7345fa7c 100644 GIT binary patch delta 63 zcmZ1}vQ=b5FgtgUOSFLk7{+c6Vy|bCFfuSOS1