From 537d1bb852fa96dfdb82e0407311c572d2a7cd84 Mon Sep 17 00:00:00 2001 From: Nikolaus Waxweiler Date: Tue, 31 Mar 2026 11:10:01 +0100 Subject: [PATCH 1/2] Update deps and reformat --- mypy.ini | 2 +- pyproject.toml | 4 +-- requirements-dev.txt | 54 +++++++++++++------------------ requirements.txt | 8 ++--- tests/vttLib_test.py | 75 ++++++++++++-------------------------------- tox.ini | 2 +- 6 files changed, 50 insertions(+), 95 deletions(-) diff --git a/mypy.ini b/mypy.ini index 5cd88df..b01e4e7 100644 --- a/mypy.ini +++ b/mypy.ini @@ -1,5 +1,5 @@ [mypy] -python_version = 3.9 +python_version = 3.10 # Untyped definitions and calls disallow_incomplete_defs = True diff --git a/pyproject.toml b/pyproject.toml index 33f13c5..2944e5e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,7 +7,7 @@ name = "vttLib" authors = [{ name = "Dalton Maag Ltd", email = "info@daltonmaag.com" }] description = "Compile Visual TrueType assembly with FontTools." readme = "README.md" -requires-python = ">=3.9" +requires-python = ">=3.10" license = {text = "MIT"} dependencies = [ "fonttools[ufo]>=4.0.0", @@ -23,7 +23,7 @@ Source = "https://github.com/daltonmaag/vttLib" write_to = "src/vttLib/_version.py" [tool.black] -target-version = ["py39"] +target-version = ["py310"] [tool.isort] profile = "black" diff --git a/requirements-dev.txt b/requirements-dev.txt index 5cb638e..1252aab 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -1,78 +1,68 @@ # This file was autogenerated by uv via the following command: -# uv pip compile requirements-dev.in --python 3.9 --universal -black==25.9.0 +# uv pip compile --universal requirements-dev.in +black==26.3.1 # via -r requirements-dev.in -booleanoperations==0.9.0 +booleanoperations==0.10.0 # via ufo2ft -cffsubr==0.3.0 +cffsubr==0.4.0 # via ufo2ft -click==8.1.8 ; python_full_version < '3.10' - # via black -click==8.3.0 ; python_full_version >= '3.10' +click==8.3.1 # via black colorama==0.4.6 ; sys_platform == 'win32' # via # click # pytest -coverage==7.10.7 +coverage==7.13.5 # via -r requirements-dev.in -exceptiongroup==1.3.0 ; python_full_version < '3.11' - # via pytest flake8==7.3.0 # via -r requirements-dev.in -fontmath==0.9.4 +fontmath==0.10.0 # via ufo2ft -fonttools==4.60.0 +fonttools==4.62.1 # via # booleanoperations # cffsubr # fontmath # ufo2ft -iniconfig==2.1.0 +iniconfig==2.3.0 # via pytest -isort==6.0.1 +isort==8.0.1 # via -r requirements-dev.in +librt==0.8.1 ; platform_python_implementation != 'PyPy' + # via mypy mccabe==0.7.0 # via flake8 -mypy==1.18.2 +mypy==1.19.1 # via -r requirements-dev.in mypy-extensions==1.1.0 # via # black # mypy -packaging==25.0 +packaging==26.0 # via # black # pytest -pathspec==0.12.1 +pathspec==1.0.4 # via # black # mypy -platformdirs==4.4.0 +platformdirs==4.9.4 # via black pluggy==1.6.0 # via pytest -pyclipper==1.3.0.post6 +pyclipper==1.4.0 # via booleanoperations pycodestyle==2.14.0 # via flake8 pyflakes==3.4.0 # via flake8 -pygments==2.19.2 +pygments==2.20.0 # via pytest -pytest==8.4.2 +pytest==9.0.2 # via -r requirements-dev.in -pytokens==0.1.10 +pytokens==0.4.1 # via black -tomli==2.2.1 ; python_full_version < '3.11' - # via - # black - # mypy - # pytest typing-extensions==4.15.0 - # via - # black - # exceptiongroup - # mypy -ufo2ft==3.6.5 + # via mypy +ufo2ft==3.7.1 # via -r requirements-dev.in diff --git a/requirements.txt b/requirements.txt index 5219e60..43eac5b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,12 +1,12 @@ # This file was autogenerated by uv via the following command: -# uv pip compile pyproject.toml --python 3.9 --universal -attrs==25.3.0 +# uv pip compile --universal pyproject.toml +attrs==26.1.0 # via ufolib2 -fonttools==4.60.0 +fonttools==4.62.1 # via # vttlib (pyproject.toml) # ufolib2 -pyparsing==3.2.5 +pyparsing==3.3.2 # via vttlib (pyproject.toml) ufolib2==0.18.1 # via vttlib (pyproject.toml) diff --git a/tests/vttLib_test.py b/tests/vttLib_test.py index 64109b3..3801305 100644 --- a/tests/vttLib_test.py +++ b/tests/vttLib_test.py @@ -48,8 +48,7 @@ def test_ignore_overlap(self): assert not ft_assembly def test_jump_back(self): - vtt_assembly = dedent( - """ + vtt_assembly = dedent(""" #PUSH, 1 DUP[] #Label1: @@ -58,15 +57,11 @@ def test_jump_back(self): DUP[] #PUSH, Var1 JMPR[], (Var1=#Label1) - """ - ) + """) ft_assembly = transform_assembly(vtt_assembly) - assert ( - ft_assembly - == dedent( - """ + assert ft_assembly == dedent(""" PUSH[] 1 DUP[] DUP[] @@ -74,13 +69,10 @@ def test_jump_back(self): DUP[] PUSHW[] -6 JMPR[] - """ - ).strip() - ) + """).strip() def test_jump_forward(self): - vtt_assembly = dedent( - """ + vtt_assembly = dedent(""" #PUSH, Var1 JMPR[], (Var1=#Label1) DUP[] @@ -90,15 +82,11 @@ def test_jump_forward(self): #Label1: DUP[] DUP[] - """ - ) + """) ft_assembly = transform_assembly(vtt_assembly) - assert ( - ft_assembly - == dedent( - """ + assert ft_assembly == dedent(""" PUSHW[] 7 JMPR[] DUP[] @@ -107,13 +95,10 @@ def test_jump_forward(self): DUP[] DUP[] DUP[] - """ - ).strip() - ) + """).strip() def test_jump_mixed_args(self): - vtt_assembly = dedent( - """ + vtt_assembly = dedent(""" #PUSH, Var1, 1 JROT[], (Var1=#Label1) DUP[] @@ -121,15 +106,11 @@ def test_jump_mixed_args(self): DUP[] #Label1: DUP[] - """ - ) + """) ft_assembly = transform_assembly(vtt_assembly) - assert ( - ft_assembly - == dedent( - """ + assert ft_assembly == dedent(""" PUSHW[] 4 PUSH[] 1 JROT[] @@ -137,14 +118,11 @@ def test_jump_mixed_args(self): DUP[] DUP[] DUP[] - """ - ).strip() - ) + """).strip() def test_jump_repeated_args(self): - vtt_assembly = dedent( - """ + vtt_assembly = dedent(""" #PUSH, 0, Var1, Var1, -1 POP[] SWAP[] @@ -153,15 +131,11 @@ def test_jump_repeated_args(self): DUP[] #Label1: DUP[] - """ - ) + """) ft_assembly = transform_assembly(vtt_assembly) - assert ( - ft_assembly - == dedent( - """ + assert ft_assembly == dedent(""" PUSH[] 0 PUSHW[] 3 3 PUSH[] -1 @@ -171,33 +145,24 @@ def test_jump_repeated_args(self): DUP[] DUP[] DUP[] - """ - ).strip() - ) + """).strip() def test_delta_args_sorting(self): - vtt_assembly = dedent( - """ + vtt_assembly = dedent(""" DLTC1[(4 @4 8) (4 @8 8) (4 @11 8) (4 @15 8) (5 @4 8) (5 @8 8) (5 @11 8) (5 @15 8) (12 @1 8) (12 @4 8) (12 @5 8) (12 @8 8) (12 @9 8) (12 @13 8) (12 @15 8) (12 @0 8) (13 @1 8) (13 @4 8) (13 @5 8) (13 @8 8) (13 @9 8) (13 @13 8) (13 @15 8) (13 @0 8) (14 @11 8) (14 @13 8) (14 @15 8) (15 @11 8) (15 @13 8) (15 @15 8)] DLTC2[(4 @3 8) (4 @6 8) (4 @7 8) (4 @10 8) (4 @14 8) (5 @3 8) (5 @6 8) (5 @7 8) (5 @10 8) (5 @14 8) (12 @1 8) (12 @3 8) (12 @4 8) (12 @5 8) (12 @9 8) (12 @13 8) (13 @1 8) (13 @3 8) (13 @4 8) (13 @5 8) (13 @9 8) (13 @13 8) (14 @1 8) (14 @3 8) (14 @5 8) (14 @7 8) (14 @9 8) (14 @11 8) (14 @13 8) (15 @1 8) (15 @3 8) (15 @5 8) (15 @7 8) (15 @9 8) (15 @11 8) (15 @13 8)] DLTC3[(4 @1 8) (4 @2 8) (4 @5 8) (5 @1 8) (5 @2 8) (5 @5 8) (12 @1 8) (12 @4 8) (13 @1 8) (13 @4 8) (14 @0 8) (14 @2 8) (14 @4 8) (15 @0 8) (15 @2 8) (15 @4 8)] - """ - ) + """) ft_assembly = transform_assembly(vtt_assembly) - assert ( - ft_assembly - == dedent( - """ + assert ft_assembly == dedent(""" PUSH[] 15 14 15 15 31 4 31 5 31 12 31 13 47 4 47 5 47 14 47 15 79 12 79 13 79 14 79 15 95 4 95 5 16 31 12 31 13 31 14 31 15 63 4 63 5 63 12 63 13 63 14 63 15 79 12 79 13 95 12 95 13 95 14 95 15 111 4 111 5 127 4 127 5 127 14 127 15 159 12 159 13 159 14 159 15 175 4 175 5 191 14 191 15 223 12 223 13 223 14 223 15 239 4 239 5 36 15 12 15 13 31 12 31 13 79 4 79 5 79 12 79 13 95 12 95 13 143 4 143 5 143 12 143 13 159 12 159 13 191 4 191 5 191 14 191 15 223 12 223 13 223 14 223 15 255 4 255 5 255 12 255 13 255 14 255 15 30 DELTAC1[] DELTAC2[] DELTAC3[] - """ - ).strip() - ) + """).strip() def test_end_to_end(self, input_and_expected): vtt_assembly, expected = input_and_expected diff --git a/tox.ini b/tox.ini index 4401f21..63ab506 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = lint, py3{9,10,11,12,13}-cov, htmlcov +envlist = lint, py3{10,11,12,13,14}-cov, htmlcov skip_missing_interpreters = true isolated_build = true From d9d5207136b62a54c5f7f46ddcffbad061a3a036 Mon Sep 17 00:00:00 2001 From: Nikolaus Waxweiler Date: Tue, 31 Mar 2026 11:18:54 +0100 Subject: [PATCH 2/2] Also update GH Actions --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c742831..a479b37 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -25,7 +25,7 @@ jobs: runs-on: ${{ matrix.platform }} strategy: matrix: - python-version: ['3.9', '3.13'] + python-version: ['3.10', '3.14'] platform: [ubuntu-latest, windows-latest] steps: - uses: actions/checkout@v5