justvanrossum / drawbot-skia

A cross-platform subset of the DrawBot drawing API, using Skia
Apache License 2.0
77 stars 8 forks source link

Scheduled weekly dependency update for week 01 #153

Closed pyup-bot closed 10 months ago

pyup-bot commented 10 months ago

Update pytest from 7.1.2 to 7.4.4.

Changelog ### 7.4.4 ``` ========================= Bug Fixes --------- - `11140 <https://github.com/pytest-dev/pytest/issues/11140>`_: Fix non-string constants at the top of file being detected as docstrings on Python>=3.8. - `11572 <https://github.com/pytest-dev/pytest/issues/11572>`_: Handle an edge case where :data:`sys.stderr` and :data:`sys.__stderr__` might already be closed when :ref:`faulthandler` is tearing down. - `11710 <https://github.com/pytest-dev/pytest/issues/11710>`_: Fixed tracebacks from collection errors not getting pruned. - `7966 <https://github.com/pytest-dev/pytest/issues/7966>`_: Removed unhelpful error message from assertion rewrite mechanism when exceptions are raised in ``__iter__`` methods. Now they are treated un-iterable instead. Improved Documentation ---------------------- - `11091 <https://github.com/pytest-dev/pytest/issues/11091>`_: Updated documentation to refer to hyphenated options: replaced ``--junitxml`` with ``--junit-xml`` and ``--collectonly`` with ``--collect-only``. ``` ### 7.4.3 ``` ========================= Bug Fixes --------- - `10447 <https://github.com/pytest-dev/pytest/issues/10447>`_: Markers are now considered in the reverse mro order to ensure base class markers are considered first -- this resolves a regression. - `11239 <https://github.com/pytest-dev/pytest/issues/11239>`_: Fixed ``:=`` in asserts impacting unrelated test cases. - `11439 <https://github.com/pytest-dev/pytest/issues/11439>`_: Handled an edge case where :data:`sys.stderr` might already be closed when :ref:`faulthandler` is tearing down. ``` ### 7.4.2 ``` ========================= Bug Fixes --------- - `11237 <https://github.com/pytest-dev/pytest/issues/11237>`_: Fix doctest collection of `functools.cached_property` objects. - `11306 <https://github.com/pytest-dev/pytest/issues/11306>`_: Fixed bug using ``--importmode=importlib`` which would cause package ``__init__.py`` files to be imported more than once in some cases. - `11367 <https://github.com/pytest-dev/pytest/issues/11367>`_: Fixed bug where `user_properties` where not being saved in the JUnit XML file if a fixture failed during teardown. - `11394 <https://github.com/pytest-dev/pytest/issues/11394>`_: Fixed crash when parsing long command line arguments that might be interpreted as files. Improved Documentation ---------------------- - `11391 <https://github.com/pytest-dev/pytest/issues/11391>`_: Improved disclaimer on pytest plugin reference page to better indicate this is an automated, non-curated listing. ``` ### 7.4.1 ``` ========================= Bug Fixes --------- - `10337 <https://github.com/pytest-dev/pytest/issues/10337>`_: Fixed bug where fake intermediate modules generated by ``--import-mode=importlib`` would not include the child modules as attributes of the parent modules. - `10702 <https://github.com/pytest-dev/pytest/issues/10702>`_: Fixed error assertion handling in :func:`pytest.approx` when ``None`` is an expected or received value when comparing dictionaries. - `10811 <https://github.com/pytest-dev/pytest/issues/10811>`_: Fixed issue when using ``--import-mode=importlib`` together with ``--doctest-modules`` that caused modules to be imported more than once, causing problems with modules that have import side effects. ``` ### 7.4.0 ``` ========================= Features -------- - `10901 <https://github.com/pytest-dev/pytest/issues/10901>`_: Added :func:`ExceptionInfo.from_exception() <pytest.ExceptionInfo.from_exception>`, a simpler way to create an :class:`~pytest.ExceptionInfo` from an exception. This can replace :func:`ExceptionInfo.from_exc_info() <pytest.ExceptionInfo.from_exc_info()>` for most uses. Improvements ------------ - `10872 <https://github.com/pytest-dev/pytest/issues/10872>`_: Update test log report annotation to named tuple and fixed inconsistency in docs for :hook:`pytest_report_teststatus` hook. - `10907 <https://github.com/pytest-dev/pytest/issues/10907>`_: When an exception traceback to be displayed is completely filtered out (by mechanisms such as ``__tracebackhide__``, internal frames, and similar), now only the exception string and the following message are shown: "All traceback entries are hidden. Pass `--full-trace` to see hidden and internal frames.". Previously, the last frame of the traceback was shown, even though it was hidden. - `10940 <https://github.com/pytest-dev/pytest/issues/10940>`_: Improved verbose output (``-vv``) of ``skip`` and ``xfail`` reasons by performing text wrapping while leaving a clear margin for progress output. Added ``TerminalReporter.wrap_write()`` as a helper for that. - `10991 <https://github.com/pytest-dev/pytest/issues/10991>`_: Added handling of ``%f`` directive to print microseconds in log format options, such as ``log-date-format``. - `11005 <https://github.com/pytest-dev/pytest/issues/11005>`_: Added the underlying exception to the cache provider's path creation and write warning messages. - `11013 <https://github.com/pytest-dev/pytest/issues/11013>`_: Added warning when :confval:`testpaths` is set, but paths are not found by glob. In this case, pytest will fall back to searching from the current directory. - `11043 <https://github.com/pytest-dev/pytest/issues/11043>`_: When `--confcutdir` is not specified, and there is no config file present, the conftest cutoff directory (`--confcutdir`) is now set to the :ref:`rootdir <rootdir>`. Previously in such cases, `conftest.py` files would be probed all the way to the root directory of the filesystem. If you are badly affected by this change, consider adding an empty config file to your desired cutoff directory, or explicitly set `--confcutdir`. - `11081 <https://github.com/pytest-dev/pytest/issues/11081>`_: The :confval:`norecursedirs` check is now performed in a :hook:`pytest_ignore_collect` implementation, so plugins can affect it. If after updating to this version you see that your `norecursedirs` setting is not being respected, it means that a conftest or a plugin you use has a bad `pytest_ignore_collect` implementation. Most likely, your hook returns `False` for paths it does not want to ignore, which ends the processing and doesn't allow other plugins, including pytest itself, to ignore the path. The fix is to return `None` instead of `False` for paths your hook doesn't want to ignore. - `8711 <https://github.com/pytest-dev/pytest/issues/8711>`_: :func:`caplog.set_level() <pytest.LogCaptureFixture.set_level>` and :func:`caplog.at_level() <pytest.LogCaptureFixture.at_level>` will temporarily enable the requested ``level`` if ``level`` was disabled globally via ``logging.disable(LEVEL)``. Bug Fixes --------- - `10831 <https://github.com/pytest-dev/pytest/issues/10831>`_: Terminal Reporting: Fixed bug when running in ``--tb=line`` mode where ``pytest.fail(pytrace=False)`` tests report ``None``. - `11068 <https://github.com/pytest-dev/pytest/issues/11068>`_: Fixed the ``--last-failed`` whole-file skipping functionality ("skipped N files") for :ref:`non-python test files <non-python tests>`. - `11104 <https://github.com/pytest-dev/pytest/issues/11104>`_: Fixed a regression in pytest 7.3.2 which caused to :confval:`testpaths` to be considered for loading initial conftests, even when it was not utilized (e.g. when explicit paths were given on the command line). Now the ``testpaths`` are only considered when they are in use. - `1904 <https://github.com/pytest-dev/pytest/issues/1904>`_: Fixed traceback entries hidden with ``__tracebackhide__ = True`` still being shown for chained exceptions (parts after "... the above exception ..." message). - `7781 <https://github.com/pytest-dev/pytest/issues/7781>`_: Fix writing non-encodable text to log file when using ``--debug``. Improved Documentation ---------------------- - `9146 <https://github.com/pytest-dev/pytest/issues/9146>`_: Improved documentation for :func:`caplog.set_level() <pytest.LogCaptureFixture.set_level>`. Trivial/Internal Changes ------------------------ - `11031 <https://github.com/pytest-dev/pytest/issues/11031>`_: Enhanced the CLI flag for ``-c`` to now include ``--config-file`` to make it clear that this flag applies to the usage of a custom config file. ``` ### 7.3.2 ``` ========================= Bug Fixes --------- - `10169 <https://github.com/pytest-dev/pytest/issues/10169>`_: Fix bug where very long option names could cause pytest to break with ``OSError: [Errno 36] File name too long`` on some systems. - `10894 <https://github.com/pytest-dev/pytest/issues/10894>`_: Support for Python 3.12 (beta at the time of writing). - `10987 <https://github.com/pytest-dev/pytest/issues/10987>`_: :confval:`testpaths` is now honored to load root ``conftests``. - `10999 <https://github.com/pytest-dev/pytest/issues/10999>`_: The `monkeypatch` `setitem`/`delitem` type annotations now allow `TypedDict` arguments. - `11028 <https://github.com/pytest-dev/pytest/issues/11028>`_: Fixed bug in assertion rewriting where a variable assigned with the walrus operator could not be used later in a function call. - `11054 <https://github.com/pytest-dev/pytest/issues/11054>`_: Fixed ``--last-failed``'s "(skipped N files)" functionality for files inside of packages (directories with `__init__.py` files). ``` ### 7.3.1 ``` ========================= Improvements ------------ - `10875 <https://github.com/pytest-dev/pytest/issues/10875>`_: Python 3.12 support: fixed ``RuntimeError: TestResult has no addDuration method`` when running ``unittest`` tests. - `10890 <https://github.com/pytest-dev/pytest/issues/10890>`_: Python 3.12 support: fixed ``shutil.rmtree(onerror=...)`` deprecation warning when using :fixture:`tmp_path`. Bug Fixes --------- - `10896 <https://github.com/pytest-dev/pytest/issues/10896>`_: Fixed performance regression related to :fixture:`tmp_path` and the new :confval:`tmp_path_retention_policy` option. - `10903 <https://github.com/pytest-dev/pytest/issues/10903>`_: Fix crash ``INTERNALERROR IndexError: list index out of range`` which happens when displaying an exception where all entries are hidden. This reverts the change "Correctly handle ``__tracebackhide__`` for chained exceptions." introduced in version 7.3.0. ``` ### 7.3.0 ``` ========================= Features -------- - `10525 <https://github.com/pytest-dev/pytest/issues/10525>`_: Test methods decorated with ``classmethod`` can now be discovered as tests, following the same rules as normal methods. This fills the gap that static methods were discoverable as tests but not class methods. - `10755 <https://github.com/pytest-dev/pytest/issues/10755>`_: :confval:`console_output_style` now supports ``progress-even-when-capture-no`` to force the use of the progress output even when capture is disabled. This is useful in large test suites where capture may have significant performance impact. - `7431 <https://github.com/pytest-dev/pytest/issues/7431>`_: ``--log-disable`` CLI option added to disable individual loggers. - `8141 <https://github.com/pytest-dev/pytest/issues/8141>`_: Added :confval:`tmp_path_retention_count` and :confval:`tmp_path_retention_policy` configuration options to control how directories created by the :fixture:`tmp_path` fixture are kept. Improvements ------------ - `10226 <https://github.com/pytest-dev/pytest/issues/10226>`_: If multiple errors are raised in teardown, we now re-raise an ``ExceptionGroup`` of them instead of discarding all but the last. - `10658 <https://github.com/pytest-dev/pytest/issues/10658>`_: Allow ``-p`` arguments to include spaces (eg: ``-p no:logging`` instead of ``-pno:logging``). Mostly useful in the ``addopts`` section of the configuration file. - `10710 <https://github.com/pytest-dev/pytest/issues/10710>`_: Added ``start`` and ``stop`` timestamps to ``TestReport`` objects. - `10727 <https://github.com/pytest-dev/pytest/issues/10727>`_: Split the report header for ``rootdir``, ``config file`` and ``testpaths`` so each has its own line. - `10840 <https://github.com/pytest-dev/pytest/issues/10840>`_: pytest should no longer crash on AST with pathological position attributes, for example testing AST produced by `Hylang <https://github.com/hylang/hy>__`. - `6267 <https://github.com/pytest-dev/pytest/issues/6267>`_: The full output of a test is no longer truncated if the truncation message would be longer than the hidden text. The line number shown has also been fixed. Bug Fixes --------- - `10743 <https://github.com/pytest-dev/pytest/issues/10743>`_: The assertion rewriting mechanism now works correctly when assertion expressions contain the walrus operator. - `10765 <https://github.com/pytest-dev/pytest/issues/10765>`_: Fixed :fixture:`tmp_path` fixture always raising :class:`OSError` on ``emscripten`` platform due to missing :func:`os.getuid`. - `1904 <https://github.com/pytest-dev/pytest/issues/1904>`_: Correctly handle ``__tracebackhide__`` for chained exceptions. NOTE: This change was reverted in version 7.3.1. Improved Documentation ---------------------- - `10782 <https://github.com/pytest-dev/pytest/issues/10782>`_: Fixed the minimal example in :ref:`goodpractices`: ``pip install -e .`` requires a ``version`` entry in ``pyproject.toml`` to run successfully. Trivial/Internal Changes ------------------------ - `10669 <https://github.com/pytest-dev/pytest/issues/10669>`_: pytest no longer directly depends on the `attrs <https://www.attrs.org/en/stable/>`__ package. While we at pytest all love the package dearly and would like to thank the ``attrs`` team for many years of cooperation and support, it makes sense for ``pytest`` to have as little external dependencies as possible, as this helps downstream projects. With that in mind, we have replaced the pytest's limited internal usage to use the standard library's ``dataclasses`` instead. Nice diffs for ``attrs`` classes are still supported though. ``` ### 7.2.2 ``` ========================= Bug Fixes --------- - `10533 <https://github.com/pytest-dev/pytest/issues/10533>`_: Fixed :func:`pytest.approx` handling of dictionaries containing one or more values of `0.0`. - `10592 <https://github.com/pytest-dev/pytest/issues/10592>`_: Fixed crash if `--cache-show` and `--help` are passed at the same time. - `10597 <https://github.com/pytest-dev/pytest/issues/10597>`_: Fixed bug where a fixture method named ``teardown`` would be called as part of ``nose`` teardown stage. - `10626 <https://github.com/pytest-dev/pytest/issues/10626>`_: Fixed crash if ``--fixtures`` and ``--help`` are passed at the same time. - `10660 <https://github.com/pytest-dev/pytest/issues/10660>`_: Fixed :py:func:`pytest.raises` to return a 'ContextManager' so that type-checkers could narrow :code:`pytest.raises(...) if ... else nullcontext()` down to 'ContextManager' rather than 'object'. Improved Documentation ---------------------- - `10690 <https://github.com/pytest-dev/pytest/issues/10690>`_: Added `CI` and `BUILD_NUMBER` environment variables to the documentation. - `10721 <https://github.com/pytest-dev/pytest/issues/10721>`_: Fixed entry-points declaration in the documentation example using Hatch. - `10753 <https://github.com/pytest-dev/pytest/issues/10753>`_: Changed wording of the module level skip to be very explicit about not collecting tests and not executing the rest of the module. ``` ### 7.2.1 ``` ========================= Bug Fixes --------- - `10452 <https://github.com/pytest-dev/pytest/issues/10452>`_: Fix 'importlib.abc.TraversableResources' deprecation warning in Python 3.12. - `10457 <https://github.com/pytest-dev/pytest/issues/10457>`_: If a test is skipped from inside a fixture, the test summary now shows the test location instead of the fixture location. - `10506 <https://github.com/pytest-dev/pytest/issues/10506>`_: Fix bug where sometimes pytest would use the file system root directory as :ref:`rootdir <rootdir>` on Windows. - `10607 <https://github.com/pytest-dev/pytest/issues/10607>`_: Fix a race condition when creating junitxml reports, which could occur when multiple instances of pytest execute in parallel. - `10641 <https://github.com/pytest-dev/pytest/issues/10641>`_: Fix a race condition when creating or updating the stepwise plugin's cache, which could occur when multiple xdist worker nodes try to simultaneously update the stepwise plugin's cache. ``` ### 7.2.0 ``` ========================= Deprecations ------------ - `10012 <https://github.com/pytest-dev/pytest/issues/10012>`_: Update :class:`pytest.PytestUnhandledCoroutineWarning` to a deprecation; it will raise an error in pytest 8. - `10396 <https://github.com/pytest-dev/pytest/issues/10396>`_: pytest no longer depends on the ``py`` library. ``pytest`` provides a vendored copy of ``py.error`` and ``py.path`` modules but will use the ``py`` library if it is installed. If you need other ``py.*`` modules, continue to install the deprecated ``py`` library separately, otherwise it can usually be removed as a dependency. - `4562 <https://github.com/pytest-dev/pytest/issues/4562>`_: Deprecate configuring hook specs/impls using attributes/marks. Instead use :py:func:`pytest.hookimpl` and :py:func:`pytest.hookspec`. For more details, see the :ref:`docs <legacy-path-hooks-deprecated>`. - `9886 <https://github.com/pytest-dev/pytest/issues/9886>`_: The functionality for running tests written for ``nose`` has been officially deprecated. This includes: * Plain ``setup`` and ``teardown`` functions and methods: this might catch users by surprise, as ``setup()`` and ``teardown()`` are not pytest idioms, but part of the ``nose`` support. * Setup/teardown using the `with_setup <with-setup-nose>`_ decorator. For more details, consult the :ref:`deprecation docs <nose-deprecation>`. .. _`with-setup-nose`: https://nose.readthedocs.io/en/latest/testing_tools.html?highlight=with_setup#nose.tools.with_setup - `7337 <https://github.com/pytest-dev/pytest/issues/7337>`_: A deprecation warning is now emitted if a test function returns something other than `None`. This prevents a common mistake among beginners that expect that returning a `bool` (for example `return foo(a, b) == result`) would cause a test to pass or fail, instead of using `assert`. The plan is to make returning non-`None` from tests an error in the future. Features -------- - `9897 <https://github.com/pytest-dev/pytest/issues/9897>`_: Added shell-style wildcard support to ``testpaths``. Improvements ------------ - `10218 <https://github.com/pytest-dev/pytest/issues/10218>`_: ``pytest.mark.parametrize()`` (and similar functions) now accepts any ``Sequence[str]`` for the argument names, instead of just ``list[str]`` and ``tuple[str, ...]``. (Note that ``str``, which is itself a ``Sequence[str]``, is still treated as a comma-delimited name list, as before). - `10381 <https://github.com/pytest-dev/pytest/issues/10381>`_: The ``--no-showlocals`` flag has been added. This can be passed directly to tests to override ``--showlocals`` declared through ``addopts``. - `3426 <https://github.com/pytest-dev/pytest/issues/3426>`_: Assertion failures with strings in NFC and NFD forms that normalize to the same string now have a dedicated error message detailing the issue, and their utf-8 representation is expressed instead. - `8508 <https://github.com/pytest-dev/pytest/issues/8508>`_: Introduce multiline display for warning matching via :py:func:`pytest.warns` and enhance match comparison for :py:func:`pytest.ExceptionInfo.match` as returned by :py:func:`pytest.raises`. - `8646 <https://github.com/pytest-dev/pytest/issues/8646>`_: Improve :py:func:`pytest.raises`. Previously passing an empty tuple would give a confusing error. We now raise immediately with a more helpful message. - `9741 <https://github.com/pytest-dev/pytest/issues/9741>`_: On Python 3.11, use the standard library's :mod:`tomllib` to parse TOML. `tomli` is no longer a dependency on Python 3.11. - `9742 <https://github.com/pytest-dev/pytest/issues/9742>`_: Display assertion message without escaped newline characters with ``-vv``. - `9823 <https://github.com/pytest-dev/pytest/issues/9823>`_: Improved error message that is shown when no collector is found for a given file. - `9873 <https://github.com/pytest-dev/pytest/issues/9873>`_: Some coloring has been added to the short test summary. - `9883 <https://github.com/pytest-dev/pytest/issues/9883>`_: Normalize the help description of all command-line options. - `9920 <https://github.com/pytest-dev/pytest/issues/9920>`_: Display full crash messages in ``short test summary info``, when running in a CI environment. - `9987 <https://github.com/pytest-dev/pytest/issues/9987>`_: Added support for hidden configuration file by allowing ``.pytest.ini`` as an alternative to ``pytest.ini``. Bug Fixes --------- - `10150 <https://github.com/pytest-dev/pytest/issues/10150>`_: :data:`sys.stdin` now contains all expected methods of a file-like object when capture is enabled. - `10382 <https://github.com/pytest-dev/pytest/issues/10382>`_: Do not break into pdb when ``raise unittest.SkipTest()`` appears top-level in a file. - `7792 <https://github.com/pytest-dev/pytest/issues/7792>`_: Marks are now inherited according to the full MRO in test classes. Previously, if a test class inherited from two or more classes, only marks from the first super-class would apply. When inheriting marks from super-classes, marks from the sub-classes are now ordered before marks from the super-classes, in MRO order. Previously it was the reverse. When inheriting marks from super-classes, the `pytestmark` attribute of the sub-class now only contains the marks directly applied to it. Previously, it also contained marks from its super-classes. Please note that this attribute should not normally be accessed directly; use :func:`Node.iter_markers <_pytest.nodes.Node.iter_markers>` instead. - `9159 <https://github.com/pytest-dev/pytest/issues/9159>`_: Showing inner exceptions by forcing native display in ``ExceptionGroups`` even when using display options other than ``--tb=native``. A temporary step before full implementation of pytest-native display for inner exceptions in ``ExceptionGroups``. - `9877 <https://github.com/pytest-dev/pytest/issues/9877>`_: Ensure ``caplog.get_records(when)`` returns current/correct data after invoking ``caplog.clear()``. Improved Documentation ---------------------- - `10344 <https://github.com/pytest-dev/pytest/issues/10344>`_: Update information on writing plugins to use ``pyproject.toml`` instead of ``setup.py``. - `9248 <https://github.com/pytest-dev/pytest/issues/9248>`_: The documentation is now built using Sphinx 5.x (up from 3.x previously). - `9291 <https://github.com/pytest-dev/pytest/issues/9291>`_: Update documentation on how :func:`pytest.warns` affects :class:`DeprecationWarning`. Trivial/Internal Changes ------------------------ - `10313 <https://github.com/pytest-dev/pytest/issues/10313>`_: Made ``_pytest.doctest.DoctestItem`` export ``pytest.DoctestItem`` for type check and runtime purposes. Made `_pytest.doctest` use internal APIs to avoid circular imports. - `9906 <https://github.com/pytest-dev/pytest/issues/9906>`_: Made ``_pytest.compat`` re-export ``importlib_metadata`` in the eyes of type checkers. - `9910 <https://github.com/pytest-dev/pytest/issues/9910>`_: Fix default encoding warning (``EncodingWarning``) in ``cacheprovider`` - `9984 <https://github.com/pytest-dev/pytest/issues/9984>`_: Improve the error message when we attempt to access a fixture that has been torn down. Add an additional sentence to the docstring explaining when it's not a good idea to call ``getfixturevalue``. ``` ### 7.1.3 ``` ========================= Bug Fixes --------- - `10060 <https://github.com/pytest-dev/pytest/issues/10060>`_: When running with ``--pdb``, ``TestCase.tearDown`` is no longer called for tests when the *class* has been skipped via ``unittest.skip`` or ``pytest.mark.skip``. - `10190 <https://github.com/pytest-dev/pytest/issues/10190>`_: Invalid XML characters in setup or teardown error messages are now properly escaped for JUnit XML reports. - `10230 <https://github.com/pytest-dev/pytest/issues/10230>`_: Ignore ``.py`` files created by ``pyproject.toml``-based editable builds introduced in `pip 21.3 <https://pip.pypa.io/en/stable/news/#v21-3>`__. - `3396 <https://github.com/pytest-dev/pytest/issues/3396>`_: Doctests now respect the ``--import-mode`` flag. - `9514 <https://github.com/pytest-dev/pytest/issues/9514>`_: Type-annotate ``FixtureRequest.param`` as ``Any`` as a stop gap measure until :issue:`8073` is fixed. - `9791 <https://github.com/pytest-dev/pytest/issues/9791>`_: Fixed a path handling code in ``rewrite.py`` that seems to work fine, but was incorrect and fails in some systems. - `9917 <https://github.com/pytest-dev/pytest/issues/9917>`_: Fixed string representation for :func:`pytest.approx` when used to compare tuples. Improved Documentation ---------------------- - `9937 <https://github.com/pytest-dev/pytest/issues/9937>`_: Explicit note that :fixture:`tmpdir` fixture is discouraged in favour of :fixture:`tmp_path`. Trivial/Internal Changes ------------------------ - `10114 <https://github.com/pytest-dev/pytest/issues/10114>`_: Replace `atomicwrites <https://github.com/untitaker/python-atomicwrites>`__ dependency on windows with `os.replace`. ```
Links - PyPI: https://pypi.org/project/pytest - Changelog: https://data.safetycli.com/changelogs/pytest/ - Homepage: https://docs.pytest.org/en/latest/

Update pillow from 9.2.0 to 10.2.0.

Changelog ### 10.2.0 ``` ------------------- - Add ``keep_rgb`` option when saving JPEG to prevent conversion of RGB colorspace 7553 [bgilbert, radarhere] - Trim glyph size in ImageFont.getmask() 7669, 7672 [radarhere, nulano] - Deprecate IptcImagePlugin helpers 7664 [nulano, hugovk, radarhere] - Allow uncompressed TIFF images to be saved in chunks 7650 [radarhere] - Concatenate multiple JPEG EXIF markers 7496 [radarhere] - Changed IPTC tile tuple to match other plugins 7661 [radarhere] - Do not assign new fp attribute when exiting context manager 7566 [radarhere] - Support arbitrary masks for uncompressed RGB DDS images 7589 [radarhere, akx] - Support setting ROWSPERSTRIP tag 7654 [radarhere] - Apply ImageFont.MAX_STRING_LENGTH to ImageFont.getmask() 7662 [radarhere] - Optimise ``ImageColor`` using ``functools.lru_cache`` 7657 [hugovk] - Restricted environment keys for ImageMath.eval() 7655 [wiredfool, radarhere] - Optimise ``ImageMode.getmode`` using ``functools.lru_cache`` 7641 [hugovk, radarhere] - Fix incorrect color blending for overlapping glyphs 7497 [ZachNagengast, nulano, radarhere] - Attempt memory mapping when tile args is a string 7565 [radarhere] - Fill identical pixels with transparency in subsequent frames when saving GIF 7568 [radarhere] - Corrected duration when combining multiple GIF frames into single frame 7521 [radarhere] - Handle disposing GIF background from outside palette 7515 [radarhere] - Seek past the data when skipping a PSD layer 7483 [radarhere] - Import plugins relative to the module 7576 [deliangyang, jaxx0n] - Translate encoder error codes to strings; deprecate ``ImageFile.raise_oserror()`` 7609 [bgilbert, radarhere] - Support reading BC4U and DX10 BC1 images 6486 [REDxEYE, radarhere, hugovk] - Optimize ImageStat.Stat.extrema 7593 [florath, radarhere] - Handle pathlib.Path in FreeTypeFont 7578 [radarhere, hugovk, nulano] - Added support for reading DX10 BC4 DDS images 7603 [sambvfx, radarhere] - Optimized ImageStat.Stat.count 7599 [florath] - Correct PDF palette size when saving 7555 [radarhere] - Fixed closing file pointer with olefile 0.47 7594 [radarhere] - Raise ValueError when TrueType font size is not greater than zero 7584, 7587 [akx, radarhere] - If absent, do not try to close fp when closing image 7557 [RaphaelVRossi, radarhere] - Allow configuring JPEG restart marker interval on save 7488 [bgilbert, radarhere] - Decrement reference count for PyObject 7549 [radarhere] - Implement ``streamtype=1`` option for tables-only JPEG encoding 7491 [bgilbert, radarhere] - If save_all PNG only has one frame, do not create animated image 7522 [radarhere] - Fixed frombytes() for images with a zero dimension 7493 [radarhere] ``` ### 10.1.0 ``` ------------------- - Added TrueType default font to allow for different sizes 7354 [radarhere] - Fixed invalid argument warning 7442 [radarhere] - Added ImageOps cover method 7412 [radarhere, hugovk] - Catch struct.error from truncated EXIF when reading JPEG DPI 7458 [radarhere] - Consider default image when selecting mode for PNG save_all 7437 [radarhere] - Support BGR;15, BGR;16 and BGR;24 access, unpacking and putdata 7303 [radarhere] - Added CMYK to RGB unpacker 7310 [radarhere] - Improved flexibility of XMP parsing 7274 [radarhere] - Support reading 8-bit YCbCr TIFF images 7415 [radarhere] - Allow saving I;16B images as PNG 7302 [radarhere] - Corrected drawing I;16 points and writing I;16 text 7257 [radarhere] - Set blue channel to 128 for BC5S 7413 [radarhere] - Increase flexibility when reading IPTC fields 7319 [radarhere] - Set C palette to be empty by default 7289 [radarhere] - Added gs_binary to control Ghostscript use on all platforms 7392 [radarhere] - Read bounding box information from the trailer of EPS files if specified 7382 [nopperl, radarhere] - Added reading 8-bit color DDS images 7426 [radarhere] - Added has_transparency_data 7420 [radarhere, hugovk] - Fixed bug when reading BC5S DDS images 7401 [radarhere] - Prevent TIFF orientation from being applied more than once 7383 [radarhere] - Use previous pixel alpha for QOI_OP_RGB 7357 [radarhere] - Added BC5U reading 7358 [radarhere] - Allow getpixel() to accept a list 7355 [radarhere, homm] - Allow GaussianBlur and BoxBlur to accept a sequence of x and y radii 7336 [radarhere] - Expand JPEG buffer size when saving optimized or progressive 7345 [radarhere] - Added session type check for Linux in ImageGrab.grabclipboard() 7332 [TheNooB2706, radarhere, hugovk] - Allow "loop=None" when saving GIF images 7329 [radarhere] - Fixed transparency when saving P mode images to PDF 7323 [radarhere] - Added saving LA images as PDFs 7299 [radarhere] - Set SMaskInData to 1 for PDFs with alpha 7316, 7317 [radarhere] - Changed Image mode property to be read-only by default 7307 [radarhere] - Silence exceptions in _repr_jpeg_ and _repr_png_ 7266 [mtreinish, radarhere] - Do not use transparency when saving GIF if it has been removed when normalizing mode 7284 [radarhere] - Fix missing symbols when libtiff depends on libjpeg 7270 [heitbaum] ``` ### 10.0.1 ``` ------------------- - Updated libwebp to 1.3.2 7395 [radarhere] - Updated zlib to 1.3 7344 [radarhere] ``` ### 10.0.0 ``` ------------------- - Fixed deallocating mask images 7246 [radarhere] - Added ImageFont.MAX_STRING_LENGTH 7244 [radarhere, hugovk] - Fix Windows build with pyproject.toml 7230 [hugovk, nulano, radarhere] - Do not close provided file handles with libtiff 7199 [radarhere] - Convert to HSV if mode is HSV in getcolor() 7226 [radarhere] - Added alpha_only argument to getbbox() 7123 [radarhere. hugovk] - Prioritise speed in _repr_png_ 7242 [radarhere] - Do not use CFFI access by default on PyPy 7236 [radarhere] - Limit size even if one dimension is zero in decompression bomb check 7235 [radarhere] - Use --config-settings instead of deprecated --global-option 7171 [radarhere] - Better C integer definitions 6645 [Yay295, hugovk] - Fixed finding dependencies on Cygwin 7175 [radarhere] - Changed grabclipboard() to use PNG instead of JPG compression on macOS 7219 [abey79, radarhere] - Added in_place argument to ImageOps.exif_transpose() 7092 [radarhere] - Fixed calling putpalette() on L and LA images before load() 7187 [radarhere] - Fixed saving TIFF multiframe images with LONG8 tag types 7078 [radarhere] - Fixed combining single duration across duplicate APNG frames 7146 [radarhere] - Remove temporary file when error is raised 7148 [radarhere] - Do not use temporary file when grabbing clipboard on Linux 7200 [radarhere] - If the clipboard fails to open on Windows, wait and try again 7141 [radarhere] - Fixed saving multiple 1 mode frames to GIF 7181 [radarhere] - Replaced absolute PIL import with relative import 7173 [radarhere] - Replaced deprecated Py_FileSystemDefaultEncoding for Python >= 3.12 7192 [radarhere] - Improved wl-paste mimetype handling in ImageGrab 7094 [rrcgat, radarhere] - Added _repr_jpeg_() for IPython display_jpeg 7135 [n3011, radarhere, nulano] - Use "/sbin/ldconfig" if ldconfig is not found 7068 [radarhere] - Prefer screenshots using XCB over gnome-screenshot 7143 [nulano, radarhere] - Fixed joined corners for ImageDraw rounded_rectangle() odd dimensions 7151 [radarhere] - Support reading signed 8-bit TIFF images 7111 [radarhere] - Added width argument to ImageDraw regular_polygon 7132 [radarhere] - Support I mode for ImageFilter.BuiltinFilter 7108 [radarhere] - Raise error from stderr of Linux ImageGrab.grabclipboard() command 7112 [radarhere] - Added unpacker from I;16B to I;16 7125 [radarhere] - Support float font sizes 7107 [radarhere] - Use later value for duplicate xref entries in PdfParser 7102 [radarhere] - Load before getting size in __getstate__ 7105 [bigcat88, radarhere] - Fixed type handling for include and lib directories 7069 [adisbladis, radarhere] - Remove deprecations for Pillow 10.0.0 7059, 7080 [hugovk, radarhere] - Drop support for soon-EOL Python 3.7 7058 [hugovk, radarhere] ``` ### 9.5.0 ``` ------------------ - Added ImageSourceData to TAGS_V2 7053 [radarhere] - Clear PPM half token after use 7052 [radarhere] - Removed absolute path to ldconfig 7044 [radarhere] - Support custom comments and PLT markers when saving JPEG2000 images 6903 [joshware, radarhere, hugovk] - Load before getting size in __array_interface__ 7034 [radarhere] - Support creating BGR;15, BGR;16 and BGR;24 images, but drop support for BGR;32 7010 [radarhere] - Consider transparency when applying APNG blend mask 7018 [radarhere] - Round duration when saving animated WebP images 6996 [radarhere] - Added reading of JPEG2000 comments 6909 [radarhere] - Decrement reference count 7003 [radarhere, nulano] - Allow libtiff_support_custom_tags to be missing 7020 [radarhere] - Improved I;16N support 6834 [radarhere] - Added QOI reading 6852 [radarhere, hugovk] - Added saving RGBA images as PDFs 6925 [radarhere] - Do not raise an error if os.environ does not contain PATH 6935 [radarhere, hugovk] - Close OleFileIO instance when closing or exiting FPX or MIC 7005 [radarhere] - Added __int__ to IFDRational for Python >= 3.11 6998 [radarhere] - Added memoryview support to Dib.frombytes() 6988 [radarhere, nulano] - Close file pointer copy in the libtiff encoder if still open 6986 [fcarron, radarhere] - Raise an error if ImageDraw co-ordinates are incorrectly ordered 6978 [radarhere] - Added "corners" argument to ImageDraw rounded_rectangle() 6954 [radarhere] - Added memoryview support to frombytes() 6974 [radarhere] - Allow comments in FITS images 6973 [radarhere] - Support saving PDF with different X and Y resolutions 6961 [jvanderneutstulen, radarhere, hugovk] - Fixed writing int as UNDEFINED tag 6950 [radarhere] - Raise an error if EXIF data is too long when saving JPEG 6939 [radarhere] - Handle more than one directory returned by pkg-config 6896 [sebastic, radarhere] - Do not retry past formats when loading all formats for the first time 6902 [radarhere] - Do not retry specified formats if they failed when opening 6893 [radarhere] - Do not unintentionally load TIFF format at first 6892 [radarhere] - Stop reading when EPS line becomes too long 6897 [radarhere] - Allow writing IFDRational to BYTE tag 6890 [radarhere] - Raise ValueError for BoxBlur filter with negative radius 6874 [hugovk, radarhere] - Support arbitrary number of loaded modules on Windows 6761 [javidcf, radarhere, nulano] ``` ### 9.4.0 ``` ------------------ - Fixed null pointer dereference crash with malformed font 6846 [wiredfool, radarhere] - Return from ImagingFill early if image has a zero dimension 6842 [radarhere] - Reversed deprecations for Image constants, except for duplicate Resampling attributes 6830 [radarhere] - Improve exception traceback readability 6836 [hugovk, radarhere] - Do not attempt to read IFD1 if absent 6840 [radarhere] - Fixed writing int as ASCII tag 6800 [radarhere] - If available, use wl-paste or xclip for grabclipboard() on Linux 6783 [radarhere] - Added signed option when saving JPEG2000 images 6709 [radarhere] - Patch OpenJPEG to include ARM64 fix 6718 [radarhere] - Added support for I;16 modes in putdata() 6825 [radarhere] - Added conversion from RGBa to RGB 6708 [radarhere] - Added DDS support for uncompressed L and LA images 6820 [radarhere, REDxEYE] - Added LightSource tag values to ExifTags 6749 [radarhere] - Fixed PyAccess after changing ICO size 6821 [radarhere] - Do not use EXIF from info when saving PNG images 6819 [radarhere] - Fixed saving EXIF data to MPO 6817 [radarhere] - Added Exif hide_offsets() 6762 [radarhere] - Only compare to previous frame when checking for duplicate GIF frames while saving 6787 [radarhere] - Always initialize all plugins in registered_extensions() 6811 [radarhere] - Ignore non-opaque WebP background when saving as GIF 6792 [radarhere] - Only set tile in ImageFile __setstate__ 6793 [radarhere] - When reading BLP, do not trust JPEG decoder to determine image is CMYK 6767 [radarhere] - Added IFD enum to ExifTags 6748 [radarhere] - Fixed bug combining GIF frame durations 6779 [radarhere] - Support saving JPEG comments 6774 [smason, radarhere] - Added getxmp() to WebPImagePlugin 6758 [radarhere] - Added "exact" option when saving WebP 6747 [ashafaei, radarhere] - Use fractional coordinates when drawing text 6722 [radarhere] - Fixed writing int as BYTE tag 6740 [radarhere] - Added MP Format Version when saving MPO 6735 [radarhere] - Added Interop to ExifTags 6724 [radarhere] - CVE-2007-4559 patch when building on Windows 6704 [TrellixVulnTeam, nulano, radarhere] - Fix compiler warning: accessing 64 bytes in a region of size 48 6714 [wiredfool] - Use verbose flag for pip install 6713 [wiredfool, radarhere] ``` ### 9.3.0 ``` ------------------ - Limit SAMPLESPERPIXEL to avoid runtime DOS 6700 [wiredfool] - Initialize libtiff buffer when saving 6699 [radarhere] - Inline fname2char to fix memory leak 6329 [nulano] - Fix memory leaks related to text features 6330 [nulano] - Use double quotes for version check on old CPython on Windows 6695 [hugovk] - Remove backup implementation of Round for Windows platforms 6693 [cgohlke] - Fixed set_variation_by_name offset 6445 [radarhere] - Fix malloc in _imagingft.c:font_setvaraxes 6690 [cgohlke] - Release Python GIL when converting images using matrix operations 6418 [hmaarrfk] - Added ExifTags enums 6630 [radarhere] - Do not modify previous frame when calculating delta in PNG 6683 [radarhere] - Added support for reading BMP images with RLE4 compression 6674 [npjg, radarhere] - Decode JPEG compressed BLP1 data in original mode 6678 [radarhere] - Added GPS TIFF tag info 6661 [radarhere] - Added conversion between RGB/RGBA/RGBX and LAB 6647 [radarhere] - Do not attempt normalization if mode is already normal 6644 [radarhere] - Fixed seeking to an L frame in a GIF 6576 [radarhere] - Consider all frames when selecting mode for PNG save_all 6610 [radarhere] - Don't reassign crc on ChunkStream close 6627 [wiredfool, radarhere] - Raise a warning if NumPy failed to raise an error during conversion 6594 [radarhere] - Show all frames in ImageShow 6611 [radarhere] - Allow FLI palette chunk to not be first 6626 [radarhere] - If first GIF frame has transparency for RGB_ALWAYS loading strategy, use RGBA mode 6592 [radarhere] - Round box position to integer when pasting embedded color 6517 [radarhere, nulano] - Removed EXIF prefix when saving WebP 6582 [radarhere] - Pad IM palette to 768 bytes when saving 6579 [radarhere] - Added DDS BC6H reading 6449 [ShadelessFox, REDxEYE, radarhere] - Added support for opening WhiteIsZero 16-bit integer TIFF images 6642 [JayWiz, radarhere] - Raise an error when allocating translucent color to RGB palette 6654 [jsbueno, radarhere] - Added reading of TIFF child images 6569 [radarhere] - Improved ImageOps palette handling 6596 [PososikTeam, radarhere] - Defer parsing of palette into colors 6567 [radarhere] - Apply transparency to P images in ImageTk.PhotoImage 6559 [radarhere] - Use rounding in ImageOps contain() and pad() 6522 [bibinhashley, radarhere] - Fixed GIF remapping to palette with duplicate entries 6548 [radarhere] - Allow remap_palette() to return an image with less than 256 palette entries 6543 [radarhere] - Corrected BMP and TGA palette size when saving 6500 [radarhere] - Do not call load() before draft() in Image.thumbnail 6539 [radarhere] - Copy palette when converting from P to PA 6497 [radarhere] - Allow RGB and RGBA values for PA image putpixel 6504 [radarhere] - Removed support for tkinter in PyPy before Python 3.6 6551 [nulano] - Do not use CCITTFaxDecode filter if libtiff is not available 6518 [radarhere] - Fallback to not using mmap if buffer is not large enough 6510 [radarhere] - Fixed writing bytes as ASCII tag 6493 [radarhere] - Open 1 bit EPS in mode 1 6499 [radarhere] - Removed support for tkinter before Python 1.5.2 6549 [radarhere] - Allow default ImageDraw font to be set 6484 [radarhere, hugovk] - Save 1 mode PDF using CCITTFaxDecode filter 6470 [radarhere] - Added support for RGBA PSD images 6481 [radarhere] - Parse orientation from XMP tag contents 6463 [bigcat88, radarhere] - Added support for reading ATI1/ATI2 (BC4/BC5) DDS images 6457 [REDxEYE, radarhere] - Do not clear GIF tile when checking number of frames 6455 [radarhere] - Support saving multiple MPO frames 6444 [radarhere] - Do not double quote Pillow version for setuptools >= 60 6450 [radarhere] - Added ABGR BMP mask mode 6436 [radarhere] - Fixed PSDraw rectangle 6429 [radarhere] - Raise ValueError if PNG sRGB chunk is truncated 6431 [radarhere] - Handle missing Python executable in ImageShow on macOS 6416 [bryant1410, radarhere] ```
Links - PyPI: https://pypi.org/project/pillow - Changelog: https://data.safetycli.com/changelogs/pillow/

Update skia-python from 87.4 to 87.5.

Changelog ### 87.5 ``` What's Changed * Fix windows install command by jamesgk in https://github.com/kyamagu/skia-python/pull/180 * Build wheels for Python 3.11 (fixes 182) by lucach in https://github.com/kyamagu/skia-python/pull/183 New Contributors * jamesgk made their first contribution in https://github.com/kyamagu/skia-python/pull/180 * lucach made their first contribution in https://github.com/kyamagu/skia-python/pull/183 **Full Changelog**: https://github.com/kyamagu/skia-python/compare/v87.4...v87.5 ```
Links - PyPI: https://pypi.org/project/skia-python - Changelog: https://data.safetycli.com/changelogs/skia-python/ - Repo: https://github.com/kyamagu/skia-python

Update fonttools[unicode] from 4.34.4 to 4.47.0.

Changelog ### 4.47.0 ``` ---------------------------- - [varLib.models] New API for VariationModel: ``getMasterScalars`` and ``interpolateFromValuesAndScalars``. - [varLib.interpolatable] Various bugfixes and rendering improvements. In particular, add a Summary page in the front, and an Index and Table-of-Contents in the back. Change the page size to Letter. - [Docs/designspaceLib] Defined a new ``public.fontInfo`` lib key, not used anywhere yet (3358). ``` ### 4.46.0 ``` ---------------------------- - [featureVars] Allow to register the same set of substitution rules to multiple features. The ``addFeatureVariations`` function can now take a list of featureTags; similarly, the lib key 'com.github.fonttools.varLib.featureVarsFeatureTag' can now take a comma-separateed string of feature tags (e.g. "salt,ss01") instead of a single tag (3360). - [featureVars] Don't overwrite GSUB FeatureVariations, but append new records to it for features which are not already there. But raise ``VarLibError`` if the feature tag already has feature variations associated with it (3363). - [varLib] Added ``addGSUBFeatureVariations`` function to add GSUB Feature Variations to an existing variable font from rules defined in a DesignSpace document (3362). - [varLib.interpolatable] Various bugfixes and rendering improvements. In particular, a new test for "underweight" glyphs. The new test reports quite a few false-positives though. Please send feedback. ``` ### 4.45.1 ``` ---------------------------- - [varLib.interpolatable] Various bugfixes and improvements, better reporting, reduced false positives. - [ttGlyphSet] Added option to not recalculate glyf bounds (3348). ``` ### 4.45.0 ``` ---------------------------- - [varLib.interpolatable] Vastly improved algorithms. Also available now is ``--pdf`` and ``--html`` options to generate a PDF or HTML report of the interpolation issues. The PDF/HTML report showcases the problematic masters, the interpolated broken glyph, as well as the proposed fixed version. ``` ### 4.44.3 ``` ---------------------------- - [subset] Only prune codepage ranges for OS/2.version >= 1, ignore otherwise (3334). - [instancer] Ensure hhea vertical metrics stay in sync with OS/2 ones after instancing MVAR table containing 'hasc', 'hdsc' or 'hlgp' tags (3297). ``` ### 4.44.2 ``` ---------------------------- - [glyf] Have ``Glyph.recalcBounds`` skip empty components (base glyph with no contours) when computing the bounding box of composite glyphs. This simply restores the existing behavior before some changes were introduced in fonttools 4.44.0 (3333). ``` ### 4.44.1 ``` ---------------------------- - [feaLib] Ensure variable mark anchors are deep-copied while building since they get modified in-place and later reused (3330). - [OS/2|subset] Added method to ``recalcCodePageRanges`` to OS/2 table class; added ``--prune-codepage-ranges`` to `fonttools subset` command (3328, 2607). ``` ### 4.44.0 ``` ---------------------------- - [instancer] Recalc OS/2 AvgCharWidth after instancing if default changes (3317). - [otlLib] Make ClassDefBuilder class order match varLib.merger's, i.e. large classes first, then glyph lexicographic order (3321, 3324). - [instancer] Allow not specifying any of min:default:max values and let be filled up with fvar's values (3322, 3323). - [instancer] When running --update-name-table ignore axes that have no STAT axis values (3318, 3319). - [Debg] When dumping to ttx, write the embedded JSON as multi-line string with indentation (92cbfee0d). - [varStore] Handle > 65535 items per encoding by splitting VarData subtable (3310). - [subset] Handle null-offsets in MarkLigPos subtables. - [subset] Keep East Asian spacing fatures vhal, halt, chws, vchw by default (3305). - [instancer.solver] Fixed case where axisDef < lower and upper < axisMax (3304). - [glyf] Speed up compilation, mostly around ``recalcBounds`` (3301). - [varLib.interpolatable] Speed it up when working on variable fonts, plus various micro-optimizations (3300). - Require unicodedata2 >= 15.1.0 when installed with 'unicode' extra, contains UCD 15.1. ``` ### 4.43.1 ``` ---------------------------- - [EBDT] Fixed TypeError exception in `_reverseBytes` method triggered when dumping some bitmap fonts with `ttx -z bitwise` option (3162). - [v/hhea] Fixed UnboundLocalError exception in ``recalc`` method when no vmtx or hmtx tables are present (3290). - [bezierTools] Fixed incorrectly typed cython local variable leading to TypeError when calling ``calcQuadraticArcLength`` (3288). - [feaLib/otlLib] Better error message when building Coverage table with missing glyph (3286). ``` ### 4.43.0 ``` ---------------------------- - [subset] Set up lxml ``XMLParser(resolve_entities=False)`` when parsing OT-SVG documents to prevent XML External Entity (XXE) attacks (9f61271dc): https://codeql.github.com/codeql-query-help/python/py-xxe/ - [varLib.iup] Added workaround for a Cython bug in ``iup_delta_optimize`` that was leading to IUP tolerance being incorrectly initialised, resulting in sub-optimal deltas (60126435d, cython/cython5732). - [varLib] Added new command-line entry point ``fonttools varLib.avar`` to add an ``avar`` table to an existing VF from axes mappings in a .designspace file (0a3360e52). - [instancer] Fixed bug whereby no longer used variation regions were not correctly pruned after VarData optimization (3268). - Added support for Python 3.12 (3283). ``` ### 4.42.1 ``` ---------------------------- - [t1Lib] Fixed several Type 1 issues (3238, 3240). - [otBase/packer] Allow sharing tables reached by different offset sizes (3241, 3236). - [varLib/merger] Fix Cursive attachment merging error when all anchors are NULL (3248, 3247). - [ttLib] Fixed warning when calling ``addMultilingualName`` and ``ttFont`` parameter was not passed on to ``findMultilingualName`` (3253). ``` ### 4.42.0 ``` ---------------------------- - [varLib] Use sentinel value 0xFFFF to mark a glyph advance in hmtx/vmtx as non participating, allowing sparse masters to contain glyphs for variation purposes other than {H,V}VAR (3235). - [varLib/cff] Treat empty glyphs in non-default masters as missing, thus not participating in CFF2 delta computation, similarly to how varLib already treats them for gvar (3234). - Added varLib.avarPlanner script to deduce 'correct' avar v1 axis mappings based on glyph average weights (3223). ``` ### 4.41.1 ``` ---------------------------- - [subset] Fixed perf regression in v4.41.0 by making ``NameRecordVisitor`` only visit tables that do contain nameID references (3213, 3214). - [varLib.instancer] Support instancing fonts containing null ConditionSet offsets in FeatureVariationRecords (3211, 3212). - [statisticsPen] Report font glyph-average weight/width and font-wide slant. - [fontBuilder] Fixed head.created date incorrectly set to 0 instead of the current timestamp, regression introduced in v4.40.0 (3210). - [varLib.merger] Support sparse ``CursivePos`` masters (3209). ``` ### 4.41.0 ``` ---------------------------- - [fontBuilder] Fixed bug in setupOS2 with default panose attribute incorrectly being set to a dict instead of a Panose object (3201). - [name] Added method to ``removeUnusedNameRecords`` in the user range (3185). - [varLib.instancer] Fixed issue with L4 instancing (moving default) (3179). - [cffLib] Use latin1 so we can roundtrip non-ASCII in {Full,Font,Family}Name (3202). - [designspaceLib] Mark <source name="..."> as optional in docs (as it is in the code). - [glyf-1] Fixed drawPoints() bug whereby last cubic segment becomes quadratic (3189, 3190). - [fontBuilder] Propagate the 'hidden' flag to the fvar Axis instance (3184). - [fontBuilder] Update setupAvar() to also support avar 2, fixing ``_add_avar()`` call site (3183). - Added new ``voltLib.voltToFea`` submodule (originally Tiro Typeworks' "Volto") for converting VOLT OpenType Layout sources to FEA format (3164). ``` ### 4.40.0 ``` ---------------------------- - Published native binary wheels to PyPI for all the python minor versions and platform and architectures currently supported that would benefit from this. They will include precompiled Cython-accelerated modules (e.g. cu2qu) without requiring to compile them from source. The pure-python wheel and source distribution will continue to be published as always (pip will automatically chose them when no binary wheel is available for the given platform, e.g. pypy). Use ``pip install --no-binary=fonttools fonttools`` to expliclity request pip to install from the pure-python source. - [designspaceLib|varLib] Add initial support for specifying axis mappings and build ``avar2`` table from those (3123). - [feaLib] Support variable ligature caret position (3130). - [varLib|glyf] Added option to --drop-implied-oncurves; test for impliable oncurve points either before or after rounding (3146, 3147, 3155, 3156). - [TTGlyphPointPen] Don't error with empty contours, simply ignore them (3145). - [sfnt] Fixed str vs bytes remnant of py3 transition in code dealing with de/compiling WOFF metadata (3129). - [instancer-solver] Fixed bug when moving default instance with sparse masters (3139, 3140). - [feaLib] Simplify variable scalars that don’t vary (3132). - [pens] Added filter pen that explicitly emits closing line when lastPt != movePt (3100). - [varStore] Improve optimize algorithm and better document the algorithm (3124, 3127). Added ``quantization`` option (3126). - Added CI workflow config file for building native binary wheels (3121). - [fontBuilder] Added glyphDataFormat=0 option; raise error when glyphs contain cubic outlines but glyphDataFormat was not explicitly set to 1 (3113, 3119). - [subset] Prune emptied GDEF.MarkGlyphSetsDef and remap indices; ensure GDEF is subsetted before GSUB and GPOS (3114, 3118). - [xmlReader] Fixed issue whereby DSIG table data was incorrectly parsed (3115, 2614). - [varLib/merger] Fixed merging of SinglePos with pos=0 (3111, 3112). - [feaLib] Demote "Feature has not been defined" error to a warning when building aalt and referenced feature is empty (3110). - [feaLib] Dedupe multiple substitutions with classes (3105). ``` ### 4.39.4 ``` ---------------------------- - [varLib.interpolatable] Allow for sparse masters (3075) - [merge] Handle differing default/nominalWidthX in CFF (3070) - [ttLib] Add missing main.py file to ttLib package (3088) - [ttx] Fix missing composite instructions in XML (3092) - [ttx] Fix split tables option to work on filenames containing '%' (3096) - [featureVars] Process lookups for features other than rvrn last (3099) - [feaLib] support multiple substitution with classes (3103) ``` ### 4.39.3 ``` ---------------------------- - [sbix] Fixed TypeError when compiling empty glyphs whose imageData is None, regression was introduced in v4.39 (3059). - [ttFont] Fixed AttributeError on python <= 3.10 when opening a TTFont from a tempfile SpooledTemporaryFile, seekable method only added on python 3.11 (3052). ``` ### 4.39.2 ``` ---------------------------- - [varLib] Fixed regression introduced in 4.39.1 whereby an incomplete 'STAT' table would be built even though a DesignSpace v5 did contain 'STAT' definitions (3045, 3046). ``` ### 4.39.1 ``` ---------------------------- - [avar2] Added experimental support for reading/writing avar version 2 as specified in this draft proposal: https://github.com/harfbuzz/boring-expansion-spec/blob/main/avar2.md - [glifLib] Wrap underlying XML library exceptions with GlifLibError when parsing GLIFs, and also print the name and path of the glyph that fails to be parsed (3042). - [feaLib] Consult avar for normalizing user-space values in ConditionSets and in VariableScalars (3042, 3043). - [ttProgram] Handle string input to Program.fromAssembly() (3038). - [otlLib] Added a config option to emit GPOS 7 lookups, currently disabled by default because of a macOS bug (3034). - [COLRv1] Added method to automatically compute ClipBoxes (3027). - [ttFont] Fixed getGlyphID to raise KeyError on missing glyphs instead of returning None. The regression was introduced in v4.27.0 (3032). - [sbix] Fixed UnboundLocalError: cannot access local variable 'rawdata' (3031). - [varLib] When building VF, do not overwrite a pre-existing ``STAT`` table that was built with feaLib from FEA feature file. Also, added support for building multiple VFs defined in Designspace v5 from ``fonttools varLib`` script (3024). - [mtiLib] Only add ``Debg`` table with lookup names when ``FONTTOOLS_LOOKUP_DEBUGGING`` env variable is set (3023). ``` ### 4.39.0 ``` ---------------------------- - [mtiLib] Optionally add `Debg` debug info for MTI feature builds (3018). - [ttx] Support reading input file from standard input using special `-` character, similar to existing `-o -` option to write output to standard output (3020). - [cython] Prevent ``cython.compiled`` raise AttributeError if cython not installed properly (3017). - [OS/2] Guard against ZeroDivisionError when calculating xAvgCharWidth in the unlikely scenario no glyph has non-zero advance (3015). - [subset] Recompute xAvgCharWidth independently of --no-prune-unicode-ranges, previously the two options were involuntarily bundled together (3012). - [fontBuilder] Add ``debug`` parameter to addOpenTypeFeatures method to add source debugging information to the font in the ``Debg`` private table (3008). - [name] Make NameRecord `__lt__` comparison not fail on Unicode encoding errors (3006). - [featureVars] Fixed bug in ``overlayBox`` (3003, 3005). - [glyf] Added experimental support for cubic bezier curves in TrueType glyf table, as outlined in glyf v1 proposal (2988): https://github.com/harfbuzz/boring-expansion-spec/blob/main/glyf1-cubicOutlines.md - Added new qu2cu module and related qu2cuPen, the reverse of cu2qu for converting TrueType quadratic splines to cubic bezier curves (2993). - [glyf] Added experimental support for reading and writing Variable Composites/Components as defined in glyf v1 spec proposal (2958): https://github.com/harfbuzz/boring-expansion-spec/blob/main/glyf1-varComposites.md. - [pens]: Added `addVarComponent` method to pen protocols' base classes, which pens can implement to handle varcomponents (by default they get decomposed) (2958). - [misc.transform] Added DecomposedTransform class which implements an affine transformation with separate translate, rotation, scale, skew, and transformation-center components (2598) - [sbix] Ensure Glyph.referenceGlyphName is set; fixes error after dumping and re-compiling sbix table with 'dupe' glyphs (2984). - [feaLib] Be cleverer when merging chained single substitutions into same lookup when they are specified using the inline notation (2150, 2974). - [instancer] Clamp user-inputted axis ranges to those of fvar (2959). - [otBase/subset] Define ``__getstate__`` for BaseTable so that a copied/pickled 'lazy' object gets its own OTTableReader to read from; incidentally fixes a bug while subsetting COLRv1 table containing ClipBoxes on python 3.11 (2965, 2968). - [sbix] Handle glyphs with "dupe" graphic type on compile correctly (2963). - [glyf] ``endPointsOfContours`` field should be unsigned! Kudos to behdad for spotting one of the oldest bugs in FT. Probably nobody has ever dared to make glyphs with more than 32767 points... (2957). - [feaLib] Fixed handling of ``ignore`` statements with unmarked glyphs to match makeotf behavior, which assumes the first glyph is marked (2950). - Reformatted code with ``black`` and enforce new code style via CI check (2925). - [feaLib] Sort name table entries following OT spec prescribed order in the builder (2927). - [cu2quPen] Add Cu2QuMultiPen that converts multiple outlines at a time in interpolation compatible way; its methods take a list of tuples arguments that would normally be passed to individual segment pens, and at the end it dispatches the converted outlines to each pen (2912). - [reverseContourPen/ttGlyphPen] Add outputImpliedClosingLine option (2913, 2914, 2921, 2922, 2995). - [gvar] Avoid expanding all glyphs unnecessarily upon compile (2918). - [scaleUpem] Fixed bug whereby CFF2 vsindex was scaled; it should not (2893, 2894). - [designspaceLib] Add DS.getAxisByTag and refactor getAxis (2891). - [unicodedata] map Zmth<->math in ot_tag_{to,from}_script (1737, 2889). - [woff2] Support encoding/decoding OVERLAP_SIMPLE glyf flags (2576, 2884). - [instancer] Update OS/2 class and post.italicAngle when default moved (L4) - Dropped support for Python 3.7 which reached EOL, fontTools requires 3.8+. - [instancer] Fixed instantiateFeatureVariations logic when a rule range becomes default-applicable (2737, 2880). - [ttLib] Add main to ttFont and ttCollection that just decompile and re-compile the input font (2869). - [featureVars] Insert 'rvrn' lookup at the beginning of LookupList, to work around bug in Apple implementation of 'rvrn' feature which the spec says it should be processed early whereas on macOS 10.15 it follows lookup order (2140, 2867). - [instancer/mutator] Remove 'DSIG' table if present. - [svgPathPen] Don't close path in endPath(), assume open unless closePath() (2089, 2865). ``` ### 4.38.0 ``` ---------------------------- - [varLib.instancer] Added support for L4 instancing, i.e. moving the default value of an axis while keeping it variable. Thanks Behdad! (2728, 2861). It's now also possible to restrict an axis min/max values beyond the current default value, e.g. a font wght has min=100, def=400, max=900 and you want a partial VF that only varies between 500 and 700, you can now do that. You can either specify two min/max values (wght=500:700), and the new default will be set to either the minimum or maximum, depending on which one is closer to the current default (e.g. 500 in this case). Or you can specify three values (e.g. wght=500:600:700) to specify the new default value explicitly. - [otlLib/featureVars] Set a few Count values so one doesn't need to compile the font to update them (2860). - [varLib.models] Make extrapolation work for 2-master models as well where one master is at the default location (2843, 2846). Add optional extrapolate=False to normalizeLocation() (2847, 2849). - [varLib.cff] Fixed sub-optimal packing of CFF2 deltas by no longer rounding them to integer (2838). - [scaleUpem] Calculate numShorts in VarData after scale; handle CFF hintmasks (2840). ``` ### 4.37.4 ``` ---------------------------- - [subset] Keep nameIDs used by CPAL palette entry labels (2837). - [varLib] Avoid negative hmtx values when creating font from variable CFF2 font (2827). - [instancer] Don't
pyup-bot commented 10 months ago

Closing this in favor of #155